/*
+--------------------------------------------------------------------------
|   (SnS) AJAX Poll Vote
|   for IP.Board 2.2.x
|   ========================================
|   (c) 2007 Sannis
|   http://www.ibresource.ru/forums/index.php?showuser=36662
|   http://ibpower.ru/?showuser=33
+---------------------------------------------------------------------------
*/

var poll_choice = new Array();
var poll_multi = new Array();

function pre_ajax_choice_select(qid, cid)
{
	poll_choice[qid] = cid;
}

function pre_ajax_choice_multi(qid, cid)
{
	var key = 'choice_'+qid+'_'+cid;

	if( poll_multi[key] )
	{
		poll_multi[key] = 0;
	}
	else
	{
		poll_multi[key] = 1;
	}
}

function ajax_poll_vote(nullvote)
{
	var url    = ipb_var_base_url;
	var fields = new Array();

	fields['act']       = 'xmlout';
	fields['do']        = 'poll-vote';
	fields['md5check']  = ipb_md5_check;
	fields['t']         = ipb_input_t;
	fields['nullvote']	= nullvote;

	fields['choice'] = phpArraySerialize(poll_choice);

	for( var key in poll_multi )
	{
		if( poll_multi[key] )
		{
			fields[key] = 1;
		}
	}


	var poll = document.getElementById('poll-div');

	do_request_function = function()
	{
		if (!xmlobj.readystate_ready_and_ok())
		{
			xmlobj.show_loading();
			return;
		}

		xmlobj.hide_loading();
		var html = xmlobj.xmlhandler.responseText;

		if (html.substr(0,5) == 'error')
		{
			alert('Ошибка[' + html.substr(5,1) + ']:\nСкорее всего вы не выбрали варианты во всех пунктах опроса.');
		}
		else
		{
			poll.innerHTML = html;
			if (poll.focus)
			{
				poll.focus();
			}
		}
	}

	xmlobj = new ajax_request();
	xmlobj.onreadystatechange(do_request_function);
	var xmlreturn = xmlobj.process(url, 'POST', xmlobj.format_for_post(fields));

	return false;
}


function ajax_poll_show_vote(mode)
{
	var url    = ipb_var_base_url;
	var fields = new Array();

	fields['act']       = 'xmlout';
	fields['do']        = 'poll-show-vote';
	fields['md5check']  = ipb_md5_check;
	fields['t']         = ipb_input_t;
	fields['mode']		= mode;

	var poll = document.getElementById('poll-div');

	do_request_function = function()
	{
		if (!xmlobj.readystate_ready_and_ok())
		{
			xmlobj.show_loading();
			return;
		}

		xmlobj.hide_loading();
		var html = xmlobj.xmlhandler.responseText;

		if (html.substr(0,5) == 'error')
		{
			alert(html);
		}
		else
		{
			poll.innerHTML = html;
			if (poll.focus)
			{
				poll.focus();
			}
		}
	}

	xmlobj = new ajax_request();
	xmlobj.onreadystatechange(do_request_function);
	var xmlreturn = xmlobj.process(url, 'POST', xmlobj.format_for_post(fields));

	return false;
}


function phpArraySerialize(val)
{
	if (val == null)
	{
		return "N;";
	}
	else if ("length" in val)
	{
		var ser_str = '';
		var l = 0;
		if ( val.length )
		{
			for( var i in val )
			{
				ser_str += 'i:' + i + ';i:' + val[i] + ';';
				l++;
			}
		}
		return 'a:' + l + ':{' + ser_str + '}';
	}

    return "N;";
}
