/*
  Java Script file: poll.js
       Description: This JS file contains functions for handling the user
                    interaction with the Poll Survey GUI
*/

  var optionSelectCount = 0;
  
  function SubmitPollVote(gui){
    var xmlText;
    var ajax;
    var submitXMLText;
    var errorMessage;
    var btnSubmit;

    errorMessage = "Fail to submit the poll answer(s). ";
    btnSubmit = gui;
    optionSelectCount = CountAnswerSelected();
    if (optionSelectCount > 0){
      xmlText = GatherPollVote();

      ajax = new ESenseAJAX(document);
      submitXMLText = "<ACLWeb action=\"Save Poll Vote\"  >";
      submitXMLText += xmlText + "</ACLWeb>";
      try{
        if (ajax.SubmitAJAXPostRequest(submitXMLText, ShowPollResult)){
        }
        else{
           btnSubmit.disabled = null;
           errorMessage += " Unable to invoke an AJAX call.";
           alert(errorMessage);
        }
      }
      catch (exp){
        errorMessage += exp;
        alert(errorMessage);
      }

    }
    else{
      alert("You have not selected an answer to the poll survey question.");

    }
    
  } // End of SubmitComment

  function GatherPollVote(){
    var xmlText;
    var xmlPollText;
    var eSenseGUI;
    var error;
    var tblPoll;

    xmlText = "";
    error = "[GatherPollVote] Fail to gather the poll answers selected. ";
    try{
      tblPoll = GetHTMLObject("tblPoll");
      eSenseGUI = new ESenseGUI(tblPoll);
      xmlPollText = eSenseGUI.GatherGUICriteria("", false, false);
      xmlText = "<Poll><Properties>" + xmlPollText + "</Properties></Poll>";
    }
    catch(exp){
      error += exp;
      alert(error);
    }
    return xmlText;
  } // End of GatherPollVote

  function ShowPollResult(){
    var errorMessage;
    var result;
    var xmlDoc
    var status;
    var root;
    var content;
    var pollID;
    var divPollGUI;

    errorMessage = "[ShowPollResult] Fail to display poll results.";
    if (ajaxHTTP.readyState == 4 || ajaxHTTP.readyState == 'complete'){
      result = ajaxHTTP.responseText;
      xmlDoc = GetXMLFromText(result);
      root = xmlDoc.documentElement;
      status = root.getAttribute("status");
      pollID = root.getAttribute("pollID");

      if (status == "update successful"){
        content = decodeURIComponent(root.getAttribute("content"));
        divPollGUI = GetHTMLObject("divPollGUI");
        divPollGUI.innerHTML = content;
        SavePollCookie("ACLBlogPollID", pollID, 365);
      }
      else{
        alert(errorMessage + " An error occured while submitting a poll vote.");
      }
    } // Check if we have received a HTTP response
  } // End of ShowPollResult
  
  function SelectOption(gui){
    var itemID;
    var eSenseGUI;
    var tblPoll;
    var optionList;
    var itemCount;
    var itemIndex;
    var optionGUI;
    
    itemID = gui.getAttribute("itemID");
    optionSelectCount = 1;

    tblPoll = GetHTMLObject("tblPoll");
    eSenseGUI = new ESenseGUI(tblPoll);
    optionList = eSenseGUI.GetChildHTMLItems("input", "");
    itemCount = optionList.length;
    if (itemCount > 0){
      for(itemIndex=0; itemIndex < itemCount; itemIndex++){
        optionGUI = optionList[itemIndex];
        if (optionGUI.getAttribute("type") == "radio"){
          if (optionGUI.getAttribute("itemID") != itemID){
            optionGUI.checked = false;
          }
        }
      } // Loop
    }
    gui.checked = true;
  }

  function SelectAnswer(gui){
    if (!gui.checked){
      optionSelectCount = optionSelectCount - 1
    }
    else{
      optionSelectCount = optionSelectCount + 1
    }
  } // End of SelectAnswer
  
  function CountAnswerSelected(){
    var tblPollAnswer;
    var esenseGUI;
    var answerCount;
    var itemCount;
    var itemIndex;
    var optionList;
    
    answerCount = 0;
    tblPollAnswer = GetHTMLObject("tblPollAnswer");
    optionList = tblPollAnswer.getElementsByTagName("input");
    itemCount = optionList.length;
    if (itemCount > 0){
      for(itemIndex=0; itemIndex < itemCount; itemIndex++){
        optionGUI = optionList[itemIndex];
        if (optionGUI.getAttribute("GUIParentID")=="Answer GUI"){
          if (optionGUI.checked){
            answerCount ++;
          }
        }
      } // Loop
    }
    return answerCount;
  } // CountAnswerSelected

  function SavePollCookie(name,value,expiredays)
  {
    var expireDate;

    expireDate =new Date();
    expireDate.setDate(expireDate.getDate()+expiredays);
    document.cookie=name+ "=" +escape(value)+
    ((expiredays==null) ? "" : ";expires="+expireDate.toGMTString());
  }
