var ajax_loaded	= 1;
var rate_value = 0;

function set_rate()
{
	// Settings
	this.settings = {
						'allow_rating'           : 0,
						'default_rating'         : 0,
						'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'     : 'set-rating-wrapper',
						'text_rating_image'      : 'set-rating-img-',
						'set-rating-img-main'    : 'set-rating-img-main',
						'set-rating-my-rating'   : 'set-rating-my-rating',
						'set-rating-hits'        : 'set-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\'; set_rate.show_rating_images(' + i + ', 0)"';
			_onmouseout  = ' onmouseout="set_rate.show_rating_images(-1, 1)"';
			_onclick     = ' onclick="set_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=set_rate&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...
					set_rate.settings['default_rating'] = parseInt( _new_stars );
				
					set_rate.show_rating_images( set_rate.settings['default_rating'], 1 );
					
					menu_action_close();
					
					// update counts
					document.getElementById('set-rating-hits').innerHTML      = _new_hits;
					document.getElementById('set-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['set-rating-img-main'] ).src = this.settings['img_base_url'] + '/' + this.settings['img_main_star_' + rating ];
	};
};