/**
 * Copyright www.et-china.com 2006
 * Author: eton.liu 
 */
 
if(window.macaufly == undefined){
	window.macaufly = {};	
}

macaufly.cities = {
		AKA : {cname:"安康", pinyin:['an', 'kang'], airport:"安康机场"},
	AQG : {cname : "安庆", pinyin : ['an', 'qing'], airport : "天柱山机场"},
	AEB : {cname :"百色",pinyin:['bai','se'],  airport:"百色机场"}	,	//new
	BAV : {cname :"包头",pinyin:['bao','tou'],airport :"包头机场"},
	BSD : {cname :"保山",pinyin:['bao','shan'],  airport   :"保山机场"},	//new
	BHY : {cname :"北海",pinyin:['bei','hai'],airport :"北海福城机场"},
	PEK : {cname :"北京",pinyin:['bei','jing'],airport:"北京首都国际机场"},
	CGQ : {cname :"长春",pinyin:['chang','chun'],  airport :"长春大房身机场"},
	CSX : {cname :"长沙",pinyin:['chang','sha'],   airport :"长沙黄花机场"},
	CGD : {cname :"常德",pinyin:['chang','de'],    airport :"常德半姆湖机场"},
	CZX : {cname :"常州",pinyin:['chang','zhou'],  airport :"常州奔牛机场"},
	CIH : {cname : "长治", pinyin : ['chang', 'zhi'], airport : "长治机场"},
	CTU : {cname :"成都",pinyin:['cheng','du'],    airport :"成都双流机场"},
	CIF : {cname : "赤峰", pinyin : ['chi', 'feng'], airport : "赤峰机场"},
	CKG : {cname :"重庆",pinyin:['chong','qing'],  airport :"重庆江北机场"},
	DLU : {cname :"大理",pinyin:['da','li'],  airport :"大理机场"},	//new
	DLC : {cname :"大连",pinyin:['da','lian'],airport :"大连周水子机场"},
	DAT : {cname : "大同", pinyin : ['da', 'tong'], airport : "大同机场"},
	DDG : {cname :"丹东",pinyin:['dan','dong'],    airport :"丹东浪头机场"},
	DNH : {cname :"敦煌",pinyin:['dun','huang'],  airport  :"敦煌机场"},	//new
	ENH : {cname : "恩施", pinyin : ['en', 'shi'], airport : "恩施机场"},
	FOC : {cname :"福州",pinyin:['fu','zhou'],airport :"福州长乐机场"},
	KOW : {cname :"赣州",pinyin:['gan','zhou'],    airport :"赣州黄金机场"},
	CAN : {cname :"广州",pinyin:['guang','zhou'],  airport :"广州新白云国际机场"},
	KWE : {cname :"贵阳",pinyin:['gui','yang'],    airport :"贵阳龙洞堡机场"},
	KWL : {cname :"桂林",pinyin:['gui','lin'],airport :"桂林两江国际机场"},
	HRB : {cname :"哈尔滨",   pinyin:['ha','er','bin'], airport :"哈尔滨太平机场"},
	HAK : {cname :"海口",pinyin:['hai','kou'],airport :"海口美兰机场"},
	HLD : {cname :"海拉尔",pinyin  :['hai','la','er'],  airport:"东山机场"},	//new
	HZG : {cname : "汉中", pinyin : ['han', 'zhong'], airport : "汉中机场"},
	HGH : {cname :"杭州",pinyin:['hang','zhou'],   airport :"杭州萧山机场"},
	HFE : {cname :"合肥",pinyin:['he','fei'], airport :"合肥骆岗机场"},
	HET : {cname :"呼和浩特", pinyin:['hu','he','hao','te'],  airport:"呼和浩特白塔机场"},	
	TXN : {cname :"黄山",pinyin:['huang','shan'],  airport :"黄山屯溪机场"},
	HYN : {cname :"黄岩",pinyin:['huang','yan'],   airport :"黄岩路桥机场"},
	JIL : {cname :"吉林",pinyin:['ji','lin'], airport :"吉林二台子机场"},
	TNA : {cname :"济南",pinyin:['ji','nan'], airport :"济南遥墙机场"},
	JMU : {cname :"佳木斯",pinyin  :['jia','mu','si'],  airport:"东郊机场"},	//new
	JNZ : {cname :"锦州",pinyin:['jin','zhou'],    airport :"锦州小岭子机场"},
	JJN : {cname :"晋江",pinyin:['jin','jiang'],   airport :"晋江泉州机场"},
	JDZ : {cname :"景德镇",pinyin  :['jing','de','zhen'],  airport :"景德镇机场"},	//new
	JIU : {cname : "九江", pinyin : ['jiu', 'jiang'], airport : "九江机场"},
	JZH : {cname: "九寨沟",	pinyin : ['jiu','zhai','gou'],	 airport : "九黄机场"}, //new
	KRL : {cname : "库尔勒", pinyin : ['ku','er','le'], airport : "地窝堡机场"},
	KMG :{cname :"昆明",pinyin:['kun','ming'],    airport :"昆明巫家坝机场"},
	LXA :{cname :"拉萨",pinyin:['la','sa'],  airport :"拉萨贡嘎机场"},
	LHW :{cname :"兰州",pinyin:['lan','zhou'],    airport :"兰州中川机场"},
	LJG :{cname :"丽江",pinyin:['li','jiang'],  airport   :"丽江机场"}	,	//new
	LYG :{cname :"连云港",   pinyin:['lian','yun','gang'],  airport :"连云港白塔寺机场"},
	LNC :{cname :"临沧",pinyin:['lin','cang'],  airport   :"临沧机场"},	//new
	LYI :{cname :"临沂",pinyin:['lin','yi'],  airport:"临沂机场"},	//new
	LZH :{cname :"柳州",pinyin:['liu','zhou'],    airport :"柳州白莲机场"},
	LZO :{cname :"泸州",pinyin:['lu','zhou'],airport :"泸州兰田坝机场"},
	LYA :{cname :"洛阳",pinyin:['luo','yang'],    airport :"洛阳北郊机场"},
	LUM :{cname :"芒市",pinyin:['mang','shi'],  airport   :"芒市机场"}	,	//new
	MXZ :{cname :"梅州",pinyin:['mei','zhou'],    airport :"梅县机场"},
	NZH : {cname : "满洲里", pinyin : ['mian', 'zhou'], airport : "西郊机场"},
	MIG : {cname: "绵阳",	pinyin : ['mian','yang'],	 airport : "南郊机场"}, //add new 
	MDG :{cname :"牡丹江",   pinyin:['mu','dan','jiang'],   airport :"牡丹江海浪机场"},
	KHN :{cname :"南昌",pinyin:['nan','chang'],   airport :"南昌昌北机场"},
	NAO : {cname : "南充", pinyin : ['nan', 'chong'], airport : "南充高坪机场"},
	NKG :{cname :"南京",pinyin:['nan','jing'],    airport :"南京禄口机场"},
	NNG :{cname :"南宁",pinyin:['nan','ning'],    airport :"南宁吴墟机场"},
	NTG :{cname :"南通",pinyin:['nan','tong'],    airport :"南通兴东机场"},
	NNY :{cname :"南阳",pinyin:['nan','yang'],    airport :"南阳姜营机场"},
	NAY : {cname : "南苑", pinyin : ['nan', 'yuan'], airport : "北京南苑机场"},
	NGB :{cname :"宁波",pinyin:['ning','bo'],airport :"宁波栎社机场"},
	PZI :{cname :"攀枝花",pinyin:['pan','zhi','hua'],  airport :"攀枝花机场"},		//new
	NDG :{cname :"齐齐哈尔",pinyin :['qi','qi','ha','er'],  airport :"三家子机场"}	,
	SHP :{cname :"秦皇岛",   pinyin:['qin','huang','dao'],  airport :"秦皇岛山海关机场"},
	TAO :{cname :"青岛",pinyin:['qing','dao'],    airport :"青岛流亭机场"},
	JUZ :{cname :"衢州",pinyin:['qu','zhou'],airport :"衢州机场"},
	SYX :{cname :"三亚",pinyin:['san','ya'], airport :"三亚凤凰机场"},
	SWA :{cname :"汕头",pinyin:['shan','tou'],    airport :"汕头外砂机场"},
	SHA :{cname :"上海",pinyin:['shang','hai'],   airport :"上海虹桥机场"},
	PVG :{cname :"上海浦东",  pinyin :['shang','hai','pu','dong'],   airport :"上海浦东机场"},
	SZX :{cname :"深圳",pinyin:['shen','zhen'],   airport :"深圳黄田机场"},
	SHE :{cname :"沈阳",pinyin:['she','yang'],    airport :"沈阳桃仙机场"},
	SJW :{cname :"石家庄",   pinyin:['shi','jia','zhuang'], airport :"石家庄正定机场"},
	SYM :{cname :"思茅",pinyin:['si','mao'],  airport:"思茅机场"},	//new
	TYN :{cname :"太原",pinyin:['tai','yuan'],    airport :"太原武宿机场"},
	TSN :{cname :"天津",pinyin:['tian','jin'],    airport :"天津滨海国际机场"},
	TEN :{cname :"铜仁",pinyin:['tong','ren'],  airport:"大兴机场"},	//new
	WXN :{cname :"万县",pinyin:['wan','xian'],    airport :"万县梁平机场"},
	WEH :{cname :"威海",pinyin:['wei','hai'],  airport:"大水泊机场"},	//new
	WEF :{cname :"潍坊",pinyin:['wei','fang'],  airport:"文登机场"}	,	//new
	WNH : {cname : "文山", pinyin : ['wen', 'shan'], airport : "文山机场"},
	WNZ :{cname :"温州",pinyin:['wen','zhou'],    airport :"温州永强机场"},
	URC :{cname :"乌鲁木齐", pinyin:['wu','lu','mu','qi'],  airport:"乌鲁木齐地窝铺机场"},
	WUX :{cname :"无锡",pinyin:['wu','xi'],  airport :"无锡机场"},	//new
	WUH :{cname :"武汉",pinyin:['wu','han'], airport :"武汉天河机场"},
	WUS :{cname :"武夷山",pinyin  :['wu','yi','shan'],  airport:"武夷山机场"},	//new
	XIY :{cname :"西安",pinyin:['xi','an'],  airport :"西安咸阳机场"},
	XIC : {cname : "西昌", pinyin : ['xi', 'chang'], airport:"青龙机场"},
	XNN :{cname :"西宁",pinyin:['xi','ning'],airport :"西宁曹家堡机场"},
	JHG :{cname :"西双版纳(景洪)",pinyin:['xi','shuang','ban','na'],  airport:"嘎洒机场"},	
	XMN :{cname :"厦门",pinyin:['xia','men'],airport :"厦门高崎机场"},
	DIG :{cname :"香格里拉(中甸)",pinyin:['xiang','ge','li','la'],  airport  :"中甸机场"},	//new
	XFN :{cname :"襄樊",pinyin:['xiang','fan'],   airport :"襄樊刘集机场"},
	DAX :{cname :"兴义",pinyin:['xing','yi'],  airport:"兴义机场"},	//new
	ACX : {cname : "兴义", pinyin : ['xing', 'yi'], airport : "兴义机场"},
	XUZ :{cname :"徐州",pinyin:['xu','zhou'],airport :"徐州观音机场"},
	ENY : {cname : "延安", pinyin : ['yan', 'an'], airport : "延安机场"},
	YNZ :{cname :"盐城",pinyin:['yan','cheng'],  airport  :"盐城机场"},	//new
	YNJ : {cname : "延吉", pinyin : ['yan', 'ji'], airport : "延吉机场"},
	YNT :{cname :"烟台",pinyin:['yan','tai'],airport :"烟台莱山机场"},
	YBP :{cname :"宜宾",pinyin:['yi','bin'], airport :"宜宾菜坝机场"},
	YIH :{cname :"宜昌",pinyin:['yi','chang'],    airport :"宜昌三峡机场"},
	YIN : {cname : "伊宁", pinyin : ['yi', 'ning'], airport : "伊宁机场"},
	YIW :{cname :"义乌",pinyin:['yi','wu'],  airport :"义乌机场"},
	INC :{cname :"银川",pinyin:['yin','chuan'],   airport :"银川河东机场"},
	YCU :{cname :"运城",pinyin:['yun','cheng'],  airport  :"运城机场"}	,	//new
	UYN : {cname : "榆林", pinyin : ['yu', 'lin'], airport : "榆林机场"},
	ZHA :{cname :"湛江",pinyin:['zhan','jiang'],  airport :"湛江机场"},	//new
	DYG :{cname :"张家界",   pinyin:['zhang','jia','jie'],  airport :"张家界机场"},
	ZAT :{cname :"昭通",pinyin:['zhao','tong'],  airport  :"昭通机场"},	//new
	CGO :{cname :"郑州",pinyin:['zheng','zhou'],  airport :"郑州新郑机场"},
	HJJ : {cname : "芷江", pinyin : ['zhi', 'jiang'], airport : "芷江机场"},
	HSN : {cname : "舟山", pinyin : ['zhou', 'shan'], airport : "朱家尖机场"},
	ZUH :{cname :"珠海",pinyin:['zhu','hai'],airport :"珠海三灶机场"}
	
}

