﻿var App = 
{
	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
		});
	},
	
	alertTest:function()
	{
		alert("Test");
	},
	
	getTimeArrowEvents:function(resultsHandler, startDate, timeArrowSpan, timelineID, categoryID)
	{
		var arrowState = { StartDate : startDate, TimeArrowSpanDays : timeArrowSpan, TimelineIDFilter : timelineID, CategoryIDFilter : categoryID };
		App.ajax("GetTimeArrowEvents", arrowState, resultsHandler);
	},
	
	getPreviousCaseStudy:function(resultsHandler)
	{
		App.ajax("GetPreviousCaseStudy", null, resultsHandler);
	},
	
	getNextCaseStudy:function(resultsHandler)
	{
		App.ajax("GetNextCaseStudy", null, resultsHandler);
	}
}

