﻿
/*
useage:
<input id="input" onkeydown="return f_inputOnkeydown(event ,this)" onkeyup="f_inputOnkeyup(event,this)" onblur="f_inputOnblur();" type="text" value="" autocomplete="off"/>
*/

var f_inputid = "";	//input id
var f_frienddata = [];	//friend data
var f_seluid = 0;	//selected uid
var f_word1 = "";
var f_word2 = "";
var f_pars = "";


function friendSuggest(inputid , word1 , word2)
{
	f_inputid = inputid;
	f_word1 = word1;
	f_word2 = word2;
	
	var obj = $(f_inputid);
	if($("f_suggest") != null)
	{
		if($("f_suggest").parentNode != obj.parentNode)
		{
			$("f_suggest").parentNode.removeChild($("f_suggest"));
		}
		else
		{	
			return;
		}
	}
	
	var pos = getpos($(f_inputid));
	
	var html = '<div class="fsg_nl" id="f_suggest" style="display:none;z-index:1000;width:'+(pos.right - pos.left - 5)+'px;"></div><div id="f_emptysuggest" class="fsg_nl" style="z-index:1;display:none;font-size:12px;padding-left:7px;background:#eeeeee;color:#666666;width:'+(pos.right - pos.left - 9)+'px;"></div>';
	new Insertion.After(f_inputid , html);
	f_adjustPos();
}

function f_adjustPos()
{
	var pos = getpos($(f_inputid));
	try
	{
		$("f_suggest").style.left = parseInt(pos.left) + "px";
		$("f_suggest").style.top = parseInt(pos.bottom + 2) + "px";
		$("f_suggest").style.width = parseInt(pos.right - pos.left - 5) + "px";
		
		$("f_emptysuggest").style.left = parseInt(pos.left) + "px";
		$("f_emptysuggest").style.top = parseInt(pos.bottom + 2) + "px";
		$("f_emptysuggest").style.width = parseInt(pos.right - pos.left - 9) + "px";
	}
	catch(e)
	{
	}
}

function f_inputOnfocus(event,thisobj)
{
	if(thisobj.value == "")
	{
		f_adjustPos();
		$("f_emptysuggest").innerHTML = f_word1;
		$("f_emptysuggest").style.display = "block";
	}
}

function f_inputOnkeydown(evnt,thisobj)
{
	if (evnt.keyCode == 13)
	{
		return false;
	}
	
	var hotinfo = f_getHotNum();
	var hotnum = hotinfo.hotnum;
	var num = hotinfo.totalnum;
	//DOWN
	if(evnt.keyCode == 40)
	{
		if($("f_suggest_0") != null && $("f_suggest").style.display == "block")
		{
			if(hotnum == -1)
			{
				$("f_suggest_0").className = "sgt_on";
			}
			else
			{
				var nextnum = hotnum == num-1 ? 0 : hotnum+1;
				$("f_suggest_"+hotnum).className = "sgt_of";
				$("f_suggest_"+nextnum).className = "sgt_on";
			}
			return false;
		}
		
	}
	//UP
	if(evnt.keyCode == 38)
	{
		if($("f_suggest_0") != null && $("f_suggest").style.display == "block")
		{
			if(hotnum == -1)
			{
				$("f_suggest_"+(num-1)).className = "sgt_on";
			}
			else
			{
				var prevnum = hotnum == 0 ? num-1 : hotnum-1;
				$("f_suggest_"+hotnum).className = "sgt_of";
				$("f_suggest_"+prevnum).className = "sgt_on";
			}
		}
		
	}
	
	
}

