var objDataRequest = null;
var photoManyThumbs = {

	init : function(){
		var that = this;
		this.ourImg = $("#thumbs a img:first");
		this.ourImgWidth = 333;
		this.ourImgHeight = 222;
		this.imgWidth = this.ourImg.width();
		var c = this.imgWidth / this.ourImgWidth;
		this.imgHeight = this.ourImgHeight*c;
		this.newHeight = this.imgHeight+(this.imgHeight*2)/100;
		this.newWidth = this.imgWidth+(this.imgWidth*2)/100;
		$("#thumbs a").each(function(i){
		  	this.style.height = that.imgHeight+"px";
		})
		this.attachEvents();
	},

    attachEvents : function(){
		var that = this;
        $("#thumbs a").hover(
			function(){
				$(this).removeClass("inactive").addClass("active");
			},
            function(){
               $(this).removeClass("active").addClass("inactive");
			}
		);
		$(window).resize(
			function(){
				$("#thumbs a img").attr("style","");
                that.imgWidth = that.ourImg.width();
				var c = that.imgWidth/that.ourImgWidth;
				that.imgHeight = that.ourImgHeight*c;
				that.newHeight = that.imgHeight+(that.imgHeight*2)/100;
				that.newWidth = that.imgWidth+(that.imgWidth*2)/100;
				$("#thumbs a").each(function(){
				  	$(this).height(that.imgHeight);
				});
			}
		);
	}
};

var photoBig = {
    init : function(){
		var that = this;
		this.AllImages = $("#vertical_photos img");
        this.ourImgWidth = 1000;
		this.ourImgHeight = 666;
        this.photoHash = location.href.split('#');
        this.picDescription = $(".picture_description");
		if(this.photoHash[1]){
            for (var i = 0; i < this.AllImages.length; i++) {
				if (Number(this.photoHash[1]) === Number($(this.AllImages[i]).attr("class"))) {
                    this.loadAnother($(this.AllImages[i]));
					return;
				}
			}
		}
		this.photoSize();
		this.attachEvents();
	},

	photoSize : function(){
        var ourImg = $("#photo img:first");
		var imgWidth = ourImg.width();
		var c = imgWidth / this.ourImgWidth;
		ourImg.css("height",this.ourImgHeight*c);
		ourImg.show();
	},

	attachEvents : function(){
		var that = this;
        $(window).resize(
			function(){
				that.photoSize();
			}
		);
	},

    loadAnother : function(obj){
    	var that = this;
		var object = obj.parent().parent().attr("class");
		var picture = obj.attr("class");
		var tmpImg = new Image();
		$(tmpImg).load(
			function(){
				$("#photo img:first").replaceWith("<img src='"+$(this).attr('src')+"' height='333' width='500' />");
                that.photoSize();
				that.attachEvents();
			}
		);
		$.get("/pic",{ object_id : object, picture_index : picture },
			function(data){
				tmpImg.src = $("img",data).attr('src');
				var text = $(".description",data).text();
				if(text.length > 0){
					that.picDescription.show().text($(".description",data).text());
				}
				else{
					that.picDescription.hide();
				}
			});
	}
};

