//------------------------------------------
// Invision Power Board v2.1
// Topics JS File
// (c) 2005 Invision Power Services, Inc.
//
// http://www.invisionboard.com
//------------------------------------------

var mystored_selection 	= '';
var post_cache			= new Array();
var ajax_loaded			= 1;
var ignore_cache		= new Array();
var rate_value			= 0;

/*--------------------------------------------*/
// Add onload event
/*--------------------------------------------*/

add_onload_event( fix_linked_image_sizes );

/*--------------------------------------------*/
// Fix linked images (attach thumbs)
/*--------------------------------------------*/

function fix_linked_image_sizes_attach_thumb( attach_id, width, height, file_size )
{
	//-----------------------------------------
	// INIT
	//-----------------------------------------
	
	var _img    = '<img src="' + ipb_var_image_url + '/img-resized.png" style="vertical-align:middle" border="0" alt="" />';
	var img_obj = document.getElementById( 'ipb-attach-img-'   + attach_id );
	var div_obj = document.getElementById( 'ipb-attach-div-'   + attach_id );
	var ct_obj  = document.getElementById( 'ipb-attach-ct-'    + attach_id );
	var cb_obj  = document.getElementById( 'ipb-attach-cb-'    + attach_id );
	var url_obj = document.getElementById( 'ipb-attach-url-'   + attach_id );
	var tbl_obj = document.getElementById( 'ipb-attach-table-' + attach_id );
	
	var _width   = parseInt( img_obj.width )  ? parseInt( img_obj.width )  : parseInt( img_obj.style.width );
	var _height  = parseInt( img_obj.height ) ? parseInt( img_obj.height ) : parseInt( img_obj.style.height );
	var _padding = 5;
	var _percent = 0;
	
	if ( is_ie )
	{
		//-----------------------------------------
		// Well done MS.. more bugs and workarounds
		//-----------------------------------------
		
		_width  = parseInt( img_obj.currentStyle['width'] );
		_height = parseInt( img_obj.currentStyle['height'] );
	}
	
	if ( is_safari )
	{
		//-----------------------------------------
		// Nice. Safari you suck! I hate you!
		// You're the black sheep of the apple family!
		//-----------------------------------------
		
		tbl_obj.style.display = 'inline-block';
	}
	
	//-----------------------------------------
	// Got width / height?
	//-----------------------------------------
	
	if ( width && height )
	{
		_percent = Math.ceil( 100 - parseInt( _width / width * 100 ) );
	}
	
	//-----------------------------------------
	// Stylize
	//-----------------------------------------
	
	// Remove IMG class to stop gray border
	img_obj.className     = 'ipb';
	img_obj.title         = ipb_global_lang['click_to_view'];
	img_obj.onmouseover   = fix_attach_images_mouseover;
	img_obj.onclick		  = function(event) { ipsclass.pop_up_window( url_obj.href, width + 20, height + 20 ); ipsclass.cancel_bubble(event); };
	
	// Re-style the main div obj
	div_obj.style.width          = ( _width > 140 ? _width : 140 ) + 'px';
	div_obj.style.height         = _height + ( _padding * 2 ) + 28 + 'px';
	div_obj.className            = 'resized-linked-image';
	div_obj.style.paddingTop     = _padding + "px";
	div_obj.style.paddingBottom  = _padding + "px";
	div_obj.style.paddingLeft    = _padding + 3 + "px";
	div_obj.style.paddingRight   = _padding + 3 + "px";
	div_obj.style.textAlign		 = 'center';
	div_obj.title                = ipb_global_lang['click_to_view'];
	//div_obj.onmouseover          = fix_linked_images_mouseover;
	//div_obj.onclick				 = function(event) { ipsclass.pop_up_window( url_obj.href, width + 20, height + 20 ); ipsclass.cancel_bubble(event); };
	
	// Add content to the top div
	ct_obj.style.fontSize  = '9px';
	cb_obj.style.fontSize  = '9px';
	cb_obj.style.textAlign = 'center';
	
	if ( _percent > 0 )
	{
		ct_obj.innerHTML = _img + '&nbsp;' + ipsclass.lang_build_string( ipb_global_lang['image_attach_percent'], _percent );
	}
	else
	{
		ct_obj.innerHTML = _img + '&nbsp;' + ipb_global_lang['image_attach_no_percent'];
	}
	
	cb_obj.innerHTML	 = "";
	
	if ( width && height )
	{
		cb_obj.innerHTML = ipsclass.lang_build_string( ipb_global_lang['image_attach_dims'], width, height );
	}
	
	cb_obj.innerHTML += ipsclass.lang_build_string( ipb_global_lang['image_attach_size'], file_size );
}

