var yahooAnswers = {

  requests : null,

  getQuestion : function(id) {

    if (yahooAnswers.requests == null) { yahooAnswers.requests = $H({}); }

    if (isDefined(yahooAnswers.requests.get(id))) { 
      yahooAnswers.expandAnswers(id);
      return; 
    }

    var params = $H({
      appid :'r5U4cKDV34HqbyvB2hNPvmUzk8aLyvKFr9FdclE3AmjhewMRDKf.VMUYLJqJ1Il1aWwM',
      question_id : id,
      output : 'json',
      callback : "yahooAnswers.processQuestionResponse"
    }); 

    var paramsStr = '';
    params.keys().each(function(key) {
      paramsStr += key + '=' + params.get(key) + '&';
    });

    var url = "http://answers.yahooapis.com/AnswersService/V1/getQuestion";
    svLoadJSONDoc(url, paramsStr);

/*
    new Ajax.Request( url, { 
      method : 'get',
      parameters : params,
      onComplete : yahooAnswers.processQuestionResponse.bindAsEventListener(null, id ),
      });
*/
  },

  processQuestionResponse : function(transport) {
//    var $(transport.all.question[0].Id).innerHTML = Object.toJSON(transport);
    var qid = transport.all.question[0].Id;

    var answersDiv = $('other_answers_' + qid);

    $('more_answers_' + qid).toggle(); 
    $('less_answers_' + qid).toggle(); 

    yahooAnswers.requests.set(transport.all.question[0].Id, true);
 
    /* the following js builds this element structure
        <div class="answer_content">
          <div class="answer_images">
            <div><img src="/images/answer_pic.gif" alt="" /></div>
            <p><a href="#"><%= question['ChosenAnswererNick'] %></a></p>
          </div>
          <div class="answer_question">
            <h3>Best Answer</h3>
            <p><%= question['ChosenAnswer'] %></p>
          </div>
          <br style="clear:both" />
        </div>
    */
    var answers = $A(transport.all.answers).each(function(answer) {
      if (answer.Best == '') {
        var answerContentDiv = new Element('div', { 'class' : "answer_content" });
        var answerImageDiv = new Element('div', { 'class' : "answer_images" });
        var answerImageDivDiv = new Element('div');
        var answerImageImg = new Element('img', { 'src' : "/images/answer_pic.gif" });
        var answerImageDivP = new Element('p');
        var answerImageDivPSpan = new Element('span', { 'class' : "answers_user_link" }).update(answer.UserNick);
      
        answerImageDivP.appendChild(answerImageDivPSpan);
        answerImageDivDiv.appendChild(answerImageImg);
        answerImageDiv.appendChild(answerImageDivDiv);
        answerImageDiv.appendChild(answerImageDivP);
        answerContentDiv.appendChild(answerImageDiv);


        var answerQuestionDiv = new Element('div', { 'class' : "answer_question" });
        var answerQuestionDivH3 = new Element('h3').update("Answer");
        var answerQuestionDivP = new Element('p').update(answer.Content);

        answerQuestionDiv.appendChild(answerQuestionDivH3);
        answerQuestionDiv.appendChild(answerQuestionDivP);

        answerContentDiv.appendChild(answerQuestionDiv);

        var answerContentDivBR = new Element('br', { 'style' : "clear: both;" });
        answerContentDiv.appendChild(answerContentDivBR);

        answersDiv.appendChild(answerContentDiv);
      }
    });
  },

  checkBestAnswersOverflow : function() {
    if (!isDefined(yahooAnswers.qids)) {
      setTimeout(30, yahooAnswers.checkBestAnswersOverflow);
    }
    else {
      $A(yahooAnswers.qids).each(function(qid) {
        var ab = $('best_answer_body_' + qid).innerHTML;
        if (yahooAnswers.checkOverflow('<p>' + ab + '</p>')) {

          var offsetHeight = $('answer_ruler').offsetHeight;

          var ns = new Element('span', { 
            'id' : 'more_span_' + qid,
            'class' : "answers_link_span_more"
          }).update("View the complete answer");

          Event.observe(ns, 'click', function() {
            var oH = offsetHeight;
            yahooAnswers.checkOverflow('<p>' + ab + '</p>');
            yahooAnswers.toggleMoreBestAnswer(qid, oH);
          });
            
          var qad = $('answer_question_' + qid);
          qad.appendChild(ns);
        } 
      });
      $('answer_ruler').style.display = 'none';
    }
  },

  toggleMoreBestAnswer : function(qid, height) {
    var moreSpan = $('more_span_' + qid);

    if (moreSpan.innerHTML == 'View the complete answer') {
      $('best_answer_body_' + qid).style.height = (parseInt(height) + 6) + 'px'; 
      moreSpan.innerHTML = 'View less of this answer';
    }
    else {
      $('best_answer_body_' + qid).style.height = '90px'; 
      moreSpan.innerHTML = 'View the complete answer';
    }
  },

  checkOverflow : function(content) {
    var ruler = $('answer_ruler');
    ruler.innerHTML = content;
//    alert('checking overflow on: ' + content + "\n got: " + ruler.offsetHeight);
    if (ruler.offsetHeight >  90) {
      return true;
    }
    return false;
  },

  collapseAnswers : function (qid) {
    $('more_answers_' + qid).toggle(); 
    $('less_answers_' + qid).toggle(); 
    $('other_answers_' + qid).toggle(); 
  },

  expandAnswers : function(qid) {
    $('more_answers_' + qid).toggle(); 
    $('less_answers_' + qid).toggle(); 
    $('other_answers_' + qid).toggle(); 
  }

};



