﻿
document.write('<script type="text/javascript" src="Js/like/js/yahoo.js"></script>');
document.write('<script type="text/javascript" src="Js/like/js/dom.js"></script>');
document.write('<script type="text/javascript" src="Js/like/js/event-debug.js"></script>');
document.write('<script type="text/javascript" src="Js/like/js/animation.js"></script>');
document.write('<script type="text/javascript" src="Js/like/js/autocomplete-debug.js"></script>');
document.write('<script type="text/javascript" src="Js/like/js/yui-base.js"></script>');
document.write('<div id="divHotCityId"></div>');
document.onclick=allOnblur;


var planeColl = null;
var panelId = 'et:cityPopup';  //热点城市面板ID
var cn = '';
var myIFrameId = 'myIFrameId';
var isStartHotCity = true;

//match method
function getStates(sQuery){
	if(isStartHotCity){		
		hidHotCityPanel();
		isStartAC = true;		
	}
		
	result = [];
		if (sQuery && sQuery.length > 0) {
			sQuery = decodeURI(sQuery);			
			if (sQuery.charCodeAt(0) < 255) {			
			
				var r = dataset[sQuery.charAt(0).toLowerCase()];
				if (r+""!="undefined") {
					for (var p = r.length - 1; p >= 0; p--) {
					 if(r[p]+""!="undefined"){ 						
						var n = r[p].pyab;
						var cde = r[p].code;
												
						var v = n.toLowerCase().indexOf(sQuery.toLowerCase());
						var cv = cde.toLowerCase().indexOf(sQuery.toLowerCase());
						
						if (v === 0) {
							var isExis = false;
							
							for(var i = 0; i < result.length; i++){
					
								if(result[i][0] == r[p].name){
									isExis = true;
									break;
								}
							}
							if(!isExis)													
								result.unshift([r[p].name, r[p].pyab, r[p].code,r[p].cityNo]);													
						}else if(cv == 0){																
							var isExis = false;
							for(var i = 0; i < result.length; i++){
								if(result[i][0] == r[p].name){
									isExis = true;
									break;
								}
							}
							
							if(!isExis)													
								result.unshift([r[p].name, r[p].pyab, r[p].code,r[p].cityNo]);
						}else {							
							var o = r[p].py;
							var u = o.toLowerCase().indexOf(sQuery.toLowerCase());
							if (u === 0) {								
								result.unshift([r[p].name, r[p].pyab, r[p].code,r[p].cityNo]);
							}																				
						}
						}
					}
				}
			} else {				
				for (var s in dataset) {
					var r = dataset[s];					
					if (r+""!="undefined") {
					for (var p = r.length - 1; p >= 0; p--) {
						if(r[p]+""!="undefined"){ 
						if (r[p].name.indexOf(sQuery) == 0) {
							var isExis = false;							
							var arr = result.toString().split(",");
							for(var index in arr){
								if(arr[index] == r[p].name){
									isExis = true;
									break;
								}
							}
							
							if(isExis == false){
								result.push([r[p].name, r[p].pyab, r[p].code,r[p].cityNo]);
							}
						}
						}
						}
					}
				}
			}
		} else {	
				
			for (var s in dataset) {
				var r = dataset[s];
				if (r+""!="undefined") {
				for (var p = r.length - 1; p >= 0; p--) {	
				if(r[p]+""!="undefined"){ 				
					result.push([r[p].name, r[p].pyab, r[p].code,r[p].cityNo]);
					}
				}
				}
			}
		}		
		planeColl = result.toString().split(',');
		return result;
}