/*--------------------------------------------*/
// Fix linked images (normal IMGs)
/*--------------------------------------------*/

function fix_linked_image_sizes()
{
	if ( ipsclass.settings['do_linked_resize'] != 1 )
	{
		return true;
	}
	
	var images   = document.getElementsByTagName( 'IMG' );
	var _padding = 2;
	var _count   = 0;
	var _img     = '<img src="' + ipb_var_image_url + '/img-resized.png" style="vertical-align:middle" border="0" alt="" />';
	var _img2    = '<img src="' + ipb_var_image_url + '/folder_attach_images/attach_zoom_in.png" style="vertical-align:middle" border="0" alt="" />';
	var _sw      = screen.width * ( parseInt( ipsclass.settings['resize_percent'] ) / 100 );
	
	for ( var i = 0 ; i < images.length; i++ )
	{
		if ( images[i].className == 'linked-image' )
		{
			//-----------------------------------------
			// Inc. counter
			//-----------------------------------------
			
			_count++;
			
			//-----------------------------------------
			// Set up basics...
			//-----------------------------------------
			
			if ( images[i].width > _sw )
			{
				//-----------------------------------------
				// Grab some details...
				//-----------------------------------------

				var _width   = images[i].width;
				var _height  = images[i].height;
				var _percent = 0;
				
				//-----------------------------------------
				// Work out percentage
				//-----------------------------------------
				
				images[i].width  = _sw;
				
				if ( images[i].width < _width && _width > 0 && images[i].width > 0 )
				{
					_percent = Math.ceil( parseInt( images[i].width / _width * 100 ) );
				}
				
				images[i].id          = '--ipb-img-resizer-' + _count;
				images[i]._resized    = 1;
				images[i]._width      = _width;
				
				//-----------------------------------------
				// Add in wrapper
				//-----------------------------------------

				var div = document.createElement( 'div' );
				
				
				div.innerHTML            = _img + '&nbsp;' + ipsclass.lang_build_string( ipb_global_lang['image_resized'], _percent, _width, _height );
				div.style.width          = images[i].width - ( _padding * 2 ) + 'px';
				div.className            = 'resized-linked-image';
				div.style.paddingTop     = _padding + "px";
				div.style.paddingBottom  = _padding + "px";
				div.style.paddingLeft    = _padding + "px";
				div.style.paddingRight   = _padding + "px";
				div._is_div              = 1;
				div._resize_id           = _count;
				div.onclick     		 = fix_linked_images_onclick;
				div.onmouseover 		 = fix_linked_images_mouseover;
				div.title       		 = ipb_global_lang['click_to_view' ];
				div._src        		 = images[i].src;
				
				//-----------------------------------------
				// Add it all...
				//-----------------------------------------
				
				//if ( is_ie && ! is_ie7 )
				//{
				//	images[i].outerHTML = div.outerHTML + images[i].outerHTML;
				//}
				//else
				//{
					images[i].parentNode.insertBefore( div, images[i] );
				//}
			}
		}
	}
}

function fix_linked_images_onclick(e)
{
	//-----------------------------------------
	// Div clicked 
	//-----------------------------------------
	
	PopUp( this._src, 'popup',screen.width,screen.height,1,1,1);
	
	e = ipsclass.cancel_bubble_all( e );
	
	return false;
};

function fix_attach_images_mouseover(e)
{
	//-----------------------------------------
	// Change cursor...
	//-----------------------------------------
	
	try
	{
		this.style.cursor='pointer';
	}
	catch(acold)
	{
	}
}

function fix_linked_images_mouseover(e)
{
	try
	{
		this.style.cursor='pointer';
	}
	catch(acold)
	{
	}

}


/*--------------------------------------------*/
// Fast reply stuff
/*--------------------------------------------*/

