var $p  =
{
	height: 497,
	items: {},
	slide: function(){return $("#thumb-items");},
	slides: function(){return $p.get_current().find("a");},
	nav: function(){return $("#current-navigation");},
	current_cont: function(){return $("#current-thumb");},
	get_current: function(){return $('.thumb-items').eq($p.current_index);},
	current_index: -1,
	
	load_items: function()
	{
		$.ajax({url:'/application/request/get_photos'
			   ,success:function(data)
			   {
					$p.items = utils.eval(data);   
					$p.init();
			   }});
		
	},
	init:function()
	{
		/*
		if($.browser.msie && $.browser.version < 7)
		$.getScript('/assets/js/utils/img-zoom/jquery.ifixpng.js');
		if(!$.browser.msie)
		$.getScript('/assets/js/utils/img-zoom/jquery.shadow.js');
		$.getScript('/assets/js/utils/img-zoom/jquery.fancyzoom.min.js');
		*/
		
		if($p.items.length == 0) return;
		
		var slide = $p.slide();
		var current = -1;
		var toload = [];
		
		
		for(cat in $p.items)
		{
			if(current != $p.items[cat][0].cat_id)
			{
				if(appendTo) appendTo.append('<div class="clear" />');
				var appendTo = $("<div class='thumb-items' id='cat-"+cat+"' />")
									.data("content", {index:cat})
									.appendTo(slide);
				$('<div class="cat-dd">'+$p.items[cat][0].cat_name+'</div>')
					.data("content",{id:$p.items[cat][0].cat_id
									,name:$p.items[cat][0].cat_name
									,short:utils.short_string($p.items[cat][0].cat_name,40)
									,index:cat
									})
					.bind('click',function()
					{
						$("#cat-dd .cat-dd").removeClass("cat-active");
						var data = $(this).addClass("cat-active").data("content");
						$("#cat-dd").trigger("mouseout");
						$p.switch_cat(data.index);
					})
					.hover(
						   function(){$(this).addClass("hover");},
						   function(){$(this).removeClass("hover");}
						   )
					.appendTo("#cat-dd");
			}
			
			
			for(i in $p.items[cat])
			{
				var a = $('<a href="javascript:;" id="i-'+$p.items[cat][i].id+'" class="gallery-thumb">'
								+'<img src="/assets/application/gallery/1/'+$p.items[cat][i].img+'" /></a>')
							.data("content",$p.items[cat][i])
							.bind("click",function(){location.hash = '#load-'+$(this).data('content').id;})
							.appendTo(appendTo);
				toload.push($p.items[cat][i].img);
			}
		}
		
		if(appendTo) appendTo.append('<div class="clear" />');
		
		
		$(".thumb-items").each(function()
		{
			$(this).height($(this).outerHeight()).css({top:'-'+$(this).outerHeight()+'px'});
		});
		
		
		var close_dd;
		$("#cat-dd,#cat-dd *").hover(
			function(){clearTimeout(close_dd);},
			function(){close_dd = setTimeout(function(){$("#cat-dd").removeClass("cat-dd-open");},300);}
			);
		
		$("#categories").bind("click",
		function()
		{
			if($("#cat-dd").is(":hidden"))
			{
				$("#cat-dd").addClass("cat-dd-open").height($("#cat-dd").innerHeight());
			}
			else
				$("#cat-dd").trigger("mouseout");
		});
		
		$(".arrow-bottom,.arrow-up")
			.unbind('click')
			.bind('click',function(){return false;})
			.addClass("inactive");
			
		$p.current = '';
		
		setInterval(function()
		{
			var hash = location.hash.replace('load','i');
			if(hash == '')
			{
				$p.switch_cat(0,true);
				return;
			}
			
			if(hash == $p.current) return;
			$p.current = hash;
			$p.switch_cat('notset');
			
		},25);
		
		$p.nav().find(".next").bind("click",$p.next_pic);
		$p.nav().find(".prev").bind("click",$p.prev_pic);
		$p.nav().find(".loop").bind("click",$p.open_pic);
		$("#current-thumb").bind("click",$p.open_pic);
		
		for(i in toload)
		{
			$("#dummy-loader-thumb").append('<img src="/assets/application/gallery/2/'+toload[i]+'" />');
		}
		
		
	},
	anime_top: function()
	{
		$(".arrow-down")
			.unbind('click',$p.anime_top)
			.bind('click',function(){return false;});
		$p.get_current().animate({top:'-='+$p.height+'px'},500,'',$p.arrows);
		return false;
	},
	anime_bottom: function()
	{
		$(".arrow-up")
			.unbind('click',$p.anime_bottom)
			.bind('click',function(){return false;});
		$p.get_current().animate({top:'+='+$p.height+'px'},500,'',$p.arrows);
		return false;
	},
	arrows: function()
	{
		var container = $p.get_current();
		var length = Math.ceil($p.slides().length/21);
		var top = parseInt(container.css('top').replace('px',''));
				
		if(top == -((length-1)*$p.height) || length == 1)
		{
			$(".arrow-down")
				.unbind('click',$p.anime_top)
				.bind('click',function(){return false;})
				.addClass('inactive');
		}
		else if(length>1)
		{
			$(".arrow-down").bind('click',$p.anime_top).removeClass("inactive");
		}

		if(top == 0 || length == 1)
		{
			$(".arrow-up")
				.unbind('click',$p.anime_bottom)
				.bind('click',function(){return false;})
				.addClass('inactive');
		}
		else if(length>1)
		{
			$(".arrow-up").bind('click',$p.anime_bottom).removeClass("inactive");
		}

		return this;
	},
	change_pic: function()
	{
		$p.slides().removeClass('active');
		var current = $($p.current)
		if(current.length == 0)
		{
			$p.slides().eq(0).trigger("click");
			return;
		}
		
		current.addClass('active');
		var data = current.data("content");
		
		var index = $p.slides().index(current);
		var suppose_top = Math.floor(index/21) * $p.height;
		$p.get_current().animate({top:'-'+suppose_top+'px'},500,'',$p.arrows);
		
		$p.current_cont().find("img").fadeTo(300,0.1,function(){$(this).attr({src:'/assets/application/gallery/2/'+data.img}).fadeTo(300,1);});
		
		if( (data.title+data.txt).replace(/[\n\t\r\s]+/g,'')=='')
			$("#photo-description").hide();	
		else
			$("#photo-description").show();	
		$("#current-thumb-title").html(data.title);
		$("#current-thumb-descr").html(data.txt.replace(/\n/g,'<br />'));
		
		$("#dummy-loader-thumb").append('<img src="/assets/application/gallery/2/'+data.img+'" />');
		
	},
	next_pic: function()
	{
		var next = 	$p.get_current().find(".active").next("a");
		if(next.length == 0)
			next = $p.get_current().find("a:eq(0)");
		next.trigger("click");
		return false;
	},
	prev_pic: function()
	{
		var next = 	$p.get_current().find(".active").prev("a");
		if(next.length == 0)
			next = $p.get_current().find("a:last");
			
		next.trigger("click");
		return false;
	},
	open_pic: function()
	{
		$($p.current).clone()
			.attr({href:'/assets/application/gallery/'+$($p.current).data('content').img})
			.appendTo("#dummy-node-thumb")
			.colorbox({})
			.trigger('click').remove();
		return false;
		
	},
	switch_cat: function(index,init)
	{
		if(index == 'notset')
		{
			index = $(".thumb-items").index($($p.current).parent());
		}
		
		if($p.current_index == index)
		{
			$p.change_pic();
			return;
		}
		
		$p.current_index = index;
		$("#categories").html($("#cat-dd .cat-dd").eq(index).data("content").short);
		
		if(init)
		{
			$p.slides().eq(0).trigger("click");
			return;
		}
		
		$(".thumb-items").each(function()
		{
			$(this).animate({top:'-'+$(this).height()+'px'},500);
		});
		
		setTimeout(function()
			{
				$p.get_current().animate({top:0},500,''
					,function()
					{
						if($p.current=='' || $($p.current).parent().data("content").index != index)
							$p.slides().eq(0).trigger("click");
						else
							$p.change_pic();
					});
			},520);
	}

	
	
};

$($p.load_items);