var googleSuggest = function( src, tar, group ) {
	
	_this = this;
    source = document.getElementById( src );
	target = document.getElementById( tar );
	type = group;
	
	keySelected = -1;
	suggestList = null;
	_present = null;
	
	if ( source == null || target == null ) 
		return false;
		
	source.onkeyup = function(e) {
		
		if ( source.value.length >= 2 ) {
				
//			if ( source.value.length >= 2 ) {
//				window.setTimeout( function() {
											
					if (!e) e=window.event;
					_this.get( e, source.value, group, 'gb' ); 
					
//				} , 300 );
				
				
//			}
			
		} else {
			
			_this.empty();
			
		}
		
	};
	
	source.onkeydown = function(e) {
		
		if (!e) e=window.event;
		var keyCode = window.event ? e.keyCode : e.which;
		
		if ( keyCode == 38 || keyCode == 40 || keyCode == 13) {
			
			_this.__handleSelect( keyCode );
			
		}
		
	}
	source.onblur = function(e) {
	
		if(source.value=='')
		{
			source.value='搜索联赛球队或球员';
		}
		setTimeout('_this.empty()',500);
		//_this.empty();
	}
	
	source.onfocus = function(e) {
	

		if(source.value=='搜索联赛球队或球员')
		{
			source.value='';
		}
	}
	
};

