/**
 * Polaris
 */

var Design = {
	Data : {
		active_set : null
	},

	bindKeys : function() {
		Cargo.Core.KeyboardShortcut.Add("Left", 37, function() {
			Action.Project.Prev();
			return false;
		});

		Cargo.Core.KeyboardShortcut.Add("Right", 39, function() {
			Action.Project.Next();
			return false;
		});
	},
	
	hoverProject: function() {
		// Thumbnail hover
		$(".thumbnails")
			.on("mouseenter", ".project_thumb", function(e) {
				$(".project_link[data-id='" + $(this).attr("data-id") +"'] a").addClass("hover");
			})
			.on("mouseleave", ".project_thumb", function(e) {
				$(".project_link[data-id='" + $(this).attr("data-id") +"'] a").removeClass("hover");
			});

		// Navigation
		$(".navigation")
			.on("mouseenter", ".project_link a", function(e) {
				$(".project_thumb[data-id='" + $(this).closest('.project_link').attr("data-id") +"']").addClass("hover");
			})
			.on("mouseleave", ".project_link a", function(e) {
				$(".project_thumb[data-id='" + $(this).closest('.project_link').attr("data-id") +"']").removeClass("hover");
			});
	},

	checkNavigationHeight: function() {
		var navigation = $(".navigation [data-view='Navigation'] .set_link.open .set_wrapper");

		if (navigation.length > 0) {
			if (navigation.height() + navigation.offset().top > $(window).height()) {
				if (!$(".navigation:first").hasClass("scroll")) {
					$(".navigation:first").removeClass("fixed").addClass("scroll")
					$(".site_header").removeClass("fixed").addClass("scroll");
				}
			} else {
				if (!$(".navigation:first").hasClass("fixed")) {
					$(".navigation:first").removeClass("scroll").addClass("fixed")
					$(".site_header").removeClass("scroll").addClass("fixed");
				}
			}
		} else {
				if (!$(".navigation:first").hasClass("fixed")) {
					$(".navigation:first").removeClass("scroll").addClass("fixed")
					$(".site_header").removeClass("scroll").addClass("fixed");
				}
			}
	},

	checkSetVisibility: function() {
		// Find the active set based on the project ID
		var parentSet = $("[data-setid='" + Cargo.Model.Project.GetSetId() + "']"),
			otherSets = $("[data-setid]").not(parentSet);

		// If the set exists, set active/inactive
		if (parentSet.length > 0) {
			otherSets.removeClass("active").addClass("inactive");
			parentSet.removeClass("inactive").addClass("active");

			// Show the footer link
			$(".set_footer").show();
		} else {
			$(".set_footer").hide();
		}
	},

	checkSetSpacing: function() {
		$(".set_link").removeClass("first-set last-set spacer");

		var first_set = $("[data-view='Navigation'] .set_link:first"),
			last_set = $("[data-view='Navigation'] .set_link:last");

		first_set.addClass("first-set");
		last_set.addClass("last-set");

		if (Cargo.Model.DisplayOptions.attributes.use_set_links) {
			var setLinksPosition = Cargo.Model.DisplayOptions.GetSetLinksPosition();

			if (first_set.attr("id") == last_set.attr("id")) {
				// Only one set
				if (setLinksPosition == "top") {
					last_set.addClass("spacer").removeClass("first-set");
				} else if (setLinksPosition == "bottom") {
					first_set.addClass("spacer");
				}
			} else {
				if (setLinksPosition == "top") {
					last_set.addClass("spacer");
				} else if (setLinksPosition == "bottom") {
					first_set.add(last_set).addClass("spacer");
				}
			}
		}
	},

	showActiveSet: function() {
		if (Cargo.Model.Project.GetType() == "project") {
			// First, remove all active sets
			$("[data-view='Navigation'] .set_link").removeClass('set_active').addClass('closed').removeClass('open');;

			var set_id = Cargo.Model.Project.GetSetId();
			$("#menu_"+set_id).addClass('set_active').addClass('closed').removeClass('open');

			Design.Data.active_set = $(".set_link.set_active");
			$("#under_navigation").show();
		} else if(!Cargo.Helper.IsFilter()) {
			$("#under_navigation").hide();
		}
	},

	toggleSet: function() {
		if( !$(".set_link").hasClass('open') ) {
			this.showContentHideSet();
		} else {
			this.hideContentShowSet();
		}
	},

	hideContentShowSet: function() {
		$(".navigation").addClass('scroll');
		$(".site_header").addClass('scroll');
		Design.Data.active_set = $(".set_link.set_active");
		$(".set_link.set_active").removeClass('set_active');
		Cargo.View.ProjectDetail.$el.hide();
		$("#under_navigation").hide();
		window.scrollTo(0,0);
	},

	showContentHideSet: function() {
		$(".navigation").removeClass('scroll');
		$(".site_header").removeClass('scroll');
		if(Design.Data.active_set) {
			Cargo.View.ProjectDetail.$el.show();
			Design.Data.active_set.addClass('set_active');
			if(Cargo.Model.Project.GetSetId()) {
				$("#under_navigation").show();
			}
		}
	}
};

