$(function()
{

$('#categoriesBalloon').appendTo('#maincontent');

$('span', '#categoriesBlock').attr('title', 'Add to selection');

$('#categoriesBlock h4').click(function(event){
  var sublist=$(this).next('ul');
  if(sublist.is(':visible'))
  {
    sublist.slideUp(200);
	$(this).removeClass('opened').addClass('closed');
  }
  else
  {
    sublist.slideDown(200);
	$(this).removeClass('closed').addClass('opened');
  }
  $('#categoriesBalloon').hide();
});

$('#categoriesBlock .inactive').hover(function(event){$(this).removeClass('inactive').addClass('active')},function(event){$(this).removeClass('active').addClass('inactive')});

$('#categoriesBlock .inactive span').click(function(event){
  var listItem=$(this).parent();
  var categoryID=listItem.parent().prev('h4').attr('cid');
  var keyword=listItem.attr('wid');
  if(listItem.hasClass('added'))
  {
    c_removeItem(categoryID,keyword);
  }
  else
  {
    c_addItem(categoryID,keyword);
  }
});


$('#filterBlock  div a').live('click',function(){$(this).next().next('div').toggle();return false;});


$('span span.btnclr','#filterBlock').live('click',function(){
  var target=$(this).parent('span');
  var categoryID=target.attr('cid');
  var keyword=target.attr('wid');
  c_removeItem(categoryID,keyword);return false;
});

$('div > span.btnclr','#filterBlock').live('click',function(){
  var categoryID=$(this).parent().attr('cid');
  c_removeItem(categoryID);
  return false;
});

$('#filterBlock > .clrbtn').click(function(){
  c_removeItem();
  return false;
});

$('#filterBlock > a.btn').click(function(event)
{
  if($('#filterBlock').hasClass('inactive')){return false;}
  else
  {
    var filter='';
    $('span.btnclr','#filterBlock').parent('span').each(function(){
      if(filter != ''){filter=filter+',';};
      filter=filter+$(this).attr('wid');
    });
    var href=$(this).attr('href')+'&filters='+filter;
    $(this).attr('href',href);
  };
  return true;
});

//== FAN ==//
//click #all for close #categoriesBalloon
$('#all').click(function(){
  $('#categoriesBalloon').hide();
});
//========//

$('#categoriesBalloon .closeButton').click(function(event){
  var categoryID=$('#categoriesBalloon').attr('cid');
  $('#categoriesBlock [cid="'+categoryID+'"] + ul .showAll').click();
});

$('#categoriesBlock .showAll').click(function(event)
                {
						//== FAN ==//
                        //add header for balloon
						var header_search = $(this).parent().prev().text();
						$('.header_search').text(header_search);
						//========//
						
						var categoryID=$(this).parent().prev().attr('cid');

                        var pos=$(this).position();
                        var show_all_element_height=$(this).height();
                        var posY=pos['top']+show_all_element_height+0+0;
                        var posX=pos['left'];

                        //if($(this).prev().children('a').length)
						//{
						  var baseUrl=$(this).prev().children('a').attr('href').replace(/&Tag\[\d+\]=on$/,'');
						//}

                        $('#categoriesBalloon').css({'top':posY+'px'});
                        $('#categoriesBalloon').css({'left':posX+'px'});

                        if($('#categoriesBalloon').attr('cid')!=categoryID)
                        {
                          $('#categoriesBalloon').attr('cid',categoryID);
                          if($(this).parent().prev().hasClass('events'))
						  {
                            $('#categoriesBalloon').addClass('events');
                            $.getJSON('/Category/ajax_getEvents/',{'cid':categoryID},function(data, textStatus){
                              $('.selectEvents div','#categoriesBalloon').remove();
                              $('.content','#categoriesBalloon').html('');
                              var firstYear=true;
                              $.each(data,function(eventYear,eventYearArray){
                                var firstYearClass=firstYear?'opened':'closed';
                                firstYear=false;
                                $('<div class="'+firstYearClass+'">'+eventYear+'<a class="disabled" href="#'+eventYear+'01" let="'+eventYear+'01">Jan</a><a class="disabled" href="#'+eventYear+'02" let="'+eventYear+'02">Feb</a><a class="disabled" href="#'+eventYear+'03" let="'+eventYear+'03">Mar</a><a class="disabled" href="#'+eventYear+'04" let="'+eventYear+'04">Apr</a><a class="disabled" href="#'+eventYear+'05" let="'+eventYear+'05">May</a><a class="disabled" href="#'+eventYear+'06" let="'+eventYear+'06">Jun</a><a class="disabled" href="#'+eventYear+'07" let="'+eventYear+'07">Jul</a><a class="disabled" href="#'+eventYear+'08" let="'+eventYear+'08">Aug</a><a class="disabled" href="#'+eventYear+'09" let="'+eventYear+'09">Sep</a><a class="disabled" href="#'+eventYear+'10" let="'+eventYear+'10">Oct</a><a class="disabled" href="#'+eventYear+'11" let="'+eventYear+'11">Nov</a><a class="disabled" href="#'+eventYear+'12" let="'+eventYear+'12">Des</a></div>').appendTo('#categoriesBalloon .selectEvents');
                                $.each(eventYearArray,function(eventMonth,eventMonthArray){
                                  $('a[let="'+eventYear+eventMonth+'"]','#categoriesBalloon .selectEvents').addClass('enabled').removeClass('disabled');
                                  $('.content','#categoriesBalloon').append('<p let="'+eventYear+eventMonth+'"></p>');
                                  $.each(eventMonthArray,function(eventID,eventDate){
                                    $('p[let="'+eventYear+eventMonth+'"]','#categoriesBalloon .content').append('<em>'+eventDate.event_date+'&nbsp;&mdash;&nbsp;</em><a href="'+baseUrl+'&Tag['+eventID+']=on" class="inactive" wid="'+eventID+'">'+eventDate.event_name+'<span class="btnclr">&nbsp;</span></a>');
                                  });
                                });
                              });
                              markSelectedKeywordsInBaloon(categoryID);
                            });
                          }
                          else
                          {
                            $('#categoriesBalloon').removeClass('events');
                            $.getJSON('/Category/ajax_getTags/',{'cid':categoryID},function(data, textStatus){
                              
							  $('.select a:not([let="all"])','#categoriesBalloon').removeClass('enabled').addClass('disabled');
                              $('.content','#categoriesBalloon').html('');

                              $.each(data,function(indexInArray,valueOfElement){
                                
								indexInArray=indexInArray.toLowerCase();
                                $('.select a[let="'+indexInArray+'"]','#categoriesBalloon').addClass('enabled').removeClass('disabled');
                                
								if (!$('#categoriesBalloon p[let="'+indexInArray+'"]').length) //insert letter container only if it does not exist already
								{
									$('.content','#categoriesBalloon').append('<p let="'+indexInArray+'"></p>');
								}
								
                                $.each(valueOfElement,function(keywordID,keyword){
                                  
								  $('p[let="'+indexInArray+'"]','#categoriesBalloon').append('<a href="'+baseUrl+'&Tag['+keywordID+']=on" class="inactive" wid="'+keywordID+'">'+keyword+'<span class="btnclr">&nbsp;</span></a>');
								   //== FAN add TITLE for btnclr ==//
								   $('span', '#categoriesBalloon .content').attr('title', 'Add to selection'); 
								   //========//
                                });
                              });
							  
							  //== FAN ==//
                              //add tag in "for_example"
							  $('.for_example span').html('');
							  var n = $('span','#categoriesBalloon .content').length;
							  var m = 0;
							  var res = Math.floor ( Math.random() * (n - m + 1) ) + m;
							  var tag = $(".content p a").eq(res).text();
							  $('.for_example span').append(tag);
							  //========//

							  //== FAN ==//
                              //after content isert DIV for show last p
							  $('#categoriesBalloon .content').append('<div style=" width:500px; height:6px;"></div>');
							  //========//

                              markSelectedKeywordsInBaloon(categoryID);
                            });
                          };
                          $('#categoriesBalloon .chosen').children('span,a,em').remove();
                          $('#categoriesBalloon').show();
                        }
                        else
                        {
                          $('#categoriesBalloon').toggle();
                        };
                        return false;
                });

$('a','#categoriesBalloon .content').live('mouseover',function(event){$(this).removeClass('inactive').addClass('active');}).live('mouseout',function(event){$(this).removeClass('active').addClass('inactive');});

$('span','#categoriesBalloon .content').live('click',function(event){
  var categoryID=$('#categoriesBalloon').attr('cid');
  var keywordID=$(this).parent().attr('wid');
  if($(this).parent().hasClass('added'))
  {
    c_removeItem(categoryID,keywordID);
  }
  else
  {
    c_addItem(categoryID,keywordID);
  }
  event.stopPropagation;
  return false;
});

$('span.btnclr','#categoriesBalloon .chosen').live('click',function(event){
  var categoryID=$('#categoriesBalloon').attr('cid');
  var keywordID=$(this).parent().attr('wid');
  c_removeItem(categoryID,keywordID);
});

$('.select a.enabled,.selectEvents a.enabled','#categoriesBalloon').live('click',function(event){var letter=$(this).attr('let');if(letter=='all'){$('p, a','#categoriesBalloon .content').show();}else{$('#categoriesBalloon .content p').hide();$('p[let="'+letter+'"],p[let="'+letter+'"] a','#categoriesBalloon .content').show();};return false;});

$('.selectEvents .closed','#categoriesBalloon').live('click',function(event){$('.selectEvents .opened','#categoriesBalloon').removeClass('opened').addClass('closed');$(this).removeClass('closed').addClass('opened'); return false;});

$('#categoriesBalloon .search form').submit(function(event){
  var SearchValue=$('#categoriesBalloon .search input.text').val();
  var letter=SearchValue.substr(0,1);
  $('.content p,.content a','#categoriesBalloon').show();
  if(letter!='')
  {
    $('.content p','#categoriesBalloon').hide();
	$('.content p[let="'+letter+'"]','#categoriesBalloon').show();
	$('.content p[let="'+letter+'"] a','#categoriesBalloon').not(':contains('+SearchValue+')').hide();
  }
  return false;
});

loadSelectedFilterData(filterSelectedData);

$.each(tagSelectedData,function(categoryID,keywordsobject){$.each(keywordsobject,function(keywordID,keyword){
        $('#categoriesBlock [cid="'+categoryID+'"] + ul [wid="'+keywordID+'"]').addClass('marked');
})});

$('#categoriesBlock ul:has(.marked)').prev('h4.closed').click();

});