/**
*initial method
*params : textInput            form text component
*params : divContainerId       DIV tag
*/
var hidObj = {};
var startHotCity = {};//是否开启热点城市效果
function bindingSelector(textInput,divContainerId,compId,hidId,isHotCity){		  
	 
	  hidObj[textInput.toString()]=hidId.toString();

	  if(typeof(isHotCity) == 'boolean')
	  		startHotCity[textInput.toString()]=isHotCity;
	  else
	  		startHotCity[textInput.toString()]=true;	
		 	
	  YAHOO.example.ACJSFunction = function(){
                var oACDS;
                var oAutoComp;
                return {
                    init: function() {
                    //Logger                        						

					// Instantiate JS Function DataSource
					oACDS = new YAHOO.widget.DS_JSFunction(getStates);
					oACDS.maxCacheEntries = 0;
					
					// Instantiate AutoComplete
					oAutoComp = new YAHOO.widget.AutoComplete(textInput, divContainerId, oACDS);
					oAutoComp.useIFrame = (YAHOO.env.ua.ie && YAHOO.env.ua.ie <= 6) ? true : false;
					oAutoComp.alwaysShowContainer = false;
					oAutoComp.queryDelay = 0;
					oAutoComp.minQueryLength = 0;
					oAutoComp.maxResultsDisplayed = 50;
					
						//格式化下拉框的输出
                        oAutoComp.formatResult = function(oResultItem, sQuery) {
                            var sMarkup = oResultItem[0] + " (" + oResultItem[1] + ")";                           	                                                                                  
                            return (sMarkup);
                        };
						
						//选中某一选择项的事件
						oAutoComp.itemSelectEvent.subscribe(function (w, v) {
							var result = v[2];	
							var compInfo = v[0];						
							var compObj;
							var txtId = compInfo.toString().split(' ')[2];	
		
							if(hidObj[txtId] != null && hidObj[txtId] != '' && hidObj[txtId]	!= 'undefined'){
								compObj = document.getElementById(hidObj[txtId]);
							}else{								
								compObj = document.getElementById(compInfo.toString().split(' ')[2]+"No");
							}
							// 0是名称 2是三字码 3是编号
							compObj.value = result.toString().split(',')[2];	
                            
							//cn赋值
							var cityName =  result.toString().split(',')[0];
							cn=cityName;
						
						});						
						
						//鼠标移入到某项的事件  
						oAutoComp.itemMouseOverEvent.subscribe(function (y, x) {
							var compId = x[0].toString().split(' ')[2];							
							var cityName =  x[1].innerText.toString().split(' ')[0];
							cn=cityName;
							var ho;
							for(var i = 0; i < planeColl.length; i++){
								if(planeColl[i] == cityName){
									if(hidObj[compId] != null && hidObj[compId] != '' && hidObj[compId]	!= 'undefined'){																				
										ho = document.getElementById(hidObj[compId]);
									}else{
										ho = document.getElementById(compId+"No");
									}
										
									ho.value =planeColl[i+2];																	
								}																
							}
					
							
							if($Id(compId).value == null || $Id(compId).value == '' || $Id(compId).value == 'undefined'){
								ho.value = '';
							}
												
						});
						
						//鼠标移动到某项的事件  
						oAutoComp.itemArrowToEvent.subscribe(function (y, x) {
							var compId = x[0].toString().split(' ')[2];							
							var cityName =  x[1].innerText.toString().split(' ')[0];
							cn=cityName;
						
							var ho;						
							for(var i = 0; i < planeColl.length; i++){
								if(planeColl[i] == cityName){
							
									if(hidObj[compId] != null && hidObj[compId] != '' && hidObj[compId]	!= 'undefined'){										
										ho = document.getElementById(hidObj[compId]);
									}else{
										ho = document.getElementById(compId+"No");
									}
									//以来3改成2 ID TO  CODE
									ho.value = planeColl[i+2];																																			
								}
							}
						  
							if($Id(compId).value == null || $Id(compId).value == '' || $Id(compId).value == 'undefined'){
								ho.value = '';
							}				
						});	
						
						//下拉框收缩时的事件
						oAutoComp.containerCollapseEvent.subscribe(function (y, x) {
						
							var compId = x[0].toString().split(" ")[2];
							var compObj = document.getElementById(compId);
							if (compObj.value != null && compObj.value != "") {
								compObj.value = cn;
							
							}
							
							isStartAC = false;							
						});
																		
						// Subscribe to Custom Events
                        oAutoComp.dataReturnEvent.subscribe(YAHOO.example.ACJSFunction.myOnDataReturn);            			
                    },

                    // Define Custom Event handlers
                    myOnDataReturn: function(sType, aArgs) {
                    
                        var oAutoComp = aArgs[0];
                        var sQuery = aArgs[1];
                        var aResults = aArgs[2];
						
						var strComp = oAutoComp.toString();
						var txtId = strComp.split(' ')[2];
						if(aResults.length == 0) {
							var compObj;
							if(hidObj[txtId] != null && hidObj[txtId] != '' && hidObj[txtId]	!= 'undefined'){
								compObj = document.getElementById(hidObj[txtId]);
							}else{
								compObj = document.getElementById(txtId+"No");
							}
							
						//	compObj.value='';												                  
          	 				//oAutoComp.setBody("<div id=\"statescontainerdefault\">没有找到城市，请您重新输入。</div>");
                        }			   						
                    },
					
                    validateForm: function() {
                        // Validate form inputs here
                        return false;
                    }
                };
            }();
			
			
			if(isStartHotCity && ($Id(panelId) == null || $Id(panelId) == 'undefined')){				
				createCityPanel();
			}
			
			if(compId != null && compId != '' && compId != 'undefined'){
				YAHOO.util.Event.addListener(compId,'click',YAHOO.example.ACJSFunction.init);
			}
							                               			
            YAHOO.util.Event.addListener(this,'load',YAHOO.example.ACJSFunction.init);
            
            regEventForTxt();                                                			                                             
}