// return { CAN: "guangzhou", PEK: "Beijing" } like		
macaufly.citiesAsOptions = function (){
	var result = {};
	for(var i in macaufly.cities){
		if( macaufly.cities[i] instanceof Function) continue;
		result[i] = macaufly.cities[i].cname;
	}
	return result;
}.call();

macaufly.CityAutoComplete = Class.create();
Object.extend(macaufly.CityAutoComplete.prototype, ajax.DomBean.prototype);
Object.extend(macaufly.CityAutoComplete.prototype, {
	
	index:	-1,
	autoField:	null,	// the text input element
	autoResult:	null,	// the select input element
	blockTable:	null,	// the block table used to display prompt
	cities:	null,
		
  	initialize:function(element){
  		
  		ajax.DomBean.prototype.initialize.call(this, element);
  		if(this.cities == null)
  			this.cities = macaufly.cities;
  		
  		this.autoField = element;
		this.autoField.setAttribute('autocomplete','off');
		
		this.autoResult=$(this.autoResult);
		this.blockTable = $(this.blockTable);
		
		while(this.blockTable.firstChild != null)
			this.blockTable.removeChild(this.blockTable.firstChild);
		
		this.dataFeeder = new macaufly.CityAutoComplete.Matcher(this.cities);

		Event.observe(this.autoField, "keyup", this._onKeyPress.bindAsEventListener(this));
		Event.observe(window.document, "click", this._onReturn.bindAsEventListener(this));
		Event.observe(window.document, "keydown", this._onReturn.bindAsEventListener(this));
		
	},
	
	 _changed:function(event){
		 
		 
		 
		if (this.autoField.value=="")
			return;
			
			
//		var selectDep = $("depCity");
		 
		var selectArr = $("autoResult2");
		 
//		if(selectDep){
//			 selectDep.style.display = "none";
//		}
		 
		 if(selectArr){
			 selectArr.style.display = "none";
		 }
 
		while(this.blockTable.firstChild != null)
			this.blockTable.removeChild(this.blockTable.firstChild);

		var data = this.dataFeeder.getData(this.autoField.value);
		
		  //show data in block
		var first=true;  
		
		var index = 0;
		
		var row = new macaufly.CityAutoComplete.BlockField(" 按拼音排序", "BAE", this.autoResult, this.blockTable, this,"标题");
		
		for(var i in data){
			if (data[i] instanceof Function)
				continue;
		    var row = new macaufly.CityAutoComplete.BlockField(data[i], i, this.autoResult, this.blockTable, this);
    	}
    	this._keyDown();

		this.positionDiv();

	},
	
	positionDiv:function(){
		var el = this.autoField;
		var x = 0;
		var y = el.offsetHeight+2;
	
		//Walk up the DOM and add up all of the offset positions.
		while (el.offsetParent && el.tagName.toUpperCase() != 'BODY')
		{
			x += el.offsetLeft;
			y += el.offsetTop;
			el = el.offsetParent;
		}

		x += el.offsetLeft;
		y += el.offsetTop;

		var parentDiv=this.blockTable.parentNode;
		parentDiv.style.display ="block";
	  	parentDiv.style.position="absolute";
		parentDiv.style.left = x+ 'px';
		parentDiv.style.top = y + 'px';
		parentDiv.style.border = "1px solid #EAAB50";
		parentDiv.style.hand = 'pointer';
		
		
	},
	
	_clear:function(){
		this.autoField.value="";
	},
	
	_onKeyPress:function(event){
		switch(event.keyCode) {
			case Event.KEY_DOWN:
				this._keyDown();
				return;
			case Event.KEY_UP:
				this._keyUp();
				return;
			case Event.KEY_ESC:
				return;
			case Event.KEY_TAB:
				return;  
			case Event.KEY_RETURN:
				this._onReturn(event);	
				return;
		}	
		this.index=-1;
		this._changed();
	},
	
	_onReturn:function(event){
		
//		var selectDep = $("depCity");
		 
		 var selectArr = $("autoResult2");
		 
//		 if(selectDep){
//			 selectDep.style.display = "";
//		 }
		 
		 if(selectArr){
			 selectArr.style.display = "";
		 }
		 
		 
		 
		 
		 
		var len=this.blockTable.childNodes.length;
		for(var i=0;i<len;i++){
			var e = this.blockTable.childNodes[i];
			if (e.rowIndex==this.index){		
				var options=this.autoResult.options;
				for(j=0;j<options.length;j++){
					if (options[j].value==e.id){
						this.autoResult.selectedIndex=j;
						break;
					}	
				}
				break;		
			}
		}
    	this.blockTable.parentNode.style.display="none";
	},
	
	_keyDown:function(arrow){
		if (this.blockTable.childNodes){
			var len=this.blockTable.childNodes.length;
			if (len>0&&(this.index+1)!=len) this.index+=1;
			for(var i=0;i<len;i++){
				var e = this.blockTable.childNodes[i];
				if (e.rowIndex==this.index){
					e.style.backgroundColor="#FEF6E9";			  					  		
		  		}else {
					e.style.backgroundColor="#FFFFFF";
				}
			}
		}
	},
	
	_keyUp:function(arrow){
		
		if (this.blockTable.childNodes){
			var len=this.blockTable.childNodes.length;
  			  if (len>0&&(this.index>0))
	  			  this.index-=1;	
			  for(var i=0;i<len;i++){
		  		var e = this.blockTable.childNodes[i];
			  	if (e.rowIndex==this.index){
			  		e.style.backgroundColor="#FEF6E9";		  			  		
			  	}else {
		  			e.style.backgroundColor="#FFFFFF";
		  		}
			  		
			  }
		}
	},
	
	_changeBgColor:function(e){
		if (e.style.backgroundColor=="#FFFFFF")
			e.style.backgroundColor="#FEF6E9";
		else
			e.style.backgroundColor="#FFFFFF";	
	},
	
	resetIndex:function(){
		this.index=-1;
	}
	
});

