lib = new Object();

IMAGE_HOST = '//' + window.location.host.replace(/^((www|beta)\.)?/, 'static.');

//картинки для прелоада
imgList = [
  '/images/keyin.png',
  '/images/bg-login.png',
  '/images/key5.gif',
  '/images/rcbar.png',
  '/images/rcbar-side.png',
  '/images/bg-fb.gif',
  '/images/option-star.png',
  '/images/o78.png',
  '/images/begunok.png',
  '/images/begunokd.png',
  '/images/bg-nickname-active.png',
  '/images/bg-nickname-active-top.png',
  '/images/pic-comment-btn-add-a.png'
];

$.preloadImages = function(images) {
  for (var i = images.length; i--; ) {
   (new Image).src = IMAGE_HOST + images[i];
  }
};

edit_filter_src = IMAGE_HOST + '/images/btn-list-edit.png';
undo_filter_src = IMAGE_HOST + '/images/ico-undo.gif';

function setOverlay(f) {
  var $overlay = $('<div id="vrl"></div>');
  $con = $('#container');
  $overlay.attr('style','position: absolute; z-index: 20; width: 100%; left: 0px;top: 0px; height:'+ $con.height() + 'px; _background: #fff; _filter: alpha(opacity: 0);')
          .html('&nbsp;')
          .mouseup(f)
          .click(function(){$overlay.remove()});
  $con.prepend($overlay);
}


$.fn.photoRotate = function(options){
  var settings = $.extend({
    prevBtn: '.prev-pic',
    nextBtn: '.next-pic',
    bgWidth: 974
  },options);

  $(this).bind('mousemove',function(e){
      var nextB = $(this).find(settings.nextBtn);
      var prevB = $(this).find(settings.prevBtn);
      
      if ((e.pageX - $(this).offset().left) > (this.offsetWidth / 2)) {
        if (nextB.css('display') == 'none') {nextB.css({display: 'block'});}
        if (prevB.css('display') == 'block') {prevB.css({display: 'none'});}
        $(this).css({backgroundPosition: '-'+(settings.bgWidth*2)+'px 0'})
      } else {
        if (nextB.css('display') == 'block') {nextB.css({display: 'none'});}
        if (prevB.css('display') == 'none') {prevB.css({display: 'block'});}
        $(this).css({backgroundPosition: '0 0'})
      }      
    });

  $(this).bind('mouseout',function(){
      $(this).find(settings.nextBtn).css({display: 'none'});
      $(this).find(settings.prevBtn).css({display: 'none'});
      $(this).css({backgroundPosition: '-'+settings.bgWidth+'px 0'})
  })

  $(this).find(settings.nextBtn).click(function(){
    //подгрузить предыдущую (или следующую) картинку
  })
  .hover(function(){$(this).css({display:'block'})});

  $(this).find(settings.prevBtn).click(function(){
    //подгрузить следующую (или предыдущую) картинку
  })
  .hover(function(){$(this).css({display:'block'})})

  $(this).bind('click',function(e){
    var id = Number($('#exhibit_id').val());
    var img_curr = Number($('#img_curr').val());
    var img_count = Number($('#img_count').val());

    if ((e.pageX - $(this).offset().left) > (this.offsetWidth / 2)) {
      //подгрузить следующую (или предыдущую) картинку
      if (img_curr == img_count)
        var img = 0;
      else
        var img = img_curr+1;
    } else {
      //подгрузить предыдущую (или следующую) картинку
      if (img_curr == 0)
        var img = img_count;
      else
        var img = img_curr-1;
    }
    
    getImage(id, img);
  })
}



