$(document).ready(function() {
	Validation.fadeInErrorsIfRequired();
});

var Validation = {
	
	checkUsernameAvailability: function() {
	
			var username = $('input[name=username]').val();

			var url = $('#newArtistForm').attr('action') + '?CheckUsernameAvailability';
			
			$.getJSON(url, {username : username}, 
				function(jsonResult) {
					if (jsonResult.info.indexOf("Sorry") == 0)
					{
						$('#SubmitNewArtist').attr("disabled", "true");
						$('#info_message .contents').css({'border-color' : '#E10215', 'background-color' : '#EF7D89'});
					}
					else
					{
						$('#SubmitNewArtist').removeAttr("disabled");
						$('#info_message .contents').css({'border-color' : '#FCD113', 'background-color' : '#FBED92'});
					}
					$('#info_message .contents').html(jsonResult.info);
				});
	},
	
	fadeInErrorsIfRequired : function() {
		$('.errors').animate({opacity : 1}, 1000);
	},
	
	startsWith : function(str) {
		return (this.match("^"+str)==str)
	}
};

var Authentication = {
		
		login : function() {
	
			var username = $('input[name=login_userName]').val();
			var password = $('input[name=login_passWord]').val();
			
			$('#invalidCredentials').slideUp(300);
			
			if (username =="" || password == "")
			{
				$('#invalidCredentials').slideDown(300);
			}
			
			var url = $('#loginForm').attr('action') + '?CheckCredentials';
			
			$.getJSON(url, {login_userName : username, login_passWord : password},
					function(jsonResult){
						if (jsonResult.info == "success")
						{
							var action = $('#loginForm').attr('action');
							$('#loginForm').attr('action', action + "?Login");
							document.loginForm.submit();
						}
						else
						{
							$('#invalidCredentials').slideDown(300);
						}
				    });
		} // end login
};

var Actions = {
		
		updatePersonalDetails : function() {
			window.location = "/ab/Profile.action?UpdateDetails";
		},
		
		logout : function() {
			window.location = "/ab/Logout.action";
		},
		
		openTsAndCsDialog : function() {
			var doOk = function() {
			      $("#termsAndCondsDialog").dialog('close');
			     };
			
			var dialogOptions = {
					width: '500px',
					buttons: {
						"Ok!": doOk
					},
					minHeight: '500px',
					modal: true
			};
			
			$("#termsAndCondsDialog").css({display : 'block'});
			$("#termsAndCondsDialog").dialog(dialogOptions);
		},
		
		openMainBannerContent : function() {
			window.location="/ab/HomeContent.action?OpenZone&zone=MAIN_BANNER";
		},
		
		openPromoBox : function(zone) {
			window.location="/ab/HomeContent.action?OpenZone&zone=" + zone;
		},
		
		confirm : function(message) {
			return confirm(message);
		},
		
		updateArtistOverview : function() {
			
			$('#overviewDisplay').animate({opacity : 0}, 500, function() {
				$('#overviewDisplay').css({display : 'none'});
				$('#overviewForm').slideUp(100, function() {
					$('#overviewForm').css({display : 'block'});
					$('#overviewForm').slideDown(500);
				});
			});
		},
		
		signUpForNewsletter : function() {

			var url = "/ab/Newsletter.action?SignUp";
			var name = $('input[name=name]').val();
			var email = $('input[name=email]').val();
			
			$.getJSON(url, {name : name, email : email},
					function(jsonResult){
						$('#infoMessageText').html(jsonResult.info);
						$('#infoMessage').css({opacity : '0', display : 'block'});
						$('#infoMessage').animate({opacity : '1'}, 300, function() {
							$('#infoMessage').animate({opacity : '1'}, 1000, function() {
								$('#infoMessage').animate({opacity : '0'}, 300, function() {
									$('#infoMessage').css({display : 'none'});
									$('input[name=name]').val("");
									$('input[name=email]').val("");
								});
							});
						});
				    });
		},
		
		openExhibition : function(exhibitionId) {
			window.location = "/ab/Exhibitions.action?Open&exhibitionId=" + exhibitionId;
		}
};