macaufly.CityAutoComplete.Matcher  = Class.create();
macaufly.CityAutoComplete.Matcher.prototype={
	
	cities:null,
	
	initialize:function(cities){
		this.cities=cities;
	},
	
	getData:function(s){
		s=s.toLowerCase();
		return this.match(s,this.cities);
	},
	
	match:function (s,cities){
		var result=null;

		if (this.isChinese(s))
			return this.matchChinese(s,cities);	

		if (s.length==3)
			result=this.matchCityCode(s,cities);

		if (result==null)
			return this.matchPinYin(s,cities);
		else{
			var tmpResult=this.matchPinYin(s,cities);
			for (k in tmpResult){
				if (tmpResult[k] instanceof Function)
					 continue;
				if(tmpResult[k] != null) {
					//result[k]=tmpResult[k].cname;
					result[k]=tmpResult[k];
				}
			}
			return result;
		}
				
	},

	matchPinYin:function (s,cities){
		var result={};
		for (i in cities){
			if (cities[i] instanceof Function)
			 continue; 
			var slen=s.length;
			for (j=0;j<slen;j++){
				if (cities[i].pinyin[j] && 
				cities[i].pinyin[j].substring(0,1)!=s.substring(j,j+1))
					break;
				if (j==(slen-1))
					result[i]=cities[i].cname;
			}
			if (cities[i].pinyin.join("").indexOf(s)==0)
				result[i]=cities[i].cname;		
		}
		return result;
	},

	matchChinese :function(s,cities){
		var result={};
		for (i in cities){
			if (cities[i] instanceof Function)
				 continue; 
			var slen=s.length;
			for (j=0;j<slen;j++){
				if (cities[i].cname &&
				cities[i].cname.substring(j,j+1)!=s.substring(j,j+1))
					break;
				if (j==(slen-1))
					result[i]=cities[i].cname;
			}
			
		}
		return result;
	},

	matchCityCode:function(s,cities){
		s=s.toUpperCase();
		var result={};
		for (i in cities){
			if (cities[i] instanceof Function)
				 continue; 
			if (i==s){
				result[i]=cities[i].cname;
				return result;
			}
			
		}

	},

	isChinese:function(s){
		//if (/[^\x00-\xff]/g.test(s))
		if (s.charCodeAt(0)>255)
			return true; 
	}
};

macaufly.CityAutoComplete.BlockField = Class.create();

