
_package("bjmap.main");
bjmap.main.nav=function(){
	var outmaxlength="注意！输入字符过长，应小于100";//超出限制后提示的文本
	var specialchar="注意！包含特殊字符将无法进行查询";
	var searchTarget=void(0);  //查询的类型 ，1为导航，2为公交
	
	//绑定驾车导航
	var btnNavSearch=DCI.get("btnNavSearch");
	DCI.event.bindDom(btnNavSearch,"click",processNavSearch,this);
					
	function substr(str,len){
		if(str.length>len){
			return str.substr(0,len);
		}
		return str;
	}
	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 processNavSearch(){
		var navstartname=DCI.get("navstartname");
		var navendname=DCI.get("navendname");
		map.clearOverlays();
		if(isNull(navstartname)){
				return;	
		}
		if(isNull(navendname)){
				return;	
		}
		nav.poi(1,navstartname.value,navendname.value);
	}
	
	/**
	 * @type 公交和导航的POI查询方法
	 * @param {string} target 目标查询模块 1 导航查询，2公交查询
	 * 		  {string or DCI.Pojo.POI} sn(startName) 起点名称，如果是string类型则进行POI查询，如果是POI对象则直接填充列表项(供到这里来或从这里出发使用)
	 * 		  {string or DCI.Pojo.POI} en(endName)	终点名称，意义同上
	 */
	this.poi=function(target,sn,en){
		
		var sn_str=sn?typeof(sn)=="string"?sn:sn.name:"";	
		var en_str=en?typeof(en)=="string"?en:en.name:"";
		
		searchTarget=target||1;		//默认是导航
		
		function setModuleValue(start,end){	
			if(target==1){
				var ns=DCI.get("navstartname");ns.setAttribute("value",start);ns.style.color="#000";
				var ne=DCI.get("navendname");ne.setAttribute("value",end);ne.style.color="#000";	
				module.changeModule("navigation");		
			}else if(target==2){
				var bs=DCI.get("busstartname");	bs.setAttribute("value",start);bs.style.color="#000";
				var be=DCI.get("busendname");be.setAttribute("value",end);be.style.color="#000";	
				module.changeModule("bus");		
			}else{
				return;
			}
		}
		//同步模块部分
		setModuleValue(sn_str,en_str);
		
		//清空DOM元素，以及赋值标题
		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";
		
		map.clearOverlays();
		
		//出行方式
		var trip_mode = document.createElement("div");trip_mode.className="trip_mode";
		trip_mode.innerHTML="<span class='trip_mode_title'>出行方式:</span>";
		var b_c=target==2?"trip_mode_y":"trip_mode_n";		//根据标示给出样式显示
		var n_c=target==1?"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当中
			span_nav.setAttribute("className","trip_mode_y");
			span_bus.setAttribute("className","trip_mode_n");
			target=1;		//改变标示	
			setModuleValue(sn_str,en_str);	
		});
		DCI.event.bindDom(span_bus,"click",function(){
			span_nav.setAttribute("className","trip_mode_n");
			span_bus.setAttribute("className","trip_mode_y");
			target=2;
			setModuleValue(sn_str,en_str);
		});
		
		
					
		//起点终点生成，1代表起点,2代表终点
		var s_e_div=document.createElement("div");
		rl.appendChild(s_e_div);
			
		function start_end(t,n){		//代码相对比较重复，故抽象出来
			var se_title_text=t==1?"起点":"终点";
			var se_id=t==1?"nav_start":"nav_end";
			var se_tip="在这里输入"+se_title_text;	//提示信息
			if(n){
				if(typeof(n)=="string"){
					var se_value=n;	
				}else if(n.ClassName="DCI.Pojo.POI"){
					var se_value=n.name;
				}
			}else{
				var se_value=se_tip;				
			}
			var se_t_value=se_value;			//临时保存值，便于判断取消事件时还原用
			var s_e=document.createElement("div");s_e.id=se_id;s_e.innerHTML = "<span class='nav_se_title'>"+se_title_text+":</span>";
			var se_name=document.createElement("input");se_name.type="text";se_name.value=se_value;
			var se_operation=document.createElement("span");se_operation.className="nav_se_operation";
			var se_o_edit=document.createElement("span");se_o_edit.className="nav_se_operatioin";se_o_edit.innerHTML="修改";
			var se_o_ok=document.createElement("span");se_o_ok.className="nav_se_operatioin";se_o_ok.innerHTML="确定";
			var se_o_cancel=document.createElement("span");se_o_cancel.className="nav_se_operatioin";se_o_cancel.innerHTML="取消";
			s_e.appendChild(se_name);
			s_e.appendChild(se_operation);
			s_e_div.appendChild(s_e);
			DCI.event.bindDom(se_o_edit,"click",function(){		//修改事件
			    se_t_value=se_name.getAttribute("value");
				se_operation.removeChild(se_o_edit);
				se_operation.appendChild(se_o_ok);
				se_operation.appendChild(se_o_cancel);
				se_name.setAttribute("className","nav_se_input_y");
				se_name.setAttribute("disabled",false);	
				se_name.setAttribute("title",se_tip);	
			});
			DCI.event.bindDom(se_o_ok,"click",function(){		//确定事件
				var value=se_name.getAttribute("value");
				var t_value=value.replace(/\s/ig,"");
				if(!t_value||value==se_tip){
					return;
				}
				se_operation.removeChild(se_o_ok);
				se_operation.removeChild(se_o_cancel);
				se_operation.appendChild(se_o_edit);
				se_name.setAttribute("className","nav_se_input_n");
				se_name.setAttribute("disabled",true);
				if(t==1){
					sn_str=value;//DCI.get("busstartname").value;
				}else{
					en_str=value;//DCI.get("busendname").value;
				}
				nav.name(t,value);
				setModuleValue(sn_str,en_str);	
			});
			DCI.event.bindDom(se_o_cancel,"click",function(){		//取消事件
				se_operation.appendChild(se_o_edit);
				se_operation.removeChild(se_o_ok);
				se_operation.removeChild(se_o_cancel);
				se_name.setAttribute("value",se_t_value);
				se_name.setAttribute("className","nav_se_input_n");
				se_name.setAttribute("disabled",true);		
				se_name.removeAttribute("title");		
			});
			
			
			DCI.event.bindDom(se_name,"focus",txtfocus,se_name,[se_tip]);
			DCI.event.bindDom(se_name,"blur",txtblur,se_name,[se_tip]);
			DCI.event.bindDom(se_name,"keypress",keySubmit,se_name,[se_o_ok]);
			
			
			if(n){	//判断是否存在值，然后执行操作
				se_operation.appendChild(se_o_edit);
				se_name.setAttribute("className","nav_se_input_n");
				se_name.setAttribute("disabled",true);	
				if(typeof(n)=="string"){
					nav.name(t,se_value);	
				}else if(n.ClassName="DCI.Pojo.POI"){
					nav.name(t,n);	
				}	
			}else{
				se_operation.appendChild(se_o_ok);
				se_operation.appendChild(se_o_cancel);
				se_name.setAttribute("className","nav_se_input_y");
				se_name.setAttribute("disabled",false);	
				se_name.setAttribute("title",se_tip);
			}
		}
		
		//起点列表
		var s_l_title = document.createElement("div");s_l_title.className="nav_se_list_title";s_l_title.innerHTML = "<span>请选择起点:</span>";
  		var s_l=document.createElement("div");s_l.id="nav_start_list";
  		rl.appendChild(s_l_title);
  		rl.appendChild(s_l);
		
		//终点列表
  		var e_l_title = document.createElement("div");e_l_title.className="nav_se_list_title";e_l_title.innerHTML = "<span>请选择终点:</span>";
  		var e_l=document.createElement("div");e_l.id="nav_end_list";
  		rl.appendChild(e_l_title);
  		rl.appendChild(e_l);
  		
  		
  		
  		//查询和返回
  		var search_back=document.createElement("div");search_back.id="nav_search_back";
  		
  		var sb_search=document.createElement("span");sb_search.innerHTML="<span class='btn_bg'>查询</span>";sb_search.id="nav_sb_search";
  		//var sb_back=document.createElement("span");sb_back.innerHTML="<span class='btn_bg'>返回</span>";sb_back.id="nav_sb_back";
  		
  		search_back.appendChild(sb_search);
  		//search_back.appendChild(sb_back);
  		rl.appendChild(search_back);