$.fn.exhibit = function(options){

  var settings = $.extend({
    prevBtn: '.prev-pic',
    nextBtn: '.next-pic',
    exhHolder: '.exhibitions-holder',
    exhScroller: '.exhibitions-scroller',
    exhItem: '.exhibition',
    shift: 100,
    speed: 100
  },options);
  
  var $yo = $(this);
  var nextB = $(this).find(settings.nextBtn);
  var prevB = $(this).find(settings.prevBtn);

  var holderWidth = 0;
  var shiftSize = 0;
  var noway = 0;


  $(settings.exhHolder).children(settings.exhItem).each(function(){
    holderWidth += this.offsetWidth + parseInt($(this).css('margin-left')) + parseInt($(this).css('margin-right'));
  })

  $(settings.exhHolder).width(holderWidth);

  $(this).bind('mousemove',function(e){         
      if ((e.pageX > (this.offsetWidth / 2)) && ($(settings.exhHolder).width()+$(settings.exhHolder).offset().left > $yo.width()) ) {
        if (nextB.css('display') == 'none') {nextB.css({display: 'block'});}
        if (prevB.css('display') == 'block') {prevB.css({display: 'none'});}
      } else if ((e.pageX < (this.offsetWidth / 2) )&& ($(settings.exhHolder).offset().left < 0)) {
        if (nextB.css('display') == 'block') {nextB.css({display: 'none'});}
        if (prevB.css('display') == 'none') {prevB.css({display: 'block'});}
      }
    })

  $(this).bind('mouseout',function(){
      $(this).find(settings.nextBtn).css({display: 'none'});
      $(this).find(settings.prevBtn).css({display: 'none'});
  });

  $(this).find(settings.nextBtn).click(function(){
    shiftSize -= settings.shift;    
    if (noway == 0) {
      if ($(settings.exhHolder).width()+shiftSize < $yo.width()) {
        $(settings.exhHolder).animate({left: $yo.width() - $(settings.exhHolder).width()-30},settings.speed,function(){
          shiftSize = $yo.width() - $(settings.exhHolder).width()-30;
          nextB.css({display: 'none'});          
          noway = 0;
        });
      } else {
        $(settings.exhHolder).animate({left: shiftSize+'px'},settings.speed,function(){
          if ($(settings.exhHolder).width()+$(settings.exhHolder).offset().left < $yo.width()) {
            nextB.css({display: 'none'});
          }
          noway = 0;
        });
      }
      noway = 1;
    }
    
    return false;
  })
  .hover(function(){$(this).css({display:'block'})});

  $(this).find(settings.prevBtn).click(function(){    
    shiftSize += settings.shift;
    if (noway == 0) {
      if (shiftSize > 0) {
        $(settings.exhHolder).animate({left: '0px'},settings.speed,function(){
          shiftSize = 0;
          prevB.css({display: 'none'});
          noway = 0;
        });
      } else {
        $(settings.exhHolder).animate({left: shiftSize+'px'},settings.speed,function(){
          if ($(settings.exhHolder).offset().left >= 0) {
            prevB.css({display: 'none'});
          }
          noway = 0;
        });
      }
      noway = 1;
    }
    
    return false;
  })
  .hover(function(){$(this).css({display:'block'})})

  $(this).find('h3 > a').hover(function(){$(this).css({opacity: 0.5})},function(){$(this).css({opacity: 1})});
}


//блок с комментериями
$.fn.comments = function(){
  
  //var commentFormHtml = '<form class="message-reply" style="display: block; clear: both;" action=""><div class="new-message"><fieldset><textarea cols="" rows="9"></textarea></fieldset><fieldset class="btn"><input type="submit" value="Написать" /></fieldset></div></form>';
  var commentFormHtml = $(this).find('form');  
  var $commentBox = $(this);

  commentFormHtml.bind('submit',function(){    
    if ($(this).find('textarea').val() == '') {$(this).find('textarea').focus();return false;}
  })

  //новое сообщение/комментарий
  $commentBox.find('h1 img.new-mail').click(function(){
    $(this).toggleClass('ncw');
    if ($(this).hasClass('ncw')) {
      $commentBox.find('.message-reply').remove();

      var $form = $commentBox.children('h1').after(commentFormHtml).next('form');

      $form.removeClass('message-reply')
          .css({clear: 'none'})
          .children('input[name*=parent_id]')
          .val('')
          .end()
          .show()
          .find('textarea')
          .val('')
          .focus();

      $(this).attr('src', IMAGE_HOST + '/images/btn-mail-a.png');

      if ($.browser.msie && $.browser.version == '6.0') fixPNG(this);
        
      
    } else {
      commentFormHtml.hide();
      $(this).attr('src', IMAGE_HOST + '/images/btn-add-filter.png');
      if ($.browser.msie && $.browser.version == '6.0') fixPNG(this);
    }
  })

  //ссылка "ответить"
  $commentBox.find('div.message-text').hover(function(){
    $(this).find('em.message-date a.inner-link').css('visibility','visible');
  },function(){
    $(this).find('em.message-date a.inner-link').css('visibility','hidden');
  });

  $commentBox.find('div.message-text a.inner-link').click(function(){
    $commentBox.find('.new-message').parent().hide();
    var btn = $commentBox.find('h1 img.new-mail').get(0);
    btn.src = IMAGE_HOST + '/images/btn-add-filter.png';
    if ($.browser.msie && $.browser.version == '6.0') fixPNG(btn);
    $commentBox.find('.message-reply').remove();
    if (!$(this).closest('.message-text').next().hasClass('message-reply')) {
      var cid = $(this).closest('.message-item').attr('rel');      
      $(this).closest('.message-text').after(commentFormHtml)
        .next('form')
        .addClass('message-reply')
        .css({clear: 'both'})
        .children('input[name*=parent_id]')
        .val(cid)
        .end()
        .show()
        .find('textarea')
        .val('')
        .focus();
    }    
    return false;
  })
}



