YAHOO.widget.Chart.SWFURL = "http://yui.yahooapis.com/2.7.0/build/charts/assets/charts.swf";
var cookie = YAHOO.util.Cookie.get("poll");
poll =
{
  
  check: function()
  {
    // get form submit
    var poll_id = document.getElementById('poll_id').value;
    function TestObj(id) {
      if(cookie==poll_id)
      {
        YAHOO.util.Event.onAvailable(id, poll.go2, this); 
      }
      else
      {
                //alert(poll_id)

        YAHOO.util.Event.onAvailable(id, poll.init, this); 
      }
    }
   
    var obj = new TestObj("view");
    
    //alert(value)


  },
    // look for submit button and add events
  init: function()
  {
    // get form submit
    var submit = document.getElementById('poll_s');
    var view = document.getElementById('view');
    if (!submit)
    {
      return;
    }
    
    //alert(value)
    // prevent form submit
    YAHOO.util.Event.addListener(submit, 'click', poll.go);
    YAHOO.util.Event.addListener(view, 'click', poll.go2);

  },
  
    // go form to ajax
  go: function(e)
  {
    YAHOO.util.Event.preventDefault(e);
   // var poll = document.getElementById('pollContainer');
    var group = document.formPoll.answers.length;
    var groupLength = (group ? group.length : 0);
    var poll_id = document.getElementById('poll_id').value;
    var id;
    for (var i=0; i<group; i++)  {
      if (document.formPoll.answers[i].checked)
      {
        id = document.formPoll.answers[i].value
      }
    }
    var url = '/index.php/sondaggio_vota/id/'+id;
    var callback = { success: poll.ok, failure: poll.ko };
    YAHOO.util.Connect.asyncRequest('GET', escape(url), callback);
    YAHOO.util.Cookie.set("poll", poll_id, { expires: new Date("January 12, 2025") }); 

    
    //alert(id);
  },
  
      // go form to ajax
  go2: function(e)
  {
    YAHOO.util.Event.preventDefault(e);
   // var poll = document.getElementById('pollContainer');
    
    var poll_id = document.getElementById('poll_id').value;
    var url = '/index.php/sondaggio_show/poll_id/'+poll_id;
    var callback = { success: poll.result, failure: poll.ko };
    YAHOO.util.Connect.asyncRequest('GET', escape(url), callback);
    
    
    //alert(id);
  },
  
    // show message in case of success
  ok: function(o)
  {
    var ret = eval('(' + o.responseText + ')');
    if (ret.msg == 'OK')
    {
      var poll_id = document.getElementById('poll_id').value;
      var url_r = '/index.php/sondaggio_show/poll_id/'+poll_id;
      var callback_result = { success: poll.result, failure: poll.ko };
      YAHOO.util.Connect.asyncRequest('GET', escape(url_r), callback_result);
      //var div = document.getElementById('pollContainer');
      //div.innerHTML = ret.msg;
    }
    else
    {
      alert('errore! ' + ret.err);
    }
  },

  // show message in case of failure
  ko: function(o)
  {
    var ret = eval('(' + o.responseText + ')');
    alert('errore ' + ret.error.code + ': ' + ret.error.message);
  },
  
  result: function(r)
  {
    var toUp = document.getElementById("toUp");
    YAHOO.util.Dom.addClass(toUp, 'upper');
    
    	var opinionData = new YAHOO.util.DataSource( YAHOO.lang.JSON.parse(r.responseText) );
      var results = YAHOO.lang.JSON.parse(r.responseText);
	//opinionData.responseType = YAHOO.util.DataSource.TYPE_JSARRAY;
	opinionData.responseSchema = { fields: [ "response", "count" ] };
    //var poll_id = document.getElementById('poll_id').value;
    //alert(poll_id)
    var div = document.getElementById('pollContainer');
    var newdiv = document.createElement('div');
    newdiv.setAttribute('id', 'chart');
    //var res = eval('(' + r.responseText + ')');
    div.innerHTML = '';
    div.appendChild(newdiv);
    var newul = document.createElement('ul');
    newul.setAttribute('id', 'result');
    div.appendChild(newul);
    var totalvotes = 0;
      
    for(var i = 0; i < results.length; i++)
    {
      totalvotes += parseInt(results[i].count);
    }
    
    for(var i = 0; i < results.length; i++)
    {
      
      var newli = document.createElement('li');
      if(i<9)
      {
        YAHOO.util.Dom.addClass(newli, 'legend_'+i);
      }
      else
      {
        YAHOO.util.Dom.addClass(newli, 'legend_'+9);
      }
      newul.appendChild(newli);
      
       var newspan = document.createElement('span');
       YAHOO.util.Dom.addClass(newspan, 'catName');
       newli.appendChild(newspan);
       var perc = YAHOO.util.Number.format((results[i].count*100)/totalvotes, {
                suffix: "%",
                thousandsSeparator: ",",
                decimalPlaces: 2
            });
       
       newspan.innerHTML = results[i].response + ' - <strong>' +perc + '</strong>';
    }


  function getDataTipText( item, index, series )
  {
      var percent = YAHOO.util.Number.format((item.count*100)/totalvotes, {
                suffix: "%",
                thousandsSeparator: ",",
                decimalPlaces: 2
            });
      var toolTipText = item.response;
      toolTipText += "\n" + percent;
      return toolTipText;
  }


	var mychart = new YAHOO.widget.PieChart( "chart", opinionData,
	{
		dataField: "count",
		categoryField: "response",
    series:[{style:{colors:['#ffcc00', '#002D54', '#cccccc', '#44FF77', '#00b8bf', '#8dd5e7', ' #c0fff6', '#ffa928', '#edff9f', '#cccccc']}}],
		style:
		{
			padding: 2,
			legend:
			{
				display: "none",
				padding: 2,
				spacing: 2,
				
				font:
				{
					family: "Arial",
					size: 8
				}
			}
		},
		//only needed for flash player express install
		expressInstall: "assets/expressinstall.swf"
	});
  mychart.set( "dataTipFunction", getDataTipText );


  
  }
}


YAHOO.util.Event.addListener(window, 'load', poll.check);