//		var ta1 = document.createElement('table');
//		ta1.style.marginLeft = "25px";
//  		ta1.style.fontSize="12px";
//		ta1.style.color="#6E6E6E";
//		var aRow=ta1.insertRow(-1);
//		var c1=aRow.insertCell(-1);
//  		
//  		var searchNavli= document.createElement('li');
//		searchNavli.style.listStyle = "none";
//		searchNavli.className = 'btn_bg';
//		var start = DCI.get('startDiv');
//		var end = DCI.get('endDiv');
//		
//		var aSearch= document.createElement("span");
//		aSearch.className="btn_bg";
//	  	searchNavli.appendChild(aSearch);
	  	DCI.event.bindDom(sb_search,"click",
			function(event){
				var a=nav.start_poi;
				var b=nav.end_poi;
				if(target==2){
					bus.transfer(a,b,0);
				}else{
					nav.navigation(a,b,0);
				}			
			}
		);
		
//		var cc= document.createElement('div');
//		cc.appendChild(searchNavli);
//		c1.appendChild(cc);
//		
//		var c2=aRow.insertCell(-1);
//		
//		var backNavli= document.createElement('li');
//		backNavli.style.listStyle = "none";
//		backNavli.className = 'btn_bg';
//		backNavli.innerHTML = "<span href='#' id='btnSearchA' onclick='window.history.back();'>返回</span>";
//		var cb= document.createElement('div');
//		cb.appendChild(backNavli);
//		c2.appendChild(cb);
//	    rl.appendChild(ta1);
	    
	    //查询POI
		start_end(1,sn);
		start_end(2,en);	
	}
	
	
	var routeTypes=["默认","最经济","最短路程"];
	
	/**
	 * @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.navigation=function(sp,ep,rt){
		//删除right变量
		delete right.start_poi;
		delete right.end_poi;
		if(!ep||!sp)
			return;
		rt=rt||0;
		//设置切换模块的文本
		var ns=DCI.get("navstartname");ns.setAttribute("value",sp.name);ns.style.color="#000";
		var ne=DCI.get("navendname");ne.setAttribute("value",ep.name);ne.style.color="#000";	
		module.changeModule("navigation");	
		
		//清空结果列表内容
		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=false?"trip_mode_y":"trip_mode_n";		//根据标示给出样式显示
		var n_c=true?"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_bus,"click",function(){		//绑定点击事件，切换样式,trip_mode_y被选中样式,trip_mode_n未被选中样式，在bus.css当中
			bus.transfer(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){		
				temp_input=t_m_input;
			}
			DCI.event.bindDom(t_m_input,"click",function(){
				$this.navigation(sp,ep,value);		//调用公交换乘		
			})
		});
		if(temp_input)temp_input.setAttribute("checked","true");	//设置被选中的radio,此举只为兼容ie7、6，因为radio组有新成员加入时，所有成员的checked都会变成false
		
		
		//查询返程
		var nav_route_div=document.createElement("div");nav_route_div.id="nav_route_div";
		var nrd_back=document.createElement("span");nrd_back.className="nav_route_back";nrd_back.innerHTML="查询返程路线";
  		nav_route_div.appendChild(nrd_back);
	 	DCI.event.bindDom(nrd_back,"click",
			function(event){
				$this.navigation(ep,sp,rt);
			}
		);
		rl.appendChild(nav_route_div);
		
		//导航线路方案列表
	 	var br_div = document.createElement("div");br_div.id="bus_routes";br_div.innerHTML = "";
	  	result_list.appendChild(br_div);
	  	
	  	
	  	
	  	var query=new DCI.Service.Nav();
	  	query.getNavRoute({
	  		x1:sp.x,y1:sp.y,
	  		x2:ep.x,y2:ep.y,
	  		routeType:rt
	  		},
	  		function(route,data){
	  			//如果查询结果为空
	  			if(route.segmentList.length<=0){
	  				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);
					//$(nrd_back).css("display","none");
					return;
	  			}
	  			map.clearOverlays();
				//划过特效
				function backgroundColorHover(el){
					$(el).hover(
						function(){
							$(this).css({backgroundColor:"#ECE9D8"});
						},
						function(){
							if(this!=currentSegment)
								$(this).css({backgroundColor:"#FFF"});
						});						
				}
	  			
	  			//起点
				var rb_start=document.createElement("div");rb_start.className="nav_route_start";
				var rbs_icon=document.createElement("span");rbs_icon.className="nav_route_start_icon";
				var rbs_text=document.createElement("span");rbs_text.innerHTML="<span class='nav_route_start_text_des'>起点</span>"+sp.name;
				rb_start.appendChild(rbs_icon);
				rb_start.appendChild(rbs_text);
				br_div.appendChild(rb_start);
				backgroundColorHover(rb_start);	 		
	 			var polyline_config={color:"#CB0804",weight:4,opacity:0.7,dashstyle:"solid"};//线段配置
	 		
				//路段细节
				var pre_ac="";
				var pre_polyline=void(0);
				var polyline_coodinate="";
				var totalLength=0;
				var currentSegment=void(0);
				DCI.each(route.segmentList,function(segement,i){
					//公交换乘详情					
					var nr_segment=document.createElement("div");nr_segment.className="nav_route_segment";			
					var nrs_num=document.createElement("span");nrs_num.className="nav_route_num";nrs_num.innerHTML=(i+1)+".";	//序号
					var nrs_text=document.createElement("span");nrs_text.className="nav_route_text";						//描述
					var nrs_length=document.createElement("span");nrs_length.className="nav_route_length";nrs_length.innerHTML="约"+segement.roadLength+"米";//长度
					var from=i==0?"沿":"进入";
					var directionText=segement.direction?"<span class='nav_route_description'>向</span><span class='nav_route_direction'>"+segement.direction+"</span>":"";
					var html="<span class='nav_route_action'>"+pre_ac+"</span>" +
							"<span class='nav_route_description'>"+from+"</span>" +
							"<span class='nav_route_roadName'>"+segement.roadName+"</span>" +
							directionText+
							"<span class='nav_route_description'>行驶</span>";
					nrs_text.innerHTML=html;
					pre_ac=segement.action;
					nr_segment.appendChild(nrs_num);
					nr_segment.appendChild(nrs_text);
					nr_segment.appendChild(nrs_length);
					br_div.appendChild(nr_segment);
					//点击高亮形式路程
					$(nr_segment).bind("click",function(){
						if(pre_polyline){
							map.removeOverlay(pre_polyline);
							$(currentSegment).css({backgroundColor:"#FFF"});
						}
						//绘制线
						var dpolyline=new DPolyline(segement.coor,$.extend({},polyline_config,{color:"#008000",opacity:0.9}));
						map.addOverlay(dpolyline);	
						pre_polyline=dpolyline;
						//最小缩放
						var bounds=DLonLatBounds.minBox(segement.coor);
						var level=map.getBoundsZoomLevel(bounds);
						map.setZoomLevel(level);		
						map.panTo(bounds.getCenter());	
						//设置被选中路段的背景色
						$(this).css({backgroundColor:"#ECE9D8"});
						currentSegment=this;
					});
					//划过特效
					backgroundColorHover(nr_segment);	 
					
					//记录线段
					polyline_coodinate+=","+segement.coor;
					//计算总路程
					if(!isNaN(segement.roadLength)){
						totalLength+=Number(segement.roadLength);
					}
				});
				//导航线路的绘制，避免每段绘制下，线段隔断
				if(polyline_coodinate){
					polyline_coodinate=polyline_coodinate.substr(1);
					var dpolyline=new DPolyline(polyline_coodinate,polyline_config);
					map.addOverlay(dpolyline);
				}
				
				
				//终点
				var rb_end=document.createElement("div");rb_end.className="nav_route_end";
				var rbe_icon=document.createElement("span");rbe_icon.className="nav_route_end_icon";
				var rbe_text=document.createElement("span");rbe_text.innerHTML="<span class='nav_route_end_text_des'>终点</span>"+ep.name;
				rb_end.appendChild(rbe_icon);
				rb_end.appendChild(rbe_text);
				br_div.appendChild(rb_end);
				//划过特效
				backgroundColorHover(rb_end);	 
				
				//总路程
				var totalLength_kil=totalLength/1000;
				var rb_total=$("<div class='nav_route_total'><div class='nav_route_total_length'>共:"+totalLength_kil+"公里</div></div>");
				$(br_div).append(rb_total);
				backgroundColorHover(rb_total[0]);	 
	  	
				var dll_s = new DLonLat(sp.x,sp.y);
				var dll_e = new DLonLat(ep.x,ep.y);
				//生成气泡
				var pop_config={color:"green",titleType:"html",offsety:-25,flash:true,height:60	,width:250};//泡泡配置
				//起点
				var saddress=sp.address||"暂无";
				var np_title_start="<div class='nav_route_pp_title' title='"+sp.name+"'><div class='nav_route_pp_title_icon'></div>起点:"+substr(sp.name,12)+"</div>";
				var np_content_start=$("<div class='nav_route_pp_content'>" +
						"<div class='nrpc_description'>" +
						"<div class='nrspc_address'><span class='nrspca_title'>地址：</span><span class='nrspca_text' title='"+saddress+"'>"+saddress+"</span></div>" +
						"</div>"+
						"<div class='nrspc_function'><a href='#' class='nrspc_zoom'>定位放大</a> <a href='#' class='wpcs_zoom'>定位缩小</a>  <!--<a href='#' class='wpcs_zoom'>纠错</a><a href='#' class='wpcs_next'>详细</a>--></div></div>");
				var nav_pop_start=new DPopup(dll_s,np_title_start,np_content_start[0],$.extend({},pop_config,{color:"green"}));
				map.addOverlay(nav_pop_start);
				np_content_start.find('.nrspc_zoom').bind("click",function(){
					map.setZoomLevel(0);
				});
				np_content_start.find('.wpcs_zoom').bind("click",function(){
					if(map.getZoomLevel()>=6){
						return;
					}
					map.setZoomLevel(6);
				});
				//终点
				var ed=ep.address||"暂无";
				var np_title_end="<div class='nav_route_pp_title' title='"+ep.name+"'><div class='nav_route_pp_title_icon'></div>终点:"+substr(ep.name,12)+"</div>";
				var np_content_end=$("<div class='nav_route_pp_content'>" +
						"<div class='nrpc_description'>" +
						"<div class='nrspc_address'><span class='nrspca_title'>地址：</span><span class='nrspca_text' title='"+ed+"'>"+ed+"</span></div>" +
						"</div>"+
						"<div class='nrspc_function'><a href='#' class='nrspc_zoom'>定位放大</a>  <a href='#' class='wpcs_zoom'>定位缩小</a>        <!--<a href='#' class='wpcs_zoom'>纠错</a><a href='#' class='wpcs_next'>详细</a>--></div></div>");
				var nav_pop_end=new DPopup(dll_e,np_title_end,np_content_end[0],$.extend({},pop_config,{color:"red"}));
				map.addOverlay(nav_pop_end);
				np_content_end.find('.nrspc_zoom').bind("click",function(){
					map.setZoomLevel(0);
				});
	  			np_content_end.find('.wpcs_zoom').bind("click",function(){
	  				if(map.getZoomLevel()>=6){
						return;
					}
					map.setZoomLevel(6);
				});
				//绘制点和路线
				var icon_config={left:-10,top:-28,width:20,height:30};
				var dicon_s=new DIcon(dll_s,DCI.extend(icon_config,{image:"images/main/nav_start.png"}));
				map.addOverlay(dicon_s);
				var dicon_e=new DIcon(dll_e,DCI.extend(icon_config,{image:"images/main/nav_end.png"}));
				map.addOverlay(dicon_e);
				
				//绑定事件
				var icon_el_start=dicon_s.getElement();
				var icon_el_end=dicon_e.getElement();
				$(icon_el_start).bind("click",popupStart);
				$(icon_el_end).bind("click",popupEnd);
				$(rb_start).bind("click",popupStart);
				$(rb_end).bind("click",popupEnd);
				function popupStart(){
					popup(nav_pop_start);
				}
				function popupEnd(){
					popup(nav_pop_end);
				}
				var pre_pop=void(0);
				function popup(pop){
					if(pre_pop&&pre_pop!=pop)
						pre_pop.hide();
					if(pop.isShow)pop.hide();
					else pop.show();
					pre_pop=pop;
				}
	  		}
	  	,[]);
	}
	
	
	/**
	 * @type 通过名称查询POI列表
	 * @param {number} target	标示为,1代表起点列表查询，2代表终点列表查询
	 * 		  {string or DCI.Pojo.POI} pname 代表将要查询的名称，如果是POI对象则进行直接填充
	 */
	this.name=function(target,pname){
		//加载图标
		var list_div=target==1?DCI.get("nav_start_list"):DCI.get("nav_end_list");
		list_div.innerHTML="<div class='loading'></div>";
		//查询
		var poiArray=void(0);
		var poiName=void(0);
		var query=new DCI.Service.POI(1);//参数1：指定abc的poi接口
		if(typeof(pname)=="object"){
			poiArray=[pname];
			poiName=pname.name;
			load();
		}else{
			var param={
				searchName:pname
			};
//			if(searchTarget==2){
				param.srctype="BUS:5%2BPOI";
//			}
			query.getByName(param,function(poi,data){
				poiArray=poi.pois;
				poiName=pname;
				load();
			},["name","address","type","x","y","srctype","tel"]);
		}
		
		
		//延迟加载
		function load(){
			setTimeout(function(){
				list(target,poiArray,poiName);			
			},300);
		}
	}
	
	/**
	 * @type 填充起终点list列表
	 * @param {number} target 目标列表，数字类型。1代表填充起点列表，2代表填充重点列表
	 * 		  {Array(DCI.Pojo.POI)} pois 填充列表的POI数组
	 */
	function list(target,pois,pname){
		//清空列表数据
		var list_div=target==1?DCI.get("nav_start_list"):DCI.get("nav_end_list");
		list_div.innerHTML="";
		//数据为空，显示暂无数据
		if(!pois||!(pois.length>0)){
  			var n_h=$("<div class='nav_se_none_result'><div>因网络问题无法获取结果，或者数据为空。</div><div class='nav_se_none_result_refresh'>请点击<a href='#'>刷新</a>，尝试重新获取。</div></div>");
  			n_h.find("a").bind("click",function(){
  				nav.name(target,pname);
  			});
  			$(list_div).append(n_h);
  			if(target==1){	//暂无数据时，要清空记录当前被选中的poi，避免暂无数据是也能进行查询
  				delete nav.start_poi;
  			}else if(target==2){
  				delete nav.end_poi;
  			}
			return;
		}
		//起终点文本
		var pp_title_title=target==1?"起点":"终点";
		var pp_color=target==1?"green":"red";
		//处理poi数据
  		DCI.each(pois,function(poi,number){
  			var name=poi.name;
			var address=poi.address||"暂无";
			var dl=new DLonLat(poi.x,poi.y);	//经纬度坐标对象
			var phone=poi.tel||"暂无";
			var srcType=poi.srctype||"";
			var isBus=srcType.toLowerCase()=="bus"; 
			if(name.length>18)name=name.substr(0,18);
			if(address.length>18)address=address.substr(0,18);
			
  			var icon_class=target==1?"nav_list_li_icon_start":"nav_list_li_icon_end";
  			var list_li=document.createElement("li");list_li.className="nav_list_li";
  			var list_icon=document.createElement("span");list_icon.className=icon_class;
  			if(isBus){
  				var poiName=poi.name+"(公交车站)";
  			}else{
  				var poiName=poi.name;
  			}
  			var list_text=document.createElement("span");list_text.className="nav_list_li_text";list_text.innerHTML=poiName;
  			list_li.appendChild(list_icon);
  			list_li.appendChild(list_text);
			list_div.appendChild(list_li); 
			
			/*组织泡泡内容和标题*/
			//----内容
			var nav_pp_content=document.createElement("div");nav_pp_content.className="nav_pp_content";
			//地址
			var npc_address=document.createElement("div");npc_address.className="npc_address";npc_address.innerHTML="<span class='ppd_content_title'>地址:</span>";
			var npca_address=document.createElement("span");npca_address.className="npca_address";npca_address.innerHTML=address;npca_address.title=poi.address;
			npc_address.appendChild(npca_address);
			nav_pp_content.appendChild(npc_address);
			//电话
			var npc_phone=document.createElement("div");npc_phone.className="npc_phone";npc_phone.innerHTML="<span class='ppd_content_title'>电话:</span>";
			var npcp_phone=document.createElement("span");npcp_phone.className="ppdp_phone";npcp_phone.innerHTML=phone;
			npc_phone.appendChild(npcp_phone);
			nav_pp_content.appendChild(npc_phone);
			//功能(从这里出发、到这里来、周边搜索、纠错)
			var npc_fn=document.createElement("div");npc_fn.className="npc_fn";
			var npcf_around=document.createElement("span");npcf_around.className="npcf_around";npcf_around.innerHTML="周边搜索:";
			var npcf_keyword=document.createElement("input");npcf_keyword.className="npcf_keyword";
			var npcf_btn=document.createElement("span");npcf_btn.className="npcf_btn";npcf_btn.innerHTML="查询";
			npc_fn.appendChild(npcf_around);
			npc_fn.appendChild(npcf_keyword);
			npc_fn.appendChild(npcf_btn);
			nav_pp_content.appendChild(npc_fn);
			//----标题
			var pp_title="<span class='nav_pp_title' title='"+poi.name+"'><span class='nav_pp_title_title'>"+pp_title_title+":</span><span class='nav_pp_title_name' title='"+name+"'>"+substr(name,12)+"</span></span>";
			
			//---泡泡叠加
			var dp=new DPopup(dl,pp_title,nav_pp_content,{color:pp_color,titleType:"html",flash:true,height:80,offsety:-25});	
			map.addOverlay(dp);
			
			/* 定义小的功能，但某个时间出发时，整合这些小组件 */
			function poiListOver(){	//高亮显示poi信息的行
				DCI.addClass(list_li,"nav_list_li_hover");	
			}
			function poiListOut(){	//去除高亮显示
				DCI.removeClass(list_li,"nav_list_li_hover");	
			}
			function popup(){		//弹出泡泡
				if(window.nav.pre_dp&&window.nav.pre_dp!=dp){
					window.nav.pre_dp.hide();
				}
				if(!dp.isShow)
					dp.show();
				else
					dp.hide();
				window.nav.pre_dp=dp;				
			}
			
			//泡泡周边查询功能
			DCI.event.bindDom(npcf_btn,"click",function(){
				var v=npcf_keyword.value;
				if(!v)return;
				window.poi.nearByPoint(poi,v,"1000");				
			});
			DCI.event.bindDom(list_li,"mouseover",function(){
				poiListOver();
			});
			DCI.event.bindDom(list_li,"mouseout",function(){
				poiListOut();
			});
			//绑定li的点击事件
			DCI.event.bindDom(list_li,"click",function(event){
				var dlonlat = new DLonLat(poi.x,poi.y);
				var zoom=4;
				var icon_config={left:-10,top:-28,width:20,height:30};
				if(target==1){
					//起点气泡叠加
					if(nav.start_dicon){
						map.removeOverlay(nav.start_dicon);
						map.removeOverlay(nav.start_title);
					}
					DCI.extend(icon_config,{image:"images/main/nav_start.png"});//设置图片
					nav.start_dicon=new DIcon(dlonlat,icon_config);
					nav.start_title=new DTitle(dlonlat,poi.name,{round:false,fontPosition:1,fontColor:"green",borderColor:"green"});
					map.addOverlay(nav.start_dicon);
					map.addOverlay(nav.start_title);
					nav.start_poi=poi;					
					if(nav.start_li){
						DCI.removeClass(nav.start_li,"nav_list_li_start_seleted");
					}
					DCI.addClass(list_li,"nav_list_li_start_seleted");		
					nav.start_li=list_li;
					
					//绑定气泡事件
					var die=nav.start_dicon.getElement();
					DCI.event.bindDom(die,"click",function(){
						popup();
					});
				}else if(target==2){
					//起点气泡叠加
					if(nav.end_dicon){
						map.removeOverlay(nav.end_dicon);
						map.removeOverlay(nav.end_title);
					}
					DCI.extend(icon_config,{image:"images/main/nav_end.png"});//设置图片
					nav.end_dicon=new DIcon(dlonlat,icon_config);
					nav.end_title=new DTitle(dlonlat,poi.name,{round:false,fontPosition:1,fontColor:"red",borderColor:"red"});
					map.addOverlay(nav.end_dicon);
					map.addOverlay(nav.end_title);
					nav.end_poi=poi;			
					if(nav.end_li){
						DCI.removeClass(nav.end_li,"nav_list_li_end_seleted");
					}
					DCI.addClass(list_li,"nav_list_li_end_seleted");					
					nav.end_li=list_li;
					//绑定气泡事件
					var die=nav.end_dicon.getElement();
					DCI.event.bindDom(die,"click",function(){
						popup();
					});
				}				
				//如果起点终点全在就进行定位
				if(nav.start_poi&&nav.end_poi){
					var spoi=nav.start_poi;
					var epoi=nav.end_poi;
					var coord_str=spoi.x+","+spoi.y+","+epoi.x+","+epoi.y;
					//缩放到固定点
					var c = DLonLatBounds.minBox(coord_str);
					var level = map.getBoundsZoomLevel(c);
					map.setCenter(c.getCenter(),level);
				}			
			});
			
			//选中第一个			
			if(number==0){
				DCI.event.fire(list_li,"click");
			}
		});		
	}
	function txtblur(event,tip){
		var v=this.value;
		v=v.replace(/\s/ig,'');
		if(v.length>0){
			if(this.value==tip){
				this.style.color="#c9c9c9";	
			}
		}else{
			this.value=tip;
			this.style.color="#c9c9c9";
		}
	};
	
	function txtfocus(event,tip){
		var v=this.value;
		if(v==tip){
			this.value="";
			this.style.color="#000";
		}else{
			this.select();
		}
	};
	
	function keySubmit(event,target){
		if(event.keyCode==13){
			DCI.event.fire(target,"click");
			DCI.event.stop(event);
		}
	};
};

