var timeout = 0;
var isScrolling = false;
var worksSlider, worksGallery;
var isFirstWorksLoad = true;
var contactForm, submitContactForm;
var sent = false;

$(document).ready(function(){
	Cufon.replace('.info span', { fontFamily: 'VersaSansCon-NormalItalic' });
	Cufon.replace('div.status, div.quote h1, .info em, h3', { fontFamily: 'VersaSansCon-BoldItalic' });
	Cufon.replace('div.quote h2, div.quote p, .box p, .box ul, #footer span, #email', { fontFamily: 'VersaSansCon-SemiBoldItalic' });
	Cufon.replace('#contact .list a', { fontFamily: 'VersaSansCon-SemiBoldItalic', "hover": { "color": "#34250d" } });
	
	contactForm = $("#contact-form");
	submitContactForm = $("#send-it");
	contactForm.find("input, textarea").val("");
	
	var workItems = $("#work-items .item"); 
	workItems.hover(function() {
		$(this).find("a.hover").fadeIn("fast",function(){
			$(this).find("a.basic").fadeOut();
		});
	}, function() {
		$(this).find("a.hover").fadeOut(function(){
			$(this).find("a.basic").fadeIn();
		});
	});
	
	var navButtons = $(".navigation a"); 
	navButtons.click(function(){
		isScrolling = true;
		var self = $(this);
		var id = $(this).attr("href").substring(1);
		$.scrollTo("#"+id,1500,{
			"onAfter": function(){
				isScrolling = false;
				self.removeClass("hover");
			}
		});
		
		return false;
	});
	
	navButtons.hover(function(){
		if (!isScrolling) 
			$(this).addClass("hover");
	}, function(){
		if (!isScrolling)
			$(this).removeClass("hover");
	});
	
	worksGallery = $("#works-gallery");
	isFirstWorksLoad = true;
	workItems.click(function(){
		var self = this;
		worksSlider = worksGallery.find(".slider");
		
		worksSlider.removeAttr("style").empty();
		worksSlider.cycle("destroy");
		
		worksGallery.find("#client, #agency, #worktype, #description").empty();
		
		$.scrollTo(360,1000,function(){
			if (worksGallery.height() == 0) {
				worksGallery.find(".content").css({ "height": "500px" });
			
				worksGallery.animate({ "height": "690px" },1000, function(){
					worksGallery.css({"height": "auto"});
					
					var projectId = self.id.substring(4);
					var project = projects_info[projectId];
					var projectGallery = projects[projectId].photos;
					
					loadImages(projectGallery,0,project);
				});
			} else {
				var projectId = self.id.substring(4);
				var project = projects_info[projectId];
				var projectGallery = projects[projectId].photos;
				
				loadImages(projectGallery,0,project);
			}
		});
		
		return false;
	});
	
	worksGallery.find(".return").click(function(){
		worksGallery.animate({ "height": "0px" },1000);
		isFirstWorksLoad = true;
	});
	
	contactForm.find("label").click(function() {
		$(this).parent().find("input").focus();
		$(this).parent().find("textarea").focus();
	});
	contactForm.find("input, textarea").focus(function() {
		$(this).parent().find("label").hide();
	});
	contactForm.find("input, textarea").blur(function() {
		if ($.trim($(this).val()) == "") {
			$(this).parent().find("label").show();
			$(this).val("");
		}
	});
	
	$(".preview").click(function(){
		var self = $(this);
		var parent = self.parent().parent();
		var prevButton = parent.find(".slider-prev"); 
		var nextButton = parent.find(".slider-next");
		
		if (parent.hasClass("expanded")) {
			parent.removeClass("expanded");
			self.removeClass("close");
			
			prevButton.hide();
			nextButton.hide();
			parent.find(".content").animate({ "height": "100px" }, 1000);
			
			parent.find(".slider").cycle("destroy");
		} else {
			parent.addClass("expanded");
			self.addClass("close");
			var currentHeight = parent.find("img.default").height();
			
			if (parent.find("img").length > 1) {
				parent.find(".slider").cycle({
					"timeout": timeout,
					"prev": prevButton,
					"next": nextButton,
					"before": function(a,b) {
						var height = $(b).height();
						
						parent.find(".content").animate({ "height": (height-70)+"px" }, 1000, function(){
							if (parent.find("img").length > 1) {
								prevButton.show();
								nextButton.show();
							}
						});
					}
				});
			} else {
				var height = parent.find("img").height();
				
				parent.find(".content").animate({ "height": (height-70)+"px" }, 1000, function(){
					if (parent.find("img").length > 1) {
						prevButton.show();
						nextButton.show();
					}
				});
			}
		}
		
		return false;
	});
	
	$("#send-it").click(send);
	
	$("#contact .list a").click(function () {
        var newWindow = window.open(this.getAttribute('href'), '_blank');
        newWindow.focus();
        return false;
    });
});

$(window).load(function(){
	$(".gallery .item.gallery-item").each(function(){
		var selfProject = $(this);
		var id = this.id.substring(4);
		if (typeof projects[id].photos != "undefined") {
			var photos = projects[id].photos;
			var isFirst = true;
			for(var i in photos) {
				var filename = photos[i].filename;
				
				var photo = new Image();
				photo.src = uploadURL+"gallery/"+filename;
				photo.alt = filename;
				selfProject.find(".slider").append(photo);
				selfProject.find(".frame").removeClass("loader");
				
				/*
				var photo = new Image();
				photo.src = uploadURL+"gallery/"+filename;
				photo.alt = filename;
				if (photo.complete) {
					selfProject.find(".slider").append(photo);
					selfProject.find(".frame").removeClass("loader");
				} else photo.onload = function(){
					selfProject.find(".slider").append(photo);
					selfProject.find(".frame").removeClass("loader");
				};
				*/
			}
		}
	});
});