var map_Event = {}; //一个map对象，用于保存注册事件后的控件对象
var curCompId = ''; //记录当前获取焦点的文本框ID
var isTxtFocus = false;  //判断文本框是否得到焦点
var isCityFocus = false;//判断城市菜单是否得到焦点
var isCreateCityMenu = false;
var isStartAC = false;

//为文本框注册事件
function regEventForTxt(){
	if(isStartHotCity){
		for(var txtId in hidObj){				
		if(map_Event[txtId] == null || map_Event[txtId] == '' || map_Event[txtId] == 'undefined'){
			if(startHotCity[txtId] != null && startHotCity[txtId] != '' && startHotCity[txtId] != 'undefined' && startHotCity[txtId] == true){
				$Id(txtId).onfocus = function(e){	
					var pos = getElementPos(this.id);
				
					curCompId = this.id;
					isTxtFocus = true;
							
					$Id(panelId).style.left=pos.x+"px";
					$Id(panelId).style.top=(pos.y+20)+"px" ;												
	
					if(!isStartAC){
						$Id(panelId).style.display='block';
						topDiv($Id(panelId));
					}											
				};
			
				$Id(txtId).onblur = function(){	
					isTxtFocus = false;												
				};
				map_Event.txtId = $Id(txtId);		
			}	
		}
	}
	}		
}

//创建一个热点城市面板
function createCityPanel(){							
			var x = document.createElement("div");
			x.id = panelId;
			x.setAttribute("id", panelId);
			x.className = 'popupCity';
			var v = [];
			v.push("<h1><a href=\"#\">热门城市</a><font style='color:#0066cc;font-size:12px;font-weight:normal'>(其余城市可以通过输入来选择)</font></h1>");
			v.push("<UL>");					
			for(var hotelCity in hotCities){
				v.push("<li><a href=\"#\" onClick='hotCityIdToHidd(\""+hotelCity+"\");'>" + hotelCity + "</a></li>");
			}	
			v.push("</UL>");			
			x.innerHTML = v.join("\r\n");								
			$Id('divHotCityId').appendChild(x);
			
			var myIFrame = document.createElement('IFRAME');
			
			myIFrame.id=myIFrameId;
			myIFrame.src="about:blank";
			myIFrame.frameBorder = 0;
	      	myIFrame.scrolling = "no";
	      	myIFrame.style.position = "absolute";
	      	myIFrame.tabIndex = -1;
	      	myIFrame.style.display="none";
	        
			$Id('divHotCityId').appendChild(myIFrame);
			
			x.onfocus=function(e){
				isCityFocus= true;
			}
			
			x.onblur=function(e){
				isCityFocus= false;				
			}																													
}

