(function($){
	
	$(document).ready(function(){
		
		//Wrappers
		var search_form_wrapper = $('#search_form');
		var categories_wrapper = $('#categories');
		var time = 1000;
		
		//Toggle categories
		
		if($.cookie('show_categories')){
			categories_wrapper.css({'height': $('#categories .wrapper').outerHeight() + 'px', 'opacity': 1});
			$('#main_menu_wrapper .categories').addClass('pressed');
			}
		
		var toggle_categories = function(){
			if(categories_wrapper.css('height') == '0px'){
				if(search_form_wrapper.css('height') != '0px')
					toggle_search();
				
				categories_wrapper.css({
					'height': '0px',
					'opacity': '0'
					});
				
				categories_wrapper.animate({'height': $('#categories .wrapper').outerHeight() + 'px', 'opacity': 1}, time);
				$('#main_menu_wrapper .categories').addClass('pressed');
				$.cookie('show_categories', true);
				}
			else{
				$('#main_menu_wrapper .categories').removeClass('pressed');
				categories_wrapper.animate({'height': '0px', 'opacity': 0}, time);
				$.cookie('show_categories', null);
				}
			}
		
		$('#main_menu_wrapper .categories').click(function(){
			toggle_categories();
			return false;
		});
		//END CATEGORIES
		
		
		
		
		
		//Toggle search
		var toggle_search = function(){
			if(search_form_wrapper.css('height') == '0px'){
				
				if(categories_wrapper.css('height') != '0px')
					toggle_categories();
					
				search_form_wrapper.css({
					'height': '0px',
					'opacity': '0'
					});
				search_form_wrapper.animate({'height': $('div', search_form_wrapper).outerHeight() + 'px', 'opacity': 1}, time, null, function(){
					$(this).css('overflow', 'visible');
					});
				$('#main_menu_wrapper .search').addClass('pressed');
				}
			else{
				search_form_wrapper.css('overflow', 'hidden');
				$('#main_menu_wrapper .search').removeClass('pressed');
				search_form_wrapper.animate({'height': '0px', 'opacity': 0}, time);
				}
			}
		$('#main_menu_wrapper .search').click(function(){
			toggle_search();
			return false;
		});
		//END search
		
		
		
		
		
		//RATING
		
		var render_rating = function(){
			var controller = this.parentNode.parentNode;
			var p = this._id;
			for(var i = 0; i < 5; ++i){
				controller._as.get(i).firstChild.src = controller._url + ( i >= p + 1 ? 'no_' : '' ) + 'star.png';
				
				}
			
			}
		
		
		$('.folty_site_rating_wrapper').each(function(){
			
			if($(this).hasClass('folty_rated')){
				$(this).click(function(){
					alert('Already rated...');
					return false;
				});
				return false;
				}
			var count = 0;
			
			var as = $('a', this);
			this._as = as;
			this._url = $('input[name="img"]', this).get(0).value;
			this._script = $('input[name="script"]', this).get(0).value;
			as.click(function(){
					var link = this;
					
					$(this.parentNode.parentNode).animate({'opacity': 0.25}, 'fast');
					
					$.get(this.parentNode.parentNode._script + parseInt((this._id+1) * 100 / 5), function(data, textStatus){
						
						$(link.parentNode.parentNode).animate({'opacity': 1}, 'fast');
						
						data = eval('('+ data +')');
						
						if(data.response == 'success'){
							
							$('.folty_site_votes span', link.parentNode.parentNode).html(data.votes);
							$(link.parentNode.parentNode).addClass('folty_rated');
							
							link.parentNode.parentNode.onmouseout = null;
							
							$('a', link.parentNode.parentNode).unbind().click(function(){return false;});
							var p = data.rating / 100 * 5;
							for(var i = 0; i < 5; ++i){
								link.parentNode.parentNode._as.get(i).firstChild.src = link.parentNode.parentNode._url + ( i >= p ? 'no_' : '' ) + 'star.png';
								}
							
							
							}
						
					}, 'json');
					
					return false;
			});
			
			as.each(function(){
				this._id = count++;
			});
			
			as.mouseover(function(){
				render_rating.call(this);
			});
			
			this.onmouseout = function(ev){
				ev = ev || window.event;
				var relatedTarget = ev.toElement || ev.relatedTarget;
				
				_parent = relatedTarget;
				while(_parent && _parent != this)
					_parent = _parent.parentNode;
				
				if(!_parent || _parent == window){
					
					var p = parseInt($('.folty_site_rating', this).attr('title')) / 100 * 5;
					for(var i = 0; i < 5; ++i){
						this._as.get(i).firstChild.src = this._url + ( i >= p ? 'no_' : '' ) + 'star.png';
						}
					
					}
				
				}
			
			
		});
		//END RATING
		
		
		
		
		//GALLERY
		
		var blind_wrapper = document.createElement('div');
		var gallery_wrapper = document.createElement('div');
		
		
		$(blind_wrapper).css({
			'position': 'absolute',
			'width': '100%',
			'height': $(document).height() + 'px',
			'background': '#000',
			'opacity': 0.75,
			'top': '0px',
			'left': '0px',
			'z-index': 999,
			'display': 'none'
			});
		$(blind_wrapper).click(function(){
			
			$(gallery_wrapper).animate({'opacity': 0}, 'fast', function(){
				$(gallery_wrapper).css({'display': 'none'});
			});
			
			$(blind_wrapper).animate({'opacity': 0}, 'fast', function(){
				$(blind_wrapper).css({'display': 'none'});
			});
		});
		document.body.appendChild(blind_wrapper);
		
		
		$(gallery_wrapper).css({
			'position': 'absolute',
			'opacity': 0,
			'top': '50%',
			'left': '50%',
			'z-index': 1000,
			'display': 'none'
			}).addClass('gallery_wrapper');
		
		$(gallery_wrapper).click(function(){
			
			$(blind_wrapper).animate({'opacity': 0}, 'fast', function(){
				$(blind_wrapper).css({'display': 'none'});
			});
			
			$(gallery_wrapper).animate({'opacity': 0}, 'fast', function(){
				$(gallery_wrapper).css({'display': 'none'});
			});
			
		});
		document.body.appendChild(gallery_wrapper);
		
		
		$('.full_image').click(function(){
			
			$(blind_wrapper).css({'opacity': 0, 'display': 'block'});
			$(gallery_wrapper).css({'opacity': 0, 'display': 'block'});
			
			$(gallery_wrapper).html('<img src="'+ $('img',this).get(0).src +'" />');
			var img = $('img', gallery_wrapper);
			
			
			img.css({
				'max-width': ($(window).width() - 100)+ 'px'
			});
			$(gallery_wrapper).css({
				'top': ( parseInt(($(window).height() - img.height()) / 2) + $(document).scrollTop() ) + 'px',
				'width': img.width() + 'px',
				'margin-left': '-' + parseInt(img.width() / 2) +'px'
			});
			
			
			$(blind_wrapper).animate({'opacity': 0.75}, 'fast', function(){
				$(gallery_wrapper).animate({'opacity': 1}, 'fast');
			});
			
			
			return false;
			
		});
		
		//END GALLERY
		
		
		
		//INDEX
		
		
		
			$('.folty_sites').removeClass('folty_no_js');
			$('.folty_sites .folty_site_meta').css({'opacity': 0, 'display': 'block'});
			
			var count = 0;
			
			var fade_in = function(){
				if(this._p < 100){
					this._p += 9;
					$(this).css({'opacity': this._p / 100 });
					return true;
					}
				else {
					$(this).css({'opacity': 1 });
					return false;
					}
				}
			
			
			var fade_out = function(){
				if(this._p > 0){
					this._p -= 2;
					$(this).css({'opacity': this._p / 100 });
					return true;
					}
				else {
					$(this).css({'opacity': 0 });
					return false;
					}
				}
			
			
			$('.folty_sites .folty_site_meta').each(function(){
				
				this._id = count++;
				this._meta = this;
				this._img = $('.folty_site_img', this.parentNode).get(0);
				this._p = 0;
				
				this.onmouseover = function(ev){
					
					ev = ev || window.event;
					var relatedTarget = ev.fromElement || ev.relatedTarget;
					_parent = relatedTarget;
					while(_parent && _parent != this)
						_parent = _parent.parentNode;
					
					if(!_parent || _parent == window){
					
						ijs.worker.add_work('site_'+this._id, fade_in, this);
						
						}
					
				}
				
				this.onmouseout = function(ev){
					
					ev = ev || window.event;
					var relatedTarget = ev.toElement || ev.relatedTarget;
					
					_parent = relatedTarget;
					while(_parent && _parent != this)
						_parent = _parent.parentNode;
					
					
					if(!_parent || _parent == window){
						
						ijs.worker.add_work('site_'+this._id, fade_out, this);
						
						}
					
				}
			
		});
	
	
	//Ads
	var ads_wrapper = $('.adblock');
	for(var i = 0, c = 6 - $('.adblock a').length;  i < c; ++i){
		
		ads_wrapper.append($($('.adblock a').get( $('.adblock a').length - 1 )).clone());
		//console.log($($('#header_ads a').get( $('#header_ads a').length - 1 )).clone());
		
		}
	
	
	});

	
})(jQuery);