macaufly.CityAutoComplete.BlockField.prototype={
	
	 /*
	 * block:
	 * <tr>
	 * <td id="">vlabel</td>
	 * </tr> 
	 */
	initialize:function(value,	vlabel,	autoResult,	blockTable,	auto,title){
		
		
	  this.autoResult=autoResult;
	  this.blockTable=blockTable;
	  this.auto=auto;
	
	  this.blockrow=document.createElement("TR");
	  this.blockrow.id=vlabel; 
	  this.blockField1=document.createElement("TD");
	  
	  this.blockField1.id=vlabel;
	  
	  var pinyin = "";
	  for(var object in macaufly.cities){
		  if(object==vlabel){
			  var city = macaufly.cities[object];
			  pinyin = city.pinyin[0]+city.pinyin[1];
			  break;
		  }
	  }
	  
	  var div = document.createElement("div");
	  div.style.width = "160px";
	  div.style.height = "20px";
	  div.style.zIndex = "100";
	  if(title){
		div.innerHTML = "<table width='100%'><tr bgcolor='#FEEAC7'><td width='50%' align='left' bgcolor='#FEEAC7' colspan='2'>&nbsp按拼音排序</td></tr><table>";
	}else{
		div.innerHTML = "<table width='100%' cellspacing='0' cellpadding='0'><tr><td width='50%' align='left'>"+pinyin+"</td><td width='50%' align='right'>"+value+"</td></tr><table>";
	}
	
//	var iframe = document.createElement("iframe");
//	iframe.style.width = "200px";
	//iframe.style.height = "20px";
	//iframe.style.zIndex = "100";
	
	this.blockField1.appendChild(div);
	//this.blockField1.appendChild(iframe);
	  
	  this.block=div//=document.createTextNode(value);
	  
	  this.blockField1.appendChild(div);
	  this.blockrow.appendChild(this.blockField1);
	
	  blockTable.appendChild(this.blockrow);
	
	  Event.observe(this.blockField1, "click", this._click.bindAsEventListener(this));
	  Event.observe(this.blockField1, "mouseover", this._moIn.bindAsEventListener(this));
  	  Event.observe(this.blockField1, "mouseout", this._moOut.bindAsEventListener(this));

	  return this.blockrow;	
	},
	
	_moIn:function(event){
		this.clearBgColor();
		this.auto.resetIndex();
		var target=Event.element(event);
		target.parentNode.style.backgroundColor="#FEF6E9";
	},
	_moOut:function(event){
		var target=Event.element(event);
		target.parentNode.style.backgroundColor="#FFFFFF";
	},
	clearBgColor:function(){
		var len=this.blockTable.childNodes.length;
		for(var i=0;i<len;i++){
			var e = this.blockTable.childNodes[i];
			e.style.backgroundColor="#FFFFFF";	
		}
	},
	_click:function(){
	   var options=this.autoResult.options;
	   for(i=0;i<options.length;i++){
	     if (options[i].value==this.blockField1.id)
	     	this.autoResult.selectedIndex=i;
	   }
	   
//	   var selectDep = $("depCity");
		 
	   var selectArr = $("autoResult2");
		 
///	   if(selectDep){
//		   selectDep.style.display = "";
//	   }
		 
	   if(selectArr){
		   selectArr.style.display = "";
	   }
	   
	  this.blockTable.parentNode.style.display="none";
	}
};


