﻿

var selectedImageMaxWidth = 350;
var _primaryImageTypeID = 1;
var _sidebarImageTypeID = 5;

$(document).ready(function () {
	var selectedImage = $('img#selectedImage');
	var selectedSidebarImage = $('img#selectedSidebarImage');

	if (selectedImage.length > 0) {
		if (selectedImage.attr('src').length == 0) {
			selectedImage.hide();
		}
		else {
			resizeImage(selectedImage, selectedImageMaxWidth);
		}
	}

	if (selectedSidebarImage.length > 0) {
		if (selectedSidebarImage.attr('src').length == 0) {
			selectedSidebarImage.hide();
		}
		else {
			resizeImage(selectedSidebarImage, selectedImageMaxWidth);
		}
	}

	attachImageTypeChanged();
	attachChooseImageOnClick();
	attachChooseSidebarImageOnClick();
	attachDeleteImageOnClick();
	attachDeleteSidebarImageOnClick();
	attachDeleteResourceOnClick();
	attachDeleteCarouselOnClick();
	attachDeleteNewsOnClick();
	attachPreviewEventButtonOnClick();
	attachSaveEventButtonOnClick();
	attachPreviewPrimaryImageButtonOnClick();
	attachSavePrimaryImageButtonOnClick();
	attachPreviewArticlePrimaryImageButtonOnClick();
	attachPreviewArticleSidebarImageButtonOnClick();
});



function attachImageTypeChanged() {
	var imageTypeDropDown = $('select#imageTypeID');

	if (imageTypeDropDown.length > 0) {
		imageTypeDropDown.change(function () {
			var imageTypeID = $(this).val()
			var previewButton = $('input#previewPrimaryImage');
			if (imageTypeID == _primaryImageTypeID) {
				previewButton.fadeIn('slow');
				//previewButton.show();
			}
			else {
				previewButton.fadeOut('slow');
				//previewButton.hide();
			}
		});
	}
}

function changeImageDisplayed(imgURL, element) {
	if ($(element).length > 0) {
		$(element).attr('src', imgURL);
		$(element).load(function () {
			resizeImage($(element), selectedImageMaxWidth);
		});
	}
}

function updateCMSSelectedImage(imgURL) {
	changeImageDisplayed(imgURL, $('img#selectedImage'));
}

function updateCMSSelectedSidebarImage(imgURL) {
	changeImageDisplayed(imgURL, $('img#selectedSidebarImage'));
}

function attachChooseImageOnClick() {
	var chooseImage = $("img.chooseImage");

	if (chooseImage.length > 0) {
		chooseImage.click(function () {
			BrowseServer();
		});
	}
}

function attachChooseSidebarImageOnClick() {
	var chooseImage = $("img.chooseSidebarImage");

	if (chooseImage.length > 0) {
		chooseImage.click(function () {
			BrowseServerSidebarImage();
		});
	}
}

function attachDeleteImageOnClick() {
	attachConfirmAction($("form.deleteImageConfirm"), "Are you sure you want to delete this image?");
}

function attachDeleteSidebarImageOnClick() {
	attachConfirmAction($("form.deleteSidebarImageConfirm"), "Are you sure you want to delete this image?");
}


function attachDeleteResourceOnClick() {
	attachConfirmAction($("form.deleteResourceForm"), "Are you sure you want to delete this resource?");
}

function attachDeleteCarouselOnClick() {
	attachConfirmAction($("form.deleteCarouselForm"), "Are you sure you want to delete this carousel?");
}

function attachDeleteNewsOnClick() {
	attachConfirmAction($("form.deleteNewsForm"), "Are you sure you want to delete this news item?");
}

function attachConfirmAction(element, message) {
	if (element.length > 0) {
		element.click(function (e) {
			var response = confirm(message);
			if (!response)
				e.preventDefault();
		});
	}
}

function updateCKEditorAccessServices() {
	updateCKEditorContent($('#AccessServices'));
}

function updateCKEditorFullDescription() {
	updateCKEditorContent($('#FullDescription'));
}

function updateCKEdtiorRecommendations() {
	updateCKEditorContent($('#Recommendations'));
}

//This is needed because CKEditor content is not synched with the page element (textarea) at all times
//See www.codedigest.com/CodeDigest/155-Using-RequiredField-Validator-with-CKEditor-in-ASP-Net.aspx
function updateCKEditorContent(element) {
	if (element.length > 0) {
		//var ckEditorObject = $(element).ckeditorGet();
		CKEDITOR.instances[$(element).attr('id')].updateElement();
		//ckeditorinstance.updateElement();
	}
}


//********************************************//
//******** CK Finder Helper Functions ********//
//********************************************//

function BrowseServer() {
	// You can use the "CKFinder" class to render CKFinder in a page:
	var finder = new CKFinder();
	finder.basePath = '/ckeditor/ckfinder/';  //'../../'; // The path for the installation of CKFinder (default = "/ckfinder/").
	finder.selectActionFunction = SetFileField;
	finder.popup();

	// It can also be done in a single line, calling the "static"
	// Popup( basePath, width, height, selectFunction ) function:
	// CKFinder.Popup( '../../', null, null, SetFileField ) ;
	//
	// The "Popup" function can also accept an object as the only argument.
	// CKFinder.Popup( { BasePath : '../../', selectActionFunction : SetFileField } ) ;
}

function SetFileField(fileUrl) {
	var fileName = fileUrl.substring(fileUrl.lastIndexOf('/') + 1);
	$('#imagePath').val(fileUrl);
	updateCMSSelectedImage(fileUrl);
}