//галерея с подгружаемыми картинками
$.fn.bigGallery = function(options){
  var settings = {
    prevBtn: '.prev-pic',
    nextBtn: '.next-pic',
    galleryHolder: '#pic-scroller',
    galleryItem: '.gallery-frame',
    galleryUpdater: GALLERY_UPDATER_URL,
    shift: 100,
    speed: 100,
    itemMargins: 46,
    nextImagesQuantity: 15,
    imageHeight: 320
  }   

  if (typeof options == 'object') {
    settings = $.extend(settings,options);
  }


  var $yo = $(this);
  var nextB = $(this).find(settings.nextBtn);
  var prevB = $(this).find(settings.prevBtn);
  var hold = 0;

  var holderWidth = 0;
  var stopNext = 0;
  var stopPrev = 1;
  var $galleryHolder = $(settings.galleryHolder);
  var galleryItemTemplate = '<div class="gallery-frame"><div class="gallery-pic"><a href="#"><img src="#" alt="" /></a><span class="rate"></span></div><h4><a href="#"></a></h4><em></em></div>';
  var nextButtonSrc = nextB.attr('src');
  var prevButtonSrc = prevB.attr('src');

  $(this).bind("ajaxSend", function(){
    hold = 1;
  }).bind("ajaxComplete", function(){
    hold = 0;
  });


  setButtons('prev','disable');
  setButtons('next','disable');

  $galleryHolder.width(0);
  $galleryHolder.css({left: 0});

  if (options == 'reload') {loadNextImages(settings.galleryUpdater,settings.nextImagesQuantity,true);}
  else {loadNextImages(settings.galleryUpdater,settings.nextImagesQuantity, false, function(){
        //$(this).one('mouseover',function(){setButtons('next','enable');})
      });}

if (typeof options == 'object') {

  $(this).bind('mouseenter, mousemove',function(){
      if (checkScroll('prev') == 0) {setButtons('prev','disable')} else {setButtons('prev','enable')}
      if (checkScroll('next') == 0) {setButtons('next','disable')} else {setButtons('next','enable')}
  });

  $(this).bind('mouseleave',function(){
    setButtons('prev','disable')
    setButtons('next','disable')
  });

  nextB.click(function(){
    if (!hold) {
      loadNextImages(settings.galleryUpdater,settings.nextImagesQuantity);
      if (stopNext == 0) {
        var newPos = $galleryHolder.offset().left - settings.shift;
        var maxPos = $galleryHolder.width() - $yo.width();

        if (checkScroll('next', newPos) == 1) {
          $galleryHolder.animate({left: newPos+'px'},settings.speed, function(){});
          setButtons('prev','enable');
        } else {
          $galleryHolder.animate({left: (-maxPos)+'px'},settings.speed, function(){});
          setButtons('next','disable');
        }
      }
    }
    return false;
  });

  prevB.click(function(){
    if (!hold) {
      if (stopPrev == 0) {
        var newPos = parseInt($galleryHolder.css('left')) + settings.shift;
        var maxPos = 0;
        if (checkScroll('prev', newPos) == 1) {
          $galleryHolder.stop().animate({left: newPos+'px'},settings.speed);
          setButtons('next','enable');
        } else {
          $galleryHolder.stop().animate({left: maxPos+'px'},settings.speed);
          setButtons('prev','disable');
        }
      }
    }
    return false;
  });

  $.getJSON(FILTER_URL, function(data) {
    onloadFilters(data.current_filter);
  });

}
//подгружает quantity картинок в галерею из скрипта scriptURL
  function loadNextImages(scriptURL,quantity,reload,callback){

    if (reload) $(settings.galleryItem,$galleryHolder).remove();

    if (!($galleryHolder.data('stop') == '1')||!!(reload)) {

    var lastWidth = holderWidth + $galleryHolder.offset().left - $yo.width();

    //если оставшаяся скрытой часть галереи меньше чем 2 сдвигов, то начинаем грузить картинки
    if (lastWidth < 2 * settings.shift) {
     var offset = $galleryHolder.children(settings.gallerItem).length;
     try  {
       $.getJSON(scriptURL,{offset: offset, limit: quantity},function(data){
         if (data.posts.length == 0) {$galleryHolder.data('stop','1');}
         else {

         $.each(data.posts, function(i,item){
           var $tpl = $(galleryItemTemplate);
           $tpl.find('img')
             .attr({
               src: item.image,
               width: item.width,
               height: item.height,
               alt: item.title
             })
             .css({
               width: item.width+'px',
               height: item.height+'px'
             });

           //вставляем блок - шаблон нового изображения
           holderWidth = $galleryHolder.width()+2000+settings.itemMargins;

           $galleryHolder.width(holderWidth);
           $galleryHolder.append($tpl);

           var $newFrame = $galleryHolder.children(settings.galleryItem+':last');

           //заполняем шаблонный блок
           $newFrame.children('em').html(item.date+', '+item.nb_comments)
                                   .attr('style','color: '+item.color);
           $newFrame.children('h4').css({width: item.width})
              .children().attr('href',item.link)
                .attr('style','color: '+item.color)
                .hover(function(){$(this).css({opacity: 0.5})},function(){$(this).css({opacity: 1})})
                .html(item.title);
           $newFrame.children('.gallery-pic').children('span').text(item.rating+'%')
               .end()
               .children('a').attr('href',item.link);

           if ($newFrame.width() > item.width) {
            holderWidth = holderWidth - 2000 + $newFrame.width();
           } else {
             holderWidth = holderWidth - 2000 + item.width;
           }

           $galleryHolder.width(holderWidth);
         }) //each

         //setButtons('next','enable');
         if (typeof callback == 'function') callback();

         } //if data.length == 0
       }) //getjson
     } catch (e) {$galleryHolder.data('stop','1');}
    }//if
    }
  } //loadNextImages

//можно ли скролить галерею в направлении prev или next (0 - нельзя, 1 - можно)
  function checkScroll(direction,offset) {
    var what = 0;
    if (offset == undefined) {what = $galleryHolder.offset().left} else {what = offset}
    if (direction == 'prev') {
      if (what >= 0) {return 0} else {return 1}
    }
    else {
      if ($galleryHolder.width()+what <= $yo.width()) {return 0} else {return 1}
    }
  }

  function setButtons(button,state) {  
    if (button == 'next') {
      if (state == 'enable') {
        stopNext = 0;
        if (nextB.get(0).tagName == 'a' || nextB.get(0).tagName == 'A') nextB.removeClass('disabled');
        else nextB.attr('src',nextButtonSrc);
        if ($.browser.msie && $.browser.version == '6.0' && nextB.get(0).filters.length > 0) nextB.get(0).filters.item(0).enabled = true;
      } else {
        stopNext = 1;
        if (nextB.get(0).tagName == 'a' || nextB.get(0).tagName == 'A') nextB.addClass('disabled');
        else nextB.attr('src', IMAGE_HOST + '/images/x.gif');
        if ($.browser.msie && $.browser.version == '6.0' && nextB.get(0).filters.length > 0) nextB.get(0).filters.item(0).enabled = false;
      }

    } else {
      if (state == 'enable') {
        stopPrev = 0;
        if (prevB.get(0).tagName == 'a' || prevB.get(0).tagName == 'A') prevB.removeClass('disabled');
        else prevB.attr('src',prevButtonSrc);
        if ($.browser.msie && $.browser.version == '6.0' && prevB.get(0).filters.length > 0) prevB.get(0).filters.item(0).enabled = true;
      } else {
        stopPrev = 1;
        if (prevB.get(0).tagName == 'a' || prevB.get(0).tagName == 'A') prevB.addClass('disabled');
        else prevB.attr('src', IMAGE_HOST + '/images/x.gif');
        if ($.browser.msie && $.browser.version == '6.0' && prevB.get(0).filters.length > 0) prevB.get(0).filters.item(0).enabled = false;
      }
    }
  }

}//bigGallery