//国际城市部分
macaufly.intlCities = {
	CAN	:{cname:"广州",ename:['guang','zhou']},
	SWA	:{cname:"汕头",ename:['shan','tou']},
	CTU	:{cname:"成都",ename:['cheng','du']},
	KHN	:{cname:"南昌",ename:['nan','chang']},
	PEK	:{cname:"北京",ename:['bei','jing']},
	//SIA	:{cname:"西安",ename:['xi','an']},
	XIY	:{cname:"西安",ename:['xi','an']},
	CGO	:{cname:"郑州",ename:['zheng','zhou']},
	XMN	:{cname:"厦门",ename:['xia','men']},
	CSX	:{cname:"长沙",ename:['chang','	sha']},
	KMG	:{cname:"昆明",ename:['kun','ming']},
	HAK	:{cname:"海口",ename:['hai','kou']},
	SYX	:{cname:"三亚",ename:['san','ya']},
	KWL	:{cname:"桂林",ename:['gui','lin']},
	NNG	:{cname:"南宁",ename:['nan','ning']},
	WUH	:{cname:"武汉",ename:['wu','han']},
	SHE	:{cname:"沈阳",ename:['shen','yang']},				
	HRB	:{cname:"哈尔滨",ename:['ha','er','bin']},		
	CGQ	:{cname:"长春",ename:['chang','chun']},				
	DLC	:{cname:"大连",ename:['da','lian']},				
	URC	:{cname:"乌鲁木齐",ename: ['wu','lu','mu','qi']},
	SHA	:{cname:"上海",ename:['shang','hai']},				
	PVG :{cname:"上海浦东",ename:['shang','hai']},	////
	MFM:{cname:"澳门",ename:['ao','men']},

	ABJ:{cname:"阿必让",ename:['ABIDJAN']},
	ABZ:{cname:"阿伯丁",ename:['ABERDEEN']},
	ABV:{cname:"阿布贾",ename:['ABUJA']},
	AUH:{cname:"阿布扎比",ename:['ABU','DHABI']},
	ADL:{cname:"阿德莱德",ename:['ADELAIDE']},
	ALG:{cname:"阿尔及尔",ename:['ALGIERS']},
	ACC:{cname:"阿克拉",ename:['ACCRA']},
	AUA:{cname:"阿鲁巴",ename:['ARUBA']},
	AMS:{cname:"阿姆斯特丹",ename:['AMSTERDAM']},
	AGF:{cname:"阿让",ename:['AGEN']},
	YEG:{cname:"埃德蒙顿",ename:['EDMONTON']},
	EVN:{cname:"埃里顿",ename:['YEREVAN,']},
	AMD:{cname:"艾哈迈达巴德",ename:['AHMEDABAD']},
	EDI:{cname:"爱丁堡",ename:['EDINBURGH,']},
	ANE:{cname:"安道尔",ename:['ANGERS']},
	ANK:{cname:"安卡拉",ename:['ANKARA']},
	AMM:{cname:"安曼",ename:['AMMAN']},
	AKL:{cname:"奥克兰",ename:['AUCKLAND']},
	AUS:{cname:"奥斯丁",ename:['AUSTIN']},
	OSL:{cname:"奥斯陆",ename:['OSLO']},
	OVD:{cname:"奥维耶多",ename:['ASTURIAS']},
	BGW:{cname:"巴格达",ename:['BAGHDAD']},
	PMO:{cname:"巴勒莫",ename:['PALERMO']},
	DPS:{cname:"巴厘岛",ename:['DENPASAR','BALI']},
	//PAR:{cname:"巴黎",ename:['PARIS']},
	CDG:{cname:"巴黎",ename:['PARIS']},////
	SVO:{cname:"莫斯科",ename:['MOSCOW']},////
	JFK:{cname:"纽约",ename:['NEW','YORK']},////
	MXP:{cname:"米兰",ename:['MILAN']},////
	ARN:{cname:"斯德哥尔摩",ename:['STOCKHOLM']},////
	BRI:{cname:"巴里",ename:['BARI']},
	BAH:{cname:"巴林",ename:['BAHRAIN']},
	VLC:{cname:"巴伦西亚",ename:['VALENCIA']},
	BKO:{cname:"巴马克",ename:['BAMAKO']},
	PTY:{cname:"巴拿马城",ename:['PANAMA','CITY']},
	BCN:{cname:"巴塞罗那",ename:['BARCELONA']},
	BSL:{cname:"巴赛尔",ename:['BASEL']},
	BSB:{cname:"巴西利亚",ename:['BRASILIA']},
	BER:{cname:"柏林",ename:['BERLIN']},
	BGF:{cname:"班吉",ename:['BANGUI']},
	BLR:{cname:"班加罗尔",ename:['BANGALORE']},
	BFS:{cname:"贝尔法斯特",ename:['BELFAST']},
	BCV:{cname:"贝尔莫潘",ename:['BELMOPAN']},
	BEY:{cname:"贝鲁特",ename:['BEIRUT']},
	PSA:{cname:"比萨",ename:['PISA']},
	BIO:{cname:"毕尔包",ename:['BILBAO']},
	PEN:{cname:"槟城",ename:['PENANG']},
	BNJ:{cname:"波恩",ename:['BONN']},
	BOD:{cname:"波尔多",ename:['BORDEAUX']},
	OPO:{cname:"波尔里",ename:['PORTO']},
	BGO:{cname:"波哥大",ename:['BERGEN']},
	BOS:{cname:"波士顿",ename:['BOSTON']},
	PDX:{cname:"波特兰",ename:['PORTLAND']},
	BRN:{cname:"伯尔尼",ename:['BERNE']},
	BHX:{cname:"伯明翰",ename:['BIRMINGHAM,']},
	BLQ:{cname:"博洛尼亚",ename:['BOLOGNA']},
	BRE:{cname:"不来梅",ename:['BREMEN']},
	BUD:{cname:"布达佩斯",ename:['BUDAPEST']},
	HKT:{cname:"布吉岛",ename:['PHUKET']},
	BUH:{cname:"布加勒斯特",ename:['BUCHAREST']},
	PRG:{cname:"布拉格",ename:['PRAGUE']},
	BES:{cname:"布雷斯特",ename:['BREST']},
	BZV:{cname:"布里柴维尔",ename:['BRAZZAVILLE']},
	BNE:{cname:"布里斯班",ename:['BRISBANE']},
	BRS:{cname:"布里斯托尔",ename:['BRISTOL']},
	BRU:{cname:"布鲁塞尔",ename:['BRUSSELS']},
	BJM:{cname:"布琼布拉",ename:['BUJUMBURA']},
	BUE:{cname:"布宜诺斯艾利斯",ename:['BUENOS','AIRES']},
	NGS:{cname:"长崎",ename:['NAGASAKI']},
	OKA:{cname:"冲绳",ename:['OKINAWA']},
	DRW:{cname:"达尔文",ename:['DARWIN']},
	DKR:{cname:"达喀尔",ename:['DAKAR']},
	DAC:{cname:"达卡",ename:['DHAKA']},
	DAR:{cname:"达累斯萨达姆",ename:['DAR','ES','SALAAM']},
	DUD:{cname:"达尼丁",ename:['DUNEDIN']},
	OSA:{cname:"大阪",ename:['OSAKA,']},
	OIT:{cname:"大分",ename:['OITA']},
	DAM:{cname:"大马士革",ename:['DAMASCUS']},
	TAE:{cname:"大丘",ename:['DAEGU']},
	DEN:{cname:"丹佛",ename:['DENVER']},
	THR:{cname:"德黑兰",ename:['TEHRAN,']},
	TIP:{cname:"的黎波里",ename:['TRIPOLI']},
	DTT:{cname:"底特律",ename:['DETROIT']},
	TIA:{cname:"地拉那",ename:['TIRANA']},
	DIL:{cname:"帝力",ename:['DILI']},
	TYO:{cname:"东京",ename:['TOKYO']},
	NRT:{cname:"东京",ename:['TOKYO']},
	DUB:{cname:"都柏林",ename:['DUBLIN']},
	TRN:{cname:"都灵",ename:['TURIN']},
	DLA:{cname:"杜阿拉",ename:['DOUALA']},
	DXB:{cname:"杜拜",ename:['DUBAI']},
	DUS:{cname:"杜塞尔多夫",ename:['DUSSELDORF']},
	YYZ:{cname:"多伦多",ename:['TORONTO']},
	DTM:{cname:"多特蒙德",ename:['DORTMUND']},
	OKC:{cname:"俄克拉河马城",ename:['OKLAHOMA']},
	NDJ:{cname:"恩贾梅纳",ename:['NDJAMENA']},
	FRA:{cname:"法兰克福",ename:['FRA']},   
	PHL:{cname:"费城",ename:['PHILADELPHIA']},
	PHX:{cname:"凤凰城",ename:['PHOENIX']},
	FLR:{cname:"佛罗伦萨",ename:['FLORENCE']},
	FUK:{cname:"福冈",ename:['FUKUOKA']},
	FKS:{cname:"福山",ename:['FUKUSHIMA']},
	PUS:{cname:"釜山",ename:['PUSAN']},
	TOY:{cname:"富山",ename:['TOYAMA']},
	TAK:{cname:"高松",ename:['TAKAMATSU']},
	KHH:{cname:"高雄",ename:['KAOHSIUNG']},
	KCZ:{cname:"高知",ename:['KOCHI']},
	CPH:{cname:"哥本哈根",ename:['COPENHAGEN']},
	GOT:{cname:"哥德堡",ename:['GOTHENBURG']},
	GLA:{cname:"格拉斯格",ename:['GLASGOW']},
	HIJ:{cname:"广岛",ename:['HIROSHIMA']},
	PHC:{cname:"哈科特港",ename:['PORT','HARCOURT']},
	HRE:{cname:"哈拉雷",ename:['HARARE']},
	YHZ:{cname:"哈利法克斯",ename:['HALIFAX']},
	HAV:{cname:"哈瓦那",ename:['HAVANA']},
	HYD:{cname:"海得拉巴",ename:['HYDERABAD']},
	HDD:{cname:"海德拉巴",ename:['HYDERABAD']},
	HKD:{cname:"函馆",ename:['HAKODATE']},
	HAM:{cname:"汉堡",ename:['HAMBURG']},
//	SEL:{cname:"汉城",ename:['SEOUL']},
	ICN:{cname:"汉城",ename:['SEOUL']},
	HAJ:{cname:"汉诺威",ename:['HANOVER']},
	HAN:{cname:"河内",ename:['HANOI']},
	HEL:{cname:"赫尔辛基",ename:['HELSINKI']},
	YOK:{cname:"横滨",ename:['YOKOHOMA']},
	WAW:{cname:"华沙",ename:['WARSAW']},
	WAS:{cname:"华盛顿",ename:['WASHINGTON']},
	ZQN:{cname:"皇后城",ename:['QUEENSTOWN']},
	OOL:{cname:"黄金海岸",ename:['COOLANGATTA']},
	WLG:{cname:"惠灵顿",ename:['WELLINGTON']},
	HBA:{cname:"霍巴特",ename:['HOBART']},
	CHC:{cname:"基督城",ename:['CHRISTCHURCH']},
	UIO:{cname:"基多",ename:['QUITO']},
	KGL:{cname:"基加利",ename:['KIGALI']},
	YLW:{cname:"基诺纳",ename:['KELOWNA']},
	JED:{cname:"吉达",ename:['JEDDAH']},
	KCH:{cname:"吉晋",ename:['KUCHING']},
	KUL:{cname:"吉隆坡",ename:['KUALA','LUMPUR']},
	CJU:{cname:"济洲岛",ename:['JEJU']},
	KTM:{cname:"加德满都",ename:['KATHMANDU']},
	CCU:{cname:"加尔各答",ename:['KOLKATA']},
	CCS:{cname:"加拉加斯",ename:['CARACAS']},
	PNH:{cname:"金边",ename:['PHNOM','PENH']},
	FIH:{cname:"金沙萨",ename:['KINSHASA']},
	KIN:{cname:"金斯敦",ename:['KINGSTON']},
	UKY:{cname:"京都",ename:['KYOTO']},
	KBL:{cname:"喀布尔",ename:['KABUL']},
	AKH:{cname:"喀土穆",ename:['AL','KHARJ']},
	YYC:{cname:"卡尔加里",ename:['CALGARY']},
	KHI:{cname:"卡拉奇",ename:['KARACHI']},
	KAN:{cname:"卡诺",ename:['KANO']},
	CAS:{cname:"卡萨布兰卡",ename:['CASABLANCA']},
	CTA:{cname:"卡塔尼亚",ename:['CATANIA']},
	CAY:{cname:"卡宴",ename:['CAYENNE']},
	CAI:{cname:"开罗",ename:['CAIRO']},
	CPT:{cname:"开普敦",ename:['CAPE','TOWN']},
	CNS:{cname:"凯恩斯",ename:['CAIRNS']},
	CBR:{cname:"堪培拉",ename:['CANBERRA']},
	MKC:{cname:"堪萨斯",ename:['KANSAS','CITY']},
	YKA:{cname:"坎卢普斯",ename:['KAMLOOPS']},
	KLA:{cname:"坎帕拉",ename:['KAMPALA']},
	UIP:{cname:"坎佩尔",ename:['QUIMPER']},
	CGN:{cname:"科隆",ename:['COLOGNE']},
	CMB:{cname:"科伦坡",ename:['COLOMBO']},
	CKY:{cname:"科纳克里",ename:['CONAKRY']},
	COO:{cname:"科托努",ename:['COTONOU']},
	KWI:{cname:"科威特",ename:['KUWAIT']},
	KRK:{cname:"克拉克夫",ename:['KRAKOW']},
	CFE:{cname:"克莱蒙费尔",ename:['CLERMONT-FERRAND']},
	YXC:{cname:"克兰布鲁克",ename:['CRANBROOK']},
	CUR:{cname:"库拉索",ename:['CURACAO']},
	YQB:{cname:"魁北克",ename:['QUEBEC']},
	RBA:{cname:"拉巴特",ename:['RABAT']},
	LOS:{cname:"拉各斯",ename:['LAGOS']},
	LHE:{cname:"拉合尔",ename:['LAHORE']},
	LCA:{cname:"拉那卡",ename:['LARNACA']},
	LAS:{cname:"拉斯维加斯",ename:['LAS','VEGAS']},
	LEJ:{cname:"莱比锡",ename:['LEIPZIG']},
	LGK:{cname:"兰卡威",ename:['LANGKAWI']},
	LYS:{cname:"里昂",ename:['LYON']},
	LIG:{cname:"里摩日",ename:['LIMOGES']},
	LIS:{cname:"里斯本",ename:['LISBON']},
	RIO:{cname:"里约热内卢",ename:['RIO','DE','JANEIRO']},
	LBV:{cname:"利伯维尔",ename:['LIBREVILLE']},
	LIM:{cname:"利马",ename:['LIMA,']},
	LPL:{cname:"利物浦",ename:['LIVERPOOL']},
	RUH:{cname:"利雅得",ename:['RIYADH']},
	LBA:{cname:"利兹",ename:['LEEDS']},
	LJU:{cname:"卢布尔雅那",ename:['LJUBLJANA']},
	LUN:{cname:"卢萨卡",ename:['LUSAKA']},
	LUX:{cname:"卢森堡",ename:['LUXEMBOURG']},
	YPR:{cname:"鲁伯特王子港",ename:['PRINCE','RUPERT']},
	KOJ:{cname:"鹿儿岛",ename:['KAGOSHIMA']},
	LON:{cname:"伦敦",ename:['LONDON']},   
	LHR:{cname:"伦敦",ename:['LONDON']},////
	LAD:{cname:"罗安达",ename:['LUANDA']},
	ROM:{cname:"罗马",ename:['ROME']},
	FCO:{cname:"罗马",ename:['ROME']},////
	LFW:{cname:"洛美",ename:['LOME,']},
	LAX:{cname:"洛杉矶",ename:['LOS','ANGELES']},
	MAA:{cname:"马德拉斯",ename:['CHENNAI']},
	MAD:{cname:"马德里",ename:['MADRID']},
	MLA:{cname:"马耳他",ename:['MALTA']},
	AGP:{cname:"马拉加",ename:['MALAGA']},
	MLE:{cname:"马累",ename:['MALE']},   
	MNL:{cname:"马里拉",ename:['MANILA']},
	MGA:{cname:"马那瓜",ename:['MANAGUA']},
	MPM:{cname:"马普托",ename:['MAPUTO']},
	MRS:{cname:"马赛",ename:['MARSEILLE']},
	MCT:{cname:"马斯喀特",ename:['MUSCAT']},
	MLG:{cname:"玛琅",ename:['MALANG']},
	MIA:{cname:"迈阿密",ename:['MIAMI']},
	MED:{cname:"麦地那",ename:['MADINAH']},
	QCA:{cname:"麦加",ename:['MAKKAH']},
	MAN:{cname:"曼城",ename:['MANCHESTER']},  
	BKK:{cname:"曼谷",ename:['BANGKOK']},
	MRU:{cname:"毛里求斯",ename:['MAURITIUS']},
	YUL:{cname:"蒙特利尔",ename:['MONTREAL']},
	BOM:{cname:"孟买",ename:['MUMBAI']},
	MIL:{cname:"米兰",ename:['MILAN']},
	MES:{cname:"棉兰",ename:['MEDAN,']},
	NGO:{cname:"名古屋",ename:['NAGOYA']},
	MGQ:{cname:"摩加迪沙",ename:['MOGADISHU']},
	MOW:{cname:"莫斯科",ename:['MOSCOW']},
	MEL:{cname:"墨尔本",ename:['MELBOURNE']},
	MEX:{cname:"墨西哥城",ename:['MEXICO','CITY']},
	MUC:{cname:"慕尼黑",ename:['MUNICH']},
	NBO:{cname:"内罗毕",ename:['NAIROBI']},
	NAP:{cname:"那不勒斯",ename:['NAPLES']},
	NCE:{cname:"尼斯",ename:['NICE']},
	NIM:{cname:"尼亚美",ename:['NIAMEY']},
	NCL:{cname:"纽卡斯尔",ename:['NEWCASTLE']},
	NUE:{cname:"纽伦堡",ename:['NUREMBERG']},
	NYC:{cname:"纽约",ename:['NEW','YORK']},
	NKC:{cname:"努瓦克肖特",ename:['NOUAKCHOTT']},
	PBM:{cname:"帕拉马里博",ename:['PARAMARIBO']},
	PTT:{cname:"匹兹堡",ename:['PRATT']},
	PER:{cname:"珀思",ename:['PERTH']},
	GEO:{cname:"乔治敦",ename:['GEORGETOWN']},
	CNX:{cname:"清迈",ename:['CHIANG','MAI']},
	GOA:{cname:"热那亚",ename:['GENOA']},
	GVA:{cname:"日内瓦",ename:['GENEVA']},
	ZAG:{cname:"萨格勒布",ename:['ZAGREB']},
	SAH:{cname:"萨那",ename:['SANA','A']},
	SKG:{cname:"塞萨洛尼基",ename:['THESSALONIKI']},
	SVQ:{cname:"塞维里亚",ename:['SEVILLA']},
	SFO:{cname:"三藩市",ename:['SAN','FRANCISCO']},
	BKI:{cname:"沙巴",ename:['KOTA','KINABALU']},
	UKB:{cname:"神户",ename:['KOBE']},
	SAO:{cname:"圣保罗",ename:['KOBE']},
	LED:{cname:"圣彼得堡",ename:['SAINT','PETERSBURG']},
	SCL:{cname:"圣地亚哥",ename:['SANTIAGO']},
	SDQ:{cname:"圣多明各",ename:['SANTO','DOMINGO']},
	SJO:{cname:"圣何塞",ename:['SAN','JOSE']},
	SJC:{cname:"圣何塞",ename:['SAN','JOSE']},
	SAL:{cname:"圣萨尔瓦多",ename:['SALVADOR']},
	YXJ:{cname:"圣约翰堡",ename:['FORT','ST','JOHN']},
	BWN:{cname:"斯里巴加湾市",ename:['BANDAR','SERI','BEGAWAN']},
	STO:{cname:"斯特哥尔摩",ename:['STOCKHOLM']},
	STR:{cname:"斯图加特",ename:['STUTTGART']},
	SUB:{cname:"泗水",ename:['SURABAYA']},
	MYJ:{cname:"松山",ename:['MATSUYAMA']},
	SRE:{cname:"苏克雷",ename:['SUCRE']},
	ZRH:{cname:"苏黎世",ename:['ZURICH']},
	CEB:{cname:"宿务",ename:['CEBU']},
	SOF:{cname:"索非亚",ename:['SOFIA']},
	TPE:{cname:"台北",ename:['TAIPEI']},
	PAP:{cname:"太子港",ename:['PORT','AU','PRINCE']},
	TRG:{cname:"陶胡阿",ename:['TAURANGA']},
	TGU:{cname:"特古西加尔巴",ename:['TEGUCIGALPA']},
	TUN:{cname:"突尼斯",ename:['TUNIS']},
	TLS:{cname:"图卢兹",ename:['TOULOUSE']},
	OUA:{cname:"瓦加杜古",ename:['OUAGADOUGOU']},
	VTE:{cname:"万象",ename:['VIENTIANE']},
	GUA:{cname:"危地马拉城",ename:['GUATEMALA','CITY']},
	YWL:{cname:"威廉斯莱克",ename:['WILLIAMS','LAKE']},
	VCE:{cname:"威尼斯",ename:['VENICE']},
	VIE:{cname:"维也纳",ename:['VIENNA']},
	WDH:{cname:"温得和克",ename:['WINDHOEK']},
	YVR:{cname:"温哥华",ename:['VANCOUVER']},
	YWG:{cname:"温尼伯",ename:['WINNIPEG']},
	VRN:{cname:"窝热那",ename:['VERONA']},
	YOW:{cname:"渥太华",ename:['OTTAWA']},
	POS:{cname:"西班牙港",ename:['PORT','OF','SPAIN']},
	SGN:{cname:"胡志明",ename:['HANOI']},
	SEA:{cname:"西雅图",ename:['SEATTLE']},
	SYD:{cname:"悉尼",ename:['SYDNEY']},
	HNL:{cname:"夏威夷",ename:['HONOLULU']},
	SDJ:{cname:"仙台",ename:['SENDAI']},
	HKG:{cname:"香港",ename:['HONG','KONG']},
	MSY:{cname:"新奥尔良",ename:['NEW','ORLEANS']},
	DEL:{cname:"新德里",ename:['DELHI']},   
	SIN:{cname:"新加坡",ename:['SINGAPORE']},
	KIJ:{cname:"新泄",ename:['NIIGATA']},
	HOU:{cname:"休斯顿",ename:['HOUSTON']},
	ATH:{cname:"雅典",ename:['Athens']},
	JKT:{cname:"雅加达",ename:['JAKARTA']},   
	CGK:{cname:"雅加达",ename:['JAKARTA']},   
	YAO:{cname:"雅温得",ename:['YAOUNDE']},
	ADD:{cname:"亚的斯亚贝巴",ename:['ADDIS','ABABA']},
	ASU:{cname:"亚松森",ename:['Asuncion']},
	SLC:{cname:"盐湖城",ename:['SALT','LAKE','CITY']},
	RGN:{cname:"仰光",ename:['YANGON']},
	JRS:{cname:"耶路撒冷",ename:['JERUSALEM']},
	ISB:{cname:"伊斯坦堡",ename:['ISLAMABAD']},
	IST:{cname:"伊斯坦布尔",ename:['ISTANBUL']},
	IZM:{cname:"伊兹米尔",ename:['IZMIR']},
	IPH:{cname:"怡保",ename:['IPOH']},
	JNB:{cname:"约翰内斯堡",ename:['JOHANNESBURG']},
	SPK:{cname:"札幌",ename:['SAPPORO']},
	CHI:{cname:"芝加哥",ename:['CHICAGO']}
}