var ImageActions = {
		
		addImage : function() {
			window.location = '/ab/ArtistImages.action?AddNewImage';
		},
		
		editImage : function(imageId) {
			$('#descriptionText').css({display : 'none'});
			$('#descriptionTextEditable').css({display : 'block'});
		},
		
		updateDescription : function() {
			var description = $('textarea[name=description]').val();
			var imageId = $('input[name=imageId]').val();
			
			$.getJSON("/ab/ImageMaintenance.action?UpdateDescription", 
							{description : description, imageId : imageId}, function(jsonResult) {
								$('#descriptionTextEditable').css({display : 'none'});
								
								$('#descriptionText').html(jsonResult.info);
								$('#descriptionText').css({display : 'block'});
							});
		},
		
		deleteImage : function(imageId, artistId, isProfile) {
			
			if (confirm("Are you sure you want to delete this image?"))
			{
				$('#selectedImageContainer').load('/ab/ImageMaintenance.action?DeleteImage', {imageId : imageId}, function() {
					$('#messageContainer').css({display : 'block'});
	
					$('#message').animate({opacity : 1}, 1000, function() {
						$('#message').animate({opacity : 0}, 1000, function() {
							$('#messageContainer').css({display : 'none'});
								var sliderWidth = $('#imageSliderWindow').css('width');
								sliderWidth = sliderWidth.substring(0, sliderWidth.length - 2);
								ArtistSliderActions.loadImageSlider(artistId, true, sliderWidth);
						});
					})
				});
			}
		},
		
		loadExhibitionArtistCarousel : function(contentPageId) {
			$('#artistThumbCarousel').load("/ab/ContentDisplay.action?GetExhibitionArtistCarousel", {contentPageId : contentPageId});
		},
		
		preview : function(img, selection) 
		{ 
			var imageWidth = 500;
			var imageHeight = $('#siteImage').height();
			var thumbWidth = 100;
			
			var scaleX = thumbWidth / selection.width; 
			
			$('#thumbDisplay > img')
				.css({
					width: Math.round(scaleX * imageWidth) + 'px', 
					height: Math.round(scaleX * imageHeight) + 'px', 
					marginLeft: '-' + Math.round(scaleX * selection.x1) + 'px', 
					marginTop: '-' + Math.round(scaleX * selection.y1) + 'px' 
				});
			
			$('#x1').val(selection.x1);  
			$('#y1').val(selection.y1);  
			$('#x2').val(selection.x2);  
			$('#y2').val(selection.y2);    
		},
		
		submitThumb : function(imageId) {
			
			var url = "/ab/CreateThumbFromImage.action?SubmitThumb";
			var x1 = $('#x1').val();
			var y1 = $('#y1').val();
			var x2 = $('#x2').val();
			var y2 = $('#y2').val();
			
			$.getJSON(url, {siteImageId: imageId, x1 : x1, y1 : y1, x2 : x2, y2 : y2, w : 100, h : 66},
					function(jsonResult){
						$('#saveThumbButton').animate({opacity : 0}, 500);
						$('#thumbHelp').animate({opacity : 0}, 500);
						
						$('#customiseImageFormFieldsContainer').slideUp(100, function() {
							$('#customiseImageFormFieldsContainer').css({display : 'block'});
							$('#customiseImageFormFieldsContainer').slideDown(1000);
						});
				    });
		}
};

