WCore_AJAX.setFaultHandler(function(e){WCore_Common.showOperationResult({result: false, message: e});});

function setComments(comments) {
  $('comments').innerHTML = comments;
}

function setArticleRefreshTimer(interval) {
  setTimeout('refreshArticle();', 1000 * interval);
  activity = 0;
}

function onArticleActivated(result) {
  setArticleRefreshTimer(minViewTime);
}

var requests = {
  comments: {
    type: 'template',
    group: 'articles',
    name: 'comments',
    result: setComments
  },
  
  addComment: function () {
    return {
      type: 'handler',
      handler: 'Articles::addComment',
      arguments: {content: $('comment_content').value},
      result: WCore_Common.showOperationResult
    };
  },
  
  activateArticle: function () {
    return {
      type: 'handler',
      handler: 'Articles::activateArticle',
      arguments: {},
      result: onArticleActivated
    };
  },
  
  refreshArticle: function () {
    return {
      type: 'handler',
      handler: 'Articles::refreshArticle',
      arguments: {activity: activity},
      result: setArticleRefreshTimer
    };
  },
  
  rateArticle: function (rating) {
    return {
      type: 'handler',
      handler: 'Articles::rateArticle',
      arguments: {rating: rating},
      result: WCore_Common.showOperationResult
    };
  },
  
  donateToSocialProject: function (project, balance)
  {
      return {
          type:      'handler',
          handler:   'Users::donateToSocialProject',
          arguments: {project: project, balance: balance},
          result:    function (result)
                     {
            	         WCore_Common.showOperationResult(result);
            	         if (result && result.result) {
            	             window.location.reload(true);
            	         }
            	     }
      };
  }
};

function addComment() {
  WCore_AJAX.loadData([requests.addComment(), requests.comments], {});
}

function updateComments() {
  WCore_AJAX.loadData([requests.comments], {});
}

var rateTimer;
var articleActivated = false;
var canRate = false;
var minViewTime;
var countdownLeft;
var activity = 0;

function raterCountdown() {
  if (--countdownLeft > 0) {
    $('raterCountdowner_text').innerHTML = countdownLeft;
    return;
  }
  
  $('raterCountdowner').style.display = 'none';
  $('raterRater').style.display = 'block';
  clearInterval(rateTimer);
}

function activateArticle() {
  articleActivated = true;
  WCore_AJAX.loadData([requests.activateArticle()], {});
  if (canRate) rateTimer = setInterval(raterCountdown, 1000);
}

function countActivity() {
  if (!articleActivated) activateArticle();
  ++activity;
}

function refreshArticle() {
  WCore_AJAX.loadData([requests.refreshArticle()], {});
}

function rateArticle(rating) {
  WCore_AJAX.loadData([requests.rateArticle(rating)], {});
  $('raterRater').style.display = 'none';
}

function donateToSocialProject(project, balance)
{
    WCore_AJAX.loadData([requests.donateToSocialProject(project, balance)], {});
}

var document_body = document.getElementsByTagName('body')[0];
WCore_Common.addEventListener(document_body, 'click', countActivity);
WCore_Common.addEventListener(document_body, 'mousemove', countActivity);
WCore_Common.addEventListener(document_body, 'keyup', countActivity);

function setScriptArguments(can_rate, mvt) {
  articleActivated = false;
  canRate = can_rate;
  minViewTime = mvt;
  countdownLeft = mvt;
  activity = 0;
}