function emoticon( ecode, eobj, eurl )
{
	ecode = ' ' + ecode + ' ';
	var obj_ta = document.getElementById( 'fastreplyarea' );

	if ( (ua_vers >= 4) && is_ie && is_win)
	{
		if (obj_ta.isTextEdit)
		{
			obj_ta.focus();
			var sel = document.selection;
			var rng = sel.createRange();
			rng.colapse;
			if((sel.type == "Text" || sel.type == "None") && rng != null)
			{
				if(ecode != "" && rng.text.length > 0)
					ecode = rng.text + ecode ;
	
				rng.text = ecode;
			}
		}
		else
		{
			obj_ta.value += ecode;
		}
	}
	//----------------------------------------
	// It's MOZZY!
	//----------------------------------------
	
	else if ( obj_ta.selectionEnd )
	{ 
		var ss = obj_ta.selectionStart;
		var st = obj_ta.scrollTop;
		var es = obj_ta.selectionEnd;
		
		if (es <= 2)
		{
			es = obj_ta.textLength;
		}
		
		var start  = (obj_ta.value).substring(0, ss);
		var middle = (obj_ta.value).substring(ss, es);
		var end    = (obj_ta.value).substring(es, obj_ta.textLength);
		
		//-----------------------------------
		// text range?
		//-----------------------------------
		
		if (obj_ta.selectionEnd - obj_ta.selectionStart > 0)
		{
			middle = ecode + middle;
		}
		else
		{
			middle = ecode + middle;
			
		}
		
		obj_ta.value = start + middle + end;
		
		var cpos = ss + (middle.length);
		
		obj_ta.selectionStart = cpos;
		obj_ta.selectionEnd   = cpos;
		obj_ta.scrollTop      = st;
	}
	//----------------------------------------
	// It's CRAPPY!
	//----------------------------------------
	else
	{
		obj_ta.value += ecode;
	}
	
	obj_ta.focus();

	if ( (ua_vers >= 4) && is_ie && is_win && emowindow != 'undefined' )
	{
		emowindow.focus();
	}

	//document.getElementById( 'fastreplyarea' ).value += ' ' + ecode + ' ';
}

/*--------------------------------------------*/
// Topic: Scroll to post: IE fix
/*--------------------------------------------*/

function topic_scroll_to_post( post_id )
{
	//----------------------------------
	// Check for PID
	//----------------------------------
	
	if ( ! post_id )
	{
		return false;
	}
	
	try
	{
		var post_main_obj = document.getElementById( 'post-main-' + post_id );
	}
	catch(error)
	{
		var post_main_obj;
	}
	
	if ( post_main_obj )
	{
		var post_box_top  = _get_obj_toppos( post_main_obj );
		
		if ( post_box_top )
		{
			scroll( 0, post_box_top - 30 );
		}
	}
}

/*--------------------------------------------*/
// Show hidden post
/*--------------------------------------------*/

function topic_show_ignored_post( pid )
{
	try
	{
		// Set up
		var post_main   = document.getElementById( 'post-main-'   + pid );
		var post_ignore = document.getElementById( 'post-ignore-' + pid );
		
		// Show it
		post_main.innerHTML = ignore_cache[ pid ];
	}
	catch( e )
	{
		//alert( e );
	}
	
	return false;
}


/*--------------------------------------------*/
// Initiate topic hide
/*--------------------------------------------*/

function topic_init_ignored_post( pid )
{
	try
	{
		// Set up
		var post_main   = document.getElementById( 'post-main-'   + pid );
		var post_ignore = document.getElementById( 'post-ignore-' + pid );
		
		// Cache it...
		ignore_cache[ pid ] = post_main.innerHTML;
		
		// Display "ignored" msg
		post_main.innerHTML = post_ignore.innerHTML;
	}
	catch( e )
	{
		//alert( e );
	}
}


/*--------------------------------------------*/
// Ajax: Use full editor
/*--------------------------------------------*/

function ajax_fulleditor_for_edit( post_id )
{
	if ( post_id && ipb_input_t && ipb_input_f )
	{
		var _form = document.getElementById( 'quick-edit-form-' + post_id );
		var _url  = ipb_var_base_url + 'act=post&do=edit_post&f=' + ipb_input_f + '&t=' + ipb_input_t + '&p=' + post_id + '&st=' + ipb_var_st + '&_from=quickedit';
		
		_form.action = _url;
		_form.method = 'POST';
		
		_form.submit();
		
		xmlobj.show_loading();
		
		return false;
	}
	else
	{
		return false;
	}
}