var AdminActions = {
		openContentPage : function(contentId) {
			window.location = '/ab/admin/ContentActions.action?OpenContentPage&contentPageId=' + contentId;
		},
		
		openArtistProfile : function(artistId) {
			window.location = '/ab/admin/AdministerArtistProfile.action?artistId=' + artistId;
		},
		
		openExhibition : function(exhibitionId) {
			window.location = '/ab/admin/ExhibitionCrud.action?EditExhibition&exhibitionId=' + exhibitionId;
		},
		
		changeBannerImageSizeLabel : function() {
			
			$('#doubleBannerSizeHelpText').animate({opacity : '0'}, 200);
			$('#doubleBannerSizeHelpText').css({display : 'none'});
			
			$('#singleBannerSizeHelpText').animate({opacity : '0'}, 200);
			$('#singleBannerSizeHelpText').css({display : 'none'});
			
			var selectedType = $('#bannerWidth').val();
			
			if (selectedType == 'MAIN_BANNER')
			{       
				$('#doubleBannerSizeHelpText').css({display : 'block', opacity : '0'});
				$('#doubleBannerSizeHelpText').animate({opacity : '1'}, 300);
				
				$('#charCount').html('(450/0)');
			}
			
			if (selectedType == 'PROMO_BLOCK')
			{
				$('#singleBannerSizeHelpText').css({display : 'block', opacity : '0'});
				$('#singleBannerSizeHelpText').animate({opacity : '1'}, 300);
				
				$('#charCount').html('(180/0)');
			}
		},
		
		toggleImageUploadFieldContainer : function(el) {
			
			if ($('#changeImageCheckbox:checked').val() == 'true')
			{
				$('#imageUploadFieldContainer').slideUp(300, function() {
					$('#imageUploadFieldContainer').css('opacity', '0');
					$('#imageUploadFieldContainer').slideDown(300, function() {
						$('#imageUploadFieldContainer').animate({opacity : '1'}, 300);
					});
				});
			}
			else
			{
				$('#imageUploadFieldContainer').animate({opacity : '0'}, 300, function() {
					$('#imageUploadFieldContainer').slideUp(300);
				});
			}
		},
		
		showPreview : function() {
			
			var homePageType = $('#bannerWidth').val();
			if (homePageType == 'MAIN_BANNER')
			{
				$('#bannerPreviewContainer').css({opacity : '0', display : 'block'});
				$('#bannerPreviewContainer').animate({opacity : '1'}, 300);
			}
			else if (homePageType == 'PROMO_BLOCK')
			{
				$('.promoBlockContainer').css({opacity : '0', display : 'block'});
				$('.promoBlockContainer').animate({opacity : '1'}, 300);
			}
			else
			{
				alert("Unknown banner page type: " + homePageType);
			}
		},
		
		updateCharCount : function() {
			var text = $('#bannerText').val();
			
			var selectedType = $('#bannerWidth').val();
			var maxLength = $('#bannerWidth').val() == 'PROMO_BLOCK' ? 180 : 450;
			
			if (text.length > maxLength)
			{
				text = text.substring(0, maxLength);
				$('#bannerText').val(text);
			}
			
			$('#charCount').text(maxLength + "/" + text.length);
		},
		
		removeArtist : function(exhibitionArtistId) {
				
			var url = "/ab/admin/ExhibitionCrud.action?RemoveArtist&exhibitionArtistId=" + exhibitionArtistId;
			
			window.location = url;
		},
		
		deleteArtistCompletely : function(artistId) {
			if (confirm("Are you sure you want to delete this artist?"))
			{
				var url = "/ab/admin/AdministerArtistProfile.action?DeleteArtist&artistId=" + artistId;
				window.location = url;
			}
		},
		
		deleteNewsletterSubscriber : function(newsletterSubscriberId) {
			if (confirm("Are you sure you want to delete this newsletter subscriber?"))
			{
				var url = "/ab/admin/NewsletterAdmin.action?DeleteNewsletterSubscriber&newsletterSubscriberId=" + newsletterSubscriberId;
				window.location = url;
			}
		},
		
		changeContentType : function() {
			var contentType = $('#contentType').val();
			if (contentType == 'textContent')
			{
				$('#linkContainer').css({display : 'none'});
				$('#textContentContainer').css({display : 'block'});
			}
			else if (contentType == 'link')
			{
				$('#textContentContainer').css({display : 'none'});
				$('#linkContainer').css({display : 'block'});
			}
			else
			{
				$('#textContentContainer').css({display : 'none'});
				$('#linkContainer').css({display : 'none'});
			}
		},
		
		toggleBetweenExhibitionAndGallery : function(contentPageId) {
			
			var selectedType = $('#contentType').val();
			
			if (selectedType == 'exhibition')
			{
				$('.showMeWhenContentIsExibition').css({display : 'block'});
				
				$('.showMeWhenContentIsNotExhibition').css({display : 'none'});
				$('.showMeWhenContentIsGallery').css({display : 'none'});
				$('.showMeWhenContentIsFOTM').css({display : 'none'});
				
				$('.showMeWhenContentIsNotGallery').css({display : 'block'});
				$('.showMeWhenContentIsNotFOM').css({display : 'block'});
			}
			else if (selectedType == 'gallery')
			{
				$('.showMeWhenContentIsExibition').css({display : 'none'});
				$('.showMeWhenContentIsNotExhibition').css({display : 'block'});
				
				$('.showMeWhenContentIsGallery').css({display : 'block'});
				$('.showMeWhenContentIsNotGallery').css({display : 'none'});
				
				$('.showMeWhenContentIsFOTM').css({display : 'none'});
				$('.showMeWhenContentIsNotFOM').css({display : 'block'});
			}
			else if (selectedType == 'fom')
			{
				$('.showMeWhenContentIsExibition').css({display : 'none'});
				$('.showMeWhenContentIsNotExhibition').css({display : 'block'});
				
				$('.showMeWhenContentIsGallery').css({display : 'none'});
				$('.showMeWhenContentIsNotGallery').css({display : 'block'});
				
				$('.showMeWhenContentIsFOTM').css({display : 'block'});
				$('.showMeWhenContentIsNotFOM').css({display : 'none'});
			}
			else
			{

			}
			
			$.getJSON("/ab/admin/ContentActions.action?UpdateContentType", {contentPageId : contentPageId, contentType : selectedType},
				function(data){
					
			    });
		},
		
		toggleBetweenArtistsAndGallery : function() {
			var selectedType = $('#exhibitionType').val();
			
			if (selectedType == 'artists')
			{
				$('#showMeWhenExhibitionIsGallery').css({display : 'none'});
				$('#showMeWhenExhibitionIsArtists').css({display : 'block'});
			}
			else if (selectedType == 'gallery')
			{
				$('#showMeWhenExhibitionIsGallery').css({display : 'block'});
				$('#showMeWhenExhibitionIsArtists').css({display : 'none'});
			}
			else
			{
				
			}
		},
		
		addContentImage : function(contentPageId) {
			window.location = "/ab/admin/ContentImages.action?OpenForm&contentPageId=" + contentPageId;
		},
		
		deleteGalleryImage : function(galleryImageId) {
		
			$.getJSON("/ab/admin/GalleryImages.action?DeleteGalleryImage", {galleryImageId : galleryImageId},
				function(data){
					if (data.info == 'success')
					{
						$('#' + galleryImageId).animate({opacity : '0'}, 500, function() {
							$('#' + galleryImageId).remove();
						})
					}
					else
					{
						alert(data.info);
					}
			    });
		},
		
		editGalleryImage : function(galleryImageId) {
			$('#editGalleryImage').load("/ab/admin/GalleryImages.action?EditGalleryImage", {galleryImageId : galleryImageId});
			$('#editGalleryImage').animate({opacity : '1'}, 300);
		},
		
		cancelEditGalleryImage : function() {
			$('#editGalleryImage').animate({opacity : '0'}, 300);
		},
		
		submitEditGalleryImage : function() {
			
			var galleryImageId = $('input[name=galleryImageId]').val();
			var imageTitle = $('input[name=imageTitle]').val();
			var imageText = $('textarea[name=imageText]').val();
			var artistId = $('#artistId').val();
			
			$.getJSON("/ab/admin/GalleryImages.action?UpdateGalleryImage", 
					{galleryImageId : galleryImageId, imageTitle : imageTitle, imageText : imageText, artistId : artistId},
					function(data){
						if (data.info == 'success')
						{
							$('#editGalleryImage').animate({opacity : 0}, 300, function() {
								var currentLocation = window.location;
								window.location = currentLocation;
							});
						}
				    });
		},
		
		addArtistList : function(exhibitionId) {
			$('#artistList').load("/ab/admin/ExhibitionCrud.action?GetArtistListData", {exhibitionId : exhibitionId});
		},
		
		openGallery : function(galleryId) {
			window.location = "/ab/admin/GalleryCrud.action?OpenGallery&galleryId=" + galleryId;
		},
		
		openRegistrant : function(registrantId) {
			window.location = "/ab/admin/Registrant.action?OpenRegistrant&registrantId=" + registrantId;
		}
}