macaufly.intlCitiesAsOptions = function (){
	var result = {};
	for(var i in macaufly.intlCities){
		if( macaufly.intlCities[i] instanceof Function) continue;
		result[i] = macaufly.intlCities[i].cname;
	}
	return result;
}.call();

macaufly.intlCityAutoComplete = Class.create();
Object.extend(macaufly.intlCityAutoComplete.prototype, ajax.DomBean.prototype);
Object.extend(macaufly.intlCityAutoComplete.prototype, {
	
	index:	-1,
	autoField:	null,	// the text input element
	autoResult:	null,	// the select input element
	blockTable:	null,	// the block table used to display prompt
	cities:	null,
		
  	initialize:function(element){
  		
  		ajax.DomBean.prototype.initialize.call(this, element);
  		if(this.cities == null)
  			this.cities = macaufly.intlCities;
  		
  		this.autoField = element;
		this.autoField.setAttribute('autocomplete','off');
		
		this.autoResult=$(this.autoResult);
		this.blockTable = $(this.blockTable);
		
		while(this.blockTable.firstChild != null)
			this.blockTable.removeChild(this.blockTable.firstChild);

		this.blockTable.parentNode.style.display="none";
		
		this.dataFeeder = new macaufly.intlCityAutoComplete.Matcher(this.cities);

		Event.observe(this.autoField, "keyup", this._onKeyPress.bindAsEventListener(this) );  
		
	},
	
	 _changed:function(event){
		 
		if (this.autoField.value=="")
			return;
			
			//		var selectDep = $("depCity");
		 
		var selectArr = $("autoResult2");
		 
//		if(selectDep){
//			 selectDep.style.display = "none";
//		}
		 
		 if(selectArr){
			 selectArr.style.display = "none";
		 }
 
		while(this.blockTable.firstChild != null)
			this.blockTable.removeChild(this.blockTable.firstChild);

		var data = this.dataFeeder.getData(this.autoField.value);
		
		  //show data in block
		var first=true; 
		
		var row = new macaufly.intlCityAutoComplete.BlockField("按英文排序", i, this.autoResult, this.blockTable, this,'标题');
		
		for(var i in data){
			if (data[i] instanceof Function)
				continue;
		    var row = new macaufly.intlCityAutoComplete.BlockField(data[i], i, this.autoResult, this.blockTable, this);
    	}
    	this._keyDown();

		this.positionDiv();

	},
	
	positionDiv:function(){
		var el = this.autoField;
		var x = 0;
		var y = el.offsetHeight+2;
	
		//Walk up the DOM and add up all of the offset positions.
		while (el.offsetParent && el.tagName.toUpperCase() != 'BODY')
		{
			x += el.offsetLeft;
			y += el.offsetTop;
			el = el.offsetParent;
		}

		x += el.offsetLeft;
		y += el.offsetTop;

		var parentDiv=this.blockTable.parentNode;
		parentDiv.style.display ="block";
	  	parentDiv.style.position="absolute";
		parentDiv.style.border = "1px solid #EAAB50";
		parentDiv.style.backgound = '#FFFFFF'
		parentDiv.style.left = x + 'px';
		parentDiv.style.top = y + 'px';
	},
	
	_clear:function(){
		this.autoField.value="";
	},
	
	_onKeyPress:function(event){
		switch(event.keyCode) {
			case Event.KEY_DOWN:
				this._keyDown();
				return;
			case Event.KEY_UP:
				this._keyUp();
				return;
			case Event.KEY_ESC:
				return;
			case Event.KEY_TAB:
				return;  
			case Event.KEY_RETURN:
				this._onReturn(event);	
				return;
		}	
		this.index=-1;
		this._changed();
	},
	
	_onReturn:function(event){
		
		//		var selectDep = $("depCity");
		 
		 var selectArr = $("autoResult2");
		 
//		 if(selectDep){
//			 selectDep.style.display = "";
//		 }
		 
		 if(selectArr){
			 selectArr.style.display = "";
		 }
		 
		var len=this.blockTable.childNodes.length;
		for(var i=0;i<len;i++){
			var e = this.blockTable.childNodes[i];
			if (e.rowIndex==this.index){		
				var options=this.autoResult.options;
				for(j=0;j<options.length;j++){
					if (options[j].value==e.id){
						this.autoResult.selectedIndex=j;
						break;
					}	
				}
				break;		
			}
		}
    	this.blockTable.parentNode.style.display="none";
	},
	
	_keyDown:function(arrow){
		
		if (this.blockTable.childNodes){
			var len=this.blockTable.childNodes.length;
			if (len>0&&(this.index+1)!=len) this.index+=1;
			for(var i=0;i<len;i++){
				var e = this.blockTable.childNodes[i];
				if (e.rowIndex==this.index){
					e.style.backgroundColor="#FEF6E9";			  					  		
		  		}else {
					e.style.backgroundColor="#FFFFFF";
				}
			}
		}
	},
	
	_keyUp:function(arrow){
		
		if (this.blockTable.childNodes){
			var len=this.blockTable.childNodes.length;
  			  if (len>0&&(this.index>0))
	  			  this.index-=1;	
			  for(var i=0;i<len;i++){
		  		var e = this.blockTable.childNodes[i];
			  	if (e.rowIndex==this.index){
			  		e.style.backgroundColor="#FEF6E9";		  			  		
			  	}else {
		  			e.style.backgroundColor="#FFFFFF";
		  		}
			  		
			  }
		}
	},
	
	_changeBgColor:function(e){
		if (e.style.backgroundColor=="#FFFFFF")
			e.style.backgroundColor="#FEF6E9";
		else
			e.style.backgroundColor="#FFFFFF";	
	},
	
	resetIndex:function(){
		this.index=-1;
	}
	
});