/*--------------------------------------------*/
// Ajax: Cancel for edit
/*--------------------------------------------*/

function ajax_cancel_for_edit( post_id )
{
	if ( post_cache[ post_id ] != "" )
	{
		document.getElementById( 'post-'+post_id ).innerHTML = post_cache[ post_id ];
	}
	
	return false;
}

/*--------------------------------------------*/
// Ajax: Save for edit
/*--------------------------------------------*/

function ajax_save_for_edit( post_id )
{
	//----------------------------------
	// INIT
	//----------------------------------
	
	var url    = ipb_var_base_url+'act=xmlout&do=post-edit-save&p='+post_id+'&t='+ipb_input_t+'&f='+ipb_input_f;
	var fields = new Array();

	//----------------------------------
	// Populate fields
	//----------------------------------
	
	fields['md5check']         = ipb_md5_check;
	fields['t']                = ipb_input_t;
	fields['f']                = ipb_input_f;
	fields['p']                = post_id;
	fields['act']              = 'xmlout';
	fields['do']               = 'post-edit-save';
	fields['Post']             = document.getElementById( post_id + '_textarea' ).value;
	fields['std_used']         = 1;  // Make sure STD BBCode parser is used
	
	//-----------------------------------------
	// Got a reason to be jolly?
	//-----------------------------------------
	
	try
	{
		fields['post_edit_reason'] = document.getElementById( 'post_edit_reason' ).value;
	}
	catch(err)
	{
	}
	
	//----------------------------------
	// Is there a post?
	//----------------------------------
	
	var post_check = fields['Post'];
	
	if ( post_check.replace( /^\s*|\s*$/g, "" ) == "" )
	{
		alert( js_no_empty_post );
		return false;
	}
	
	/*--------------------------------------------*/
	// Main function to do on request
	// Must be defined first!!
	/*--------------------------------------------*/
	
	do_request_function = function()
	{
		//----------------------------------
		// Ignore unless we're ready to go
		//----------------------------------
		
		if ( ! xmlobj.readystate_ready_and_ok() )
		{
			xmlobj.show_loading();
			return;
		}
		
		xmlobj.hide_loading();
		
		//----------------------------------
		// INIT
		//----------------------------------
		
		var html = xmlobj.xmlhandler.responseText;
		
		//-----------------------------------------
		// Execute JS...
		//-----------------------------------------
		
		if ( html == 'nopermission' )
		{
			alert( js_error_no_permission );
			document.getElementById( 'post-'+post_id ).innerHTML = post_cache[ post_id ];
		}
		else if ( html != 'error' )
		{
			document.getElementById( 'post-'+post_id ).innerHTML = html;
			xmlobj.execute_javascript( html );
			fix_linked_image_sizes();
		}
	};
	
	//----------------------------------
	// LOAD XML
	//----------------------------------
	
	xmlobj = new ajax_request();
	xmlobj.onreadystatechange( do_request_function );
	var xmlreturn = xmlobj.process( url, 'POST', xmlobj.format_for_post(fields) );
	
	return false;
}

/*--------------------------------------------*/
// Ajax: Prep for edit
/*--------------------------------------------*/

function ajax_prep_for_edit( post_id, event )
{
	//----------------------------------
	// Cancel bubble (Prevent IE scroll...)
	//----------------------------------
	
	global_cancel_bubble( event, true );
	
	var post_main_obj = document.getElementById( 'post-main-' + post_id );
	var post_box_top  = _get_obj_toppos( post_main_obj );
	
	//----------------------------------
	// INIT
	//----------------------------------
	
	var url = ipb_var_base_url+'act=xmlout&do=post-edit-show&p='+post_id+'&t='+ipb_input_t+'&f='+ipb_input_f;
	
	post_cache[ post_id ] = document.getElementById( 'post-'+post_id ).innerHTML;

	//----------------------------------
	// Attempt to close open menus
	//----------------------------------
	
	try
	{
		menu_action_close();
	}
	catch(e)
	{
		//alert( e );
	}
	
	/*--------------------------------------------*/
	// Main function to do on request
	// Must be defined first!!
	/*--------------------------------------------*/
	
	do_request_function = function()
	{
		//----------------------------------
		// Ignore unless we're ready to go
		//----------------------------------
		
		if ( ! xmlobj.readystate_ready_and_ok() )
		{
			xmlobj.show_loading();
			return;
		}
		
		xmlobj.hide_loading();
		
		//----------------------------------
		// INIT
		//----------------------------------
		
		var html = xmlobj.xmlhandler.responseText;
		
		if ( html == 'nopermission' )
		{
			alert( js_error_no_permission );
		}
		else if ( html != 'error' )
		{
			if ( post_box_top )
			{
				scroll( 0, post_box_top - 30 );
			}
			
			document.getElementById( 'post-' + post_id ).innerHTML = html;

			//-----------------------------------------
			// Set up new editor
			//-----------------------------------------
			
			IPS_Lite_Editor[ post_id ] = new ips_text_editor_lite( post_id );
			IPS_Lite_Editor[ post_id ].init();
		}
	};
	
	//----------------------------------
	// LOAD XML
	//----------------------------------
	
	xmlobj = new ajax_request();
	xmlobj.onreadystatechange( do_request_function );
	
	xmlobj.process( url );
	
	return false;
}