var ArtistSliderActions = {
		
		FADE_SPEED : 500,
		
		loadImageSlider : function(artistId, isProfile, imageSliderWidth) {
			$('#artistImages').load("/ab/Artist.action?GetArtistSlider", 
					{artistId : artistId, isProfile : isProfile, imageSliderWidth : imageSliderWidth});
		},
		
		openImageFromCarousel : function(imageId) {
			$('#selectedImageContainer').slideUp(ArtistSliderActions.FADE_SPEED, function() {
				// $('#selectedImageContainer').css("display", "block");
				var url = '/ab/ImageMaintenance.action?ProfileImageDetails';
				$('#selectedImageContainer').load(url, {imageId : imageId}, function() {
					$('#selectedImageContainer').slideDown(ArtistSliderActions.FADE_SPEED);
				});
			});
		},
		
		setupImageSlider : function(width)
		{
			
		}
}

var ArtistCarousel = {
		
		FRAME_WIDTH : 882,
		IMAGE_WIDTH : 200,
		PADDING_RIGHT : 15,
		BLOCK_ANIMATION : false,
		
		prev : function() {
			var leftPos = $('#imageContainer').css('left');
			if (leftPos == '0px')
			{
				return;
			}
			
			if (ArtistCarousel.BLOCK_ANIMATION == true)
			{
				return;
			}
			
			ArtistCarousel.BLOCK_ANIMATION = true;
			
			var leftPos = $('#imageContainer').css('left');
			var leftPosInt = leftPos.substring(0, leftPos.length - 2);
			var newLeftPos = parseInt(leftPosInt) + ArtistCarousel.getLeftSlideAmount();
			$('#imageContainer').animate({left : newLeftPos}, 1000, function() {ArtistCarousel.BLOCK_ANIMATION = false;});
		},
		
		next : function() {
			var leftPos = $('#imageContainer').css('left');
			leftPos = leftPos.replace('px','');
			
			if (leftPos <= ArtistCarousel.getMaxLeftPosition()*(-1))
			{
				return;
			}
			
			if (ArtistCarousel.BLOCK_ANIMATION == true)
			{
				return;
			}
			
			ArtistCarousel.BLOCK_ANIMATION = true;
			
			var leftPos = $('#imageContainer').css('left');
			var leftPosInt = leftPos.substring(0, leftPos.length - 2);
			var newLeftPos = leftPosInt - ArtistCarousel.getLeftSlideAmount();
			$('#imageContainer').animate({left : newLeftPos}, 1000, function() {ArtistCarousel.BLOCK_ANIMATION = false;});
		},
		
		getLeftSlideAmount : function() {
			var width = ArtistCarousel.getWidth();
			var numberOfFullImages = Math.floor(width/(ArtistCarousel.IMAGE_WIDTH + ArtistCarousel.PADDING_RIGHT));
			return numberOfFullImages*(ArtistCarousel.IMAGE_WIDTH + ArtistCarousel.PADDING_RIGHT);
		},
		
		getWidth : function() {
			var widthStr = $('#imageSliderWindow').css('width');
			if (widthStr == "")
			{
				return ArtistCarousel.FRAME_WIDTH;
			}
			else
			{
				return parseInt(widthStr);
			}
		},
		
		getMaxLeftPosition : function() {
			var panelWidth = ArtistCarousel.getWidth();
			
			var numberOfFullImagesInAPanel = Math.floor(panelWidth/(ArtistCarousel.IMAGE_WIDTH + ArtistCarousel.PADDING_RIGHT));
			
			var numberOfImages = parseInt($('#artistSliderImageCount').text());
			
			var numberOfPanels = Math.ceil(numberOfImages/numberOfFullImagesInAPanel);
			
			if (numberOfPanels == 1)
			{
				return 0;
			}
			
			return (numberOfPanels-1)*ArtistCarousel.getLeftSlideAmount();
		}
}