googleSuggest.prototype = {
	
	__get_data: function( url, keyword, type, lang ) {
		
		var xmlhttp;
		try {
			
			xmlhttp=new XMLHttpRequest();
			
		} catch(e){
			
			xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
			
		}
		xmlhttp.onreadystatechange = function() {
			
			if (xmlhttp.readyState==4) {
				
				if (xmlhttp.status==200) {
					
					if ( xmlhttp.responseText != "[]" ) {
						
						var data = xmlhttp.responseText;
						_this.__display( eval(data) );
						
					} else {
					
						//target.innerHTML = "<DIV CLASS=\"suggest\" STYLE=\"font: italic 12px; color: #CCC\">没有找到搜索的内容...</DIV>";
						_this.empty();
						target.innerHTML = "";
						suggestList = null;
					
					}
						
				}
				
			}
			
		}
		xmlhttp.open("POST", url, true);
		xmlhttp.setRequestHeader('Content-type','application/x-www-form-urlencoded');
		xmlhttp.send('keyword='+keyword+'&type='+type+'&lang='+lang);
	},
	
	__display: function( returnData ) {
		
		if ( returnData == null )
			return false;			
		
		// 显示层
		_this.show();
		
		// 把数据拼出来
		var str = '';
		for( var i in returnData )
		{
				str	+=	"<div class='suggest'><A HREF='"+ returnData[i].url +"' target='_blank' id='search_" + returnData[i].sid + "'><span class='stitle'>" + returnData[i].stitle + "</span><span class='type_name'>" + returnData[i].type_name + "</span></A></div>";
		}
		str	+= "<div class='search_clear'></div>";
		str += '<iframe   src="" frameborder="0"  style="position:absolute;   visibility:inherit;   top:0px;   left:0px;   width:expression(this.parentNode.offsetWidth);   height:expression(this.parentNode.offsetHeight);   z-index:-1;   filter=\'progid:DXImageTransform.Microsoft.Alpha(style=0,opacity=0)\';"></iframe>';
		target.innerHTML = str;
		
		// 获取所有Suggest，供下面键盘鼠标选择用
		suggestList = document.getElementsByClassName( target, 'suggest' );
		
		// 复位
		_present = null;
		keySelected = -1;		
			
		// 给每个链接绑定鼠标移动事件，由于IE与FF的兼容问题，为了兼容attachEvent与addEventListener，这里采用了闭包（attachEvent事件不能引用绑定事件的对象，即this）
		for ( var i = 0, count = suggestList.length; i < count; i++ ) {
		
			if ( suggestList[i].firstChild.attachEvent ) {
				
				suggestList[i].firstChild.attachEvent( 'onmouseover', _this.__onmouseover( suggestList[i].firstChild, i ) );
				suggestList[i].firstChild.attachEvent( 'onmouseout', _this.__onmouseout( suggestList[i].firstChild, i ) );
				//suggestList[i].firstChild.attachEvent( 'onclick', _this.__onclick( suggestList[i].firstChild ) );
				
			} else {
				
				suggestList[i].firstChild.addEventListener( 'mouseover', _this.__onmouseover( suggestList[i].firstChild, i ), true );
				suggestList[i].firstChild.addEventListener( 'mouseout', _this.__onmouseout( suggestList[i].firstChild, i ), true );
				//suggestList[i].firstChild.addEventListener( 'click', _this.__onclick( suggestList[i].firstChild ), true );
												 
			}
			
		}

		return true;
	},
	
	__onmouseover: function( rel, i ) {
		
		 return function() {			
		 
		 	if ( _present ) {
				
				_present.className = _present.className.replace( /\s{0,1}selected/, '' );
			
			}
			
			if ( rel.className.indexOf('selected') == -1 ) {
				
				rel.className += " selected";
				
			}
			
			// 设为当前选择的对象，以及当前索引
			_present = rel;
			keySelected = i;
			 
		 }
		
	},
	
	__onmouseout: function( rel, i ) {
		
		return function() {
			if ( rel.className.indexOf('selected') != -1 ) {
				
				reg = /\s{0,1}selected/;
				rel.className = rel.className.replace( reg, '' );
				
			}
			
		}
		
	},
	
	__onclick: function( rel ) {
		
		return function() {
		
			if ( rel.innerHTML ) {
			
				source.value = rel.innerHTML;
				
			}
			
		}
		
	},
	
	__handleSelect: function( keyCode ) {
		
		if ( suggestList == '' || suggestList == null )
			return false;
		
		try {
			//alert(_present.className);
			_present.className = _present.className.replace( /selected/, '' );
			//alert(_present.className);
		} catch ( e ) {
			_present = null;
		}
		
		//处理Up键
		if ( keyCode == 38 )
		{
			if ( keySelected-1 <= -1 )
			{
				keySelected = suggestList.length-1;
			}
			else
			{
				keySelected -= 1;
			}
		}
		//处理Down键
		else if ( keyCode == 40 )
		{
			if ( keySelected+1 >= suggestList.length )
			{
				keySelected = 0;
			}
			else
			{
				keySelected += 1;
			}
		}
		else if ( keyCode == 13 )
		{
			_present = suggestList[keySelected].childNodes[0];

				_present.click();

		}
		
		//_present = suggestList[keySelected].getElementsByTagName("A");	#这句出错，有空研究下
		
		_present = suggestList[keySelected].childNodes[0];

		//source.value = _present.innerHTML;
		
		if ( _present.className.indexOf('selected') == -1 ) {
			
			_present.className += " selected";
			
		}
		
	},
	
	empty: function() {
		
		target.innerHTML = "";
		target.style.display = "none";
		suggestList = null;
		
	},
	
	show: function() {
		
		target.style.display = 'block';
		
	},
	

	
	get: function( e, keyword, type, lang ) {
		
		var keyCode = window.event ? e.keyCode : e.which;
		
		if ( keyCode == 38 || keyCode == 40 ) {
			
			return false;
			
		} else {
			
			if ( keyword == '' ) {
				
				_this.empty();
				_present = null;
				keySelected = -1;
				
			} else {
				
				//var url = '../ajax/basketball_googleSuggest.php';
				var url = 'http://nba.mso.com.cn/ajax/basketball_search_ajax.php';
				var returnData = _this.__get_data( url, encodeURIComponent(keyword), type, lang );
				
			}
			
		}
		
	}
	
}

document.getElementsByClassName = function( range, className )
{
	
	
		try {
			
			var	children	=	range.getElementsByTagName('*');
			
		} catch(e){
			
			var	children	=	(document.getElementsByTagName('*') || document.all);
			
		}
	
	
	//var children = range ? range.getElementsByTagName('*') : (document.getElementsByTagName('*') || document.all);
	var elements = new Array();
	
	for (var i = 0; i < children.length; i++) {
		var child = children[i];
		var classNames = child.className.split(' ');
		for (var j = 0; j < classNames.length; j++) {
			if (classNames[j] == className) {
				elements.push(child);
				break;
			}
		}
	}
	
	return elements;
}