/*******************************/
/*                             */
/*     галерея со всплывающими */
/*        блоками              */
/*******************************/

function setGalleryVisibility(selector) {
  $(selector).each(function(){
    var $gallery = $(this);
    var $items = $('td', this);

    if ($items.length == 0) {$items = $gallery.children()}

    var holderWidth = $gallery.parent().width();
    var holderMarginR = parseInt($gallery.parent().css('margin-right'), 10) || 0;
    var itemsWidth = 0;
    var itemMargin = parseInt($items.eq(0).css('margin-right'), 10) || 0;
    
    //увеличиваем ширину контейнера галереи, если у нее стоит отрицательное правое поле
    if (holderMarginR < 0) {
      holderWidth -= holderMarginR;
    }
    
    $items.each(function() {
      var item = $(this);
      itemsWidth += item.width() + itemMargin;
      item.css('visibility', itemsWidth > holderWidth ? 'hidden' : 'visible');
    })
  });
}

$(function(){  
  //myfilters = $('div a span','#header .filters .filter-col .users').text();

  $.preloadImages(imgList);

  $.ajaxSetup({cache: false});

  $("#global-loading").bind("ajaxSend", function(){
    $(this).show();
  }).bind("ajaxComplete", function(){
    $(this).hide();
  }).hide();


  $('div.user-name').bind('mouseover',function(){
  
    var short_name = $(this).children('.nickname');
    var full_name = $(this).children('.nickname-full');

    if (short_name.width() < full_name.width()) {
      full_name.show();
    }
  }).mouseout(function(){
    $(this).children('.nickname-full').hide();
  });

  


/*******************************/
/*                             */
/* окно логина пользователя    */
/*                             */
/*******************************/
  $('.login','#header').click(function(){
    $('#login-box').appendTo($('#header'));
    setOverlay(function(){
              $('#login-box').hide();
              $('.animakey','#header').css('background','none');
              $('.animakey','#header').hide();
              $('.login-reg','#header').removeClass('loggin-in');
            });
    $('#login-box').show();
    $('#login-box input:first').focus();
    $('.animakey','#header').show();
    $('.animakey','#header').css('background','url(' + IMAGE_HOST + '/images/key5.gif) no-repeat');
    $('.login-reg','#header').addClass('loggin-in');
  });

  $('#login-box .login-form a').click(function(){
      $('#login-box .login-form').hide();
      $('#login-box .forget-form').show();
      $('#login-box .forget-form input:first').focus();
  });
  $('#login-box .forget-form a').click(function(){
      $('#login-box .login-form').show();    
      $('#login-box .forget-form').hide();
      $('#login-box .login-form input:first').focus();
  });





    $('.theme a').bind('click',function(){
    var $thm = $('.theme-options');

    $('body').bind('click.themeclose',function(){
      if ($thm.is(':visible')) {
        $thm.hide();
        $('body').unbind('click.themeclose');
      }
    });

    if ($thm.is(':visible')) {
      $thm.hide();
    } else {
     var lngth = 0;
     $thm.find('li').each(function(){       
       if ($(this).text().length > lngth) {lngth = $(this).text().length}
     });     
     $thm.css({
       left: $(this).offset().left+'px',
       top: '28px',
       width: (parseInt(lngth/6+10))+'em'
     })
     .show();
  }
    return false;
  });


  /*клик по пункту списка в фильтре "Тема"*/
  $('.theme-options a').bind('mousedown',function(){
    var catId = $(this).parent().attr('rel');

    $(this).parents('.options-box').hide();

    $(this).parent().addClass('selected');
    $(this).parent().siblings().removeClass('selected');
    if ($(this).text().length > 10) {
      var txt = $(this).text().slice(0,10);
      $('.theme a span').text(txt);
      //$('.theme a:first').prepend(shade);      
    } else {
      $('.theme a:first img').remove();
      $('.theme a span').text($(this).text());
    }
    if (catId > 0) {
      applyFilter({category_id:$(this).parent().attr('rel')})
    } else {
      applyFilter({category_id:''})
    }
    resetUserFilter();
    return false;
  });

/***********************/
/*                     */
/* фильтр пользователя */
/*                     */
/***********************/



  /*клик по ссылке, вызывающей выпадающий список*/
  $('.users a').bind('click',function(){ 

    var $thm = $('.users-options');
    var $input = $('.users input');
    var $link = $('.users a');
    var $ulbox = $thm.find('.scrolling');
      

    $('body').bind('click.usersclose',function(e){     
      if ($(e.target).parents('.users-options').length == 0) {
        if ($thm.is(':visible')) {
          $thm.find('.editing').each(undoFilterEdit);
          $thm.hide();
          $('body').unbind('click.usersclose');
        }
      }
    });

    //убираем добавление нового фильтра, если оно активировано
    if ($input.is(':visible')) {
      $input.val('');
      $input.hide();
      $link.children().show();
    }

    //показываем/убираем фильтры
    if ($thm.is(':visible')) {
      //если список уже показан, то надо его спрятать
      $thm.find('.editing').each(undoFilterEdit);
      $thm.hide();
    } else {
      $ulbox.children().remove();
      getUserFilters($ulbox);
    }
    return false;
  });

  /*клик по кнопке плюса рядом с "мои фильтры"*/
  $('.btn-add a').live('click',function(){

    $input = $('.users input');
    $link = $('.users a');

    if ($('.users-options').is(':visible')) {$('.users-options').hide();}

    if ($input.is(':visible')) {
      $input.focus();
    } else {
      $link.children().hide();
      $input.show();
      $input.focus();
    }    
    return false;
  });

  //инпут нового фильтра
  $('.users input').keypress(function(e){
    
    var url = '/'+ SF_CULTURE+'/filter/add';
    var $span = $(this).siblings('a').children();

    if (e.which == 13) {
      
      var newFilter = $(this).val();

      if (newFilter != '') {

        $.get(url,{name: newFilter});

        $span.text(newFilter);
        $(this).val('');
        $(this).hide();
        $span.show();
      } else {
        $(this).val('');
        $(this).hide();
        $span.show();
      }

      return false;
    }

  })

  /*  клик по пункту списка фильтров пользователя */  
  $('.users-options a').live('click',function(){    
    $(this).parents('.options-box').hide();

    setFilter($(this));
    
    $(this).parent().addClass('selected');
    $(this).parent().siblings().removeClass('selected');
    if ($(this).text().length > 10) {
      var txt = $(this).text().slice(0,10);
      $('.users a span').text(txt);      
    } else {
      $('.users a:first img').remove();
      $('.users a span').text($(this).text());
    }

    return false;
  });

//инпут в списке фильтров пользователя
  $('.users-options input').live('keypress',function(e){
    var url = '/'+ SF_CULTURE+'/filter/rename';

    var $link = $(this).parent();
    var fId = $(this).parents('li').children('input:first').val();
    var fName = $(this).val();
    //enter
    if (e.which == 13) {
      if (fName != '') {
        
       $.getJSON(url,{id: fId, name: fName},function(data){});

        $link.parent().removeClass('active');
        var newFilter = $(this).val();
        
        if (newFilter.length > 60) {
          newFilter = newFilter.substr(0, 49);
        }
        $link.append('<span>'+newFilter+'</span>');
        var lngth = ($link.children('span').width()+75);
        if ($('.users-options').width() < lngth) {
          $('.users-options').css({width: lngth+'px'});
        }
        $(this).siblings('.edit').attr('src',edit_filter_src);
        $(this).remove();
        return false;
      }
    }
  })

  //
  // в списке фильтров пользователя - функция, выполняющаяся по клику на кнопку "редактировать - отменить редактирование"
  //
  showFilterEdit = function() {    
    var $li = $(this).closest('li');
    var $link = $(this).parent();

    $li.siblings('.editing').each(undoFilterEdit);
    $li.addClass('editing');

    //показываем инпут.
    if ($link.children('input').length == 0) {
      var filter_text = $link.children('span').text();
      $link.parent().addClass('active');
      $link.append('<input type="text" value="'+filter_text+'" />');
      
      $link.children('input').width($link.width()-31)
      $link.children('input').data('startV',filter_text);
      $link.children('span').remove();
    }
    
    $link.children('input').focus();

    //меняем кнопку редактирования на кнопку отмены   
    $(this).attr('src',undo_filter_src);
    $(this).unbind('click',showFilterEdit);
    $(this).bind('click',undoFilterEdit);
    return false;
  }

  //
  // в списке фильтров пользователя - функция, выполняющаяся по клику на кнопку "редактировать - отменить редактирование"
  //
  undoFilterEdit = function () {
    
    var $obj = '';   
    
    if (this.tagName == 'LI') {
      $obj = $(this).children().children('.edit');      
    } else {      
      $obj = $(this);
    }   
    
    var $input = $obj.siblings('input');
    var $link = $obj.parent('a');
    
    $obj.closest('li').removeClass('editing')
                      .removeClass('active');

    var newFilter = $input.data('startV');    
    $input.removeData('startV');
    if (newFilter) {$link.append('<span>'+newFilter+'</span>');}
    $input.remove();

    $obj.attr('src',edit_filter_src);
    $obj.unbind('click',undoFilterEdit);
    $obj.click(showFilterEdit);
    
    return false;
  }
  
  /* удаление фильтра из списка фильтров пользователся */
  $('.users-options a .del').live('click',function(){
    var lang = '/'+ SF_CULTURE;
    var url = lang+'/filter/delete';
    var $li = $(this).parents('li')
    var $idInput = $li.children('input:first');

    $.getJSON(url, {id: $idInput.val()}, function(data){     

      var ulHeight = $li.parent('ul').height();
      var divHeight = $li.closest('.scrolling').height();
      var thisScrollContent = $li.closest('.scroll-content');     

      $li.remove();

      if (ulHeight < divHeight) {
        thisScrollContent.children('.scroll-holder').hide();
        thisScrollContent.css('padding','0px');
        thisScrollContent.children('.scrolling').css('height','auto');
      }

    })
    return false;
  });


/*******************************/
/*                             */
/* инпут с радиобаттон         */
/*                             */
/*******************************/

 $('#author-name').focus(function(){
   
   $(this).siblings('input:radio').attr('checked','checked');
   
 });



/*******************************/
/*                             */
/* слайдеры в фильтрах         */
/*                             */
/*******************************/

  $('.scroll-holder').slider({
    orientation: 'vertical',
    value: 100,    
    slide: function(event, ui) {      
      var $scroll_window = $(ui.handle).parents('.options-box').find('.scrolling');      
      var ul_h = $(ui.handle).parents('.options-box').find('ul').height() + 5;
      var h = ul_h - $scroll_window.height();
      var offset = (100 - ui.value) / 100;      
      $scroll_window.scrollTop(h*offset);
    }
  });

  $('.rate-scroll','.filters').slider({    
    step: 5,
    slide: function(event, ui) {
      $('.rate-filter span').text(ui.value);
    },
    change: function(event, ui) {
      $('.rate-filter span').text(ui.value);
    },
    stop: function(event, ui) {
      $('.rate-filter span').text(ui.value);
      applyFilter({sort_type: ui.value})
      /*  сохранить значение в профиле пользователя и применить фильтр*/
    }
    

  });
  $('.rate-scroll','.filters').slider('disable');


/*******************************/
/*                             */
/* переключение фильтров       */
/*                             */
/*******************************/

/* группа фильтров фото/рисунки*/
  
//  $('.radio-filter').click(function(){
//    if ($(this).hasClass('radio-filter-checked')) {
//      $(this).removeClass('radio-filter-checked');
//      $(this).wrapInner('<a href="#"></a>');
//      /*отменить действие фильтра*/
//    } else {
//      $(this).addClass('radio-filter-checked');
//      var filter_name = $(this).children('a').html();
//      $(this).empty()
//             .append('<span>'+filter_name+'</span>');
//      /*задействовать фильтр*/
//    }
//    return false;
//  });
  
  $('.group1 a','.filters').live('click',function(){    
    selectRadio($(this),'group1');
    resetUserFilter();
    return false;
  });

  

  /*группа фильтров с рейтингом*/
  $('.group2 a','.filters').live('click',function(){    
    selectRadio($(this),'group2');
    resetUserFilter();
    return false;
  });




/*******************************/
/*                             */
/* feedback                    */
/*                             */
/*******************************/

 $('.inner-link' ,'#footer .video-playcard ul').click(function(){   
   setOverlay(function(){
     $('#feedback').hide();
   });
   
   var fbBox = $('#feedback');
   var posTop = $(this).offset().top - fbBox.height() - 50;
   var posLeft = $(this).offset().left;

   fbBox.css({
     left: posLeft+'px',
     top: posTop+'px'
   })
   .show();

   $('.txt',fbBox).focus();
   
   return false;
 })



// feedback send
$('#feedback form').bind('submit',function(){

  var f = this, data = {};
  
  $(this).find(':input').removeClass('warn');

  $.post(f.action, $(this).serialize(), function(data) { // posting data to validate    
    var valid = true;
    
    $.each(data, function(i) {      
      var name = f.name+'['+i+']';      
      f.elements['feedback'+name+''] && $(f.elements['feedback'+name+'']).addClass('warn') && (valid = false);
    });
    
    if (valid) {
      $('#feedback').hide();
      $('#vrl').remove();
    }
  }, 'json');

  return false;
});


//запрос фильтров пользователя и заполнение выпадающего списка фильтрами
function getUserFilters(fBoxLocation) {
  var lang = '/'+ SF_CULTURE;
  var filterlist = '';
  var ulbox = fBoxLocation;

 //получаем массив фильтров пользователя
  $.getJSON(lang+'/filter', function(data){    
    if (data.filters) {
      filterlist += '<ul>'
      $.each(data.filters, function(i,filter) {      
        filterlist += '<li>';
        filterlist += '<input type="hidden" id="filter_'+filter.id+'" value="'+filter.id+'" />';
        filterlist += '<input type="hidden" id="filter_'+filter.id+'_type" value="'+filter.params.type+'" />';
        filterlist += '<input type="hidden" id="filter_'+filter.id+'_categoryid" value="'+filter.params.category_id+'" />';
        filterlist += '<input type="hidden" id="filter_'+filter.id+'_sorttype" value="'+filter.params.sort_type+'" />';
        filterlist += '<a href="#"><img class="del" alt="" src="' + IMAGE_HOST + '/images/btn-list-del.png"/><img class="edit" alt="" src="/images/btn-list-edit.png"/><span>'+filter.name+'</span></a>';
        filterlist += '</li>';
        
      });
      filterlist += '</ul>';

      fillInFilterBox(ulbox, filterlist);
    }
  });    
}

//заполняем бокс выпадающего списка списком фильтров пользователя
function fillInFilterBox(fBoxLocation, filters) {  

  if (typeof fBoxLocation != 'object') {
    fBoxLocation = $(fBoxLocation);
  }
  fBoxLocation.append(filters)

  var $thm = $('.users-options');
  var $owner = $('.users a');
  /* редактирование фильтра в списке фильтров пользователся*/
  $('.users-options a .edit').bind('click',showFilterEdit);

  //вычисляем ширину списка фильтров
  var lngth = 0;
  
  $thm.find('li').each(function(){
    if ($(this).text().length > lngth) {lngth = $(this).text().length;}
  });
  
  $thm.css({
    left: $owner.offset().left+'px',
    top: '28px',    
    width: (parseInt(lngth/6+10))+'em'
  });
    $thm.show();
    //вычисляем высоту списка
    var ulHeight = $thm.find('ul').height();
    var divHeight = $thm.find('.scrolling').height();
    var thisScrollContent = $thm.find('.scroll-content');    

      if (ulHeight < divHeight) {
        thisScrollContent.children('.scroll-holder').hide();
        thisScrollContent.css('padding','0px');
        thisScrollContent.children('.scrolling').css('height','auto');
      }   

     ulHeight = fBoxLocation.height();
     divHeight = $thm.find('.scrolling').height();
     thisScrollContent = $thm.find('.scroll-content');

     if (ulHeight < divHeight) {

      thisScrollContent.children('.scroll-holder').hide();
      thisScrollContent.css('padding','0px');
      thisScrollContent.children('.scrolling').css('height','auto');
    }
}



});
/* $() end */

