﻿(function($) {
	$.fn.ProductImages = function() {
		var container = $(this);
		var pagination = $(".navigation", this);
		var nextButton = $(".nextPage", pagination);
		var prevButton = $(".prevPage", pagination);
		var indexContainer = $('.itemnr', pagination);
		var updatePagination = function() {
			var images = $(".images > a", container);
			var totalCount = images.length;
			var thisIndex = (images.index(this) + 1);
			indexContainer.text(thisIndex);
		}
		var settings = {
			prev: prevButton,
			next: nextButton,
			before: updatePagination,
			timeout: 0
		};

		var images = $(".images > a", this);
		if (images.length > 1) {
			$(".images", container).cycle(settings);
			pagination.show();
		}

		$(images).colorbox({ rel: 'productimages', photo: true, maxWidth: "90%", maxHeight: "90%",
			onOpen: function() { $("#colorbox").addClass('photo'); },
			onClosed: function() { $("#colorbox").removeClass('photo'); },
			current: "", opacity: 0.65
		});
	}

	$.fn.SignupHandler = function(pid, data) {
		$(this).each(function(index) {
			if (typeof (data[index]) != 'undefined') {
				$(this).data('prefill', data[index]);
			}
		});
		$(this).css('cursor', 'pointer');

		$(this).click(function(e) {
			e.preventDefault();
			var linkClicked = $(this);
			var prefill = $(this).data('prefill');
			if (prefill == null) {
				prefill = { firstname: "", lastname: "", email: "", participationId: 0 };
			}

			var wrapper = $('#signupEventModal');
			$('input[name="firstname"]', wrapper).val(prefill.firstname);
			$('input[name="lastname"]', wrapper).val(prefill.lastname);
			$('input[name="email"]', wrapper).val(prefill.email);
			$('input[name="participationId"]', wrapper).val(prefill.participationId);

			$('input.error', wrapper).removeClass('error');
			$('span.error', wrapper).hide();

			$(".confirm .button", wrapper).click(function(e) {
				e.preventDefault();
				var data = { productId: pid };
				$('input', wrapper).each(function() {
					data[$(this).attr('name')] = $(this).val();
				});



				$.post(PF.SignUpUser, data, function(returndata) {
					if (returndata.Success) {
						$.fn.colorbox.close();
						$(linkClicked).replaceWith(PF.Lang.SignedUp);
						$.FlashMessage(PF.Lang.SignedUpConfirm);
					} else {
						$(".legend.error", wrapper).html(returndata.message).show();
						$.fn.colorbox.resize();
					}
				}, "json");
			});

			$(wrapper).cbDialog(450);
		});
	}

	$.fn.FriendInviter = function(pid) {
		var container = $(this);
		var productId = pid;
		var friendsListCache = [];
		var wrapper = $("#inviteFriendsModal");
		var list = $('ul.friendlist', wrapper);
		var doFriendInvite = function() {
			var checkboxes = $("input:checked", list);
			var foundError = false;
			var friendInvite = [];
			checkboxes.each(function() {
				friendInvite.push($(this).val());
			});

			var newFriendInvite = [];
			$(".createInviteRow", wrapper).each(function() {
				var row = $(this);
				var friend = {};
				$("input", row).removeClass('error');
				$("span.error", row).hide();
				friend.firstname = $('.firstname input', row).val()
				friend.lastname = $('.lastname input', row).val();
				friend.email = $('.email input', row).val();
				if (friend.firstname.length == 0 && friend.lastname.length == 0 && friend.email.length == 0) {
					return;
				} else {
					if (friend.firstname.length == 0) {
						$('.firstname span.error', row).show();
						$('.firstname input', row).addClass('error');
						foundError = true;
					}
					if (friend.lastname.length == 0) {
						$('.lastname span.error', row).show();
						$('.lastname input', row).addClass('error');
						foundError = true;
					}
					if (friend.email.length == 0) {
						$('.email span.error', row).show();
						$('.email input', row).addClass('error');
						foundError = true;
					}
					newFriendInvite.push(friend);
				}
			});

			if (!foundError) {
				var postData = { productid: productId, friends: friendInvite, invitees: newFriendInvite };
				$.post(PF.SendInvitation, { Envelope: JSON.stringify(postData) }, function(data) {
					if (data.Success) {
						$.fn.colorbox.close();
						window.location.href = window.location.href;
					} else {
						$(".legend.error", wrapper).html(data.Message).show();
						$.fn.colorbox.resize();
					}
				}, "json");
			} else {
				$.fn.colorbox.resize();
			}
		}

		var buildModal = function(friendsList) {
			if (friendsList.length > 0) {
				$(".friendlistwrapper", wrapper).show();
				list.html("");

				$(friendsList).each(function(index) {
					$("<li><label><input type='checkbox' value='" + this.Id + "' /><span class='name'>" + this.Name + "</span><span class='email'>" + this.Email + "</span></label></li>").appendTo(list);
				});
				$(":checkbox", list).uniform();
			}
			$(wrapper).cbDialog(625, 'green', function() {
				$(".button", wrapper).unbind();
			});

			$(".greenbutton", wrapper).click(function(e) {
				e.preventDefault();
				doFriendInvite();
			});
		}

		var fetchFriends = function() {
			if (friendsListCache.length > 0) {
				buildModal(friendsListCache);
			} else {
				$.getJSON(PF.GetFriends, { pid: productId }, function(data) {
					friendsListCache = data;
					buildModal(data);
				});
			}
		}

		container.click(function(e) {
			e.preventDefault();
			fetchFriends();
		});
	}
})(jQuery);