var ExhibitionCarouselFunctions = {
		
		exhibitionArtistIdString : "",
		
		itemLoadCallback : function (carousel, state) {

			if (state != 'init') return;

			ExhibitionCarouselFunctions.itemAddCallback(carousel, carousel.first, carousel.last, ExhibitionCarouselFunctions.exhibitionArtistIdString);
		},

		itemAddCallback : function (carousel, first, last, exhibitionArtistIdString) {
			
		    var exhibitionArtistIds = exhibitionArtistIdString.split('|');
		    for (i = 0; i < exhibitionArtistIds.length; i++) {
		        carousel.add(i+1, ExhibitionCarouselFunctions.getItemHTML(exhibitionArtistIds[i]));
		    }

		    carousel.size(exhibitionArtistIds.length);
		},

		getItemHTML : function (exhibitionArtistId) {
		    return '<a href="javascript: void(0);" onclick="ExhibitionCarouselFunctions.openImageFromCarousel(' + exhibitionArtistId + ')">' + 
		    			'<img src="/ab/ImageDisplay.action?DisplayContentArtistThumbImage&exhibitionArtistId=' + exhibitionArtistId + '" alt="" />' + 
		    		'</a>';
		},
		
		openImageFromCarousel : function(exhibitionArtistId) {
			ExhibitionActions.changeExhibitionArtist(exhibitionArtistId);
		}
}

