deleted_item_ids = "";

var pn = window.location.pathname;
var matches = pn.match(/\/forums\/([^\/]+)\//)
if(matches)
	forumname = matches[1];
else
	forumname = "";

function hppoll_registerVote(js_id, poll_id, f)
{
	var poll_item_id = 0;
	for(var i = 0; i < f.poll_item_id.length; i++)
	{
		if(f.poll_item_id[i].checked)
		{
			poll_item_id = f.poll_item_id[i].value;
			break;
		}
	}
	var args = [poll_id, poll_item_id, js_id, forumname];
	var rpcclient = new xmlrpc_client('xmlremote', WEB_ADDRESS);
	rpcclient.addParam("hp_poll");
	rpcclient.addParam("castballot");
	rpcclient.addParam(args);
	rpcclient.call('homepage.call_component_method', hppoll_resultsCallback);
	$("componentContent"+js_id).style.cursor = "wait";
}
function hppoll_viewResult(js_id, poll_id)
{
	var args = [js_id, poll_id, forumname];
	var rpcclient = new xmlrpc_client('xmlremote', WEB_ADDRESS);
	rpcclient.addParam("hp_poll");
	rpcclient.addParam("results");
	rpcclient.addParam(args);
	rpcclient.call('homepage.call_component_method', hppoll_resultsCallback);
	$("componentContent"+js_id).style.cursor = "wait";
}
function hppoll_Vote(js_id, poll_id)
{
	var rpcclient = new xmlrpc_client('xmlremote', WEB_ADDRESS);
	var args = [js_id, poll_id, forumname];
	rpcclient.addParam("hp_poll");
	rpcclient.addParam("vote");
	rpcclient.addParam(args);
	rpcclient.call('homepage.call_component_method', hppoll_contentCallback);
	$("componentContent"+js_id).style.cursor = "wait";
}
function hppoll_editPoll(js_id, poll_id)
{
	var rpcclient = new xmlrpc_client('xmlremote', WEB_ADDRESS);
	var args = [js_id, poll_id, forumname];
	rpcclient.addParam("hp_poll");
	rpcclient.addParam("edit");
	rpcclient.addParam(args);
	rpcclient.call('homepage.call_component_method', hppoll_editCallback);
	$("componentContent"+js_id).style.cursor = "wait";
}
function hppoll_savePoll(js_id, poll_id)
{
	var poll_title = $('poll-title-'+js_id).firstChild.nodeValue;
	var poll_active = $('poll-active-'+js_id).checked ? "1" : "0";
	var poll_visible = $('poll-visible-'+js_id).checked ? "1" : "0";
	var poll_items = '';
	var item_title = "";
	var listing = $('poll-listing-'+js_id);
	var divs = listing.getElementsByTagName('div');
	for (var i = 0; i < divs.length; i++)
	{
		if(divs[i].className == "poll-item")
		{
			var tds = divs[i].getElementsByTagName('td');
			for(var j = 0; j < tds.length; j++)
			{
				if(tds[j].className == "poll-item")
				{
					if(!tds[j].hasChildNodes()) //error condition, no sensible default really exists
						item_title = "";
					else
						item_title = tds[j].firstChild.nodeValue;
					break;
				}
			}
		}
		else if(divs[i].className == "poll-item-id")
			poll_items += "\n" + divs[i].firstChild.nodeValue + "," + item_title;
	}
	if(deleted_item_ids.substr(0,1) == ",")
		deleted_item_ids = deleted_item_ids.substr(1);
	if(poll_items.substr(0,1) == "\n")
		poll_items = poll_items.substr(1);
	var args = [js_id, poll_id, poll_title, poll_active, poll_visible, deleted_item_ids, poll_items, forumname];
	var rpcclient = new xmlrpc_client('xmlremote', WEB_ADDRESS);
	//rpcclient.debug = true;
	rpcclient.addParam("hp_poll");
	rpcclient.addParam("save");
	rpcclient.addParam(args);
	rpcclient.call('homepage.call_component_method', hppoll_resultsCallback);
	$("componentContent"+js_id).style.cursor = "wait";
}
function hppoll_editPollTitle(js_id)
{
	var pt = $('poll-title-'+js_id);
	var pte = document.poll_title_edit;
	var txt = pt.firstChild.nodeValue;
	pte.poll_title.value=txt;
	pt.style.display='none';
	$('poll-title-edit-'+js_id).style.display='block';
}
function hppoll_savePollTitle(js_id, f)
{
	if(f.poll_title.value.length == 0)
	{
		alert("The poll title is a required field.");
		f.poll_title.focus();
		return;
	}
	var pt = $('poll-title-'+js_id);
	while(pt.hasChildNodes())
		pt.removeChild(pt.firstChild);
	pt.appendChild(document.createTextNode(f.poll_title.value));
	$('poll-title-edit-'+js_id).style.display='none';
	pt.style.display='block';
}
function hppoll_addPollItem(js_id, title, item_id)
{
	var js_id = arguments[0];
	var ul = $('poll-listing-'+js_id);
	
	if(arguments.length == 3)
	{
		var pollText = arguments[1];
		var pollItemId = arguments[2];
	}
	else
	{
		var pollText = "New Poll Option";
		var pollItemId = "0";
	}
	
	//We can't do this the DOM-compliant way; Firefox 1.5 blanks out the first option when adding a new one
	ul.innerHTML += '<div class="poll-item-container">' +
			'<div class="poll-item" style="display:block" ondblclick="hppoll_showPollItemEdit(this)">' +
				'<table border="0" cellpadding="0" cellspacing="0" style="width:100%" ' +
					'onmouseover="this.firstChild.firstChild.childNodes[1].firstChild.style.visibility=\'visible\';this.style.backgroundColor=\'#f0f0f0\'" ' +
					'onmouseout="this.firstChild.firstChild.childNodes[1].firstChild.style.visibility=\'hidden\';this.style.backgroundColor=\'white\'">' +
				'<tr><td class="poll-item">' + pollText + '</td><td style="text-align:right;visibility:hidden"><button style="font-size:7.5pt" onclick="if(confirm(\'Are you sure you want to delete this poll item?\'))hppoll_delPollItem('+js_id+',this)">Delete</td></tr></table>' +
			'</div><div class="poll-item-edit" style="display:none">' +
				'<form style="display:inline;margin:0px" onsubmit="return false">' +
					'<table border="0" cellpadding="0" cellspacing="0"><tr>' +
						'<td><input type="text" name="poll_item_title" maxlength="255" value="" class="poll-item-edit-input"></td>' +
						'<td style="padding-left:3px;white-space:nowrap"><input type="button" onclick="hppoll_savePollItem(this.form)" style="font-size:7.5pt" value="OK"><input type="button" style="font-size:7.5pt" onclick="hppoll_hidePollItemEdit(this)" value="Cancel"></td>' +
					'</tr></table>' +
				'</form>' +
			'</div>'+
			'<div class="poll-item-id">' + pollItemId + '</div>' +
		'</div>';

	// Need to re-create the Sortable now that we've added an element to it
	Sortable.destroy('poll-listing-'+js_id);
	Sortable.create('poll-listing-'+js_id,{tag:'li',handle:'poll-item-container'});
}

function hppoll_showPollItemEdit(e)
{
	var div;
	e = hppoll_getContainer(e);
	if(typeof(e) == "undefined")
		alert("container is undefined!");
	var divs = e.getElementsByTagName('div');
	for(var i=0; i<divs.length; i++)
	{
		div = divs.item(i);
		if(div.className == "poll-item-edit")
			div.style.display="block";
		else if(div.className == "poll-item")
			div.style.display="none";
	}
	//get input for this row
	var ii = e.getElementsByTagName('input').item(0);
	
	//get display element for this row
	var tds = e.getElementsByTagName('td');
	for(var i=0; i<tds.length; i++)
	{
		var td = tds.item(i);
		if(td.className == "poll-item")
			break;
	}
	ii.value = td.firstChild.nodeValue;
}
function hppoll_hidePollItemEdit(e)
{
	var div;
	e = hppoll_getContainer(e);
	var divs = e.getElementsByTagName('div');
	for(var i=0; i<divs.length; i++)
	{
		div = divs.item(i);
		if(div.className == "poll-item-edit")
			div.style.display="none";
		else if(div.className == "poll-item")
			div.style.display="block";
	}

}
function hppoll_delPollItem(js_id, b)
{
	Sortable.destroy('poll-listing-'+js_id);
	while(b = b.parentNode)
	{
		if(b.nodeType == 1 && b.nodeName.toLowerCase() == 'div' && b.getAttribute("class") == "poll-item-container")
		{
			var item_id = b.getElementsByTagName("div").item(2).firstChild.nodeValue;
			if(item_id > 0)
				deleted_item_ids += "," + item_id;
			$('poll-listing-'+js_id).removeChild(b);
			break;
		}
	}
	Sortable.create('poll-listing-'+js_id,{tag:'div',handle:'poll-item-container'});
}
function hppoll_savePollItem(f)
{
	var e = hppoll_getContainer(f);
	var tds = e.getElementsByTagName('td');
	for(var i=0; i<tds.length; i++)
	{
		var td = tds.item(i);
		if(td.className == "poll-item")
			break;
	}
	var ii = e.getElementsByTagName('input').item(0);
	while(td.hasChildNodes())
		td.removeChild(td.firstChild);
	td.appendChild(document.createTextNode(ii.value));
	hppoll_hidePollItemEdit(td);
}


function hppoll_getListing(js_id, start, limit, poll_id)
{
	var args = [js_id, start, limit, poll_id, forumname];
	var rpcclient = new xmlrpc_client('xmlremote', WEB_ADDRESS);
	rpcclient.addParam("hp_poll");
	rpcclient.addParam("get_listing");
	rpcclient.addParam(args);
	rpcclient.call('homepage.call_component_method', hppoll_listingCallback);
}

function hppoll_contentCallback(ret)
{
	$("componentContent"+ret[0]).innerHTML = ret[1];
	$("componentContent"+ret[0]).style.cursor = "auto";
	deleted_item_ids = "";
}
function hppoll_resultsCallback(ret)
{
	hppoll_contentCallback(ret);
	//finish off by fetching list of recent polls
	hppoll_getListing(ret[0],0,5,ret[2]);
}
function hppoll_listingCallback(ret)
{
	$("poll_listing_"+ret[0]).innerHTML = ret[1];
}
function hppoll_editCallback(ret)
{
	hppoll_contentCallback(ret);
	eval($("poll-init-"+ret[0]).innerHTML);
	Sortable.create('poll-listing-'+ret[0],{tag:'div',handle:'poll-item-container'});
}

function hppoll_getContainer(e)
{
	while(e = e.parentNode)
	{
		if(e.nodeType == 1 && e.nodeName.toLowerCase() == 'div' && e.className == "poll-item-container")
			break;
	}
	return e;
}