//расстановка состояний фильтра в соответствии с выбранным из списка пользовательских фильтров и отправка запроса на применение этого фильтра
function setFilter(filterObj) {
  
  var $li = filterObj.parent();
  var fId = $li.children('input:first').val();
  var sType = $li.children('#filter_'+fId+'_type').val();
  var sCategoryId = $li.children('#filter_'+fId+'_categoryid').val();
  var sSortType = $li.children('#filter_'+fId+'_sorttype').val();
  
  switch (sType) {
    case 'photo':
      checkRadio(1, 'group1');
      break;
    case 'picture':
      checkRadio(2, 'group1');
      break;
    default:
      checkRadio(3, 'group1');
      break;
  }
  
  if (sSortType) {
    switch (sSortType) {
      case 'new':
        checkRadio(1, 'group2');
        break;
      case 'popular':
        checkRadio(2, 'group2');
        break;
      default:
        checkRadio(1, 'group2',sSortType);
        break;
    }
  }
  
  if (sCategoryId > 0) {
    var catFilter = $('.theme-options li[rel='+sCategoryId+']')
    var catFilterName = catFilter.children().text();

    $('.theme-options li').removeClass('selected');
    catFilter.addClass('selected');
    $('.theme span','.filters .filter-col .filter-inner').text(catFilterName);
  } else {
    $('.theme-options li').removeClass('selected');
    var all = $('.theme-options li:first');
    all.addClass('selected');
    $('.theme span','.filters .filter-col .filter-inner').text(all.children().text());
  }
  
  if (!filterObj.params) {applyFilter(fId)} else {resetUserFilter ()};
}