function markSelectedKeywordsInBaloon(categoryID){

		$('span[cid="'+categoryID+'"]','#filterBlock').clone().appendTo('#categoriesBalloon .chosen');

        $('span[cid="'+categoryID+'"]','#filterBlock').each(function(){
          var keywordID=$(this).attr('wid');
          $('a[wid="'+keywordID+'"]','#categoriesBalloon .content').addClass('added');
		  
		  /* FAN add attr('title', 'Remove selection') */
		  $('span', '#categoriesBalloon .chosen span').attr('title', 'Remove selection');
		  //$('span', '#categoriesBalloon .content').attr('title', 'Add to selection'); 
		  $('span', '#categoriesBalloon .content a[wid="'+keywordID+'"]').attr('title', 'Remove selection');
		  /* ========================================= */
        });
        if($('#categoriesBalloon .chosen span').length)
        {
		  $('<a>').addClass('clrbtn').html('Clear selected').css('cursor', 'pointer').appendTo('#categoriesBalloon .chosen');
        }
        else
        {
		  $('<em>').html('none').appendTo('#categoriesBalloon .chosen');
        }
		$.each(tagSelectedData[categoryID],function(keywordID, keyword){
          $('a[wid="'+keywordID+'"]','#categoriesBalloon .content').addClass('marked');
        });
        return true;
}