/*--------------------------------------------*/
// check selection
/*--------------------------------------------*/

function checkselection()
{
	var myselection = '';
	
	if ( window.getSelection )
	{
		myselection = window.getSelection();
	}
	else if ( document.selection )
	{
		myselection = document.selection.createRange().text;
	}
	else if ( document.getSelection )
	{
		myselection = document.getSelection();
	}
	
 	if ( myselection != '' && myselection != null )
	{
		if ( myselection != mystored_selection )
		{
			document.getElementById('fastreply-pastesel').style.display = '';
			mystored_selection = (myselection.toString() != '') ? myselection.toString() : null;
		}
	}
	else
	{
		mystored_selection = null;
	}
}

/*--------------------------------------------*/
// Paste selection
/*--------------------------------------------*/

function pasteselection()
{
	if ( mystored_selection != '' && mystored_selection != null )
	{
		var fr = document.getElementById('fastreplyarea');
		if (fr)
		{
			fr.value += '[quote]'+mystored_selection+'[/quote]\n';
			fr.focus();
		}
	}

	return false;
}

/*--------------------------------------------*/
// Link to a post
/*--------------------------------------------*/

function link_to_post(pid)
{
	temp = prompt( ipb_lang_tt_prompt, ipb_var_base_url + "showtopic=" + ipb_input_t + "&view=findpost&p=" + pid );
	return false;
}

/*--------------------------------------------*/
// Delete post
/*--------------------------------------------*/

function delete_post(theURL)
{
	if (confirm( ipb_lang_js_del_1 ))
	{
		window.location.href=theURL;
	}
	else
	{
		alert ( ipb_lang_js_del_2 );
	} 
}

/*--------------------------------------------*/
// Multi quote
/*--------------------------------------------*/

function multiquote_add(id)
{
	saved = new Array();
	clean = new Array();
	add   = 1;
	
	//-----------------------------------
	// Get any saved info
	//-----------------------------------
	
	if ( tmp = my_getcookie('mqtids') )
	{
		saved = tmp.split(",");
	}
	
	//-----------------------------------
	// Remove bit if exists
	//-----------------------------------
	
	for( i = 0 ; i < saved.length; i++ )
	{
		if ( saved[i] != "" )
		{
			if ( saved[i] == id )
			{
				 add = 0;
			}
			else
			{
				clean[clean.length] = saved[i];
			}
		}
	}
	
	//-----------------------------------
	// Add?
	//-----------------------------------
	
	if ( add )
	{
		clean[ clean.length ] = id;
		eval("document.mad_"+id+".src=removequotebutton");
		eval("document.mad_"+id+".title='-'");
	}
	else
	{
		eval(" document.mad_"+id+".src=addquotebutton");
		eval("document.mad_"+id+".title='+'");
	}
	
	my_setcookie( 'mqtids', clean.join(','), 0 );
	
	return false;
}

/*--------------------------------------------*/
// Check delete
/*--------------------------------------------*/

function checkdelete()
{
	if ( ! document.modform.selectedpids.value )
	{
		return false;
	}
	
	isDelete = document.modform.tact.options[document.modform.tact.selectedIndex].value;
	
	if (isDelete == 'delete')
	{
		formCheck = confirm( lang_suredelete );
		
		if (formCheck == true)
		{
			return true;
		}
		else
		{
			return false;
		}
	}
}