function loadImages(projectGallery, currentLoadImage,project) {
	var totalImages = projectGallery.length;
	var photo = projectGallery[currentLoadImage];
	var filename = uploadURL+"gallery/"+photo.filename;
	
	var img = new Image();
	img.src = filename;
	img.alt = photo.filename;
	img.style.display = "none";
	
	if (img.complete) {
		worksSlider.append(img);
		if (currentLoadImage < totalImages - 1)
			loadImages(projectGallery, parseInt(currentLoadImage) + 1, project);
		else
			worksSliderBuild(project);
	} else {
		img.onload = function(){
			worksSlider.append(img);
			if (currentLoadImage < totalImages - 1)
				loadImages(projectGallery, parseInt(currentLoadImage) + 1, project);
			else
				worksSliderBuild(project);
		};
	}
	
	return false;
	
//	var img = $("<img/>", { "src": filename, "alt": photo.filename, "style": "display: none;" });
//	worksSlider.append(img);
//	img.load(function(){
//		if (currentLoadImage < totalImages - 1)
//			loadImages(projectGallery, parseInt(currentLoadImage) + 1, project);
//		else
//			worksSliderBuild(project);
//	});
}

function worksSliderBuild(project) {
	worksSlider.find("img").show();
	var prevButton = worksGallery.find(".slider-prev"); 
	var nextButton = worksGallery.find(".slider-next");
	
	if (worksSlider.find("img").length > 1) {
		worksSlider.cycle({ 
			"timeout": timeout,
			"prev": prevButton,
			"next": nextButton,
			"before": function(a,b) {
				var height = $(b).height();
				
				worksGallery.find(".content").animate({ "height": (height-63)+"px" }, 1000);
				prevButton.show();
				nextButton.show();
				
				/*
				if (isFirstWorksLoad) {
					isFirstWorksLoad = false;
					
					if (worksSlider.find("img").length > 1) {
						prevButton.show();
						nextButton.show();
					}
					
					worksGallery.find(".content").css({ "height": (height-63)+"px" });
					
					worksGallery.animate({ "height": "800px" },1000, function(){
//						worksGallery.css({ "height" : "auto" });
						
					});
				} else {
					worksGallery.find(".content").animate({ "height": (height-63)+"px" }, 1000);
					prevButton.show();
					nextButton.show();
				}
				*/
			}
		});
	} else {
		var height = worksSlider.find("img").height();
		worksGallery.find(".content").animate({ "height": (height-63)+"px" }, 1000);
		prevButton.hide();
		nextButton.hide();
		
		/*
		if (isFirst) {
			isFirst = false;
			worksGallery.find(".content").css({ "height": (height-63)+"px" });
			worksGallery.animate({ "height": (height+127)+"px" },1000, function(){
				worksGallery.css({"height":"auto"});
				prevButton.hide();
				nextButton.hide();
			});
		} else {
			worksGallery.find(".content").animate({ "height": (height-63)+"px" }, 1000);
			prevButton.hide();
			nextButton.hide();
		}
		*/
	}
	
	worksGallery.find("#client").html("<em>Client:</em> "+project.client);
	worksGallery.find("#agency").html("<em>Agency:</em> "+project.agency);
	worksGallery.find("#worktype").html("<em>Worktype:</em> "+project.worktype);
	worksGallery.find("#description").html(project.description);
	
	Cufon.replace("#works-gallery .info span");
	Cufon.replace("#works-gallery .info em");
};

function send() {
	if (!sent) {
		var form = $("#contact-form");
		var email = $.trim(form.find("input[name=email]").val());
		var name = $.trim(form.find("input[name=name]").val());
		var message = $.trim(form.find("textarea").val());
		
		var errors = false;
		
		if (!echeck(email)) errors = true; 
		if (name == "") errors = true;
		if (message == "") errors = true;
		
		var emailHolder = $("#email");
		if (!errors) {
			emailHolder.empty().text("Message successfully sent!");
			Cufon.replace("#email", { fontFamily: 'VersaSansCon-SemiBoldItalic' });
			sent = true; 
			
			$.ajax({
				"url": sendMessageUrl,
				"data": form.serialize(),
				"type": "POST"
			});
			
		} else {
			emailHolder.empty().text("All fields are required!");
			Cufon.replace("#email", { fontFamily: 'VersaSansCon-SemiBoldItalic' });
		}
	}
	
	return false;
};

function echeck(str) {
	var at="@";
	var dot=".";
	var lat=str.indexOf(at);
	var lstr=str.length;
	var ldot=str.indexOf(dot);

	if (str.length == 0) {return false; }
    if (str.indexOf(at)==-1){ return false; }
	if (str.indexOf(at)==-1 || str.indexOf(at)==0 || str.indexOf(at)==lstr){ return false; }
	if (str.indexOf(dot)==-1 || str.indexOf(dot)==0 || str.indexOf(dot)==lstr){ return false;}
	if (str.indexOf(at,(lat+1))!=-1) { return false; }
	if (str.substring(lat-1,lat)==dot || str.substring(lat+1,lat+2)==dot) { return false; }
	if (str.indexOf(dot,(lat+2))==-1) {return false; }
	if (str.indexOf(" ")!=-1) { return false; }
	return true;
};
