﻿/// <reference path="jquery.intellisense.js"/>
jQuery.noConflict();
jQuery(document).ready(function()
{
	App.initialise();
});

var App =
{
	initialise: function()
	{
		App.bindIE6Flyouts();

		jQuery("#SearchBar input:text").focus(function()
		{
			this.value = "";
		});

		jQuery(".PanelList div.PanelListInner2").each(App.bindHover);

		App.bindComments();
		App.bindGroupMap();
	},

	bindIE6Flyouts: function()
	{
		if (jQuery.browser.msie && parseInt(jQuery.browser.version) == 6)
		{
			jQuery("#Nav > ul > li").each(function(i)
			{
				var parentItem = jQuery(this);
				parentItem.find("li:first").addClass("FirstChild");
				parentItem.mouseover(function()
				{
					jQuery(this).toggleClass("Hover");
				});
				parentItem.mouseout(function()
				{
					jQuery(this).toggleClass("Hover");
				});
			});
		}
	},

	bindComments: function()
	{
		var comments = jQuery("#Comments");
		var header = jQuery("#CommentsHeader");

		var hiddenOnLoad = (jQuery.cookie("ShowComments") == null || jQuery.cookie("ShowComments") == "false");
		if (hiddenOnLoad)
		{
			comments.hide();
		}

		var changeText = function(visible)
		{
			header.find("span").text("Click here to " + (visible ? "show" : "hide") + " comments");
		};

		changeText(hiddenOnLoad);
		header.addClass("Dynamic");
		header.click(function()
		{
			var show = (comments.css("display") == "none");
			if (show) comments.slideDown("slow", function() { changeText(false) });
			else comments.slideUp("slow", function() { changeText(true) });
			jQuery.cookie("ShowComments", show, { expires: 7 });
		});
	},

	bindGroupMap: function()
	{
		if (jQuery.browser.msie)
		{
			jQuery("#Main").prepend(jQuery("#MapCanvas"));
		}
	},

	getPreviousCaseStudy: function(resultsHandler)
	{
		App.ajax("GetPreviousCaseStudy", null, resultsHandler);
	},

	getNextCaseStudy: function(resultsHandler)
	{
		App.ajax("GetNextCaseStudy", null, resultsHandler);
	},

	bindHover: function()
	{
		var item = jQuery(this);
		var link = item.find("h3 a");
		if (link.length > 0)
		{
			item.addClass("Hover");
			item.click(function(evt)
			{
				if (evt.target.tagName != "A")
				{
					var target = link.attr("target");
					if (target)
					{
						window.open(link.attr("href"), target);
					}
					else
					{
						window.location.href = link.attr("href");
					}
				}
			});
		}
	},

	ajax: function(methodName, data, successHandler, errorHandler)
	{

		if (!data) data = {};
		if (!successHandler) successHandler = function(data, textStatus) { return true; }
		if (!errorHandler) errorHandler = function(xhr, textStatus, errorThrown)
		{
			try
			{
				var errorJson = eval("(" + xhr.responseText + ")");
				var msg = "";
				if (errorJson.ExceptionType)
				{
					msg += errorJson.ExceptionType + "\n";
				}
				if (errorJson.Message)
				{
					msg += errorJson.Message + "\n";
				}
				if (errorJson.StackTrace)
				{
					msg += "\nStack Trace:\n" + errorJson.StackTrace;
				}
				if (msg)
				{
					alert(msg);
					return;
				}
			}
			catch (ex) { }
			alert(textStatus + "\nResponse status code: " + xhr.status);
		}

		return jQuery.ajax(
		{
			type: "POST",
			url: "/AjaxHandler.axd/" + methodName,
			contentType: "application/json; charset=utf-8",
			dataType: "json",
			processData: false,
			data: JSON.stringify(data),
			success: function(data, textStatus)
			{
				if (data.d) data = data.d;
				successHandler(data, textStatus);
			},
			error: errorHandler
		});
	}
}