function loadSelectedFilterData(data){
  $.each(data,function(categoryID,keywordsobject){
    $.each(keywordsobject,function(keywordID,keyword){
      c_addItem(categoryID,keywordID,keyword);
	});
  });
}

$('#categoriesBalloon .chosen a').live('click',function(event){var categoryID=$('#categoriesBalloon').attr('cid');c_removeItem(categoryID);})

function c_addItem(categoryID,keywordID,keyword)
{
		
		if(keywordID==undefined)
        {
        }
        else
        {
          //== FAN ==//
          //add TITLE 'Remove selection' for span
		  $('span', '#categoriesBlock li[wid="'+keywordID+'"]').attr('title', 'Remove selection');
		  $('span', '#categoriesBalloon .content a[wid="'+keywordID+'"]').attr('title', 'Remove selection');
		  //========//
		  $('#categoriesBlock [cid="'+categoryID+'"] + ul [wid="'+keywordID+'"]').addClass('added');
          $('#categoriesBalloon[cid="'+categoryID+'"] .content [wid="'+keywordID+'"]').addClass('added');

          var countSelectedWord=$('#filterBlock span[cid="'+categoryID+'"]').length;
          var appendTarget='#filterBlock p';

          if(countSelectedWord>=2)
          {
            appendTarget='#filterBlock p div[cid="'+categoryID+'"] div';

            if(countSelectedWord==2)
            {
              $('<div>').attr('cid',categoryID).html(
                $('#categoriesBlock [cid="'+categoryID+'"]').text()+' (<a href="#">show selected</a>,<span class="btnclr">&nbsp;</span>)<div class="category-show-all-baloon"></div>').appendTo('#filterBlock p');
                $('#filterBlock span[cid="'+categoryID+'"]').appendTo(appendTarget);
              };
            }
            else
            {
              if($('#filterBlock').hasClass('inactive'))
              {
                $('#filterBlock').removeClass('inactive');
                $('#filterBlock p').children().remove();
              };
            };

            if(!keyword){keyword=$('#categoriesBlock [cid="'+categoryID+'"] + ul [wid="'+keywordID+'"] a').html();};

            if(keyword){keyword=keyword+'<span class="btnclr">&nbsp;</span>';}
            else{keyword=$('#categoriesBalloon[cid="'+categoryID+'"] .content a[wid="'+keywordID+'"]').html();};

            $('<span>').attr('cid',categoryID).attr('wid',keywordID).html(keyword).appendTo(appendTarget);

            if($('#categoriesBalloon').is('[cid="'+categoryID+'"]'))
            {
              if($('#categoriesBalloon .chosen').children().is('em'))
              {
                 $('#categoriesBalloon .chosen em').remove();
                 $('<a>').html('Clear selected').appendTo('#categoriesBalloon .chosen').css('cursor','pointer');
              };
              $('<span>').attr('cid',categoryID).attr('wid',keywordID).html(keyword).insertBefore('#categoriesBalloon .chosen a');
            };
         };
		 $('span', '#filterBlock span').attr('title', 'Remove selection');
		 $('span', '#categoriesBalloon .chosen span').attr('title', 'Remove selection');
}