macaufly.intlCityAutoComplete.Matcher  = Class.create();
macaufly.intlCityAutoComplete.Matcher.prototype={
	
	cities:null,
	
	initialize:function(cities){
		this.cities=cities;
	},
	
	getData:function(s){
		s=s.toLowerCase();		
		return this.match(s,this.cities);
	},
	
	match:function (s,cities){
		var result=null;

		if (this.isChinese(s))
			return this.matchChinese(s,cities);	

		if (s.length==3)
			result=this.matchCityCode(s,cities);

		if (result==null)	
			return this.matchEName(s,cities);
		else{
			var tmpResult=this.matchEName(s,cities);
			for (i in tmpResult){
				if (tmpResult[i] instanceof Function)
					 continue; 
				result[i]=tmpResult[i];
			}
			return result;
		}				
	},

	matchEName:function (s,cities){
		s = s.toUpperCase();
		var result={};
		for (i in cities){
			if (cities[i] instanceof Function)
			 continue; 
			var slen=s.length;
			//int english name match startwith
			if (cities[i].ename[0].substring(0,slen)==s)
			result[i]=cities[i].cname;
		}
		return result;
	},

	matchChinese :function(s,cities){
		var result={};
		for (i in cities){
			if (cities[i] instanceof Function)
				 continue; 
			var slen=s.length;
			for (j=0;j<slen;j++){
				if (cities[i].cname &&
				cities[i].cname.substring(j,j+1)!=s.substring(j,j+1))
					break;
				if (j==(slen-1))
					result[i]=cities[i].cname;
			}			
		}
		return result;
	},

	matchCityCode:function(s,cities){
		s=s.toUpperCase();
		var result={};
		for (i in cities){
			if (cities[i] instanceof Function)
				 continue; 
			if (i==s){
				result[i]=cities[i].cname;
				return result;
			}			
		}
	},

	isChinese:function(s){
		//if (/[^\x00-\xff]/g.test(s))
		if (s.charCodeAt(0)>255)
			return true; 
	}
};