//выставляет состояния фильтров в соотстевствии с кликнутым фильтром и применяет кликнутый
function selectRadio(obj,groupClass,rate){

    if (obj.length > 0) {
      var t = obj.text();
      var $p = obj.parent();
      var index = 0;

      if (groupClass == 'group1') {
        index = $p.prevAll('.group1').length+1;
        switch (index) {
          case 1:
            applyFilter({type: 'photo'})
            break;
          case 2:
            applyFilter({type: 'picture'})
            break;
          default:
            applyFilter({type: ''})
            break;
        }
      } else {
        index = $p.prevAll('.group2').length+1;
        switch (index) {
          case 1:
            applyFilter({sort_type: 'new'})
            break;
          case 2:
            applyFilter({sort_type: 'popular'})
            break;
          default:
            applyFilter({sort_type: $('.rate-scroll','.filters').slider('value')})
            break;
        }
      }

      $('.'+groupClass+'.current').wrapInner('<a href="#"></a>')
                         .removeClass('current');

      /* если кликнули не рейтинг*/
      if (!$p.hasClass('rate-switch')) {
        $('.rate-scroll','.filters').slider('disable');
        $('.rate-filter','.filters').addClass('rate-filter-disabled');
      } else {
        if (rate > 0) {$('.rate-scroll','#header .filters').slider('value',rate);}
        $('.rate-scroll','.filters').slider('enable');
        $('.rate-filter','.filters').removeClass('rate-filter-disabled');
      }

      $p.text(t)
        .addClass('current')
        .end()
        .remove();
    }

  }

