/************************************************************************\
 *
 * NuRatings 
 * 
 * Copyright ©2006 NuHit, LLC. All Rights Reserved.
 * This file may not be redistributed in whole or significant part.
 * http://www.nuhit.com | http://www.nuhit.com/license.html
 *
\************************************************************************/


function nr_threshold_changed( selector, targeturl )
{
	if (!selector)
		return;
	for (i=0;i<selector.length;i++)
    {
		if (selector.options[i] && selector.options[i].selected)
		{
			window.location = targeturl + selector.options[i].value;
			return;
		}
    }
}

function nr_rate_thread( callback, threadid, dir )
{
	vote_ajax_handler = new vB_AJAX_Handler(true);
	vote_ajax_handler.onreadystatechange( callback );
	vote_ajax_handler.send('forumdisplay.php?do=ratethread_ajax&t=' + threadid + '&v=' + dir);
}

function nr_rate_thread_done( rating_id, thumbs_up_id, thumbs_dn_id )
{
	if (vote_ajax_handler.handler.readyState == 4 && vote_ajax_handler.handler.status == 200)
	{
		response = nr_process_response( vote_ajax_handler.handler.responseText );
		if (!response || !response.action)
			return;
		if (response.action == 1)
		{	// update display
			link = fetch_object( rating_id );
			if (link)
			{
				link.innerHTML = response.ratingtext ? response.ratingtext : response.rating;
				link.title = response.votestext;
			}
			up = fetch_object( thumbs_up_id );
			if (up)
				up.src = response.rating >= 0 ? g_nr_thumbs_up_src : g_nr_thumbs_up_d_src;
			dn = fetch_object( thumbs_dn_id );
			if (dn)
				dn.src = response.rating <= 0 ? g_nr_thumbs_dn_src : g_nr_thumbs_dn_d_src;
		}
	}
}

function nr_rate_post( callback, postid, threadid, vote, theuserid )
{
	vote_ajax_handler = new vB_AJAX_Handler(true);
	vote_ajax_handler.onreadystatechange( callback );
	vote_ajax_handler.send('showthread.php?do=ratepost_ajax&p=' + postid + '&t=' + threadid + '&v=' + vote + '&tui=' + theuserid );
}

function nr_rate_post_done( rating_id, thumbs_up_id, thumbs_dn_id )
{
	if (vote_ajax_handler.handler.readyState == 4 && vote_ajax_handler.handler.status == 200)
	{
		response = nr_process_response( vote_ajax_handler.handler.responseText );
		if (!response || !response.action)
			return;
		if (response.action == 1)
		{	// update display
			link = fetch_object( rating_id );
			if (link)
			{
				link.innerHTML = response.ratingtext ? response.ratingtext : response.rating;
				link.title = response.votestext;
			}
			up = fetch_object( thumbs_up_id );
			if (up)
				up.src = response.rating >= 0 ? g_nr_thumbs_up_src : g_nr_thumbs_up_d_src;
			dn = fetch_object( thumbs_dn_id );
			if (dn)
				dn.src = response.rating <= 0 ? g_nr_thumbs_dn_src : g_nr_thumbs_dn_d_src;
		}
	}
}

function nr_rate_user( vote, clicked_on_id, option_count )
{
	// update checkboxes
	for (i=0; i<option_count; i++)
	{
		check_id = "nr-check-" + i;
		checkbox = fetch_object( check_id );
		if (checkbox)
			checkbox.checked = check_id == clicked_on_id;
	}

	theuserid = g_nr_userid;
	vote_ajax_handler = new vB_AJAX_Handler(true);
	vote_ajax_handler.onreadystatechange( nr_rate_user_done );
	vote_ajax_handler.send('member.php?do=rateuser_ajax&u=' + theuserid + '&v=' + vote);
}

function nr_rate_user_done( rating_id )
{
	if (vote_ajax_handler.handler.readyState == 4 && vote_ajax_handler.handler.status == 200)
	{
		response = nr_process_response( vote_ajax_handler.handler.responseText );
		if (!response || !response.action)
			return;
		if (response.action == 1)
		{	// update display

			rating_label = fetch_object( 'nr-user-rating' );
			if (rating_label)
				rating_label.innerHTML = response.ratingtext ? response.ratingtext : response.rating;
			votes_label = fetch_object( 'nr-user-votes' );
			if (votes_label)
				votes_label.innerHTML = response.votestext;
		}
	}
}

function nr_process_response( response_txt )
{
	// unencode commas
	response_txt = response_txt.replace( ',,', ',' );

	response = new Object();
	response.action = 0;
	response.fullresponse = response_txt;
	parts = response_txt.split(',');

	for (var i=0; i<parts.length; i++)
	{
		var p2 = parts[i].split('=');
		if (p2.length == 2)
			response[ p2[0].toString() ] = p2[1];
		else
		{
			var label = p2.shift();
			response[ label.toString() ] = p2.join('=');
		}
			
	}

	if (response.action == 2)
		window.alert( response.message );

	return response;
}

var g_nr_who_rated_ref = null;
function nr_who_rated( what, id, where )
{
	if (g_nr_who_rated_ref)
	{
		bClose = g_nr_who_rated_ref == where;
		nr_hide_who_voted();
		if (bClose)
			return;
	}
	g_nr_who_rated_ref = where;
	vote_ajax_handler = new vB_AJAX_Handler(true);
	vote_ajax_handler.onreadystatechange( nr_who_rated_done );
	vote_ajax_handler.send('index.php?do=whorated_ajax&nr_w=' + what + '&nr_id=' + id);
}

function nr_who_rated_done()
{
	if (vote_ajax_handler.handler.readyState == 4 && vote_ajax_handler.handler.status == 200)
	{
		response = nr_process_response( vote_ajax_handler.handler.responseText );
		if (!response || !response.action)
			return;
		if (response.action == 3)	// html sent, show it.
		{	// update display
			obj = g_nr_who_rated_ref ? fetch_object(g_nr_who_rated_ref) : fetch_object('nr-who-rated');
			if (obj)
			{
				// change object's content
				obj.innerHTML = response.html;

				// show it
				obj.style.display = 'block';
			}
		}
	}
}

function nr_hide_who_voted()
{
	elem = g_nr_who_rated_ref ? fetch_object(g_nr_who_rated_ref) : null;
	if (elem)
		elem.style.display = 'none';
	g_nr_who_rated_ref = null;
}

function nr_toggle_post( post_id )
{
	var post_ctr_id = "post" + post_id;
	var post_ctr = fetch_object( post_ctr_id );
	var img_obj = fetch_object( "collapseimg_post" + post_id );
	
	if (!post_ctr)
		return;

	if (post_ctr.style.display == 'none')
	{
		post_ctr.style.display = '';
		if (img_obj)
		{
			re = new RegExp("_collapsed\\.gif$");
			img_obj.src = img_obj.src.replace(re, '.gif');
		}
	}
	else
	{
		post_ctr.style.display = 'none';
		if (img_obj)
		{
			re = new RegExp("\\.gif$");
			img_obj.src = img_obj.src.replace(re, '_collapsed.gif');
		}
	}
}