function BrowseServerSidebarImage() {
	// You can use the "CKFinder" class to render CKFinder in a page:
	var finder1 = new CKFinder();
	finder1.basePath = '/ckeditor/ckfinder/';  //'../../'; // The path for the installation of CKFinder (default = "/ckfinder/").
	finder1.selectActionFunction = SetSidebarImageFileField;
	finder1.popup();

	// It can also be done in a single line, calling the "static"
	// Popup( basePath, width, height, selectFunction ) function:
	// CKFinder.Popup( '../../', null, null, SetFileField ) ;
	//
	// The "Popup" function can also accept an object as the only argument.
	// CKFinder.Popup( { BasePath : '../../', selectActionFunction : SetFileField } ) ;
}

function SetSidebarImageFileField(fileUrl) {
	var fileName = fileUrl.substring(fileUrl.lastIndexOf('/') + 1);
	$('#sidebarImagePath').val(fileUrl);
	updateCMSSelectedSidebarImage(fileUrl);
}


//********************************************//
//****** End CK Finder Helper Functions ******//
//********************************************//



function attachPreviewEventButtonOnClick() {
	var previewButton = $('input#previewEventButton');
	attachMultiSubmitButtonClick(previewButton, editPreviewEventForm(), "/CMS/CMSPreviewEvent/", "_blank");
}

function attachSaveEventButtonOnClick() {
	var saveButton = $('input#saveEventButton');
	attachMultiSubmitButtonClick(saveButton, editPreviewEventForm(), "/CMS/CMSEditEvent/", "");
}

function attachPreviewPrimaryImageButtonOnClick() {
	var previewButton = $('input#previewPrimaryImage');
	var imageType = $('#imageTypeID');
	var imageTypeID = 0;
	if (imageType.length > 0) {
		imageTypeID = imageType.val();
	}
	if (imageTypeID == _primaryImageTypeID) {
		attachMultiSubmitButtonClick(previewButton, imageEditAddPreviewForm(), "/CMS/CMSPreviewPrimaryImage/", "_blank");
	}
}

function attachPreviewArticlePrimaryImageButtonOnClick() {
	var previewButton = $('input#previewArticlePrimaryImage');
		attachMultiSubmitButtonClick(previewButton, articleImageEditAddPreviewForm(), "/CMS/PreviewArticlePrimaryImage/", "_blank");
	}

	function attachPreviewArticleSidebarImageButtonOnClick() {
		var previewButton = $('input#previewArticleSidebarImage');
		attachMultiSubmitButtonClick(previewButton, articleSidebarImageEditAddPreviewForm(), "/CMS/PreviewArticleSidebarImage/", "_blank");
	}

function attachSavePrimaryImageButtonOnClick() {
	var previewButton = $('input#previewPrimaryImage');
	var imageType = $('#imageTypeID');
	var imageTypeID = 0;
	if (imageType.length > 0) {
		imageTypeID = imageType.val();
	}
	if (imageTypeID == _primaryImageTypeID) {
		attachMultiSubmitButtonClick($('input#addImageButton'), imageEditAddPreviewForm(), "/CMS/CMSEventAddImage/", "");
		attachMultiSubmitButtonClick($('input#editImageButton'), imageEditAddPreviewForm(), "/CMS/CMSEventEditImage/", "");
		attachMultiSubmitButtonClick($('input#addArticleImageButton'), articleImageEditAddPreviewForm(), "/CMS/BackStagePassArticleAddImage/", "");
		attachMultiSubmitButtonClick($('input#editPrimaryImageButton'), articleImageEditAddPreviewForm(), "/CMS/BackStagePassArticleEditImage/", "");
		attachMultiSubmitButtonClick($('input#editSidebarImageButton'), articleSidebarImageEditAddPreviewForm(), "/CMS/BackStagePassArticleEditImage/", "");
	}
	else if (previewButton.length > 0) {
		previewButton.hide();
	}
}

function editPreviewEventForm() {
	return $('form#editPreviewEventForm');
}

function imageEditAddPreviewForm() {
	return $("form.imageEditAddPreviewForm");
}

function articleImageEditAddPreviewForm() {
	return $("form.articleImageEditAddPreviewForm");
}

function articleSidebarImageEditAddPreviewForm() {
	return $("form.articleSidebarImageEditAddPreviewForm");
}

function attachMultiSubmitButtonClick(button, form, action, target) {
	if (button.length > 0 && form.length > 0) {
		button.click(function (e) {
			e.preventDefault();
			if ($(form).attr('id') == 'editPreviewEventForm') {
				updateCKEditorAccessServices();
				updateCKEditorFullDescription();
				updateCKEdtiorRecommendations();
			}

			submitFormSetTargetAndAction(form, target, action);
		});
	}
}

function submitFormSetTargetAndAction(form, target, action) {
	if (formIsValid(form)) {
		form.attr('target', target);
		form.attr('action', action);
		form.submit();
	}
}

function formIsValid(form) {
	if (form[0]['__MVC_FormValidation']) {
		errors = form[0]['__MVC_FormValidation'].validate("submit");        // Validate the form
	}
	return !(errors && errors.length)
}

//This is used to validate that an image is chosen for events when adding/editing images
//The 
function attachHiddenFieldValidation() {
	Sys.Mvc.ValidatorRegistry.validators["hiddenRequired"] = function (rule) {
		return function (value, context) {
			if (value) {
				return true;
			}
			return rule.ErrorMessage;
		}
	};
}