function topDiv(div_dom){
	var iframe_dom = $Id(myIFrameId);
	iframe_dom.style.width = div_dom.offsetWidth;
	iframe_dom.style.height = div_dom.offsetHeight;
	iframe_dom.style.top = div_dom.style.top;
	iframe_dom.style.left = div_dom.style.left;	
	iframe_dom.style.display = "block";
}

//将热点城市码赋给匹配的隐藏域
function hotCityIdToHidd(objvalue){
	if(isStartHotCity){
		$Id(curCompId).value=objvalue;
		$Id(hidObj[curCompId]).value=hotCities[objvalue];
		hidHotCityPanel();
		curCompId = '';
	}	
}

function hidHotCityPanel(){
	if(isStartHotCity){	
		$Id(panelId).style.display='none';	
		$Id(myIFrameId).style.display='none';	
	}	
}

//获取控件的坐标点
function getElementPos(elementId) {
 var ua = navigator.userAgent.toLowerCase();
 var isOpera = (ua.indexOf('opera') != -1);
 var isIE = (ua.indexOf('msie') != -1 && !isOpera); // not opera spoof
 var el = document.getElementById(elementId);
 if(el.parentNode === null || el.style.display == 'none') {
  return false;
 }      
 var parent = null;
 var pos = [];     
 var box;     
 if(el.getBoundingClientRect)    //IE
 {         
  box = el.getBoundingClientRect();
  var scrollTop = Math.max(document.documentElement.scrollTop, document.body.scrollTop);
  var scrollLeft = Math.max(document.documentElement.scrollLeft, document.body.scrollLeft);
  return {x:box.left + scrollLeft, y:box.top + scrollTop};
 }else if(document.getBoxObjectFor)    // gecko    
 {
  box = document.getBoxObjectFor(el); 
  var borderLeft = (el.style.borderLeftWidth)?parseInt(el.style.borderLeftWidth):0; 
  var borderTop = (el.style.borderTopWidth)?parseInt(el.style.borderTopWidth):0; 
  pos = [box.x - borderLeft, box.y - borderTop];
 } else    // safari & opera    
 {
  pos = [el.offsetLeft, el.offsetTop];  
  parent = el.offsetParent;     
  if (parent != el) { 
   while (parent) {  
    pos[0] += parent.offsetLeft; 
    pos[1] += parent.offsetTop; 
    parent = parent.offsetParent;
   }  
  }   
  if (ua.indexOf('opera') != -1 || ( ua.indexOf('safari') != -1 && el.style.position == 'absolute' )) { 
   pos[0] -= document.body.offsetLeft;
   pos[1] -= document.body.offsetTop;         
  }    
 }              
 if (el.parentNode) { 
    parent = el.parentNode;
   } else {
    parent = null;
   }
 while (parent && parent.tagName != 'BODY' && parent.tagName != 'HTML') { // account for any scrolled ancestors
  pos[0] -= parent.scrollLeft;
  pos[1] -= parent.scrollTop;
  if (parent.parentNode) {
   parent = parent.parentNode;
  } else {
   parent = null;
  }
 }
 return {x:pos[0], y:pos[1]};
}

//通过ID获取对象
function $Id(objId){
	return document.getElementById(objId);
}

//通过名称获取对象集合
function $Name(objName){
	return document.getElementsByName(objName);
}

//在文本框和城市菜单都失去焦点的时候就隐藏文本框
function allOnblur(e){
	if(isStartHotCity){
		if(!isTxtFocus && !isCityFocus)hidHotCityPanel();
	}	
}