function f_inputOnkeyup(evnt,thisobj)
{
	var hasthisperson = false;
	for(var i=0 ; i<f_frienddata.length ; i++)
	{
		if(f_frienddata[i].real_name == $(f_inputid).value)
		{
			hasthisperson = true;
		}
	}
	if(hasthisperson == false)
	{
		f_seluid = 0;
	}
	//ENTER
	if (evnt.keyCode == 13)
	{
		var hotinfo = f_getHotNum();
		var hotnum = hotinfo.hotnum;
		var totalnum = hotinfo.totalnum;
		if ($("f_suggest").style.display == "block" && hotnum!=-1 && totalnum>0)
		{
			//填入input
			$(f_inputid).value = f_frienddata[hotnum].real_name_unsafe;
			f_seluid = f_frienddata[hotnum].uid;
			if ('function' == typeof(f_afterseluid))
			{
				f_afterseluid(f_seluid);
			}
			$("f_suggest").style.display = "none";
				
		}
	}
	else if(evnt.keyCode == 38 || evnt.keyCode == 40)
	{
	}
	else
	{
		f_ajax_submit();
	}
	
	
}


function f_ajax_submit()
{
	var url = "/interface/suggestfriend.php";
	var text = encodeURIComponent($(f_inputid).value);
	var pars = "text=" + text + "&pars=" + f_pars;
	var myAjax = new Ajax.Request(url, {method: "post", parameters: pars, onComplete: function (req) { f_ajax_show(req); } });
}

function f_ajax_show(req)
{
	var arr = eval(req.responseText);   
	f_frienddata = arr;
	
	if(arr.length == 0)
	{
		$("f_suggest").style.display = "none";
		if($(f_inputid).value == "")
		{
			$("f_emptysuggest").innerHTML = f_word1;
			$("f_emptysuggest").style.display = "block";
		}
		else
		{
			if(f_word2 == "")
			{
				$("f_emptysuggest").style.display = "none";
			}
			else
			{
				$("f_emptysuggest").innerHTML = f_word2;
				$("f_emptysuggest").style.display = "block";
			}
		}
		return;
	}
	
	var html = "";
	
	for(var i=0 ; i<arr.length ; i++)
	{
		html += '<div id=f_suggest_'+i+' class="sgt_of" style="font-size:12px;width:'+(parseInt($("f_suggest").style.width)-10)+'px;" onmouseover="f_suggestOnmouseover(this)" onmousedown="f_suggestOnmousedown(this);">'+arr[i].real_name+'&nbsp;&nbsp;'+f_logo20(arr[i])+'</div>';
	}
	$("f_suggest").innerHTML = html;
	$("f_suggest").style.display = "block";
	$("f_emptysuggest").style.display = "none";
	f_adjustPos();
	
	
	if($("f_suggest_0") != null && $("f_suggest").style.display == "block")
	{
		$("f_suggest_0").className = "sgt_on";
	}
	
}

function f_getHotNum()
{
	var obj;
	var num=0;
	var hotnum = -1;
	while((obj = $("f_suggest_"+num)) != null)
	{
		if(obj.className == "sgt_on")
		{
			hotnum = num;
		}
		num++;
	}
	return {"hotnum":hotnum,"totalnum":num};
}


function f_suggestOnmouseover(thisobj)
{
	var arr = thisobj.id.split('_');
	var thisnum = arr[2];
	
	var obj;
	var num=0;
	while((obj = $("f_suggest_"+num)) != null)
	{
		if(thisnum == num)
		{
			obj.className = "sgt_on";
		}
		else
		{
			obj.className = "sgt_of";
		}
		num++;
	}
	
}

function f_suggestOnmousedown(thisobj)
{
	var arr = thisobj.id.split('_');
	var num = arr[2];
	
	$(f_inputid).value = f_frienddata[num].real_name_unsafe;
	f_seluid = f_frienddata[num].uid;
	if ('function' == typeof(f_afterseluid))
	{
		f_afterseluid(f_seluid);
	}
	$("f_suggest").style.display = "none";

}

function f_inputOnblur()
{
	if($("f_suggest"))
	{
		$("f_suggest").style.display = "none";
	}
	$("f_emptysuggest").style.display = "none";
}

function f_logo20(obj)
{
	var logo20 = "";
	if(typeof obj.logo20 != "undefined")
	{
		logo20 = "<img src='"+obj.logo20+"'  align=absmiddle width=15  />";
	}
	return logo20;
}