var HomePageDragAndDrop = {
		
	bindEventsOfDraggables : function() {
	$(".drag")
    .bind( "dragstart", function( event ){
            // ref the "dragged" element, make a copy
            var $drag = $( this ), $proxy = $drag.clone();
            // modify the "dragged" source element
            $drag.addClass("outline");
            // insert and return the "proxy" element
            return $proxy.appendTo( document.body ).addClass("ghost");
            })
    .bind( "drag", function( event ){
            // update the "proxy" element position
            $( event.dragProxy ).css({
                    left: event.offsetX,
                    top: event.offsetY
                    });
            })
    .bind( "dragend", function( event ){
            // remove the "proxy" element
            $( event.dragProxy ).fadeOut( "normal", function(){
                    $( this ).remove();
                    });
            // if there is no drop AND the target was previously dropped
            if ( !event.dropTarget && $(this).parent().is(".drop") )
            {
            	// put it in it's original div...
            	$('#nodrop').append( this );
            }
            // restore to a normal state
            $( this ).removeClass("outline");      
           
            });
	$(".drop")
    .bind( "dropstart", function( event ){
            // don't drop in itself
            if ( this == event.dragTarget.parentNode ) return false;
            // activate the "drop" target element
            $( this ).addClass("active");
            })
    .bind( "drop", function( event ){
            // if there was a drop, move some data...
    		var isDraggableABanner = $(event.dragTarget).hasClass('bannerMenuItem');
    		var idOfDraggable = $(event.dragTarget).attr("id");
    		var idOfDropZone = $(this).attr("id");
			
			if(isDraggableABanner == true && idOfDropZone != "MAIN_BANNER")
			{
				HomePageDragAndDrop.showInfo("You can only drop a banner into the main banner section.");
				return;
			}
			
			if(isDraggableABanner != true && idOfDropZone == "MAIN_BANNER")
			{
				HomePageDragAndDrop.showInfo("You can only drop a promo box into one of the promo sections.");
				return;
			}
            
            $("#" + idOfDropZone)
    		.load("/ab/admin/HomePageConfig.action?UpdateHomePageZone", 
    				{idOfContentToPutInHomePageZone: idOfDraggable, zone: idOfDropZone}, function() {
    					$( this ).append( event.dragTarget );
    				});
            
            })
    .bind( "dropend", function( event ){
            // deactivate the "drop" target element
            $( this ).removeClass("active");
            });
	
	$('.drag').hover(
			function(){ 
				$(this).addClass("ui-state-hover"); 
			},
			function(){ 
				$(this).removeClass("ui-state-hover"); 
			});
	},
	
	removeDraggable : function(bannerOrPromo, element) {
		
		// If the draggable is already in a menu, there is no need to remove.
		var parentParentId = $(element).parent().parent().attr("id");
		if (parentParentId == 'availableBanners' || parentParentId == 'availablePromos')
		{
			return;
		}
		
		// Copy the draggable element so that it can be moved back to the menu.
		var copyOfDraggable = $(element).parent().clone();
		
		// Fade out and remove the element from the drop zone
		$(element).parent().fadeOut(300, function() {
			$(element).parent().remove();
		});
		
		// Add the draggable back to the menu it came from.
		if (bannerOrPromo == 'banner')
		{
			$('#availableBanners').append(copyOfDraggable);
		}
		else
		{
			$('#availablePromos').append(copyOfDraggable);
		}
		
		
		var idOfDraggable = $(element).parent().attr("id");
		var idOfDropZone = $(element).parent().parent().attr("id");
		
		$("#" + idOfDropZone).text('');
		
		$("#" + idOfDropZone)
		.load("/ab/admin/HomePageConfig.action?RemoveHomePageZone", 
				{idOfContentToPutInHomePageZone: idOfDraggable, idOfHomePageZoneToUpdate: idOfDropZone});

		// Need to rebind the menu items otherwise they loose their dragness and
		// hoverness.
		HomePageDragAndDrop.bindEventsOfDraggables();
	},
	
	showInfo : function(infoText) {
		alert(infoText);
	},
	
	initialiseMenuItemPositions : function() {
		$.getJSON("/ab/admin/HomePageConfig.action?GetCurrentContentJSON",
				function(data){
					for (i=0; i < data.dataList.length; i++)
					{
						var contentVoId = data.dataList[i].id;
						var homePageZone = data.dataList[i].homePagePosition;
						
						var objectCopy = $('#' + contentVoId).clone();
						
						$('#' + contentVoId).remove();
						$('#' + homePageZone).append(objectCopy);
					}
			    });
	}
	
}

