/*
Copyright:
  Copyright (c) 2008-2009 Argentum IT Lab (http://argentum.ua/)
*/

function fnHasClass(el, className) {
  return new RegExp(className).test(el.className);
}

var g_tv_filter_type = false;
var g_tv_filter_time = false;

// Tv shedule
function tvSetFilterProductType(anchor, product_type)
{
  g_tv_filter_type = product_type;

  var classname = 'pt_' + product_type;
  var elements  = $('.tb_tv_schedule tr');
  var i, el;

  $('#tv_filter_product_type a.active').removeClass('active')
  $(anchor).addClass('active');

  for(var i=0; i< elements.length; i++)
  {
    el = elements[i];
    if(el.disabled_time && true == el.disabled_time)
    {
      continue;
    }

    if(product_type == 0)
    {
      el.style.display = '';
      el.disabled_product_type = false;
    }
    else
    {
      if(fnHasClass(el, classname))
      {
        el.style.display = '';
        el.disabled_product_type = false;
      }
      else
      {
        el.style.display = 'none';
        el.disabled_product_type = true;
      }
    }
  }
}

function tvSetFilterTime(anchor, time_of_day)
{
  g_tv_filter_time = time_of_day;

  var classname = 'tof_' + time_of_day;
  var elements  = $('.tb_tv_schedule tr');
  var i, el, td;

  $('#tv_filter_time a.active').removeClass('active');
  $(anchor).addClass('active');

  for(var i=0; i< elements.length; i++)
  {
    el = elements[i];
    if(el.disabled_product_type && true == el.disabled_product_type)
    {
      continue;
    }

    if(time_of_day == 0)
    {
      el.style.display = '';
      el.disabled_time = false;
    }
    else
    {
      if(fnHasClass(el, classname))
      {
        el.style.display = '';
        el.disabled_time = false;
      }
      else
      {
        el.style.display = 'none';
        el.disabled_time = true;
      }
    }
  }
}