var photoThumb = {
	init: function(){
		var that = this;
		this.w = 30;
		this.h = 19;
		this.firstTime = true;

		this.imgMiddles = [];

		this.thumbCont = $("#vertical_photos");
        this.thumbImg = this.thumbCont.find("img");
        this.thumbImg.height(this.h).width(this.w);
        this.thumbLinks = this.thumbCont.find("a");
		this.thumbCount = this.thumbLinks.length;
		this.picDescription = $(".picture_description");

        this.photoHash = location.href.split('#');
		if(this.photoHash[1]){
            for (var i = 0; i < this.thumbImg.length; i++) {
				if (Number(this.photoHash[1]) === Number($(this.thumbImg[i]).attr("class"))) {
					this.thumbImg.parent().removeClass('selected');
					$(this.thumbImg[i]).parent().addClass('selected');
				    this.calculateMiddles() ;
					this.attachEvents();
					return;
				}
			}
		}
        this.calculateMiddles();
		this.attachEvents();
	},

    calculateMiddles : function(){
        var that = this;
        this.thumbImg.each(
			function(i){
				var offset = $(this).offset().top;
				var halfHeight = that.h / 2;
				that.imgMiddles[i] = offset+halfHeight;
			}
		);
    },

    thumbDockOut : function(){
    	for(var i = 0; i < this.imgMiddles.length; i++){
			this.resizeImage(i, 1);
		}
	},

	loadAnother : function(obj){
		var that = this;
		var object = obj.parent().parent().attr("class");
		var picture = obj.attr("class");
		$.get("/pic",{ object_id : object, picture_index : picture },
			function(data){
				var img = $("#photo img:first").height();
				$("#photo").height(img);
				$("#photo img:first").replaceWith("<img src='"+$("img",data).attr('src')+"' height='333' width='500' />");
				$("#photo img:first").height(img).show();
				$("#photo").css("height","");
				var text = $(".description",data).text();
				if(text.length > 0){
					that.picDescription.show().text($(".description",data).text());
				}
				else{
					that.picDescription.hide();
				}
			});
	},

	zoomImages : function(e){
		for(var i = 0; i < this.imgMiddles.length; i++){
			var zoomFactor = -0.02*(Math.abs(e.pageY - this.imgMiddles[i]))+ 3;
			this.resizeImage(i, zoomFactor);
		}
	},

	zoomImagesAnimate : function(e){
		var that = this;
		for(var i = 0; i < this.imgMiddles.length; i++){
			var coordY = (e.pageY < 300) ? e.pageY : (e.pageY-45);
			var zoomFactor = -0.035*(Math.abs(coordY - this.imgMiddles[i]))+ 3;
			this.resizeImage(i, zoomFactor);
		}
	},

	resizeImage : function(number, zoom){
		var that = this;
		if(zoom > 1){
			var tmpWidth = this.w*zoom;
			var tmpHeight = this.h*zoom;
			if(this.firstTime){
				$(this.thumbImg[number]).animate(
					{
						width: tmpWidth,
						height: tmpHeight
					}, 200, "",
					function(){
						that.firstTime = false;
					}
				);
			}
			else{
				$(this.thumbImg[number]).width(tmpWidth).height(tmpHeight);
			}
		}
		else{
			$(this.thumbImg[number]).width(this.w).height(this.h);
		}
	},

    attachEvents : function(){
		var that = this;
        this.thumbImg.click(
			function(){
				that.thumbImg.parent().removeClass("selected");
				$(this).parent().addClass("selected");
				that.loadAnother($(this));
				window.location.hash = $(this).attr('class');
				return false;
			}
		);
		this.thumbCont.mousemove(
			function(e){
				if(!that.firstTime){
					that.calculateMiddles();
					that.zoomImages(e);
				}
			}
		);
		this.thumbCont.mouseenter(
			function(e){
				that.calculateMiddles();
				that.zoomImagesAnimate(e);
			}
		);
		this.thumbCont.mouseleave(
			function(e){
				that.thumbDockOut();
				that.firstTime = true;
			}
		);
	}
};

var flameAnimation = {
	init: function(){
		var that = this;

		var flame = "<div class='flame png'></div>";

		this.submenuLinks = $(".sub_menu a");
		this.submenuLinks.append(flame);

		this.attachEvents();
	},

    attachEvents : function(){
    	this.submenuLinks.hover(
    		function(){
    			($(".flame",this)).stop();
				($(".flame",this)).animate(
				{
					left: 0
				} , 1000);
    		},
    		function(){
    			($(".flame",this)).stop();
				($(".flame",this)).animate(
				{
					left: -993
				} , 1000);
    		}
    	);
    }
};

$( function() {
	//flameAnimation.init();
	if($("#outer").hasClass('thumbs_container')){
		photoManyThumbs.init();
	}
	else if($("#outer").hasClass('photo_container')){
		photoBig.init();
		photoThumb.init();
	}
});