var ExhibitionActions = {
		
		changeExhibitionArtist : function(exhibitionArtistId) {
			var url = "/ab/HomeContent.action?ChangeArtist";
	
			$('#exhibitionBanner #imageAndFooter #footer').animate({top : 338}, 300, function() {
				$("#exhibitionBanner").animate({opacity : 0}, 400, function () {
					$("#exhibitionBanner").load(url, {exhibitionArtistId : exhibitionArtistId}, function() {
						$("#exhibitionBanner").animate({opacity : 1}, 400, function () {
							$('#exhibitionBanner #imageAndFooter #footer').animate({top : 278}, 300);
						});
					});
				});
			});
		},
		
		slideInFooter : function() {
			$('#exhibitionBanner #imageAndFooter #footer').animate({top : 278}, 500);
		}
}

var BlogActions = {
		
		editBlog : function(blogEntryVoId) {
			$('#blogEntry_' + blogEntryVoId).load("/ab/admin/BlogContentActions.action?LoadEditBlogIFrame", {blogEntryVoId : blogEntryVoId});
		},
		
		cancelEditBlog : function(blogEntryVoId) {
			$('#blogEntry_' + blogEntryVoId).load("/ab/admin/BlogContentActions.action?CancelEditBlog", {blogEntryVoId : blogEntryVoId});
		},
		
		saveBlog : function(blogEntryVoId) {
			$('#blogEntry_' + blogEntryVoId).load("/ab/admin/BlogContentActions.action?SaveBlog", {blogEntryVoId : blogEntryVoId});
		},
		
		nextPage : function() {
			var pageNumber = $('input[name=page]').val();
			var newPage = parseInt(pageNumber) + 1;
			var url = $('#actions').attr('action') + '?NewPage&page=' + newPage;
			window.location = url;
		},
		
		prevPage : function() {
			var pageNumber = $('input[name=page]').val();
			var newPage = parseInt(pageNumber) - 1;
			var url = $('#actions').attr('action') + '?NewPage&page=' + newPage;
			window.location = url;
		}
		
}

var NewImageActions = {
		
		previewThumb : function(img, selection) 
		{ 
			var imageWidth = $('#image').width();
			var imageHeight = $('#image').height();
			var thumbWidth = $('input[name=thumbWidth]').val();
			
			if (selection.width == 0)
			{
				return;
			}
			
			var scaleX = thumbWidth / selection.width; 
			
			$('#thumbDisplay > img').css({'width' : Math.round(scaleX * imageWidth) + 'px', 
					'height' : Math.round(scaleX * imageHeight) + 'px', 
					'marginLeft' : '-' + Math.round(scaleX * selection.x1) + 'px',
					'marginTop' : '-' + Math.round(scaleX * selection.y1) + 'px'}); 
			
			$('input[name=x1]').val(selection.x1);  
			$('input[name=y1]').val(selection.y1);  
			$('input[name=x2]').val(selection.x2);  
			$('input[name=y2]').val(selection.y2);    

		},
		
		submitThumb : function() {
			
			var imageFileNameToUse = $('input[name=imageFileNameToUse]').val();
			var thumbFileNameToUse = $('input[name=thumbFileNameToUse]').val();
			var thumbWidth = $('input[name=thumbWidth]').val();
			var thumbHeight = $('input[name=thumbHeight]').val();
			
			var url = "/ab/ImageUpload.action?SubmitThumb";
			var x1 = $('#x1').val();
			var y1 = $('#y1').val();
			var x2 = $('#x2').val();
			var y2 = $('#y2').val();
			
			try
			{
				$.getJSON(url, {imageFileNameToUse: imageFileNameToUse, 
							thumbFileNameToUse: thumbFileNameToUse, 
							x1 : x1, 
							y1 : y1, 
							x2 : x2, 
							y2 : y2, 
							w : thumbWidth, 
							h : thumbHeight},
					function(jsonResult){
						
				    });
			}
			catch(err)
			{
				
			}
			
			var completionUrl = $('input[name=completionUrl]').val();
			window.location = completionUrl + "&imageFileNameToUse=" + imageFileNameToUse + "&thumbFileNameToUse=" + thumbFileNameToUse;
		}
		
}

var TabActions = {
		
		saveSelectedAdminTab : function(ui) {
	
			var selected = ui.index;
			$.getJSON("/ab/TabIndex.action", {tabId : 'ADMIN_TAB_INDEX', tabIndex: selected},
				function(jsonResult){
					
			    });
		},
		
		saveSelectedContentTab : function(ui) {
			
			var selected = ui.index;
			$.getJSON("/ab/TabIndex.action", {tabId : 'EDIT_CONTENT_TAB_INDEX', tabIndex: selected},
				function(jsonResult){
					
			    });
		},
		
		openLastSelectedTab : function(tabHtmlId, tabIndexFromSession)
		{
			if (tabIndexFromSession == null)
			{
				return;
			}
			
			var $tabs = $(tabHtmlId).tabs();
			var currentlySelectedTab = $tabs.tabs('option', 'selected');
			
			if (tabIndexFromSession != currentlySelectedTab)
			{
				$tabs.tabs('select', tabIndexFromSession);
			}
		}

}