function c_removeItem(categoryID,keywordID)
{
		if(categoryID==undefined)
        {
          $('#filterBlock p').children().remove();
          $('span','#categoriesBalloon .chosen').remove();

          $('#categoriesBlock li.added,#categoriesBalloon .content a').removeClass('added');
          $('#categoriesBalloon .content a').removeClass('added');
        }
        else if(keywordID==undefined)
        {
          $('#filterBlock [cid="'+categoryID+'"]').remove();
          $('#categoriesBalloon[cid="'+categoryID+'"] .chosen span').remove();

          $('#categoriesBlock [cid="'+categoryID+'"] + ul > li').removeClass('added');
          $('#categoriesBalloon[cid="'+categoryID+'"] .content a').removeClass('added');
        }
        else
        {
          //== FAN ==//
          //add TITLE 'Add to selection' for span
		  $('span', '#categoriesBlock li[wid="'+keywordID+'"]').attr('title', 'Add to selection');
		  $('span','#categoriesBalloon .content a[wid="'+keywordID+'"]').attr('title', 'Add to selection');
		  //========//
		  
		  $('#filterBlock span[cid="'+categoryID+'"][wid="'+keywordID+'"]').remove();
          $('#categoriesBalloon[cid="'+categoryID+'"] .chosen [wid="'+keywordID+'"]').remove();

          $('#categoriesBlock [cid="'+categoryID+'"] + ul [wid="'+keywordID+'"]').removeClass('added');
          $('#categoriesBalloon[cid="'+categoryID+'"] .content a[wid="'+keywordID+'"]').removeClass('added');

          if($('#filterBlock span[cid="'+categoryID+'"]').length<=2 && $('#filterBlock div[cid="'+categoryID+'"]').length!=0)
          {
            $('#filterBlock span[cid="'+categoryID+'"]').appendTo('#filterBlock p');
            $('#filterBlock div[cid="'+categoryID+'"]').remove();
          };
        };

        if($('#filterBlock p').is(':empty'))
        {
          $('#filterBlock').addClass('inactive').children('p').html('<span>none</span>');
        };

        if(! $('#categoriesBalloon .chosen').children().is('span'))
		{
		  $('#categoriesBalloon .chosen a').remove();
		  $('<em>').html('none').appendTo('#categoriesBalloon .chosen');
		}

        return 1;
}