﻿var fullLoadFlag = false;
var openedEventBlockId = "openedEventBlockId";
var scrollTimeLineTimeout_id = null;
var scrollTimeLineFunction = function (shift)
{
	var _shift;
	if (shift < 0)
		_shift = "-=" + (shift * (-1));
	else
		_shift = "+=" + shift;

	$('#timelineControlContentWrapper').scrollTo({ top: '=0px', left: _shift + 'px' });
	scrollTimeLineTimeout_id = setTimeout("scrollTimeLineFunction('" + shift + "')", 10);
}

$(document).ready(function ()
{
	//	LoadContent
	var createTimelineBlock = function (number, name, data, baseCollectionUrl)
	{
		var timelineTypeBlock = $('<div class="timelineTypeBlock ' + name + '" number="' + number + '"><div class="timelineTopBlock"></div><div class="timelineBottomBlock"></div></div>');

		var topBlock = timelineTypeBlock.find(".timelineTopBlock");
		var bottomBlock = timelineTypeBlock.find(".timelineBottomBlock");
		topBlock.append('<div class="timelineFirstShiftBlock"></div>');

		data.each(function (index)
		{
			var yearEventsData = $(this);

			var block = null
			var isTopBlock = index % 2;
			if (isTopBlock)
				block = topBlock;
			else
				block = bottomBlock;

			var year = yearEventsData.attr("year");
			var yearBlock = null;

			if (index == 0)
				yearBlock = $('<div class="timelineSectionBlock"><div class="Year">' + year + '</div></div>');
			else
				yearBlock = $('<div class="timelineYearBlock"><div class="Year">' + year + '</div></div>');

			yearEventsData.find("event").each(function (k)
			{
				var event = $(this);
				var caption = (event.attr("caption") == undefined) ? "" : event.attr("caption");
				var eventDateSet = parseDateTime(event);
				var eventFullDate = (eventDateSet["isPeriod"]) ? (eventDateSet["startDateAsString"] + " - " + eventDateSet["endDateAsString"]) : eventDateSet["dateAsString"];
				var eventShortDate = (eventDateSet["isPeriod"]) ? (eventDateSet["startDate"].getDate() + "/" + (eventDateSet["startDate"].getMonth() + 1) + "/" + eventDateSet["startDate"].getFullYear() + " - " + eventDateSet["endDate"].getDate() + "/" + (eventDateSet["endDate"].getMonth() + 1) + "/" + eventDateSet["endDate"].getFullYear()) : eventDateSet["dateAsString"];

				if ((isTopBlock && k < 2) || (!isTopBlock && k < 3))
					$('<div class="event"/>').
					append('<div class="month"><span>' + eventShortDate + '</span></div>').
					append('<p>' + caption + '</p>').
					click(function ()
					{
						var objectInfo = $(this);
						var collectionId = objectInfo.data("collection");

						$('#openedEventPopUp h3.date').text(eventFullDate);
						$('#openedEventPopUp h3.caption').text(objectInfo.data("caption"));
						$('#openedEventPopUp p').
							empty().
							text(objectInfo.data("content"));

						if (collectionId != "")
						{
							$('#openedEventPopUp p').prepend('<img src="' + baseCollectionUrl + '/_layouts/itar/collimage.ashx?collid=' + collectionId + '&lang=ru-RU"></img>');
							$('#openedEventPopUp a').
								attr("href", baseCollectionUrl + "/Lib/Pages/collection.aspx?collectionid=" + collectionId).
								show();
						}
						else
							$('#openedEventPopUp a').hide();

						$('#openedEventPopUp').show();

						$(document).click(function (event)
						{
							if ($(event.target).parents().filter('.' + openedEventBlockId + ':visible').length != 1)
							{
								$('.' + openedEventBlockId).remove();
								$(document).unbind('click');
							}
						});

						return false;
					}).
					data("date", eventDateSet).
					data("caption", caption).
					data("content", event.text()).
					data("captionImg", (event.attr("caption") == undefined) ? "" : event.attr("caption")).
					data("img", (event.attr("img") == undefined) ? "" : event.attr("img")).
					data("collection", (event.attr("collection") == undefined) ? "" : event.attr("collection")).
					appendTo(yearBlock);

				parseDateTime(event);
			});

			yearBlock.appendTo(block);
		});

		var targer = null;
		$("#timelineControlContent").find(".timelineTypeBlock").each(function ()
		{
			var currentTypeBlock = $(this);
			if (currentTypeBlock.attr("number") >= number)
			{
				targer = currentTypeBlock;
				return false;
			}
		});

		if (targer == null)
			$("#timelineControlContent").append(timelineTypeBlock);
		else
			timelineTypeBlock.insertBefore(targer);
	}

	var loadData = function (url, number, name, baseCollectionUrl)
	{
		$.ajax(
		{
			url: url,
			dataType: "xml",
			//	SetContent
			success: function (result)
			{
				var yearEventListData = $(result).find("events");
				createTimelineBlock(number, name, yearEventListData, baseCollectionUrl);
			}
		});
	}

	loadData("/Data/VictoryTimeLine.xml", 1, "VictoryTheme", "http://pobeda-vov.ru");
	loadData("/Data/SpaceTimeLine.xml", 2, "SpaceTheme", "http://www.pobeda-kosmos.ru");

	//	SetHandlers
	$('#closeOpenedEventPopUp').click(function ()
	{
		$('#openedEventPopUp').hide();
	});

	$("#timelineLeftArrow").hover(
		function ()
		{
			scrollTimeLineFunction(-6);
		},
		function ()
		{
			clearTimeout(scrollTimeLineTimeout_id);
			scrollTimeLineTimeout_id = null;
		});

	$("#timelineRightArrow").hover(
		function ()
		{
			scrollTimeLineFunction(6);

			// Calculate scrollable content width
			if (fullLoadFlag == false)
			{
				var width = 0;
				$(".timelineTypeBlock").each(function () { width += $(this).outerWidth(true); });

				$("#timelineControlContent").width(width);
				fullLoadFlag = true; ;
			}
		},
		function ()
		{
			clearTimeout(scrollTimeLineTimeout_id);
			scrollTimeLineTimeout_id = null;
		});
})

function parseDateTime(data)
{
	var parseDateTime = function(data)
	{
		if (data == undefined || data == "")
			return null;

		var date = new Date();
		date.setDate(data.substr(8, 2));
		date.setMonth(data.substr(5, 2) - 1);
		date.setYear(data.substr(0, 4));
		return date;
	}

	var startEventDate = parseDateTime(data.attr("startDate"));
	var endEventDate = parseDateTime(data.attr("endDate"));


	var eventDate = [];
	eventDate["isPeriod"] = (endEventDate == null) ? false : true;
	eventDate["startDate"] = startEventDate;
	eventDate["endDate"] = endEventDate;
	eventDate["startDateAsString"] = (startEventDate == null) ? "" : startEventDate.toLocaleDateString();
	eventDate["endDateAsString"] = (endEventDate == null) ? "" : endEventDate.toLocaleDateString();

	var tmp = data.attr("date");
	var directEventDate = null;
	if (tmp == undefined)
		directEventDate = eventDate["startDateAsString"];
	else
		directEventDate = tmp.substring(0, tmp.indexOf("ода")) + ".";

	eventDate["date"] = tmp;
	eventDate["dateAsString"] = directEventDate;

	return eventDate;
}
