var MTOBJ = null;
function MTypeAhead(id, cityname) {
	this.m_objInput = "";
	this.m_objList = "";
	this.m_fi = 0;//初始化样式循环长度
	this.m_fii = 0;//初始化记录当前样式的变量
	this.id = id;
	this.cityname = cityname;
	this.elementId = "";
	this.exec();
	MTOBJ = this;
	this.move = arguments[2] || 0;
}

function m_$(){
	var elements = new Array();
	for (var i = 0; i < arguments.length; i++) {
		var element = arguments[i];
		if (typeof element == 'string'){
			element = document.getElementById(element);
		}
		if (arguments.length == 1){ 
			return element;
		}

		elements.push(element);
	}
	return elements;
}

MTypeAhead.prototype.exec = function() {
	var K = this;
	document.write("<div id=\"m_list\"></div>");
	document.write("<style>#m_list{position:absolute;color:#004a80;padding-bottom:7px;display:none;background:url(../images/shadow.png) no-repeat right bottom;font-size:12px;font-weight:normal;z-index:100} ");//写入隐藏DIV，用于显示快速搜索结果列表。
	document.write(" *html #m_list{ padding-bottom:4px;background:none;filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(sizingMethod=scale ,src=images/shadow.png); }");//写入隐藏DIV，用于显示快速搜索结果列表。
	document.write(".icont div { width:100%;text-indent:12px;text-decoration:underline;background-image:url(../images/dot2.gif);background-repeat:no-repeat;cursor:pointer;line-height:18px;}   .m_sel{background-color:#dbe5ff;} ");
	document.write( ".icont{ position:relative;background:#fff;filter:Alpha(opacity=90);Opacity:0.9;margin-left:0;margin-top:1px;margin-right:4px;border: 1px solid #144387;}   </style>  ");//写入隐藏DIV，用于显示快速搜索结果列表。
	
	this.m_objInput = m_$(this.id); //设置文本框obj(textfield为初始化设置)
	this.m_objList = m_$("m_list");//设置默认下拉框obj
	this.m_objList.style.width = (this.m_objInput.offsetWidth-2) + "px";//兼容页面显示，将用于显示结果列表的宽度减少2像素，可自行根据页面设置
	this.m_objInput.onkeyup = function (F) {
		K.m_getFocal(F, K);//文本框得到焦点
	}
	this.m_objInput.onblur=function(){//文本框失去焦点
		K.m_objList.style.display = "none";//设置m_list隐藏
	}
}

MTypeAhead.prototype.m_getFocal = function(evt, obj)//判断用户操作
{
	var K = obj;
	evt = evt || window.event;
	var keyCode = window.event ? evt.keyCode : evt.which;
	if (keyCode==40||keyCode==38)
	{//用户操作：下&上
	   if(keyCode==40){//下
			if (K.divType != K.m_objInput)
			{
				this.m_fii = 0;
				this.m_setDivstyle("40");
				K.divType = K.m_objInput;
			} else {
				this.m_setDivstyle("40");
			}
			
	   }else{//上
			if (K.divType != K.m_objInput)
			{
				this.m_fii = 0;
				this.m_setDivstyle("38");
				K.divType = K.m_objInput;
			} else {
				this.m_setDivstyle("38");
			}
		}
	} else if (keyCode==13)	{//用户操作：回车
	   m_mySearch(this.m_objInput.value);//执行总回调
	} else {
		K.m_setFocal(evt, K);
	}
	K.m_divPosition(evt, K);//控制DIV显示位置，默认设置跟随输入框
}
MTypeAhead.prototype.m_setFocal = function(evt, obj){
	var K = obj;
	if (navigator.userAgent.indexOf("MSIE")>0)
	{
		MTOBJ.elementId = evt.srcElement.id;
	} else if (isFirefox=navigator.userAgent.indexOf("Firefox")>0)
	{
		MTOBJ.elementId = evt.target.id;
	}
	var strInput = K.m_objInput.value;
	if(strInput==""||strInput==null){
		K.m_objList.style.display = "none";
	}else{
		K.m_divPosition(evt, K);
		var m_ct_temp = m_$(this.cityname).value || m_$(this.cityname).innerHTML;
		var mls =new MLocalSearch();   
		var mlsp= new MLocalSearchOptions();   
		mls.setCallbackFunction(K.myfunc);
		mls.typeAhead(strInput,m_ct_temp,mlsp);  
	}
}
MTypeAhead.prototype.myfunc = function(data) {
	var K = MTOBJ;
	var resultstr = data.message;
	var mylist = resultstr.split(",");
	K.test(mylist);
}