macaufly.intlCityAutoComplete.BlockField = Class.create();

macaufly.intlCityAutoComplete.BlockField.prototype={
	
	 /*
	 * block:
	 * <tr>
	 * <td id="">vlabel</td>
	 * </tr> 
	 */
	initialize:function(value,	vlabel,	autoResult,	blockTable,	auto,title){
	  this.autoResult=autoResult;
	  this.blockTable=blockTable;
	  this.auto=auto;  
	 
	
	  this.blockrow=document.createElement("TR");
	  this.blockrow.id=vlabel; 
	  this.blockField1=document.createElement("TD");
	  this.blockField1.id=vlabel;
	  
	  var pinyin = "";
	  for(var object in macaufly.intlCities){
		  if(object==vlabel){
			  var city = macaufly.intlCities[object];
			  pinyin = city.ename;
			  break;
		  }
	  }
	  
	  var div = document.createElement("div");
	  div.style.width = "200px";
	  div.style.height = "20px";
	  div.style.zIndex = "100";
	  
	  if(title){
		div.innerHTML = "<table width='100%'><tr bgcolor='#FEEAC7'><td width='50%' align='left' bgcolor='#FEEAC7' colspan='2'>&nbsp按英文排序</td></tr><table>";
	}else{
		div.innerHTML = "<table width='100%' cellspacing='0'><tr><td width='50%' align='left'>"+pinyin+"</td><td width='50%' align='right'>"+value+"</td></tr><table>";
	}
	  
	  
	  
	  this.block=document.createTextNode(value);
	  
	  this.blockField1.appendChild(div);
	  
//	  this.blockField1.appendChild(this.block);
	  this.blockrow.appendChild(this.blockField1);
	
	  blockTable.appendChild(this.blockrow);
	
	  Event.observe(this.blockField1, "click", this._click.bindAsEventListener(this));
	  Event.observe(this.blockField1, "mouseover", this._moIn.bindAsEventListener(this));
  	  Event.observe(this.blockField1, "mouseout", this._moOut.bindAsEventListener(this));

	  return this.blockrow;	
	},
	
	_moIn:function(event){
		this.clearBgColor();
		this.auto.resetIndex();
		var target=Event.element(event);
		target.parentNode.style.backgroundColor="#FEF6E9";
	},
	_moOut:function(event){
		var target=Event.element(event);
		target.parentNode.style.backgroundColor="#FFFFFF";
	},
	clearBgColor:function(){
		var len=this.blockTable.childNodes.length;
		for(var i=0;i<len;i++){
			var e = this.blockTable.childNodes[i];
			e.style.backgroundColor="#FFFFFF";	
		}
	},
	_click:function(){
		
		//	   var selectDep = $("depCity");
		 
	   var selectArr = $("autoResult2");
		 
///	   if(selectDep){
//		   selectDep.style.display = "";
//	   }
		 
	   if(selectArr){
		   selectArr.style.display = "";
	   }
	   
	   var options=this.autoResult.options;
	   for(i=0;i<options.length;i++){
	     if (options[i].value==this.blockField1.id)
	     	this.autoResult.selectedIndex=i;
	   }
	  this.blockTable.parentNode.style.display="none";
	}
};