/*--------------------------------------------*/
// Toggle selection
//*--------------------------------------------*/

function topic_toggle_pid( pid )
{
	//-----------------------------------
	// Got a number?
	//-----------------------------------
	
	if ( isNaN( pid ) )
	{
		return false;
	}
	
	saved = new Array();
	clean = new Array();
	add   = 1;
	
	//-----------------------------------
	// Get form info
	//-----------------------------------
	
	tmp = document.modform.selectedpids.value;
	
	saved = tmp.split(",");
	
	//-----------------------------------
	// Remove bit if exists
	//-----------------------------------
	
	for( i = 0 ; i < saved.length; i++ )
	{
		if ( saved[i] != "" )
		{
			if ( saved[i] == pid )
			{
				 add = 0;
			}
			else
			{
				clean[clean.length] = saved[i];
			}
		}
	}
	
	p_sort_form = document.getElementById('p_sort_' + pid);
	if (p_sort_form)
	{
		sort_tid = p_sort_form.post_topicsort.value;
		saved_sort_tids = new Array();
		clean_sort_tids = new Array();
		tmp = document.modform.selectedpids_sort_tids.value;
		saved_sort_tids = tmp.split(",");
		if ( add )
		{
			saved_sort_tids.push(pid + '-' + sort_tid);
			clean_sort_tids = saved_sort_tids;
		}
		else
		{
			for ( i = 0; i < saved_sort_tids.length; i++ )
			{
				if ( saved_sort_tids[i] != "" )
				{
					tmp_s = saved_sort_tids[i].split("-");
					if (tmp_s[0] != pid)
						clean_sort_tids[clean_sort_tids.length] = saved_sort_tids[i];
				}
			}
		}
		newvalue_sort_tids = clean_sort_tids.join(',');
		document.modform.selectedpids_sort_tids.value = newvalue_sort_tids;
	}
	
	//-----------------------------------
	// Add?
	//-----------------------------------
	
	if ( add )
	{
		clean[ clean.length ] = pid;
		eval("document.img"+pid+".src=selectedbutton");
	}
	else
	{
		eval(" document.img"+pid+".src=unselectedbutton");
	}
	
	newvalue = clean.join(',');
	
	my_setcookie( 'modpids', newvalue, 0 );
	
	document.modform.selectedpids.value = newvalue;
	
	newcount = stacksize(clean);
	
	document.modform.gobutton.value = lang_gobutton + ' (' + newcount + ')';
	
	return false;
};