var FancyBoxActions = {
		expandToFit : function() {
			
		}
}

var ArtistSearchActions = {
		
		searchType : "latestimages",
		
		init : function() {
			$('#ArtistSearchForm').slideUp(1000, function() {
				$('#ArtistSearchForm').css({opacity: '0'});
			});
		},
		
		openSearchForm : function() {
			$('#ArtistSearchForm').css({opacity: '1'}, 1000);
			$('#ArtistSearchForm').slideDown(1000, function() {
				$('#openArtistSearchForm').css({display: 'none'});
				$('#closeArtistSearchForm').css({display: 'block'});
			});
		},
		
		closeSearchForm : function() {
			$('#ArtistSearchForm').slideUp(1000, function() {
				$('#openArtistSearchForm').css({display: 'block'});
				$('#closeArtistSearchForm').css({display: 'none'});
				$('#ArtistSearchForm').css({opacity: '0'}, 1000);
			});
		},
		
		doSearch : function() {
			var discipline = $('#discipline').val();
			var lastName = $('#lastName').val();
			ArtistSearchActions.searchType = "artist";
			$('input[name=page]').val(1);
			
			ArtistSearchActions.doTransition(lastName, discipline, 1);
		},
		
		nextPage : function() {
			var lastName = $('#lastName').val();
			var pageNumber = $('#pageNumber').text();
			
			var newPage = parseInt(pageNumber) + 1;
			//$('input[name=page]').val(newPage);
			var discipline = $('#discipline').val();
			
			ArtistSearchActions.doTransition(lastName, discipline, newPage);
		},
		
		prevPage : function() {
			var lastName = $('#lastName').val();
			var pageNumber = $('#pageNumber').text();
			
			var newPage = parseInt(pageNumber) - 1;
			//$('input[name=page]').val(newPage);
			var discipline = $('#discipline').val();
			
			ArtistSearchActions.doTransition(lastName, discipline, newPage);
		},
		
		doTransition : function(lastName, discipline, newPage)
		{
			ArtistSearchActions.showLoading();
			$('#ourtistResultsContainer').animate({opacity : 0}, 1000, function() {
				$('#ourtistResultsContainer').load("/ab/Ourtists.action?Search", 
					{discipline : discipline, lastName : lastName, page : newPage, searchType : ArtistSearchActions.searchType}, function() {
						ArtistSearchActions.hideLoading();
						$('#ourtistResultsContainer').animate({opacity : 1}, 1000, function() {
							ArtistSearchActions.addImageEvents();
						});
					});
			});
		},
		
		showLoading : function() {
			$('#resultsLoadingAnimationContainer').animate({opacity: 1}, 500);
		},
		
		hideLoading : function() {
			$('#resultsLoadingAnimationContainer').animate({opacity: 0}, 1000);
		},
		
		addImageEvents : function() {
			$('.mouseoverImage').hover(
			   function(e) {
				$(this).stop().animate({width: '220px', height: '280px', marginTop: '0', marginLeft: '0'}, 100);
			}, function(e) {
				$(this).stop().animate({width: '200px', height: '250px', marginTop: '10px', marginLeft: '10px'}, 100);
			});
		},
		
		getRecommendedArtists : function() {
			var discipline = $('#discipline').val();
			ArtistSearchActions.searchType = "ourtist";
			$('input[name=page]').val(1);
			
			ArtistSearchActions.doTransition(discipline, 1);
		}
		
}

var OurtistActions = {
		markAsOurtist : function(userId) {
			
			$.getJSON("/ab/admin/AdministerArtistProfile.action?MarkAsOurtist", {artistId: userId},
					function(jsonResult){
						$('#ourtistFragment').load('/ab/admin/AdministerArtistProfile.action?LoadOurtistsFragment');
				    });
		},
		
		removeAsOurtist : function(userId) {
			$.getJSON("/ab/admin/AdministerArtistProfile.action?RemoveOurtistFlag", {artistId: userId},
					function(jsonResult){
						$('#ourtistFragment').load('/ab/admin/AdministerArtistProfile.action?LoadOurtistsFragment');
				    });
		}
}
