var ThumbPage =
{
	PromptLogin: true,
	PromptDiv: null,
	ClickedBox: null,
	ThumbGrid: null,
	Lab: false,
	SelectedText: 'selected',
	UnselectedText: 'not selected',

	OnThumbGridReady: function()
	{
		var actualPhotoCount = $("img.thumbgrid").length;
		if (ThumbPage.PrEvent.PhotoSearchId > 0 && actualPhotoCount === 0)
			location = String.format("ThumbSearch.aspx?e={0}&s=True", ThumbPage.PrEvent.Idy);
		
		$("a.checkbox").click
		(
			function()
			{
				ThumbPage.ClickedBox = this;
				if (ThumbPage.PromptLogin && ThumbPage.PromptDiv !== null && ThumbPage.PromptDiv.length > 0)
				{
					$.blockUI
					(
						{
							message: ThumbPage.PromptDiv,
							css:
							{
								width: "550px",
								marginLeft: "-275px"
							}
						}
					);

					var page = $("div.blockPage");
					if ($.browser.msie == false)
					{
						page.css("-webkit-border-radius", "10px");
						page.css("-moz-border-radius", "10px");
						ThumbPage.PromptDiv.css("-webkit-border-radius", "6px");
						ThumbPage.PromptDiv.css("-moz-border-radius", "6px");
					}
				}
			}
		);
	},
	RenderThumbGrid: function(photoCount)
	{
		ThumbPage.ThumbGrid = $("div[id$=PanelThumbGrid]").thumbgrid
		(
			{
				photographerId: ThumbPage.PhotographerId,
				prEvent: ThumbPage.PrEvent,
				checkedSessionId: ThumbPage.CheckedSessionId,
				selectedOnly: ThumbPage.SelectedOnly,
				photoCount: ThumbPage.PhotoCount,
				maxRows: 6,
				subEventId: ThumbPage.SubEventId,
				selectAllLink: $("a[id$=HyperLinkSelectAll]"),
				deselectAllLink: $("a[id$=HyperLinkDeselectAll]"),
				minColumns: 5,
				loadingIndicator: $("div[id$=PanelLoadingIndicator]"),
				squareThumbs: ThumbPage.UseSquareThumbs,
				lab: ThumbPage.Lab,
				selectedText: ThumbPage.SelectedText,
				unselectedText: ThumbPage.UnselectedText
			},
			ThumbPage.OnThumbGridReady
		);
	},
	GetPhotoCount: function(callback, selectedOnly)
	{
		if (!ThumbPage.SelectedOnly && !selectedOnly)
		{
			callback(ThumbPage.PhotoCount);
			return;
		}

		$.ajax({
			type: "POST",
			contentType: "application/json; charset=utf-8",
			url: Global.VirtualRoot + "/AjaxJSON.asmx/GetCheckedPhotoCount",
			data: JSON.stringify
			(
				{
					checkedSessionId: ThumbPage.CheckedSessionId,
					eventId: ThumbPage.SubEventId.length > 0 ? ThumbPage.SubEventId : ThumbPage.PrEvent.Id,
					subEventOnly: ThumbPage.SubEventId.length > 0
				}
			),
			beforeSend: function(x)
			{
				if (x && x.overrideMimeType)
					x.overrideMimeType("application/json;charset=utf-8");
			},
			success: function(data)
			{
				var count = data.d;

				if (count > 0)
					callback(ThumbPage.PhotoCount);
				else
					alert("No photos selected.");

			},
			error: function(req, status)
			{
				//debugger;
			},
			dataType: "json"
		});
	},
	GetNotificationData: function(eventId)
	{
		var notificationCookie = $.cookie("thumbpageNotificationHistory");

		var notificationStrings = [];
		if (notificationCookie !== null)
			notificationStrings = notificationCookie.split(";");

		var notifications = [];

		var found = false;
		for (var i = 0; i < notificationStrings.length; i++)
		{
			var pairs = notificationStrings[i].split("|");
			var cookieEventId;
			var cookieDate;

			for (var x = 0; x < pairs.length; x++)
			{
				var pair = pairs[x];
				var name = pair.split("=")[0];
				var value = pair.split("=")[1];

				switch (name)
				{
					case "eventId":
						cookieEventId = value;
						break;
					case "date":
						cookieDate = isNaN(value) ? new Date("1/1/1970") : new Date(parseInt(value, 10));
						break;
				}
			}

			var notification =
			{
				eventId: cookieEventId,
				date: cookieDate
			};
			notifications.push(notification);

			if (eventId)
			{
				if (notification.eventId == eventId)
					return notification;
				else
					continue;
			}
		}

		if (eventId)
			return null;
		else
			return notifications;
	},
	UpdateNotificationCookie: function(eventId)
	{
		var notifications = ThumbPage.GetNotificationData();
		var now = new Date();

		if (ThumbPage.GetNotificationData(eventId) === null)
		{
			notifications.push
			(
				{
					eventId: eventId,
					date: now.valueOf()
				}
			);
		}

		var newCookieValue = "";

		for (var i = 0; i < notifications.length; i++)
		{
			var notification = notifications[i];

			if (i > 0)
				newCookieValue += ";";

			if (notification.eventId == eventId)
				notification.date = now.valueOf();

			newCookieValue += "eventId=" + notification.eventId + "|date=" + notification.date;
		}

		$.cookie("thumbpageNotificationHistory", newCookieValue, {expires: 1});
	},
	DisplayNotifications: function(force)
	{
		if ($("div[id$=PanelNotification]").length === 0 || $("div[id$=PanelNotification]").children().length == 3)
			return;

		var day = 1000 * 60 * 60 * 24; // number of ms in a day
		var notification = ThumbPage.GetNotificationData(ThumbPage.PrEvent.Id);
		var now = new Date();
		var msg = null;
		var closeLink = $("div[id$=PanelNotification] a.close");
		closeLink.click
		(
			function()
			{
				ThumbPage.UpdateNotificationCookie(ThumbPage.PrEvent.Id);
				$.unblockUI();
			}
		);

		var remindMeLink = $("a[id$=LinkButtonRemindMe]");
		remindMeLink.click
		(
			function()
			{
				ThumbPage.UpdateNotificationCookie(ThumbPage.PrEvent.Id);
			}
		);

		if (notification === null || (force || now - notification.date > day))
		{
			$.blockUI
			(
				{
					message: $("div[id$=PanelNotification]"),
					css:
					{
						width: "550px",
						marginLeft: "-275px"
					}
				}
			);

			var page = $("div.blockPage");
			if ($.browser.msie == false)
			{
				page.css("-webkit-border-radius", "10px");
				page.css("-moz-border-radius", "10px");
				$("div[id$=PanelNotification]").css("-webkit-border-radius", "6px");
				$("div[id$=PanelNotification]").css("-moz-border-radius", "6px");
			}
		}
	},
	OnDocumentReady: function()
	{
		ThumbPage.RenderThumbGrid(ThumbPage.PhotoCount);
		ThumbPage.PromptLogin = getCookie("favLogin") != "1";
		ThumbPage.PromptDiv = $("div[id$=ThumbsLogin]");

		ThumbPage.DisplayNotifications();

		$("a[id$=HyperLinkViewAll]").click
		(
			function()
			{
				ThumbPage.SelectedOnly = false;
				$("ul.amSelect").show();
				ThumbPage.GetPhotoCount(ThumbPage.RenderThumbGrid);
			}
		);

		$("a[id$=HyperLinkViewSelected]").click
		(
			function()
			{
				ThumbPage.SelectedOnly = true;

				if (ThumbPage.ThumbGrid.GetSelectedCount() > 0)
					$("ul.amSelect").hide();

				ThumbPage.GetPhotoCount(ThumbPage.RenderThumbGrid);
			}
		);

		$("select[id$=DataListGroups]").change
		(
			function()
			{
				if (!$.cookie)
					alert("jquery.thumbgrid.js requires query.cookie.js");

				var cookie = $.cookie("thumbgrid");

				if (cookie === null)
					return;

				var updatedValue = "";
				var pairs = cookie.split(";");
				for (var i = 0; i < pairs.length; i++)
				{
					var name = pairs[i].split("=")[0];

					if (name != "bookmark")
						updatedValue += pairs[i];
				}

				$.cookie("thumbgrid", updatedValue);
			}
		);

		if (typeof (ThumbPage.PromptDiv) != "undefined")
		{
			ThumbPage.PromptDiv.find("input[type=submit]").each
			(
				function(i)
				{
					var re = new RegExp("Continue", "i");

					if (re.test(this.id))
					{
						$(this).click
						(
							function()
							{
								$.unblockUI();
								ThumbPage.PromptLogin = false;
								setCookie("favLogin", "1", null, "/");

								// blockui causes the checkbox to toggle back to its pre-click state, so we force it to the new state here
								ThumbPage.ClickedBox.checked = !ThumbPage.ClickedBox.checked;
								return false;
							}
						);
					}
				}
			);
		}
		
		$('li a[id$=HyperLinkNavOrder]').click(function() {ThumbPage.Order();});
	},
	GotoOrderPage: function(count)
	{
		if (count > 0) // find first fav and goto order page
			window.location = 'OrderPage.aspx?sf=1&po=0&pi='+$("a.selected:first").attr("photoid")+'&pc='+count;
		else // goto first photo order page
			window.location = $(".thumbTable tr td a:first").attr("href");
	},
	Order: function()
	{
		ThumbPage.GetPhotoCount(ThumbPage.GotoOrderPage, true);
	},
	RenderQuickOrder: function(count)
	{
		if (count <= 0)
		{
			alert("Please select one or more photos to order");
			return;
		}

		var message = $('#QuickOrderDiv');
		$('#QuickOrderControls').show();
		$('#ResultDisplayDiv').hide();
		$("[ID$='_PackageList']").val(0);

		$.blockUI
		(
			{
				message: message,
				css:
				{
					width: '400px',
					left: '50%',
					marginLeft: '-200px'
				}
			}
		);

		var page = $("div.blockPage");
		if ($.browser.msie == false)
		{
			page.css("-webkit-border-radius", "10px");
			page.css("-moz-border-radius", "10px");
			message.css("-webkit-border-radius", "6px");
			message.css("-moz-border-radius", "6px");
		}
	},
	ShowQuickOrder: function()
	{
		ThumbPage.GetPhotoCount(ThumbPage.RenderQuickOrder, true);
	},
    
    imgBanners: new Array(),
    curBanner: 0,
    
    StartAdRotator : function () // pase array of string of all source img urls.
    {
        var imgBanner = $("div.thumbMarketAdBanner img");

        imgBanner.attr ("src",arguments[0]);
        if (arguments.length > 1)
        {
            for (var i = 0; i<arguments.length; i++)
                ThumbPage.imgBanners[i] = arguments[i];
            setInterval (ThumbPage.AdRotate,5000);
	    }
	},

    AdRotate : function ()
    {
        if (ThumbPage.curBanner < ThumbPage.imgBanners.length-1) 
            ThumbPage.curBanner += 1; 
        else
            ThumbPage.curBanner = 0;
        var imgBanner = $("div.thumbMarketAdBanner img");
        imgBanner.attr ("src",ThumbPage.imgBanners[ThumbPage.curBanner]);    
    }

};



$(document).ready(ThumbPage.OnDocumentReady);

