function rating_setup( id, node )
{
	var rater = $( id );
	if (rater.rating === undefined)
	{
		rater.rating = 0;
		rater.node = node;
		rater.stars = rater.descendants();
	}

	var star;
	var stars = rater.stars;
	for ( var i = 0; i < stars.length; i++ )
	{
		star = stars[ i ];
		star.style.cursor = 'hand';
		star.rating = i;
		star.onmouseover = rating_change;
		star.onclick = rating_save;

		if ( star.src.indexOf('full') > 0 )
		{
			rater.rating = star.rating;
			star.src_full = star.src;
		}
		else
		{
			star.src_full = star.src.replace( 'empty', 'full' );
			star.src_full = star.src_full.replace( 'shadow', 'full' );
		}

		star.src_empty = star.src_full.replace( 'full', 'empty' );
		star.src_shadow = star.src_full.replace( 'full', 'shadow' );

		star.src_init = star.src;

		star.onmouseout = rating_unchange;
	}
//	rater.onmouseout = rating_unchange;
}

function rating_change( e )
{
	if (!e) var e = window.event;
	var star = e.srcElement;
	var rater = star.parentElement;
	var stars = rater.stars;

	for ( var i = 0; i < stars.length ; i++ )
	{
		var cur = stars[ i ];
		if (i <= star.rating ) cur.src = cur.src_shadow;
		else cur.src = cur.src_empty;
	}
}

function rating_unchange( e )
{
	if (!e) var e = window.event;
	var rater = e.srcElement.parentElement;

	var stars = rater.descendants();

	for ( var i = 0; i < stars.length; i++ )
	{
		stars[i].src = stars[i].src_init;
	}
}

function rating_save( e )
{
	if (!e) var e = window.event;
	var star = e.srcElement;
	var rater = star.parentElement;

	rater.rating = star.rating;

	rating_setup( rater.id, rater.node );

	new Ajax.Request( '/rating/save/ajax/', {
		method: 'post',
		parameters: {
			'node': rater.node,
			'mark': rater.rating
		}
	} );
}
