////////////////////////////////////////////////////////////////////////////////
//
//   poll.js
//
// Implements pretty much everything needed for the poll.
//
////////////////////////////////////////////////////////////////////////////////

// 

// set this to wherever the poll_submit php file actually resides
var location_of_submit_script = "poll/poll_submit.php"

// the "root" element to place the poll into
var rootid = "poll_root"

// the "name" param of the radio button elements
var formelementid = "useful"



// don't set anything below here unless you're sure you really want to...

// this gets set in buildPoll
var poll_def = null

// this gets set the first time the bars go
var bar_w = 0

// buildPoll -- call this to fill a div with the poll
function buildPoll(def)
{
	var root = $(rootid)
	poll_def = def
	
	table = new Element('table')
	table.addClass('poll-table')
	table.inject(root)
	tbody = new Element('tbody')
	tbody.inject(table)
		
	for (var key in def)
	{
		tr = new Element('tr')
		tr.inject(tbody)
		
		e = new Element('td')
		f = new Element('input',{
			'type':'radio',
			'name':formelementid,
			'id':'pollanswer-'+formelementid+'-'+key,
			'value':key,
			'events':{
				'click':function() {
					//this.checked = true
					return answerPoll(this)
				}
			}
		})
		f.inject(e)
		e.inject(tr)
		
		e = new Element('td')
		lb = new Element('label')
		lb.appendText(def[key])
		lb.set('for','pollanswer-'+formelementid+'-'+key)
		lb.inject(e)
		if (key == 'other')
		{
			e.appendText(' ')
			f = new Element('input')
			f.set('type','text')
			f.set('name',formelementid+' other')
			f.inject(e)
		}
		e.inject(tr)
		
		e = new Element('td')
		e.set('id',key+'_percent')
		e.addClass('percent')
		e.inject(tr)
		
		e = new Element('td')
		e.set('id',key+'_percentbar')
		e.addClass('percent-bar')
		e.inject(tr)		
	}
	
	tr = new Element('tr')
	tr.inject(tbody)
	
	e = new Element('td')
	e.set('colspan','4')
	e.set('id','poll-number-votes')
	e.inject(tr)
}

// answerPoll -- put on the click event of the radio buttons in the poll

function answerPoll(answer)
{
	var answer = $(answer)
	var answer_name = answer.get('value') 
	
	req = new Request.JSON({
		url:location_of_submit_script,
		onComplete:function(ret) { if(ret) showResults(ret[0]) },
		onFailure:function(err) { alert("There was an error in submission. " + err) }
	})
	
	req.post({'poll_answer':answer_name})
	
	return true
}

var show_first_time = true

function showResults(results)
{
	var p = {}
	var mp = 0
	
	// first make sure the results array has 0s for everything
	for (var key in poll_def)
		if (!results[key])
			results[key] = 0;
	
	// we need to get out a total first
	var t = 0
	for (var key in results)
		t += parseInt(results[key])


	// another loop to calculate percentages and get maximum percentage	
	for (var key in results)
	{
		pr = ((results[key] / t) * 100).toFixed(0)
		p[key] = pr
		if (parseInt(pr) > parseInt(mp))
			mp = pr
	}

	// now loop through and start all of the animations going
	for (var key in results)
	{
		var pr = p[key]
		
		e = $(key+'_percent')
		e.empty()
		e.appendText(pr + "%")

		e = $(key+'_percentbar')
		
		if (show_first_time)
		{
			bar = new Element('div')
			bar.set('id','poll-bar-'+key)
			bar.addClass('poll-bar')
			bar.inject(e)

			if (!bar_w)
				bar_w = parseInt(bar.getStyle('width'))

			bar.setStyle('width','0px')
		}
		else
		{
			bar = $('poll-bar-'+key)
		}

		
		bw = (bar_w * (pr/mp))
		bar.set('tween',{property:'width',duration:'short'})
		bar.get('tween').start(bw)
	}
	
	e = $('poll-number-votes')
	e.empty()
	e.appendText('Number of votes to date: ' + t)
	e.setStyle('height','0px')
	
	show_first_time = false
	
	return true
}