function topic_rate()
{
	/**
	* Settings
	*/
	this.settings = {
						'allow_rating'           : 0,
						'default_rating'         : 3,
						'img_star_on'            : 'star_filled.gif',
						'img_star_selected'      : 'star_selected.gif',
						'img_star_off'           : 'star_empty.gif',
						'img_main_star_0'        : 'rating_0.gif',
						'img_main_star_1'        : 'rating_1.gif',
						'img_main_star_2'        : 'rating_2.gif',
						'img_main_star_3'        : 'rating_3.gif',
						'img_main_star_4'        : 'rating_4.gif',
						'img_main_star_5'        : 'rating_5.gif',
						'img_base_url'           : '',
						'div_rating_wrapper'     : 'topic-rating-wrapper',
						'text_rating_image'      : 'topic-rating-img-',
						'topic-rating-img-main'  : 'topic-rating-img-main',
						'topic-rating-my-rating' : 'topic-rating-my-rating',
						'topic-rating-hits'      : 'topic-rating-hits'
	 				};
	
	this.languages = {
						'img_alt_rate'       : '',
						'rate_me'            : ''
					 };
	
	/**
	* INIT rating images
	*/
	this.init_rating_images = function()
	{
		//-----------------------------------------
		// INIT
		//-----------------------------------------

		var html = '';

		//-----------------------------------------
		// Can rate this member?
		//-----------------------------------------

		if ( ! this.settings[ 'allow_rating' ] )
		{
			return false;
		}

		//-----------------------------------------
		// Still here? OK...
		//-----------------------------------------

		for( var i = 1 ; i <= 5 ; i++ )
		{
			var _onmouseover = '';
			var _onmouseout  = '';
			var _onclick     = '';
			var _title       = '';

			_onmouseover = ' onmouseover="this.style.cursor=\'pointer\'; topic_rate.show_rating_images(' + i + ', 0)"';
			_onmouseout  = ' onmouseout="topic_rate.show_rating_images(-1, 1)"';
			_onclick     = ' onclick="topic_rate.send_rating(' + i + ')"';
			_title       = this.languages['img_alt_rate'];

			html += "<img style='vertical-align:top' src='" + this.settings['img_base_url'] + '/' + this.settings['img_star_off'] + "' " + _onmouseover + _onmouseout + _onclick + "id='" + this.settings['text_rating_image'] + i + "' alt='-' title='" + _title + "' />";
		}

		document.getElementById( this.settings['div_rating_wrapper'] ).innerHTML = this.languages['rate_me'] + ' ' + html;

		//-----------------------------------------
		// Now set the image...
		//-----------------------------------------

		this.show_rating_images( this.settings['default_rating'], 1 );
	};
	
	/**
	* Send rating..
	*/
	this.send_rating = function( rating )
	{
		//-----------------------------------------
		// INIT
		//-----------------------------------------
		
		rating = rating ? rating : 0;
		
		//-----------------------------------------
		// Got a rating?
		//-----------------------------------------
		
		if ( rating )
		{
			//----------------------------------
			// INIT
			//----------------------------------

			var url = ipb_var_base_url+'act=xmlout&do=topic_rate&t='+ipb_input_t+'&rating='+rating;

			/*--------------------------------------------*/
			// Main function to do on request
			// Must be defined first!!
			/*--------------------------------------------*/

			do_request_function = function()
			{
				//----------------------------------
				// Ignore unless we're ready to go
				//----------------------------------

				if ( ! xmlobj.readystate_ready_and_ok() )
				{
					xmlobj.show_loading( '' );
					return;
				}

				xmlobj.hide_loading();

				//----------------------------------
				// INIT
				//----------------------------------

				var html = xmlobj.xmlhandler.responseText;
				
				if ( html == 'no_permission' )
				{
					alert( js_error_no_permission );
				}
				else if ( html != 'error' )
				{
					var _result    = html.split(',');
					var _new_value = _result[0];
					var _new_hits  = _result[1];
					var _new_stars = _result[2];
					var _type      = _result[3];
					
					//-----------------------------------------
					// Now set the image...
					//-----------------------------------------
					
					topic_rate.settings['default_rating'] = parseInt( _new_stars );
				
					topic_rate.show_rating_images( topic_rate.settings['default_rating'], 1 );
					
					menu_action_close();
					
					//-----------------------------------------
					// Update counts
					//-----------------------------------------
				
					document.getElementById('topic-rating-hits').innerHTML      = _new_hits;
					document.getElementById('topic-rating-my-rating').innerHTML = rating;
					
					show_inline_messages_instant( 'rating_updated' );
				}
			};

			//----------------------------------
			// LOAD XML
			//----------------------------------

			xmlobj = new ajax_request();
			xmlobj.onreadystatechange( do_request_function );

			xmlobj.process( url );

			return false;
		}
	};
	
	/**
	* Show rating images..
	*/
	this.show_rating_images = function( rating, restore_default )
	{
		//-----------------------------------------
		// INIT
		//-----------------------------------------
		
		rating   = restore_default ? this.settings['default_rating'] : parseInt( rating );
		var star = restore_default ? this.settings['img_star_on'] : this.settings['img_star_selected'];
		
		//-----------------------------------------
		// Set to 0
		//-----------------------------------------
		
		for( var i = 1 ; i <= 5 ; i++ )
		{
			var _img = document.getElementById( this.settings['text_rating_image'] + i );
			_img.src = this.settings['img_base_url'] + '/' + this.settings['img_star_off'];
		}
		
		//-----------------------------------------
		// Show ones coloured...
		//-----------------------------------------
		
		for( var i = 1 ; i <= rating ; i++ )
		{
			var _img = document.getElementById( this.settings['text_rating_image'] + i );
			_img.src = this.settings['img_base_url'] + '/' + star;
		}
		
		//-----------------------------------------
		// Set main image
		//-----------------------------------------
		
		document.getElementById( this.settings['topic-rating-img-main'] ).src = this.settings['img_base_url'] + '/' + this.settings['img_main_star_' + rating ];
	};
	
};