/**
 * Events
 */

$(function() {
	Cargo.Core.ReplaceLoadingAnims.init();

	Design.bindKeys();
	Design.hoverProject();
	Design.checkSetSpacing();
	// Design.checkNavigationHeight();
	Design.showActiveSet();

	Cargo.View.ProjectDetail.$el.show();
});

// Window Resize
$(window).resize(function() {
	// Design.checkNavigationHeight();
});

// Project Load Complete
Cargo.Event.on("project_load_complete", function(pid) {
	Design.checkSetVisibility();

	if(Cargo.Model.Project.GetSetId() == 0) {
		$(".set_link.set_active").removeClass('set_active');
		$(".set_thumbs_wrapper.active").removeClass('active').addClass('inactive');
		Design.Data.active_set = null;
	} 

	/*
	 *   Move the project navigation if the default image width is > 670px.
	 */
	
	var defaultImageWidth = parseInt(Cargo.Model.DisplayOptions.GetImageWidth());

	if (defaultImageWidth < 670) {
		defaultImageWidth = 670;
	}

	defaultImageWidth += 305;

	$(".project_navigation").css("left", defaultImageWidth + "px");
});

// Project Close Complete
Cargo.Event.on("show_index_complete", function(pid) {
	Design.toggleSet();
	if( !Cargo.Helper.IsFilter() ) {
		$("#under_navigation").hide();
	}

	setTimeout(function() {
		// Reset sets
		$("[data-setid]").removeClass("active inactive");
		$(".set_footer").hide();
		$("[data-view='Navigation'] .set_link").removeClass('set_active').addClass('closed').removeClass('open');
		Design.Data.active_set = null;
	}, 20);
});

Cargo.Event.on("navigation_reset", function(new_page) {
	Design.checkSetVisibility();
	Design.checkSetSpacing();
	Design.showActiveSet();
});

Cargo.Event.on("reseed_project_complete", function() {
	$("[data-view='Navigation'] .set_link").removeClass('set_active').addClass('closed').removeClass('open');
	Design.checkSetVisibility();
	Design.checkSetSpacing();
	Design.showActiveSet();
});

Cargo.Event.on("reseed_navigation_complete", function() {
	$("[data-view='Navigation'] .set_link").removeClass('set_active').addClass('closed').removeClass('open');
	Design.checkSetVisibility();
	Design.checkSetSpacing();
	Design.showActiveSet();
});

Cargo.Event.on("navigation_set_toggle", function() {
	// Design.checkNavigationHeight();
	Design.toggleSet();
});

// Pagination
Cargo.Event.on("pagination_complete", function(new_page) {
	Design.checkSetVisibility();
	Design.checkSetSpacing();
	window.setTimeout(function() {
		// Design.checkNavigationHeight();
	}, 10);
});

Cargo.Event.on("project_collection_reset", function(new_page) {
	Design.checkSetVisibility();
	Design.checkSetSpacing();
	Design.showActiveSet();

	window.setTimeout(function() {
		// Design.checkNavigationHeight();
	}, 10);
});

Cargo.Event.on("project_load_start", function() {
	$("[data-view='Navigation'] .set_link.open").removeClass('open').addClass('closed');
});


Cargo.Event.on("fullscreen_destroy_hotkeys", function() {
    Design.bindKeys();
});

Cargo.Event.on("add_history", function() { 
	Design.showActiveSet();
	Design.showContentHideSet();
	Cargo.Helper.ScrollToTop();
});

/**
 * Typography
 */

WebFontConfig = {
	google: { families: ["Istok+Web:400,700,400italic,700italic:latin"] }
};

(function() {
	var wf = document.createElement("script");
	wf.src = ("https:" == document.location.protocol ? "https" : "http") + "://ajax.googleapis.com/ajax/libs/webfont/1/webfont.js";
	wf.type = "text/javascript";
	wf.async = "true";
	var s = document.getElementsByTagName("script")[0];
	s.parentNode.insertBefore(wf, s);
})();