MTypeAhead.prototype.test = function(mylist) {
	var K = this;
	var textlist = "";
	this.m_fi = mylist.length - 1;
	if(mylist.length == 1){
		this.m_objList.style.display = "none";
	}else{
		
		for(var i = 0; i < mylist.length -1; i++) {
			textlist = textlist + "<div onMouseOver=\"this.className='m_sel'\"  onMouseOut=\"this.className=''\" id='textfield_"+(i+1)+"' onmousedown=m_od('"+this.elementId+"','textfield_"+(i+1)+"')>"+ mylist[i]+"</div>";//将结果写入DIV
		}
		this.m_objList.style.display = "block";
		this.m_objList.innerHTML = "<div class=\"icont\">" +textlist+"</div>" ;
	}
	//alert(this.m_objList.innerHTML);

}
MTypeAhead.prototype.m_setDivstyle = function(t){//设置用户选择样式
	var tempv = MTOBJ.m_objInput.value;
	for(var i=0 ; i<MTOBJ.m_fi ; i++){
		m_$("textfield_"+(i+1)).className = "";
	}
	if(t=="40"){
			if(MTOBJ.m_fii < MTOBJ.m_fi ){
				MTOBJ.m_fii = MTOBJ.m_fii + 1;
			}else{
				MTOBJ.m_fii = 1;
			}
		m_$("textfield_"+MTOBJ.m_fii).className = "m_sel";//m_sel为初始化定义样式
		this.m_objInput.value = m_$("textfield_"+MTOBJ.m_fii).innerHTML;
	}else{
		if(MTOBJ.m_fii <= 1 ){
				MTOBJ.m_fii = MTOBJ.m_fi;
			}else{
				MTOBJ.m_fii = MTOBJ.m_fii - 1;
		}
		m_$("textfield_"+MTOBJ.m_fii).className = "m_sel";
		this.m_objInput.value = m_$("textfield_"+MTOBJ.m_fii).innerHTML;
	}
}

function m_od(elementId, id){//用户通过鼠标直接选中结果
	m_$(elementId).value = m_$(id).innerHTML;
	m_mySearch(m_$(id).innerHTML);
}

function m_mySearch(v){//设置一个统一的方法，用户可以在此对接自己的程序
	//alert("搜索关键字："+v);
}
MTypeAhead.prototype.m_lTrim = function(str)//ajax得到的结果有时会存在空格，该方法为删除字符串左侧空格
{
    if (str.charAt(0) == " ")
    {
		//如果字串左边第一个字符为空格
		str = str.slice(1);//将空格从字串中去掉
		//这一句也可改成 str = str.substring(1, str.length);
		str = this.m_lTrim(str);    //递归调用
    }
    return str;
}
MTypeAhead.prototype.m_divPosition = function(evt, obj)//定义div显示位置为跟随输入框
{
	var e = obj.m_objInput;
	var ie = (document.all)? true:false
	//定义列表区在不同浏览器中的位置
	if (ie){
		if(this.move){
			var top = 1;
			var left = -1;
		}
	}else{
		if(this.move){
			var top = 0;
			var left = 0;
		}else{
			var top = 12;
			var left = 11;
		}
	}
	while (e.offsetParent){
	   left += e.offsetLeft + (e.currentStyle?(parseInt(e.currentStyle.borderLeftWidth+10)).NaN0():0);
	   top += e.offsetTop + (e.currentStyle?(parseInt(e.currentStyle.borderTopWidth)).NaN0():0);
	   e = e.offsetParent;
	}
	left += e.offsetLeft + (e.currentStyle?(parseInt(e.currentStyle.borderLeftWidth+10)).NaN0():0);
	top += e.offsetTop + (e.currentStyle?(parseInt(e.currentStyle.borderTopWidth)).NaN0():0);
	
	obj.m_objList.style.top = (top + obj.m_objInput.clientHeight) + "px";
	obj.m_objList.style.left = left + "px"; 
	
	obj.m_objList.style.width= obj.m_objInput.clientWidth+ 6 + "px";
}

Number.prototype.NaN0 = function(){
	return isNaN(this)?0:this;
}

function ff(ur,w,h,t){
	document.write('<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,29,0" width="'+w+'" height="'+h+'"> ');
	document.write('<param name="movie" value="' + ur + '">');
	document.write('<param name="quality" value="high"> ');
	document.write('<param name="wmode" value="' + t + '">');
	document.write('<embed src="' + ur + '" quality="high" pluginspage="http://www.macromedia.com/go/getflashplayer" type="application/x-shockwave-flash" width="'+w+'" wmode="'+t+'" height="'+h+'"></embed> ');
	document.write('</object> ');
}

