// This file contains javascript associated with a autosuggest control

function smfReputation(sessionID)
{
	this.Set = SetReputation;

	var xmlRequestHandle = null;
	var LastCount = 0;

	function init()
	{
		if (!window.XMLHttpRequest)
			return false;

		return true;
	}
	
	function SetReputation(WhomId, Count)
	{
		// In progress means destroy!
		if (xmlRequestHandle != null && typeof(xmlRequestHandle) == "object")
			xmlRequestHandle.abort();
		
		LastCount = Count;
		// Get the document.
		xmlRequestHandle = getXMLDocument(smf_prepareScriptUrl(smf_scripturl) + 'action=reputation;whom=' + WhomId + ';count=' + Count + ';sesc=' + sessionID + ';xml;' + (new Date().getTime()), onReputationReceived);
		
		return true;
	}
	
	function onReputationReceived(oXMLDoc)
	{
		if (xmlRequestHandle.readyState != 4)
			return true;
		
		var sQuoteText = '';
		var infos = oXMLDoc.getElementsByTagName('info');
		cache = [];
		for (var i = 0; i < infos.length; i++)
		{
			cache[i] = new Array(3);
			cache[i]['id'] = infos[i].getAttribute('id');
			cache[i]['fame'] = infos[i].getAttribute('fame');
			SetFame(cache[i]['id'], cache[i]['fame']);
			cache[i]['reputation'] = infos[i].getAttribute('reputation');
			SetRep(cache[i]['id'], cache[i]['reputation'])
			SetCount(cache[i]['id']);
		}
		return true;
	}
	
	function getElementsByName(name, tag)
	{
		if(is_ie || is_opera)
			return getElementsByName_iefix(tag, name) ;
		return document.getElementsByName(name);
	}
	
	function getElementsByName_iefix(tag, name) 
	{
		var elem = document.getElementsByTagName(tag);
		var arr = new Array();
		for(var i = 0,iarr = 0; i < elem.length; i++) {
			att = elem[i].getAttribute("name");
			if(att == name) {
			arr[iarr] = elem[i];
			iarr++;
			}
		}
		return arr;
	}
	
	function SetFame(memberID, Fame)
	{
		var obj = getElementsByName('fame_' + memberID, 'span');
		for (j = 0; j < obj.length; j++) 
			obj [j].innerHTML = Fame;
	}
	function SetRep(memberID, Reputation)
	{
		var cl_name = '';
		if(Reputation == 0)
			cl_name = 'rep_z';
		else
			if(Reputation > 0)
				cl_name = 'rep_p';
			else
				cl_name = 'rep_m';
		var obj = getElementsByName('rep_' + memberID, 'span');
		for (j = 0; j < obj.length; j++) 
		{
			obj [j].innerHTML = Math.abs(Reputation);
			obj [j].className = cl_name;
		}
	}

	function SetCount(memberID)
	{
		var cl_name = '';
		for(var i = -5; i <= 5; i++)
		{
			var obj = getElementsByName('s_' + memberID + '_' + (i+5), 'div');
			if(i < 0) cl_name = 's_m';
			if(i> 0) cl_name = 's_p';
			if(i == 0) cl_name = 's_z';
			if(i == LastCount) cl_name = cl_name + '_a';
			for (j = 0; j < obj.length; j++) 
				obj [j].className = cl_name;
		}
	}

	// Auto initialise!
	init();
}
