// JavaScript Document

extraFunctions.push( parsePolls );

function parsePolls() {
  $(".poll_container").each(function(i,obj){
    var split = obj.id.split( "_" );
    var tid = split[1];
    $.ajax({
      type: "POST",
      url: root + "/index.php",
      data: "extension=polls&action=get_poll&poll_id=" + tid + "&template=polls/get_poll",
      dataType: 'html',
      success: function(data) {
        $(obj).append( data );
        processPoll(obj);
      },
      error: function(data) {
        alert( "Poll could not be loaded." );
      }
    });
  });
}


function processPoll( obj ) {
  obj.selectedOption = null;
  var split = obj.id.split("_");
  var pid = split[1];
  var results = false;
  $(".poll_option_out",obj).each(function(i,option){
    var title = $(".poll_option_title",option).get(0);
    if( $(title).hasClass( "poll_result_selected" ) ) {
      results = true;
      $(".poll_option",obj).css({cursor:"auto"});
    }
  });
  if( !results ) {
    $(".poll_option_out",obj).each(function(i,option){
      $(option).click(function(){
        if( obj.selectedOption ) {
          $(".poll_option_title",obj.selectedOption).removeClass( "poll_option_selected" );
          $(".poll_option_title",obj.selectedOption).addClass( "poll_option_unselected" );
        }
        obj.selectedOption = option;
        $(".poll_option_title",obj.selectedOption).addClass( "poll_option_selected" );
        $(".poll_option_title",obj.selectedOption).removeClass( "poll_option_unselected" );
        var split = option.id.split( "_" );
        var tid = split[1];
        $("form[name=vote_poll_"+pid+"] input[name=poll_option_id]").get(0).value = tid;
      });
      $(option).hover(function(){
        $(option).removeClass( "poll_option_out" );
        $(option).addClass( "poll_option_over" );
      },function(){
        $(option).addClass( "poll_option_out" );
        $(option).removeClass( "poll_option_over" );
      });
    });
    $(".black_button",obj).each(function(i,button){
      //processBlackButton( button );
      $("a", button).wrap( "<div class=\"black_button_left\"><div class=\"black_button_right\"></div></div>" );
    });
    $("a.submit_vote",obj).click(function(){
      var answer = $("form[name=vote_poll_"+pid+"] input[name=poll_option_id]").get(0).value;
      if( answer == "0" ) {
        alert( "You must choose an option in order to vote." );
      } else {
        $(".submit_button",obj).toggle();
        $(".submit_button",obj).after( "<div style=\"padding-top: 10px; text-align: right;\" id=\"submitting_vote\">Please wait...</div>" );
        $.ajax({
          type: "POST",
          url: root + "/index.php",
          data: "extension=polls&action=add_vote&poll_id=" + pid + "&poll_option_id=" + answer,
          dataType: 'xml',
          success: function(data) {
            processResult( obj, data );
          },
          error: function(obj, textStatus, error) {
            alert( "An error occured when attempting to submit your vote." );
            alert( obj.responseText );
          }
        });
      }
      return false;
    });
  }
}

function processResult( obj, data ) {
  var polls = $("response > polls",data).get(0);
  if( !polls ) {
    var message = $("message",data).get(0);
    if( message ) {
      var body = $("body",message).text();
      alert( "Error: " + body );
    } else {
      alert( "Error message not found." );
    }
  } else {
    var polls_action = $("polls_action",polls).get(0);
    if( polls_action ) {
      var success = $("success",polls_action).text();
    } else {
      alert( "Action outcome not found" );
    }
  }
  if( success == "1" ) {
    $("#submitting_vote",obj).text( $("message",polls_action).text() );
    $("#submitting_vote",obj).css({color:"#FF671C"});
    var total_votes = Number( $("poll > total_votes",polls).text() );
    $("option_list > option",polls).each(function(i,option){
      var votes = Number( $("votes",option).text() );
      var id = $("id",option).text();
      var title = $("title",option).text();
      var percent = Math.floor( 100 * ( votes / total_votes ) );
      var option = $("#option_"+id,obj).get(0);
      $(option).unbind();
      $(option).css({cursor:"auto"});
      $(".poll_option_title",option).each(function(j,title){
        if( $(title).hasClass( "poll_option_selected" ) ) {
          $(title).removeClass( "poll_option_selected" );
          $(title).addClass( "poll_result_selected" );
        } else {
          $(title).removeClass( "poll_option_unselected" );
        }
        $(title).append( " (" + votes + " Votes, " + percent + "%)" );
      });
      $(option).prepend( "<div class=\"poll_result\" style=\"width: " + percent + "%;\"><div class=\"poll_result_left\"><div class=\"poll_result_right\"><div class=\"poll_result_top\">&#160;</div></div></div></div>" );
    });
  } else {
    alert( "Sorry!\n\n" + $("message",polls_action).text() );
  }
}