/**
* CommentFormClass class
*/
function CommentFormClass() {
  // id of container
  this.containerId = 'containerComment0';

  // isAjaxRequest
  this.isAjaxRequest = false;

  // attributes
  this.commentPage    = 1;
  this.commentObject  = '';
  this.commentId      = 0;
  this.commentPid     = 0;
  this.commentSort    = 'desc';
  this.commentPerPage = 20;


  // update object
  this.updateObject = function(object, id)
  {
    this.commentObject = object;
    this.commentId = id;
  }


  // showForm function
  this.showForm = function() {
    this.answer(0);

    var el = jQuery('#commentOperator')[0];

    if(el.innerHTML == '+')
    {
      el.innerHTML = '-';
    }
    else
    {
      el.innerHTML = '+';
    }
  }


  // processForm function
  this.processForm = function() {
    var jsonData = {};

    this.hideError();
    this.prepareData();

    var inputs = $('#formComment input');

    for(var i = 0; i < inputs.length; i++)
    {
      var el = inputs[i];

      if(el.type != 'submit' && el.type != 'button')
      {
        jsonData[el.name] = el.value;
      }
    }

    var el = $('#formComment textarea')[0];
    jsonData[el.name] = el.value;

    this.isAjaxRequest = true;

    jQuery.post("/comment_post", jsonData,
      function(data){
        commentFormObject.isAjaxRequest = false;

        if(data.status)
        {
          commentFormObject.addComment(data);
          commentFormObject.formClear();
          if(typeof(wcReloadCaptcha) === 'function')
          {
            wcReloadCaptcha();
          }
        }
        else{
          commentFormObject.renderError(data);
          if(typeof(wcReloadCaptcha) === 'function')
          {
            wcReloadCaptcha();
          }
        }
      }, "json");


    return false;
  }


  // prepareData
  this.prepareData = function()
  {
    $('#comment_object')[0].value = this.commentObject;
    $('#comment_id')[0].value     = this.commentId;
    $('#comment_pid')[0].value    = this.commentPid;
  }


  // formCancel function
  this.formCancel = function() {
    document.getElementById(this.containerId).style.display = 'none';
    document.getElementById('commentOperator').innerHTML    = '+';
    return false;
  }


  // formClear
  this.formClear = function() {
    var inputs = $('#formComment input');

    for(var i = 0; i < inputs.length; i++)
    {
      var el = inputs[i];

      if(el.type != 'submit' && el.type != 'button')
      {
        if(el.name == 'comment[code]' || el.name == 'comment[name]' || el.name == 'comment[text]')
        {
          el.value = '';
        }
      }
    }

    $('#formComment textarea')[0].value = '';
  }


  // moveForm
  this.moveForm = function(pid)
  {
    var containerId = 'containerComment' + pid;
    var oldContainerId = this.containerId;

    document.getElementById(this.containerId).style.display = 'none';
    var container = document.getElementById(this.containerId).cloneNode(true);
    this.containerId = containerId;

    $('#' + oldContainerId).remove();

    container.id = containerId;
    this.commentPid = pid;

    if(pid == 0)
    {
      $('#b-comments-header').after(container);
    }
    else
    {
      $('#comment-' + pid).next().after(container);
    }
  }


  // answer function
  this.answer = function(pid) {
    if(this.isAjaxRequest === true)
    {
      return false;
    }

    var containerId = 'containerComment' + pid;
    var oldContainerId = this.containerId;

    if(containerId == oldContainerId)
    {
      $('#' + this.containerId).toggle();

      return false;
    }

    this.moveForm(pid);
    $('#' + this.containerId).toggle();

    return false;
  }


  // addComment function
  this.addComment = function(data) {
    this.formCancel();

    var cid = data.cid;
    var class_tree = '';
    var sex = data.sex;

    if(data.pid > 0)
    {
      // get level for parent
      var level = 1;

      var match = $('#comment-' + data.pid).next()[0].className.match(/b-comments-tree-(\d)+/);
      if(match)
      {
        var level = parseInt(match[1], 10) + 1;
      }

      if(level > 5)
      {
        level = 5;
      }

      class_tree = 'b-comments-tree b-comments-tree-' + level;
    }

    var html = '' +
    '<a name="comment-' + cid + '" id="comment-' + cid + '"/>' +
    '<div class="b-comments-item ' + class_tree + '">' +
      '<div class="b-comments-info">' +
        '<div class="b-comments-author">' +
          data.name + ' <a href="javascript:;" onclick="commentFormObject.answer(\'' + cid + '\')">ответить</a>' +
        '</div>' +
        '<div class="b-comments-date">' + data.date + '</div>' +
      '</div>' +
      '<div class="b-comments-entry">' +
        '<p>' + data.text + '</p>' +
      '</div>' +
     '</div>';


    if(data.pid == 0)
    {
      var children = $('#commentList').children();

      if(children.length > 0)
      {
        $(children[0]).before(html);
      }
      else
      {
        $('#commentList').append(html);
      }
    }
    else
    {
      $('#comment-' + data.pid).next().after(html);
    }

    if(!$('#commentList:visible').length)
      this.toggleShowComments();

    this.scrollTo(data.cid);
  }

  // scroll to comment
  this.scrollTo = function(cid){
    var href = document.location.href;
    var ref = '#comment-' + cid;

    if(cid === '')
    {
      ref = '#comment';
    }

    document.location.href = href.substring(0, href.lastIndexOf('#')) + ref;
  }


  // renderError function
  this.renderError = function(data) {
    for(var field in data.error)
    {
      $('#comment_error_msg_' + field)[0].style.display = 'block';
    }
  }


  // hideError
  this.hideError = function() {
    var el = $('#' + this.containerId + ' span.comment_error_msg');

    for(var i = 0; i < el.length; i++)
    {
      el[i].style.display = 'none';
    }
  }


  // showCommentForPage
  this.showCommentForPage = function(page) {
    this.commentPage = page;

    this.updateComment(2);
  }


  // switchCommentPerPage
  this.switchCommentPerPage = function(number) {
    this.commentPerPage = number;
    this.commentPage = 1;

    this.updateComment();
  }


  // showCommentPerPage
  this.switchSortMode = function() {
    if(this.commentSort == 'asc')
    {
      this.commentSort = 'desc';
    }
    else
    {
      this.commentSort = 'asc';
    }

    this.commentPage = 1;

    this.updateComment();
  }

  this.toggleShowComments = function() {
    $('#commentShowComments').html($('#commentList:visible').length ? 'Показати коментарі' : 'Сховати коментарі').show();
    $('#commentList').slideToggle();
  }


  // update comment block
  this.updateComment = function(img_ajax_number) {
    var jsonData = {};

    this.moveForm(0);

    if(undefined == img_ajax_number)
    {
      img_ajax_number = 1;
    }

    var el = $('#formComment textarea')[0];

    jsonData['page']    = this.commentPage;
    jsonData['object']  = this.commentObject ;
    jsonData['id']      = this.commentId;
    jsonData['sort']    = this.commentSort;
    jsonData['cpp']     = this.commentPerPage;

    //jQuery('#img_ajax_loading_' + img_ajax_number).css('display', 'block');

    this.isAjaxRequest = true;

    jQuery.post("/comment_get", jsonData,
      function(data){
        commentFormObject.isAjaxRequest = false;

        //jQuery('#img_ajax_loading_1').css('display', 'none');
        //jQuery('#img_ajax_loading_2').css('display', 'none');

        if(data.length > 0)
        {
          var div = document.getElementById('blockComments');
          div.removeChild(document.getElementById('commentList'));

          /*if(commentFormObject.commentSort == 'asc')
          {
            $('#commentSortMode').removeClass('top');
            $('#commentSortMode').addClass('down');
          }
          else
          {
            $('#commentSortMode').removeClass('down');
            $('#commentSortMode').addClass('top');
          }*/

          $(div).append(data);
          commentFormObject.formCancel();
          commentFormObject.scrollTo('');
        }
      }, "html");
  }

}

