$(document).ready(
		function() {
			if ($('body').is('#set')) {
				window.SharePhoto = {
					init : function() {
						window.SharePhoto = this;
						this.resizePhoto();
						this.attachHendlers();
						return this;
					},
					resizePhoto : function(sharePhoto) {
						$('.thumbnail').each(function() {

							var thumbnail = $(this);
							if (thumbnail.attr('complete')) {
								SharePhoto.resizeCntainer(thumbnail);
							} else {
								thumbnail.load(function() {
									SharePhoto.resizeCntainer(thumbnail);
								});
							}

						})
					},

					resizeCntainer : function(thumbnail) {
						/* resize image when loaded */
						var w = thumbnail.width();
						if (w > 500) {
							thumbnail.attr('width', '500');
						}
						$('#rose').remove();
						$('.img_holder').css('visibility', 'visible');
						$('.container').css('height', thumbnail.height() + 40);
						$('.img_holder').css('width', thumbnail.width() + 28);

						SharePhoto.addFaceboxes();

					},

					addFaceboxes : function() {
						if(window.photoInfo !== undefined){
							var faceboxes = window.photoInfo.faceboxes;
							if (faceboxes != null) {
								for ( var j = 0; j < faceboxes.length; j++) {
									var sizes = this.getThumbnailSize($('.thumbnail'), faceboxes[j], photoInfo.imageWidth);
									this.setThumbnailPositionAndFacebox(photoInfo.imageInstanceId, photoInfo.imageMd5, faceboxes[j], sizes, '#photo_inst');
								}
							}
						}
					},

					attachHendlers : function() {
						$('.view-join-modal').click(function() {
							SignIn.showConnectModal();
							return false;
						});
						$('.photo_container').bind('mouseenter mouseleave', function(e) {
							$(this).toggleClass('hover');
						});
						$('.view-share-modal').bind('click', function(e) {
							var newWindow = window.open($(this).attr('href'), 'Share this photo', 'height=400,width=650');
							if (window.focus) {
								newWindow.focus();
							}
							return false;
						});

						$('.embed-link').live('click', function() {
							var url = $(this).attr('href');
							ModalUtils.getAjaxJson(url, function(data) {
								var token = data.tinyUrlToken;
								var modalForm = ModalUtils.retrieveHtmlTemplateById("modal-share");
								ModalUtils.replaceIdAttributes(modalForm);
								var bodyValue = $.trim(modalForm.find('#embed-body').val());
								bodyValue = bodyValue.replace(/__TOKEN__/g, token);
								bodyValue = bodyValue.replace(/__ID__/g, "id");
								modalForm.find('#embed-body').val(bodyValue);
								var tokenUrl = modalForm.find('#token-url');
								tokenUrl.attr('href', tokenUrl.attr('href') + token);
								modalForm.find('#token-text').append(token);
								var tokenUrlMail = modalForm.find('#token-url-mail');
								tokenUrlMail.attr('href', tokenUrlMail.attr('href') + token);
								modalForm.find('#locations .post').each(function() {
									var self = $(this);
									self.attr('href', self.attr('href') + token);
								});
								ModalUtils.createAndResizeModal(modalForm, true);
							});
							return false;
						});

						Bindings.addSetPageBindings();

					},

					getThumbnailSize : function(thumb, facebox, imageWidth) {
						var thumbWidth = thumb.width();
						var ratio = thumbWidth / imageWidth;
						var size = facebox.faceboxSize * ratio;
						return {
							'width' : Math.round(size) - 2,
							'height' : Math.round(size) - 2,
							'top' : Math.round(facebox.faceboxY * ratio + 14),
							'left' : Math.round(facebox.faceboxX * ratio + 14)

						};
					},
					setThumbnailPositionAndFacebox : function(imageInstanceId, imageMd5, facebox, sizes, selector) {

						var faceboxName = facebox.faceboxName;
						var isNamed = (faceboxName.nameeScreenName != null);

						if (isNamed) {
							var faceboxUrl = '/photos/' + faceboxName.nameeUserId + '/you';
							$(selector).append(
									'<a class="facebox named" id="' + faceboxName.faceboxId + '" href="' + faceboxUrl + '" title="' + faceboxName.nameeScreenName
											+ '"><!--[if IE]><span></span><![endif]--></a>');
						} else {
							var faceboxUrl = '/edit/view?faceboxId=' + faceboxName.faceboxId + '&faceboxUuid=' + facebox.faceboxUuid + '&imageMD5=' + imageMd5 + '&imageInstanceId=' + imageInstanceId;

							$(selector)
									.append('<a class="facebox name" id="' + faceboxName.faceboxId + '" _href="' + faceboxUrl + '" title="Unknown Person"><!--[if IE]><span></span><![endif]--></a>');
						}

						var faceboxDiv = $('#' + faceboxName.faceboxId);
						faceboxDiv.css(sizes);

					}
				}.init();
			}
		});