function ajax_change_reputation()
{
	var url    = ipb_var_base_url;
	var fields = new Array();

	fields['act']       = 'xmlout';
	fields['do']        = 'ajax-change-reputation';
	var mid =  document.getElementById('mid').value;
	fields['mid']		= mid;
	fields['p']		= document.getElementById('p').value;
	fields['message'] = document.getElementById('message').value;
	fields['type'] = document.getElementById('type').value;
	//fields['anonym'] = document.getElementById('anonym').value;

	var spans = opener.document.getElementsByTagName('span');

	do_request_function = function()
	{
		if (!xmlobj.readystate_ready_and_ok())
		{
			xmlobj.show_loading();
			return;
		}

		xmlobj.hide_loading();
		var html = xmlobj.xmlhandler.responseText;

		if (html=='error1')
		{
			alert('Неправильный номер пользователя!');
		}
		else if (html=='error2')
		{
			alert('Нельзя изменять репутацию себе!');
		}
		else if (html=='error3')
		{
			alert('Введите сообщение!');
		}
		else if (html=='error4')
		{
			alert('Не выбран тип изменения репутации!');
		}
		else if (html=='error5')
		{
			alert('Вам запрещено менять репутацию пользователям!');
		}
		else if (html=='error6')
		{
			alert('У вас недостаточно сообщений!');
		}
		else if (html=='error7')
		{
			alert('У вас слишком маленькая репутация!');
		}
		else if (html=='error8')
		{
			alert('Вы достигли предела изменений репутации!');
		}
		else if (html=='error9')
		{
			alert('Необходимо подождать, прежде чем изменять репутацию одному и тому же пользователю!');
		}
		else if (html=='error10')
		{
			alert('Нельзя изменять репутацию за одно и тоже сообщение!');
		}
		else if (html=='error11')
		{
			alert('Сообщение слишком длинное!');
		}
		else if (html=='error12')
		{
			alert('Анонимные изменения запрещены!');
		}
		else if (html=='error13')
		{
			alert('Репутация пользователя отключена!');
		}										
		else
		{
			for (var i=0; i<spans.length; i++)
			{
				var span = spans[i];
				if ( span.id =='ajaxrep-'+mid )
				{
					span.innerHTML = html;
				}
			}
			window.close();
		}
	}

	xmlobj = new ajax_request();
	xmlobj.onreadystatechange(do_request_function);
	var xmlreturn = xmlobj.process(url, 'POST', xmlobj.format_for_post(fields));
	
	return false;
}
function wrap_tags(opentext, closetext)
{
	var postfieldobj=document.getElementById('message');

	//----------------------------------------
	// It's IE!
	//----------------------------------------
	
	if ( (ua_vers >= 4) && is_ie && is_win )
	{
		if ( postfieldobj.isTextEdit )
		{
			var sel = document.selection;
			
			var rng = ie_range_cache ? ie_range_cache : sel.createRange();

			var stored_range = rng.duplicate()
			stored_range.moveToElementText( postfieldobj );
			stored_range.setEndPoint( 'EndToEnd', rng );

			// Stores start position of text selection
			postfieldobj.selectionStart = stored_range.text.length - rng.text.length;
			// Stores end position of text selection
			postfieldobj.selectionEnd = postfieldobj.selectionStart + rng.text.length;

			rng.colapse;
			
			if ( (sel.type == "Text" || sel.type == "None") && rng != null && rng.text && rng.text.length > 0)
			{
				opentext += rng.text + closetext;
				rng.text = rng.text.charAt(rng.text.length - 1) == ' ' ? opentext + ' ' : opentext;
			}
			else
			{
				postfieldobj.value += opentext + ' ' + closetext;
			}
		}
		else
		{	
			postfieldobj.value += opentext + ' ' + closetext;
		}
		ie_range_cache = null;
		rng.select();
	}
	
	//----------------------------------------
	// It's MOZZY!
	//----------------------------------------
	
	else if ( postfieldobj.selectionEnd )
	{
		var ss = postfieldobj.selectionStart;
		var st = postfieldobj.scrollTop;
		var es = postfieldobj.selectionEnd;
		
		if (es <= 0)
		{
			es = postfieldobj.textLength;
		}
		
		var start  = (postfieldobj.value).substring(0, ss);
		var middle = (postfieldobj.value).substring(ss, es);
		var end    = (postfieldobj.value).substring(es, postfieldobj.textLength);
		
		//-----------------------------------
		// text range?
		//-----------------------------------
		
		middle = opentext + middle + closetext;
		
		postfieldobj.value = start + middle + end;
		
		var cpos = ss + (middle.length);
		
		postfieldobj.selectionStart = cpos;
		postfieldobj.selectionEnd   = cpos;
		postfieldobj.scrollTop      = st;
	}
	
	//----------------------------------------
	// It's CRAPPY!
	//----------------------------------------
	
	else
	{ 
		postfieldobj.value += opentext + ' ' + closetext;
	}
	
	return false;
}
var ie_range_cache='';

function getOffsetTop(elm)
{
	var mOffsetTop    = elm.offsetTop;
	var mOffsetParent = elm.offsetParent;
	var parents_up    = 2;
	
	while(parents_up > 0)
	{
		mOffsetTop   += mOffsetParent.offsetTop;
		mOffsetParent = mOffsetParent.offsetParent;
		parents_up--;
	}
	
	return mOffsetTop;
}

function getOffsetLeft(elm)
{
	var mOffsetLeft   = elm.offsetLeft;
	var mOffsetParent = elm.offsetParent;
	var parents_up    = 2;
	
	while(parents_up > 0)
	{
		mOffsetLeft  += mOffsetParent.offsetLeft;
		mOffsetParent = mOffsetParent.offsetParent;
		parents_up--;
	}
	
	return mOffsetLeft;
}

function popcolor( command )
{
	parent.command = command;
		
	if ( is_ie )
	{
		ie_range_cache = document.selection.createRange();
	}
		
	buttonElement = document.getElementById(command);
		
	var iLeftPos  = getOffsetLeft(buttonElement);
	var iTopPos   = getOffsetTop(buttonElement) + (buttonElement.offsetHeight + 30);
		
	document.getElementById('cp').style.left = (iLeftPos) + "px";
	document.getElementById('cp').style.top  = (iTopPos)  + "px";
		
	if (document.getElementById('cp').style.visibility == "hidden")
	{
		document.getElementById('cp').style.visibility = "visible";
		document.getElementById('cp').style.display    = "inline";
	}
	else
	{
		document.getElementById('cp').style.visibility = "hidden";
		document.getElementById('cp').style.display    = "none";
	}
}

function setColor(color)
{
	wrap_tags("[color=" +color+ "]", "[/color]")

	document.getElementById('cp').style.visibility = "hidden";
	document.getElementById('cp').style.display    = "none";
}