var commentFormObject = new CommentFormClass();


/* End Comment */


/**
* videoScrollerClass class
*/
function videoScrollerClass() {

  this.busy = false;
  this.channel = '';
  this.skip = 0;
  this.ts1 = 0;
  this.ts2 = 0;
  this.dir = '';
  
  this.init = function(channel, skip, ts1, ts2) {
    this.channel = channel;
    if(!this.channel)
      this.channel = 'all';
    this.skip = skip;
    this.ts1 = ts1;
    this.ts2 = ts2;
    this.dir = '';
    this.updateButtons();
  }
  
  this.prev = function() {
    if(this.ts1)
      this.scroll('prev');
  }

  this.next = function(channel, skip) {
    if(this.ts2)
      this.scroll('next');
  }
  
  this.updateButtons = function() {
    $('#video_scroller_prev')[0].src = (videoScroller.ts1) ? '/images/nav_left.gif' : '/images/nav_left_ina.gif';
    $('#video_scroller_next')[0].src = (videoScroller.ts2) ? '/images/nav_right.gif' : '/images/nav_right_ina.gif';
  }

  // update comment block
  this.scroll = function(dir) {
    if(this.busy)
      return;

    this.dir = dir;
    this.busy = true;
      
    $('#ajax_loader').show();

    jQuery.get("/ajax/video_channel/" + this.channel + "/" + this.skip, { ts1: this.ts1, ts2: this.ts2, dir: this.dir },
      function(data){
        videoScroller.busy = false;
        $('#ajax_loader').hide();
        
        if(data.length) {
          var matches;
          if(matches = data.match(/^(\d+)\|(\d+)\|/)) {
            videoScroller.ts1 = parseInt(matches[1], 10);
            videoScroller.ts2 = parseInt(matches[2], 10);
            data = data.substr(matches[0].length);
          }
          $('#video_scroller_container').html(data);
        }
        else {
          if(videoScroller.dir == 'prev')
            videoScroller.ts1 = 0;
          if(videoScroller.dir == 'next')
            videoScroller.ts2 = 0;
        }
        
        videoScroller.updateButtons();
      }, "html");
  }

}

var videoScroller = new videoScrollerClass();


/* End videoScrollerClass */