//выставляет фильтры в соответствии с переданными параметрами
function onloadFilters(paramlist) {
  if (paramlist) {
    if (paramlist.params) {
      switch (paramlist.params.type) {
        case 'photo':
          checkRadio (1,'group1');
          break;
        case 'picture':
          checkRadio (2,'group1');
          break;
        default:
          checkRadio (3,'group1',paramlist.params.sort_type);
          break;
      }

      switch (paramlist.params.sort_type) {
        case 'new':
        case 'name':
          checkRadio (1,'group2');
          break;
        case 'popular':
          checkRadio (2,'group2');
          break;
        default:
          checkRadio (3,'group2',paramlist.params.sort_type);
          break;
      }

      if (paramlist.params.category_id > 0) {
        var $thm = $('ul','.filters .theme-options .scrolling');
        var $cat = $('li[rel='+paramlist.params.category_id+']',$thm);
        var catName = $cat.children('a').text().slice(0,10);
        $('div a span','.filters .filter-col .theme').text(catName)
        $thm.children('li').removeClass('selected');
        $cat.addClass('selected');
      }
    }
    if (paramlist.id > 0) {
      $('div a span','.filters .filter-col .users').text(paramlist.name)
    }
  }
}

//выставляет состояния фильтров в соответствии с тем, какой фильтр кликнули
function checkRadio (index,group,rate) {  
  var $p = $('.'+group,'.filters .filter-col').eq(index-1);
  var obj = $p.children('a');
  if (obj.length > 0) {

    var t = obj.text();

    $('.'+group+'.current').wrapInner('<a href="#"></a>')
                           .removeClass('current');

    /* если кликнули не рейтинг*/
    if (!$p.hasClass('rate-switch')) {
      $('.rate-scroll','.filters').slider('disable');
      $('.rate-filter','.filters').addClass('rate-filter-disabled');
    } else {
      if (rate > 0) $('.rate-scroll','.filters').slider('value',rate);
      $('.rate-scroll','.filters').slider('enable');
      $('.rate-filter','.filters').removeClass('rate-filter-disabled');
    }

    $p.text(t)
      .addClass('current');
  }  
}



function resetUserFilter () {
  $('div a span','.filters .filter-col .users').text(myfilters);
}

$.fn.incrPlaceClicks = function() {
  $(this).bind('click',function() {
    var link = this.href;
    var id = link.substring(link.lastIndexOf('/')+1, link.length);

    $.get('/'+ SF_CULTURE +'/place/click?id='+ id);
  });
}






function dumpProps(obj, parent) {
   // Go through all the properties of the passed-in object
   for (var i in obj) {
      // if a parent (2nd parameter) was passed in, then use that to
      // build the message. Message includes i (the object's property name)
      // then the object's property value on a new line
      if (parent) { var msg = parent + "." + i + "\n" + obj[i]; } else { var msg = i + "\n" + obj[i]; }
      // Display the message. If the user clicks "OK", then continue. If they
      // click "CANCEL" then quit this level of recursion
      if (!confirm(msg)) { return; }
      // If this property (i) is an object, then recursively process the object
      if (typeof obj[i] == "object") {
         if (parent) { dumpProps(obj[i], parent + "." + i); } else { dumpProps(obj[i], i); }
      }
   }
}