/*
'=====================================================================
' Module Name:
' File name: smanPromptList.js
' Author: william.lu
' Project : my_bebo
' Copyright (c) all rights reserved by juuyou.com Co., LTD.
' Create on 2009/04/29
' Version: 1.0
'
'=====================================================================
'*********************************************************************
' Usage: 提示框显示功能JS函数集
'
'*********************************************************************
*/

function smanPromptList(arrList, objInputId){ 
	if(arrList.constructor != Array){
		alert('smanPromptList初始化失败:第一个参数非数组!');
		return ;
	} 
	window.onload = function(){ 
		arrList.sort(
			function(a,b){ 
				if(a.length > b.length){
					return 1;
				}else if(a.length == b.length){
					return a.localeCompare(b);
				}else{
					return -1;
				}
            }
		) 
		var objouter = document.getElementById("__smanDisp"); //显示的DIV对象 
		var objInput = document.getElementById(objInputId); //文本框对象 
		var selectedIndex=-1; 
		var intTmp; //循环用的:) 
		if(objInput==null){
			alert('smanPromptList初始化失败:没有找到"'+objInputId+'"文本框');
			return;
		} 
		//文本框失去焦点 
		objInput.onblur = function(){ 
			objouter.style.display='none'; 
			juuyou.common.switchDisplayNone("div_friend_clew");
		} 
		//文本框按键抬起 
		objInput.onkeyup = checkKeyCode; 
		//文本框得到焦点 
		objInput.onfocus = checkAndShow; 

		function checkKeyCode(){ 
			var ie = (document.all)? true:false;
			if(ie){ 
				var keyCode = event.keyCode;
				if(keyCode==40 || keyCode==38){ //下上 
					var isUp = false;
					if(keyCode == 40){
						isUp = true;
					}
					chageSelection(isUp);
				}else if(keyCode == 13){//回车 
					outSelection(selectedIndex); 
				}else{ 
					checkAndShow(); 
				} 
			}else{ 
				checkAndShow();
			} 
			divPosition();
		} 

		function checkAndShow(){ 
			var strInput = objInput.value;
			if(strInput == "快速访问好友入口"){
				objInput.value = "";
				juuyou.common.switchDisplayShow("div_friend_clew");
				return;
			}
			if(strInput != ""){ 
				juuyou.common.switchDisplayNone("div_friend_clew");
				divPosition(); 
				selectedIndex = -1; 
				objouter.innerHTML = ""; 
				for(intTmp=0; intTmp<arrList.length; intTmp++){
					for(i=0; i<arrList[intTmp].length; i++){
						if(arrList[intTmp].substr(i, strInput.length).toUpperCase() == strInput.toUpperCase()){ 
							addOption(arrList[intTmp], strInput);
							break;
						}
					}
				}
				objouter.style.display = ''; 
			}else{
				juuyou.common.switchDisplayShow("div_friend_clew");
				objouter.style.display = 'none'; 
			}
			
			function addOption(value, keyw){ 
				var v = value.replace(keyw, "<b><font color=red>"+keyw+"</font></b>"); 
				objouter.innerHTML += "<div onmouseover=\"this.className='sman_selectedStyle'\" onmouseout=\"this.className=''\" onmousedown=\"document.getElementById('" + objInputId + "').value='" + value + "';juuyou.home.viewFriendProfile();\">" + v + "</div>"  
			} 
		}

		function chageSelection(isUp){ 
			if(objouter.style.display == 'none'){ 
				objouter.style.display = ''; 
			}else{ 
				if(isUp){
					selectedIndex++;
				}else{ 
					selectedIndex--;
				}
			}
			var maxIndex = objouter.children.length - 1; 
			if(selectedIndex < 0){
				selectedIndex = 0;
			} 
			if(selectedIndex > maxIndex){
				selectedIndex = maxIndex;
			} 
			for(intTmp=0; intTmp<=maxIndex; intTmp++){ 
				if(intTmp == selectedIndex){
					objouter.children[intTmp].className = "sman_selectedStyle"; 
				}else{ 
					objouter.children[intTmp].className = ""; 
				} 
			} 
		}

		function outSelection(Index){ 
			objInput.value = objouter.children[Index].innerText; 
			objouter.style.display = 'none'; 
		} 

		function divPosition(){ 
			objouter.style.top = getAbsoluteHeight(objInput) + getAbsoluteTop(objInput); 
			objouter.style.left = getAbsoluteLeft(objInput);  
			objouter.style.width = getAbsoluteWidth(objInput);
		} 
	}

	document.write("<style>.sman_selectedStyle{background-Color:#d7d9d4;}</style>"); 
	function getAbsoluteHeight(ob){ 
		return ob.offsetHeight;
	} 
	function getAbsoluteWidth(ob){ 
		return ob.offsetWidth;
	} 
	function getAbsoluteLeft(ob){ 
		var s_el = 0;
		var el = ob;
		while(el){
			s_el = s_el + el.offsetLeft;
			el = el.offsetParent;
		}
		return s_el; 
	} 
	function getAbsoluteTop(ob){ 
		var s_el = 0;
		var el = ob;
		while(el){
			s_el = s_el + el.offsetTop;
			el = el.offsetParent;
		}
		return s_el;
	} 
}

