/*
 * Tv schedule toggle
 */
function ts_toggle(obj, id)
{
  $('#ts' + id).toggle();

  var img = $(obj).children();
  var src = img.attr('src');

  if(new RegExp('_close').test(src))
  {
    img.attr('src', src.replace('_close', ''));
  }
  else
  {
    img.attr('src', src.replace('.gif', '_close.gif'));
  }
}


function fnHasClass(el, className) {
  return new RegExp(className).test(el.className);
}

function array_merge()
{
  var merged = new Array();
  var arr;

  for (var i = 0; i < arguments.length; i++)
  {
    arr = arguments[i];
    for (var j = 0; j < arr.length; j++)
    {
      merged.push(arr[j]);
    }
  }

  return merged;
}

var g_tv_filter_type = false;
var g_tv_filter_time = false;
var g_tv_filter_elements = undefined;

// Tv shedule
function tvSetFilterProductType(anchor, product_type)
{
  g_tv_filter_type = product_type;

  $('div .b-tvlist-anons-full').hide();

  var classname = 'pt_' + product_type;
  if(undefined == g_tv_filter_elements)
  {
    g_tv_filter_elements = array_merge($('#dl_tv_schedule dd'), $('#dl_tv_schedule dt'));;
  }
  var i, el;

  $('#tv_filter_product_type a.active').removeClass('active')
  $(anchor).addClass('active');

  for(var i=0; i< g_tv_filter_elements.length; i++)
  {
    el = g_tv_filter_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 i, el, td;

  if(undefined == g_tv_filter_elements)
  {
    g_tv_filter_elements = array_merge($('#dl_tv_schedule dd'), $('#dl_tv_schedule dt'));;
  }

  $('#tv_filter_time a.active').removeClass('active');
  $(anchor).addClass('active');

  for(var i=0; i< g_tv_filter_elements.length; i++)
  {
    el = g_tv_filter_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;
      }
    }
  }
}

/* jQuery functions for smooth bug-less fade in and out */
(function($) {
    $.fn.ClearTypeFadeTo = function(options) {
        if (options)
            $(this)
            .show()
            .each(function() {
                if (jQuery.browser.msie) {
                    $(this).attr('oBgColor', $(this).css('background-color'));
                    $(this).css({ 'background-color': (options.bgColor ? options.bgColor : '#fff') })
                }
            })
            .fadeTo(options.speed, options.opacity, function() {
                if (jQuery.browser.msie) {
                    if (options.opacity == 0 || options.opacity == 1) {
                        $(this).css({ 'background-color': $(this).attr('oBgColor') }).removeAttr('oBgColor');
                        if(options.opacity == 0) $(this).css('display', 'none');
                        $(this).get(0).style.removeAttribute('filter');
                    }
                }
                if (options.callback != undefined) options.callback();
            });
    };

    $.fn.ClearTypeFadeIn = function(options) {
        if (options)
            $(this)
            .css({ opacity: 0 })
            .ClearTypeFadeTo({ speed: options.speed, opacity: 1, callback: options.callback });
    };

    $.fn.ClearTypeFadeOut = function(options) {
        if (options)
            $(this)
            .css({ opacity: 1 })
            .ClearTypeFadeTo({ speed: options.speed, opacity: 0, callback: options.callback });
    };
})(jQuery);


function scrollerSwitch(id, direction)
{
  var active_page = $('#' + id + ' > div:visible');
  if(!active_page.length)
    return;
  var page = parseInt(active_page.attr('id').replace(id + '_' , ''), 10);
  if(direction)
    page += (direction > 0 || direction == 'forward') ? 1 : -1;
  var new_page = $('#' + id + '_' + page);
  if(new_page.length) {
    active_page.hide();
    new_page.show();
  }
}


/**
* 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-' + 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-pic"><a href="#"><img src="/images/user_' + data.sex + '.gif" alt="" /></a></div>' +
          '<div class="b-comments-author">' +
            '<a href="#" class="' + data.sex + '">' + data.name + '</a>' +
            '<div class="b-comments-date">' + data.date + ' <a href="javascript:;" onclick="commentFormObject.answer(\'' + cid + '\')">ответить</a></div>' +
        '</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);
    }

    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();
  }


  // 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 */
