var choiceIds = [4864273, 4864274, 4864275, 4864276];
var pollId = 837059;
var resultStyle = "blue_plain.gif";

function displayResults(showVoteLink) {
  //get results
  var req;
  if(window.XMLHttpRequest) { // Mozilla, Safari,...
    req = new XMLHttpRequest();
  } else if (window.ActiveXObject) { // IE
    try {
      req = new ActiveXObject("Msxml2.XMLHTTP");
    } catch (e) {
      try {
        req = new ActiveXObject("Microsoft.XMLHTTP");
      } catch (e) {}
    }
  }
  req.onreadystatechange = function() {
    if(req.readyState == 4) {
      if(req.status == 200) {
        var resultData = eval('(' + req.responseText + ')');
        //calculate percents
        var voteCounts = resultData.vote_counts;
        var total = 0;
        var percents = [];
        for(var i in voteCounts) {
          total += voteCounts[i];
        }
        if(total === 0) {
          for(var i in voteCounts) {
            percents[i] = 0;
          }
        } else {
          for(var i in voteCounts) {
            percents[i] = voteCounts[i] / total * 100;
          } 
        }
        
        //hide voting stuff and show results
        for(var i in choiceIds) {
          var choice = document.getElementById("vote_choice_id_" + choiceIds[i]);
          var ele = document.createElement('div');
          ele.style.width = percents[i] + '%';
          ele.style.backgroundImage = 'url(/images/results/' + resultStyle + ')';
          ele.style.height = '10px';
          ele.style.lineHeight = '10px';
          choice.parentNode.appendChild(ele);
          var label = choice.parentNode.getElementsByTagName('label')[0];
          label.innerHTML += ' <span style="font-size: 80%">(' + voteCounts[i] + ' votes)</span>';
          choice.style.display = 'none';
        }
        
        //hide view results link
        var resultsLink = document.getElementById("results");
        if(resultsLink !== null) { //in case they deleted it
          resultsLink.style.display = 'none';
        }
        //hide vote button
        var voteButton = document.getElementById("submit_" + pollId);
        voteButton.style.display = 'none';
        if(showVoteLink) {
          var voteLink = document.createElement('a');
          voteLink.id = "vote_link_" + pollId;
          voteLink.href = '#'
          voteLink.innerHTML = 'Vote in this poll';
          voteLink.onclick = displayPoll;
          voteButton.parentNode.appendChild(voteLink);
        }
        return false;
      } else {

      }
    }
  };
  
  req.open("GET", '/polls/837059-whats-your-favorite-feature/results', true);
  req.setRequestHeader("Accept", "text/javascript");
  req.send(null);
  return false;
}

function displayResultsWithVote() {
  return displayResults(true);
}

function displayPoll() {
  //show voting stuff and hide results
  for(var i in choiceIds) {
    var choice = document.getElementById("vote_choice_id_" + choiceIds[i]);
    var parent = choice.parentNode;
    var div = parent.getElementsByTagName('div')[0];
    parent.removeChild(div);
    var label = parent.getElementsByTagName('label')[0];
    var percent = label.getElementsByTagName('span')[0];
    label.removeChild(percent);
    choice.style.display = 'inline';
  }
  
  //show view results link
  var resultsLink = document.getElementById("results");
  if(resultsLink !== null) { //in case they deleted it
    resultsLink.style.display = 'inline';
  }
  
  var voteButton = document.getElementById("submit_" + pollId);
  voteButton.style.display = 'inline';
  var voteLink = document.getElementById("vote_link_" + pollId);
  voteLink.parentNode.removeChild(voteLink);
  
  return false;
}

function checkedChoice() {
  for(var i in choiceIds) {
    var choice = document.getElementById("vote_choice_id_" + choiceIds[i]);
    if(choice.checked) {
      return choice.value;
    }
  }
  return '';
}

function submitVote() {
  var params = 'vote[poll_id]=' + pollId + '&vote[choice_id]=' + checkedChoice();
  
  var req;
  if(window.XMLHttpRequest) { // Mozilla, Safari,...
    req = new XMLHttpRequest();
  } else if (window.ActiveXObject) { // IE
    try {
      req = new ActiveXObject("Msxml2.XMLHTTP");
    } catch (e) {
      try {
        req = new ActiveXObject("Microsoft.XMLHTTP");
      } catch (e) {}
    }
  }
  req.onreadystatechange = function() {
    if(req.readyState == 4) {
      if(req.status == 200) {
        var resultData = eval('(' + req.responseText + ')');
        if(resultData.success) {
          //calculate percents
          var voteCounts = resultData.vote_counts;
          var total = 0;
          var percents = [];
          for(var i in voteCounts) {
            total += voteCounts[i];
          }
          if(total === 0) {
            for(var i in voteCounts) {
              percents[i] = 0;
            }
          } else {
            for(var i in voteCounts) {
              percents[i] = voteCounts[i] / total * 100;
            } 
          }

          //hide voting stuff and show results
          for(var i in choiceIds) {
            var choice = document.getElementById("vote_choice_id_" + choiceIds[i]);
            var ele = document.createElement('div');
            ele.style.width = percents[i] + '%';
            ele.style.backgroundImage = 'url(/images/results/' + resultStyle + ')';
            ele.style.height = '10px';
            ele.style.lineHeight = '10px'
            choice.parentNode.appendChild(ele);
            var label = choice.parentNode.getElementsByTagName('label')[0];
            label.innerHTML += ' <span style="font-size: 80%">(' + voteCounts[i] + ' votes)</span>';
            choice.style.display = 'none';
          }

          //hide view results link
          var resultsLink = document.getElementById("results");
          if(resultsLink !== null) { //in case they deleted it
            resultsLink.style.display = 'none';
          }
          //hide vote button
          var voteButton = document.getElementById("submit_" + pollId);
          voteButton.style.display = 'none';
          return false;
        }
      }
    }
  }
  
  req.open("POST", "/votes", true);
  req.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
  req.setRequestHeader("Accept", "text/javascript");
  req.send(params);
  
  return false;
}

function setupVoteButton() {
  var form = document.getElementById('poll_id_' + pollId);
  form.onsubmit = submitVote;
}


  setupVoteButton();
  var resultsLink = document.getElementById("results");
  if(resultsLink !== null) {
    resultsLink.onclick = displayResultsWithVote;
  }
