//
// rRate -- js from facepunchstudios.com, cleaned up by me...
//

	// our rate_it.php file
	var eRatePHP = ipb_var_base_url + "act=xmlout&do="
	var mouseX = 0;
	var mouseY = 0;

	if ( document.layers )
	{
		document.captureEvents( Event.MOUSEMOVE );
	}

	document.onmousemove = captureMousePosition;

	function captureMousePosition( e ) 
	{
		// IE doesn't pass e.
		if ( !e )
		{
			e = window.event;
		}

		if ( !e )
		{
			return false;
		}
	
		// Firefox makes it simple
		if ( e.pageX )
		{
			mouseX = e.pageX;
			mouseY = e.pageY;
			return false;
		}

		// IE's mouse position is relative to the page scroll.. so we have to add it on.
		mouseX =  e.clientX + (document.documentElement.scrollLeft ?
					document.documentElement.scrollLeft :
					document.body.scrollLeft);

		mouseY =  e.clientY + (document.documentElement.scrollTop ?
					document.documentElement.scrollTop :
					document.body.scrollTop);						 
	}

	function rateHover( $on, $postid, $name )
	{
		bar = document.getElementById( 'rbt_' + $postid );

		if ( $on )
		{
			bar.innerHTML = $name;
		}
		else
		{
			bar.innerHTML = '&nbsp;';
		}
	}

	var rateAJAX = false;
	var rateBox = false;

	function rateIt( $id , $postid )
	{
		if ( rateAJAX )
		{
			alert( "One at a time..." );
			return false;
		}

		rateBox = document.getElementById ( 'rb_' + $postid );

		rateFeedback = function()
		{
			if ( !rateAJAX.readystate_ready_and_ok( ) )
			{
				rateAJAX.show_loading( );
				return;
			}

			rateAJAX.hide_loading( );
			rateBox.innerHTML = rateAJAX.xmlhandler.responseText;

			delete rateAJAX;
			rateAJAX = false;
			rateBox = false;
		}

		rateAJAX = new ajax_request( );
		rateAJAX.onreadystatechange( rateFeedback );
		rateAJAX.process( eRatePHP + 'erate&p=' + $postid + '&r=' + $id );

		return false;
	}

	var ajRN = false;
	var rateNameExpander = false;

	function rateItExpand( $postid )
	{
		if ( rateNameExpander )
		{
			return false;
		}

		rateNameExpander = document.getElementById ( 'rate_it_names_' + $postid );

		// Already Expanded
		if ( rateNameExpander.innerHTML != '' )
		{
			if ( rateNameExpander.style.display == 'none' )
			{
				rateNameExpander.style.display = 'block';
			}
			else
			{
				rateNameExpander.style.display = 'none';
			}

			rateNameExpander = false;
			return false;
		}

		rateItExpand_CB = function( )
		{
			if ( !ajRN.readystate_ready_and_ok( ) )
			{
				ajRN.show_loading( );
				return;
			}

			ajRN.hide_loading( );

			rateNameExpander.innerHTML = ajRN.xmlhandler.responseText;

			ajRN = false;
			rateNameExpander = false;
		}

		rateNameExpander.innerHTML = "Fetching..";

		ajRN = new ajax_request( );
		ajRN.onreadystatechange( rateItExpand_CB );
		ajRN.process( eRatePHP + 'erategetnames&p=' + $postid );

		return false;
	}

	function closeWindow( name )
	{
		win = document.getElementById( name );

		if ( !win )
		{
			return false;
		}

		document.body.removeChild( win );
		delete win;
		rateWindow = false;
	}

	var ajRB = false;
	var rateWindow = false;

	function showRateBox( $userid, $clicked, e )
	{
		if ( ajRB )
		{
			alert( "One at a time..." );
			return false;
		}
	
		if ( rateWindow )
		{
			document.body.removeChild( rateWindow );
			delete rateWindow;
			rateWindow = false;
		}
	
		if ( whoVotedWindow )
		{
			document.body.removeChild( whoVotedWindow );
			delete whoVotedWindow;
			whoVotedWindow = false;
		}

		clickX = mouseX + 10;
		clickY = mouseY;

		showRateBoxFeedback = function( )
		{
			if ( !ajRB )
			{
				return false;
			}

			if ( !ajRB.readystate_ready_and_ok( ) )
			{
				ajRB.show_loading( );
				return;
			}

			if ( !rateWindow )
			{
				var div = document.createElement( 'div' );
				div.id = 'Rate_It_Popup';
				div.style.left = clickX + 'px';
				div.style.top = clickY + 'px';
				div.style.position = "absolute";
				div.style.background = "#ffd";
				div.style.border = "1px solid #777";
				div.style.padding = '10px';
				div.style.cursor = 'pointer';
				div.style.color = '#555';
				div.style.fontSize = '11px';
				div.style.textAlign = 'left';

				document.body.appendChild( div );
				rateWindow = div
			}
	
			ajRB.hide_loading();
			rateWindow.innerHTML = '<div style="position: absolute; left: '+ 265 +'px; top: '+( 5 )+'px;"><a href="#" onclick="rateWindow = false; whoVotedWindow = false; closeWindow( \'Rate_It_Popup\' ); closeWindow( \'Rate_It_Popup_Names\' ); return false;"><img src="style_images/rate/close.png"></a></div>';
			rateWindow.innerHTML = rateWindow.innerHTML + ajRB.xmlhandler.responseText;

			delete ajRB;
			ajRB = false;
		}

		ajRB = new ajax_request( );
		ajRB.onreadystatechange( showRateBoxFeedback );
		ajRB.process( eRatePHP + 'erategetbox&uid=' + $userid );

		return false;
	}

	var ajWhoRated = false;
	var whoVotedWindow = false;

	function showWhoVoted( $userid , $rateid , $rated )
	{
		if ( ajWhoRated )
		{
			alert( "One at at time..." );
			return false;
		}
	
		if ( whoVotedWindow )
		{
			document.body.removeChild( whoVotedWindow );
			delete whoVotedWindow;
			whoVotedWindow = false;
		}

		clickX = mouseX;
		clickY = mouseY;

		showWhoVotedFeedback = function( )
		{
			if ( !ajWhoRated )
			{
				return false;
			}

			if ( !ajWhoRated.readystate_ready_and_ok( ) )
			{
				ajWhoRated.show_loading( );
				return;
			}

			if ( !whoVotedWindow )
			{
				var div = document.createElement( 'div' );	
				div.id = 'Rate_It_Popup_Names';
				div.style.width = '150px';
				div.style.opacity = '0.9';
				div.style.left = clickX + 'px';
				div.style.top = clickY + 'px';
				div.style.position = "absolute";
				div.style.background = "#ffd";
				div.style.border = "1px solid #777";
				div.style.padding = '10px';
				div.style.cursor = 'pointer';
				div.style.color = '#555';
				div.style.fontSize = '11px';
				div.style.textAlign = 'left';

				div.onclick = function( )
				{ 		
					if ( whoVotedWindow )
					{
						document.body.removeChild( whoVotedWindow );
						delete whoVotedWindow;
						whoVotedWindow = false;
					}			
				};

				document.body.appendChild( div );
				whoVotedWindow = div
			}

			ajWhoRated.hide_loading( );
			whoVotedWindow.innerHTML = ajWhoRated.xmlhandler.responseText;

			delete ajWhoRated;
			ajWhoRated = false;
		}

		ajWhoRated = new ajax_request( );
		ajWhoRated.onreadystatechange( showWhoVotedFeedback );
		ajWhoRated.process( eRatePHP + 'eratewhovoted&uid=' + $userid + '&rid=' + $rateid + '&rated=' + $rated );
	
		return false;
	}
