var currentFolderItem;
var albumClientIdPrefix;
var headerClientIdPrefix;

var selectedImages = new Array();
var resetImages = true;
var selectedFolders = new Array();
var selectedContacts = new Array();

var productMinWidth = 0;
var productMinHeight = 0;

function SetCurrentFolderId(id) {
	eXpress.Web.UI.Website.UiService.SetCurrentFolderId(id, DoPostBack);
}

function ItemDropped(draggable, dropzone) {
	var imageid = draggable.getAttribute("imageid");
	var itemtype = draggable.getAttribute("itemtype");
	var dropzonetype = dropzone.getAttribute("dropzonetype");

	switch (dropzonetype) {
		/* check out ... this case could be removed */ 
		case "AlbumMain":
			switch (itemtype) {
				case "AlbumItem":
					CallImageDetailDialog(imageid);
					break;
				case "AlbumFolderItem":
					selectedFolders = new Array();
					ChangeAlbum('F_' + draggable.get_imageId());
					break;
				default:
					alert('Droptype [' + itemtype + '] on AlbumMain is not implemented');
			}
			break;

		case "PrintsMain":

			postbackCode = dropzone.getAttribute("pbref");

			switch (itemtype) {
				case "AlbumItem":
					ShowLoadingDialog();
					//perform addprints action
					if (selectedImages.length > 0) {
						var found = false;
						// check if image is in selected images
						for (i = 0; i < selectedImages.length; i++) {
							//_alert(selectedImages[i] + " " + imageid)
							if (selectedImages[i] == imageid) {
								found = true;
								break;
							}
						}
						if (found) {
							eXpress.Web.UI.Website.UiService.AddPrints(selectedImages, packmode, formatid, PrintItemDropResult);
						}
						else {
							eXpress.Web.UI.Website.UiService.AddPrint(imageid, packmode, formatid, PrintItemDropResult);
						}
					}
					else {
						eXpress.Web.UI.Website.UiService.AddPrint(imageid, packmode, formatid, PrintItemDropResult);
					}
					break;

				case "AlbumItemPartner":
					ShowLoadingDialog();
					var addDraggedImage = true;
					var parImAttr = [];
					var parImAttrItem;
					var image;
					//perform addprints action
					if (selectedImages.length > 0) {
						var found = false;
						// check if image is in selected images
						for (i = 0; i < selectedImages.length; i++) {
							//_alert(selectedImages[i] + " " + imageid)
							if (selectedImages[i] == imageid) {
								found = true;
								break;
							}
						}
						if (found) {
							for (i = 0; i < selectedImages.length; i++) {
								image = $get(selectedImages[i] + '_handle');
								parImAttr[i] = MakeParImAttrItem(image, selectedImages[i]);
							}

							addDraggedImage = false;
							eXpress.Web.UI.Website.UiService.DldImgFromPartner(parImAttr, eXpress.Web.UI.Website.EditorDnDType.prints, AddPrintPartnerItemResult);
						}
					}

					if (addDraggedImage) {
						image = $get(imageid + '_handle');
						parImAttr[0] = MakeParImAttrItem(image, imageid);
						eXpress.Web.UI.Website.UiService.DldImgFromPartner(parImAttr, eXpress.Web.UI.Website.EditorDnDType.prints, AddPrintPartnerItemResult);
					}
					break;
			}

			break;

		default:
			alert('Dropzonetype [' + dropzonetype + '] is not implemented');
	}
}

function MakeParImAttrItem(image, imageId) {
	parImAttrItem = new eXpress.Web.UI.Website.PartnerImageAttributes();
	parImAttrItem.Id = imageId;

	if (image != null) {
		parImAttrItem.FileName = image.getAttribute("filename");
		parImAttrItem.DownloadUrl = image.getAttribute("downloadurl");
		parImAttrItem.MediaStorePartnerId = image.getAttribute("mediastorepartnerid");
		parImAttrItem.FileSize = image.getAttribute("filesize");
		parImAttrItem.Angle = image.getAttribute("angle");
		parImAttrItem.IsPhotoInfoAvailable = true;
	}
	else {
		parImAttrItem.IsPhotoInfoAvailable = false;
	}

	return parImAttrItem;
}

var cancelDownload = false;
function AddPrintPartnerItemResult(downloadsessionResult) {
	if (downloadsessionResult) {
		if (downloadsessionResult.Message && downloadsessionResult.Message != '') {
			// Partner exception
			alert(downloadsessionResult.Message);
			return;
		}

		// Check if partner file(s) are downloaded
		var isDownloaded = downloadsessionResult.IsDownloaded;
		var editorDnDtype = downloadsessionResult.EditorDnDType;
		var time = downloadsessionResult.WaitTime;
		var maxTime = downloadsessionResult.MaxWaitTime;
		var interval = 1000;

		if (cancelDownload == true) {
			RestoreRefreshEditor(editorDnDtype);

			DrawProgress('STOP', downloadsessionResult.ProgressPhotos, downloadsessionResult.TotalNrPhotos, downloadsessionResult.DownloadedNrPhotos, downloadsessionResult.ErrorNrPhotos);
			cancelDownload = false;
			return;
		}

		if (time == 0) {
			ShowDownloadDialog(downloadsessionResult.TotalNrPhotos);
			time = interval;
			setTimeout("DelayedDownloadCheckCompleted('" + downloadsessionResult.DownloadSessionId + "'," + time + ", " + editorDnDtype + ")", interval);
		}
		else if (!isDownloaded && time < maxTime) {
			// Download is not completed yet, check again delayed ...
			DrawProgress('DOWNLOADING', downloadsessionResult.ProgressPhotos, downloadsessionResult.TotalNrPhotos, downloadsessionResult.DownloadedNrPhotos, downloadsessionResult.ErrorNrPhotos);
			time = time + interval;
			setTimeout("DelayedDownloadCheckCompleted('" + downloadsessionResult.DownloadSessionId + "'," + time + ", " + editorDnDtype + ")", interval);
		}
		else if (!isDownloaded && time >= maxTime) {
			// Download too slow: NOT USED
			lalert("ProductEditor.MediaStorePartner.TimeOut");
			DrawProgress('COMPLETE', downloadsessionResult.ProgressPhotos, downloadsessionResult.TotalNrPhotos, downloadsessionResult.DownloadedNrPhotos, downloadsessionResult.ErrorNrPhotos);

			RestoreRefreshEditor(editorDnDtype);
		}
		else if (isDownloaded) {
			switch (editorDnDtype) {
				case eXpress.Web.UI.Website.EditorDnDType.prints:
					if (downloadsessionResult.ImageIds != null && downloadsessionResult.ImageIds.length > 0) {
						eXpress.Web.UI.Website.UiService.AddPartnerPrints(downloadsessionResult.ImageIds, packmode, formatid, PrintItemDropResult);
					}
					else {
						RestoreRefreshEditor(editorDnDtype);
					}
					break;

				case eXpress.Web.UI.Website.EditorDnDType.blockupdate:
					if (downloadsessionResult.ImageIds != null && downloadsessionResult.ImageIds.length > 0) {
						p.ImageId = downloadsessionResult.ImageIds[0];
						eXpress.Web.UI.Website.UiService.UpdateBlock(pe.DefinitionId, pe.ProductCode, pe.currentSpread, p, pe.maxlength, packmode, pe.renderPreview, pe.singlesided, false, OnUpdateBlockComplete);
					}
					else {
						RestoreRefreshEditor(editorDnDtype);
					}
					break;

				case eXpress.Web.UI.Website.EditorDnDType.blockselect:
					if (downloadsessionResult.ImageIds != null && downloadsessionResult.ImageIds.length > 0) {
						eXpress.Web.UI.Website.UiService.FillSpreads(downloadsessionResult.ImageIds, pe.DefinitionId, pe.ProductCode, packmode, addspreads, coverOnly, false, SpreadsFilled);
					}
					else {
						RestoreRefreshEditor(editorDnDtype);
					}
					break;

				case eXpress.Web.UI.Website.EditorDnDType.imagecontainer:
					if (downloadsessionResult.ImageIds != null && downloadsessionResult.ImageIds.length > 0) {
						eXpress.Web.UI.Website.UiService.AddPhotoBookItems(downloadsessionResult.ImageIds, ImageContainer.positions.length, ImageContainer.GetDefinitionId(), EmptyGuid, false, LoadImageContainerImages);
					}
					else {
						RestoreRefreshEditor(editorDnDtype);
					}
					break;
				case eXpress.Web.UI.Website.EditorDnDType.orderprints:
					if (downloadsessionResult.ImageIds != null && downloadsessionResult.ImageIds.length > 0) {
						eXpress.Web.UI.Website.UiService.SaveSelection(downloadsessionResult.ImageIds, RedirectToComplete);
					}
					else {
						RestoreRefreshEditor(editorDnDtype);
					}
					break;

			}
			// Download is completed
			DrawProgress('COMPLETE', 100, downloadsessionResult.TotalNrPhotos, downloadsessionResult.DownloadedNrPhotos, downloadsessionResult.ErrorNrPhotos);
		}
	}
	else {
		HideLoadingDialog();
		if (pe) {
			pe.isupdatingimage = false;
		}
		if (addingselection != null) {
			addingselection = false;
		}
	}
}

function RestoreRefreshEditor(editorDnDtype) {
	switch (editorDnDtype) {
		case eXpress.Web.UI.Website.EditorDnDType.prints:
			PrintItemDropResult()
			break;
		case eXpress.Web.UI.Website.EditorDnDType.blockupdate:
			PerformCloseDialog();
			pe.isupdatingimage = false;
			break;
		case eXpress.Web.UI.Website.EditorDnDType.blockselect:
			addingselection = false;
			pe.HideLoadingDialog();
			break;
		case eXpress.Web.UI.Website.EditorDnDType.imagecontainer:
			addingselection = false;
			ImageContainer.Reset();
			HideLoadingDialog();
			break;
		case eXpress.Web.UI.Website.EditorDnDType.orderprints:
			HideLoadingDialog();
			RedirectToComplete();
			break;
	}
}

var currentProgress = 0;
function DrawProgress(Status, Progress, TotalNrPhotos, DownloadedNrPhotos, ErrorNrPhotos) {
	//Max width of progress bar
	var progressBarWidth = 250;
	var progressBar = $get("ProgressBar");
	var progressBarContainer = $get("ProgressBarContainer");
	var totalNrPhotos = $get('totalNrPhotos');
	var downloadedNrPhotos = $get('downloadedNrPhotos');
	//var errorNrPhotos = $get('errorNrPhotos');
	var progressPhotos = $get('progressPhotos');

	if (totalNrPhotos && progressBarContainer) {
		totalNrPhotos.innerHTML = TotalNrPhotos;
		downloadedNrPhotos.innerHTML = DownloadedNrPhotos;
		//errorNrPhotos.innerHTML = ErrorNrPhotos;
		progressPhotos.innerHTML = Progress;

		if (Status == "START") {
			//Show progress bar
			progressBarContainer.style.visibility = "visible";
			//Set width of progress bar to 0px
			progressBar.style.width = "0px";
		}
		else if (Status == "DOWNLOADING") {
			//show upload progress                    
			if (currentProgress < Math.round(Progress * (progressBarWidth / 100))) {
				if (Progress <= 100) {
					currentProgress = Math.round(Progress * (progressBarWidth / 100));
				}
			}
			//Set width of progress bar
			if (progressBar) {
				progressBar.style.width = currentProgress + "px";
			}
		}
		else if (Status == "COMPLETE") {
			//show upload progress                    
			if (currentProgress < Math.round(Progress * (progressBarWidth / 100))) {
				if (Progress <= 100) {
					currentProgress = Math.round(Progress * (progressBarWidth / 100));
				}
			}
			//Set width of progress bar
			if (progressBar) {
				progressBar.style.width = currentProgress + "px";
			}

			currentProgress = 0;
			if (TotalNrPhotos > 15) {
				setTimeout('CloseDialog();', 3000);
			}
			else {
				setTimeout('CloseDialog();', 1500);
			}
		}
		else if (Status == "STOP") {
			currentProgress = 0;
			setTimeout('CloseDialog();', 0);
		}
	}
}

function DelayedDownloadCheckCompleted(DownloadSessionId, time, editorDnDType) {
	eXpress.Web.UI.Website.UiService.IsDownloadSessionCompleted(DownloadSessionId, time, editorDnDType, AddPrintPartnerItemResult);
}

var addspreads;
var coverOnly;
function AddImagesPartner(_addspreads, _coverOnly, availablePositionCount, editorDnDType) {
	addspreads = _addspreads;
	coverOnly = _coverOnly;
	if (selectedImages.length > 0) {
		var parImAttr = [];
		var parImAttrItem;
		var image;

		var pictureCount;
		if (availablePositionCount == -1) { // -1 = unlimited
			pictureCount = selectedImages.length
		}
		else {
			pictureCount = availablePositionCount
		}

		for (i = 0; (i < selectedImages.length) && (i < pictureCount); i++) {

			image = $get(selectedImages[i] + '_handle');
			parImAttr[i] = MakeParImAttrItem(image, selectedImages[i]);
		}

		if (pictureCount != 0) {
			eXpress.Web.UI.Website.UiService.DldImgFromPartner(parImAttr, editorDnDType, AddPrintPartnerItemResult);
		}
		else {
			RestoreRefreshEditor(editorDnDType);
		}
	}
	else {
		if (availablePositionCount != 0) {
			eXpress.Web.UI.Website.UiService.DownloadFolderFromPartner(editorDnDType, availablePositionCount, AddPrintPartnerItemResult);
		}
		else {
			RestoreRefreshEditor(editorDnDType);
		}
	}
}

function ShowDownloadDialog(totalPhotos) {
	// get the dialog
	eXpress.Web.UI.Website.UiService.GetDownloadDialog(totalPhotos, ShowDownloadDialogComplete);
}

function ShowDownloadDialogComplete(result) {
	CreateOverlayDialog(result, true, 'dialogMedium moveSelected');
}

function PrintItemDropResult() {
	if (addingselection != null && addingselection) {
		addingselection = false;
	}
	PerformPostBack();
}

function PerformRefresh(result) {
	if (result.length > 0) {
		RefreshPhoto();
	}
}

function GetImagesFromFolder(segment) {
	var imagesfromfolder = new Array(0);
	var divs = new Array();

	//Populate div array with all the divs on the page
	if (segment != null) {
		divs = segment.getElementsByTagName("span");
	}

	//loop through divs
	for (var i = divs.length - 1; i >= 0; i--) {
		if (divs[i].id.substring(divs[i].id.length - 7) == "_handle") {
			imagesfromfolder[imagesfromfolder.length] = divs[i].id;
		}
	}
	return imagesfromfolder;
}

function SetImageSelected(thumbid, imageid, css, skipselected) {
	var thumbhandle = $get(thumbid);
	if (thumbhandle == null) return;

	var updateArray = false;

	if (Sys.UI.DomElement.containsCssClass(thumbhandle, css)) {
		if (!skipselected) {
			Sys.UI.DomElement.removeCssClass(thumbhandle, css);
			updateArray = true;
		}
	}
	else {
		Sys.UI.DomElement.addCssClass(thumbhandle, css);

		var isadded = false;
		for (var i = 0; i < selectedImages.length; i++) {
			if (selectedImages[i] == imageid) {
				isadded = true;
				break;
			}
		}
		if (!isadded) {
			selectedImages[selectedImages.length] = imageid;
		}
	}

	if (updateArray) {
		var tempArray = new Array(0);

		for (var i = 0; i < selectedImages.length; i++) {
			if (selectedImages[i] != imageid) {
				tempArray[tempArray.length] = selectedImages[i];
			}
		}
		selectedImages = tempArray;
	}

	UpdateSelectedImagesCounter();
}

//TODO: use Sys.UI.DomElement.addCssClass and Sys.UI.DomElement.removeCssClass
function SetFolderSelected(albumClientIdPrefix, thumbid, imageid, selectMultiple) {
	var thumbhandle = $get(thumbid);
	if (thumbhandle == null) return;
	if (!selectMultiple) {
		for (i = 0; i < selectedFolders.length; i++) {
			$get(albumClientIdPrefix + selectedFolders[i] + '_handle').className = 'folderitemhandlesmall';
		}
	}
	if (thumbhandle.className == "folderitemhandle") {
		thumbhandle.className = "folderitemhandle_on";

		selectedFolders[selectedFolders.length] = imageid;
	}
	else if (thumbhandle.className == "folderitemhandlesmall") {
		thumbhandle.className = "folderitemhandlesmall_on";

		selectedFolders[selectedFolders.length] = imageid;
	}
	else {
		if (thumbhandle.className == "folderitemhandlesmall_on") {
			thumbhandle.className = "folderitemhandlesmall";
		}
		else {
			thumbhandle.className = "folderitemhandle";
		}
		if (selectMultiple) {
			var tempArray = new Array(0);

			for (i = 0; i < selectedFolders.length; i++) {
				if (selectedFolders[i] != imageid) {
					tempArray[tempArray.length] = selectedFolders[i];
				}
			}
			selectedFolders = tempArray;
		}
	}
}

//TODO: use Sys.UI.DomElement.addCssClass and Sys.UI.DomElement.removeCssClass
function SelectFolder(thumbid, folderid) {

	var thumbhandle = $get(thumbid);
	if (thumbhandle == null) return;

	// checked
	if (thumbhandle.className == "folderitemhandle") {
		thumbhandle.className = "folderitemhandle_on selected";

		// uncheck other folders
		for (i = 0; i < selectedFolders.length; i++) {
			$get(albumClientIdPrefix + selectedFolders[i] + '_handle').className = "folderitemhandle";
			$get(albumClientIdPrefix + selectedFolders[i] + '_handle_box').checked = false;
		}

		selectedFolders = [];
		selectedFolders[0] = folderid;
	}
	// unchecked
	else {
		thumbhandle.className = "folderitemhandle";
		$get(albumClientIdPrefix + folderid + '_handle_box').checked = false;
		selectedFolders = [];
	}
}

function SelectFolderAFFGridView(checkBoxId, tableId, folderid) {
	var checkBox = $get(checkBoxId);
	if (checkBox == null) return;

	// checked
	if (checkBox.checked) {
		// uncheck other albums from friends
		var checkboxes = $get(tableId).getElementsByTagName('input');

		for (i = 0; i < checkboxes.length; i++) {
			if (checkboxes[i].checked && checkboxes[i] != checkBox) {
				checkboxes[i].checked = false;
			}
		}

		selectedFolders = [];
		selectedFolders[0] = folderid;
	}
	// unchecked
	else {
		selectedFolders = [];
	}
}

var imageselectclass = null;
var imageselectmode = 1;
function SelectAllImages(css, mode) {
	imageselectclass = css;
	var imageonly = false;
	if (mode) {
		imageselectmode = mode;
		imageonly = true;
	}
	var object = new eXpress.Web.UI.Website.FolderContentResult();

	ShowLoadingDialog();

	var mediastorePartnerType = GetCookie('mspt').toLowerCase();
	var partnerAlbumId = GetCookie('abepa');
	if (mediastorePartnerType == '' || mediastorePartnerType == 'extrafilm') {
		object.AlbumId = currentFolderItem;
	}
	else {
		object.AlbumId = partnerAlbumId;
	}

	eXpress.Web.UI.Website.UiService.GetFilesForFolder(imageonly, false, object, SelectAllImagesComplete);
}

function DeSelectAllImages(css) {
	ShowLoadingDialog();

	selectedImages = [];
	unmarkAllImages(css);

	UpdateSelectedImagesCounter();

	HideLoadingDialog();
}

function UpdateSelectedImagesCounter() {
	var counter = $get(headerClientIdPrefix + 'selectedImagesCounter');
	if (counter) {
		counter.innerHTML = selectedImages.length;
	}

	var addbutton = $get("addselectionlink");
	if (addbutton) {
		if (selectedImages.length > 0) {
			jQuery(addbutton).removeClass("hide");
			jQuery("#addalllink").addClass("hide");
		}
		else {
			jQuery(addbutton).addClass("hide");
			jQuery("#addalllink").removeClass("hide");
		}
	}
}

function SelectAllImagesComplete(obj) {
	if (obj.FileIds && obj.FileIds.length > 0) {
		selectedImages = obj.FileIds;
		markSelectedImages(imageselectmode, imageselectclass);
	}
	else if (obj.Message && obj.Message != '') {
		alert(obj.Message);
	}
	UpdateSelectedImagesCounter();
	HideLoadingDialog();
}

function SelectCheckBoxes(segment, found) {

	var inputs = segment.getElementsByTagName('input');
	var allChecked = false;
	for (var i = inputs.length - 1; i >= 0; i--) {
		var input = inputs[i];
		if (input.type == 'checkbox') {
			if (!input.disabled) {
				allChecked = true;
				input.checked = found;
			}
		}
	}
	return allChecked;
}

function DeleteFolderImages() {
	if (selectedImages.length > 0) {
		eXpress.Web.UI.Website.UiService.GetDeleteImagesDialog(selectedImages, RenderWarnDialog);
	}
	else {
		lalert('eXpress.DeleteFolderImages.NoImagesSelected');
	}
}

function OnDeleteComplete(result) {
	if (result == true) {
		RefreshAlbum();
		CloseDialog();
		selectedImages = new Array();
		currentImageId = null;
	}
	UpdateSelectedImagesCounter();
}

function OnDeleteFoldersComplete(result) {
	if (result == true) {
		RedirectTo();
	}
}

var counter = 1

function MouseOverImage(thumbid, seton, e) {

	if (typeof (DnDManager) != "undefined" && DnDManager) {
		if (DnDManager.isdragging) {
			return;
		}
	}

	var tg = new Sys.UI.DomEvent(e);
	var reltg = null;
	var out = true;

	if (e.type == "mouseout") {
		reltg = (e.relatedTarget) ? e.relatedTarget : e.toElement;
		if (reltg) {
			while (reltg != tg && reltg.nodeName != 'body') {
				reltg = reltg.parentNode;
				if (!reltg) {
					break;
				}
			}
			if (reltg) {
				if (reltg == tg.target) {
					out = false;
				}
			}
		}
	}

	if (out) {
		if (seton) {
			Sys.UI.DomElement.addCssClass($get(thumbid), "thumbitemhandle_hover");
		}
		else {
			Sys.UI.DomElement.removeCssClass($get(thumbid), "thumbitemhandle_hover");
		}
	}
}

// Tooltip functions
var tooltipTimerID;
var hideTooltipTimeout = 500;

function CallToolTip(sender, eventArgs) {
	if (!DnDManager.get_isdragging()) {
		ShowTooltip.apply(null, eventArgs);
	}
}

function CallHideTooltip(sender, eventArgs) {
	HideTooltip.apply(null, eventArgs);
}

function ShowTooltip(id, type, tooltipcontext, e) {
	clearTimeout(tooltipTimerID);
	if (!DnDManager.get_isdragging()) {
		tooltipTimerID = setTimeout("ShowTooltip_x('" + id + "','" + type + "','" + tooltipcontext + "')", hideTooltipTimeout * 3);
	}
}

function ShowTooltip_x(id, type, tooltipcontext) {
	if (!DnDManager.get_isdragging() && id != null) {
		var tooltip = new eXpress.Web.UI.Website.TooltipFunctionResult();

		tooltip.Id = id;

		switch (type) {
			case "folder":
				eXpress.Web.UI.Website.UiService.GetFolderTooltipInfo(tooltip, UpdateTooltipContent);
				break;
			case "file":
				tooltip.TooltipContext = tooltipcontext;
				eXpress.Web.UI.Website.UiService.GetFileTooltipInfo(tooltip, UpdateTooltipContent);
				break;
			default:
				alert('This tooltip function is not implemented!');
		}
	}
}

function HideTooltip() {
	clearTimeout(tooltipTimerID);
	var tooltip = $get('tooltip')
	if (tooltip) document.getElementsByTagName('form')[0].removeChild($get('tooltip'));
}

function UpdateTooltipContent(obj) {
	if (obj.Tooltip == '')
		return;
	var tooltip = document.createElement('div');
	tooltip.innerHTML = obj.Tooltip;
	tooltip.style.display = 'block';
	tooltip.id = 'tooltip';
	tooltip.className = "tooltip";
	tooltip.style.left = (xMousePos + 5) + "px";
	if ((xMousePos + 5 + 260) > windowsize.width) {
		tooltip.style.left = (xMousePos - 250) + "px";
	}
	tooltip.style.top = (yMousePos + 5) + "px";

	document.getElementsByTagName('form')[0].appendChild(tooltip);
}

// Validations
function LimitMultiLineLength(obj, e) {
	var re = new RegExp("\r\n", "g");
	x = obj.value.replace(re, "").length;

	if (x > obj.getAttribute("maxLength")) {
		if (obj.getAttribute("ErrorMessage")) {
			alert(obj.getAttribute("ErrorMessage"));
		}
		return false;
	}
	return true;
}

function Validate_DialogFolderCreate(func, callback) {
	var d = $get('createfolderdescription');
	if (LimitMultiLineLength(d)) {
		waterMark_Validate(d);
		window.postValidate = function() { waterMark_Blur(d); FocusMainDialog() }
		func(callback);
	}
}

function Validate_DialogFileRename(func, imageid) {
	var d = $get('ctl01_RenameFileDescription');
	if (LimitMultiLineLength(d)) {
		waterMark_Validate(d);
		window.postValidate = function() { waterMark_Blur(d); FocusMainDialog() }
		func(imageid);
	}
}

function Validate_DialogFolderRename(func) {
	var d = $get('renamefolderdescription');
	if (LimitMultiLineLength(d)) {
		waterMark_Validate(d);
		window.postValidate = function() { waterMark_Blur(d); FocusMainDialog() }
		func();
	}
}


function markSelectedImages(mode, css) {
	if (selectedImages.length > 0) {
		for (i = 0; i < selectedImages.length; i++) {
			var ctrlid = (mode == 1 || mode == 2 ? albumClientIdPrefix : '') + selectedImages[i] + '_handle';
			var imageLi = $get(ctrlid);
			if (imageLi != null) {
				if (mode == 3) {
					SetImageSelected(selectedImages[i] + '_handle', selectedImages[i], "thumbitemhandle_on", true);
				}
				else {
					if (mode == 1) {
						$get(albumClientIdPrefix + selectedImages[i] + '_handle_box').checked = true;
					}
					Sys.UI.DomElement.addCssClass(imageLi, css);
				}
			}
		}
	}
}

function unmarkAllImages(css) {
	var allimages = getElementsByClassName($get(albumClientIdPrefix + "thumbs"), "li", "thumbitemhandle");
	for (var i = allimages.length - 1; i >= 0; i--) {
		Sys.UI.DomElement.removeCssClass(allimages[i], css);
		SelectCheckBoxes(allimages[i].parentNode, false);
	}
}

function ChangeAlbum(id, s, page) {

	if (typeof (currentFolderItem) != "undefined") {
		if (currentFolderItem == id) { if (page == null) return; }
		var curalbum = $get(albumClientIdPrefix + "thumbs");
		if (curalbum) { curalbum.innerHTML = ""; }
		var selectedNode = $get(albumClientIdPrefix + currentFolderItem);
		if (selectedNode) {
			if (selectedNode.getAttribute("istheme") == "false") {
				selectedNode.style.fontWeight = "normal";
			}
			selectedNode.style.fontStyle = "normal";
		}
	}

	currentFolderItem = id;

	if (typeof (updateref) != "undefined") {
		postbackCode = updateref;
	}
	else {
		postbackCode = refreshAction;
	}

	// Reset the images
	if (resetImages) {
		selectedImages = new Array();
		UpdateSelectedImagesCounter();
	}
	resetImages = true;

	// set page on album
	if (typeof (ResetAlbumPager) != "undefined") {
		if (page == null) ResetAlbumPager();
	}
	eXpress.Web.UI.Website.UiService.SetCurrentFolderId(id, PerformPostBack);
}

//Functions for albums header
function SetPhotosize(val, size) {
	var ul = $get(albumClientIdPrefix + "thumbs");

	if (ul) {
		Sys.UI.DomElement.removeCssClass(ul, "listPhotos" + (val == 'big' ? "Small" : "Big"));
		Sys.UI.DomElement.addCssClass(ul, "listPhotos" + (val == 'big' ? "Big" : "Small"));
	}

	var linkBigFormat = $get(headerClientIdPrefix + "linkBigFormat");
	var spanBigFormat = $get(headerClientIdPrefix + "spanBigFormat");
	var linkSmallFormat = $get(headerClientIdPrefix + "linkSmallFormat");
	var spanSmallFormat = $get(headerClientIdPrefix + "spanSmallFormat");

	if (val == 'big') {
		Sys.UI.DomElement.removeCssClass(spanBigFormat, "hide");
		Sys.UI.DomElement.addCssClass(linkBigFormat, "hide");
		Sys.UI.DomElement.removeCssClass(linkSmallFormat, "hide");
		Sys.UI.DomElement.addCssClass(spanSmallFormat, "hide");
	}
	else {
		Sys.UI.DomElement.removeCssClass(linkBigFormat, "hide");
		Sys.UI.DomElement.addCssClass(spanBigFormat, "hide");
		Sys.UI.DomElement.removeCssClass(spanSmallFormat, "hide");
		Sys.UI.DomElement.addCssClass(linkSmallFormat, "hide");
	}

	// do pictures
	var allimages = ul.getElementsByTagName("img");

	for (var i = 0; i < allimages.length; i++) {
		if (allimages[i].id.indexOf('imageProductIndicator') < 0) {
			if (allimages[i].width > allimages[i].height) {
				allimages[i].width = size;
			}
			else {
				allimages[i].height = size;
			}
		}
	}

	$get(headerClientIdPrefix + 'hiddenFormat').value = val;

	eXpress.Web.UI.Website.UiService.SetAlbumThumbSize(size);
}

//Functions for albums from friends
function OpenCloseGalleryList(controlName) {
	var dd = $get('dd_' + controlName);
	var dt = $get('dt_' + controlName);

	if (dt.className == 'closed') {
		dt.className = 'openend';
		dd.style.display = 'block';
	}
	else {
		dt.className = 'closed';
		dd.style.display = 'none';
	}
}

// impulse dialog pocketbook decision
var redirecturl;

function ShowProductHelpDialog(mnemonic) {
	eXpress.Web.UI.Website.UiService.GetSmallHelpDialog(mnemonic, RenderSmallDialog);
}

function ShowProductImpulsDialog(mnemonic) {
	eXpress.Web.UI.Website.UiService.GetImpulsBuyDialog(mnemonic, RenderImpulsDialog);
}

function RenderImpulsDialog(result) {
	CreateOverlayDialog(result, false, 'dialogMedium pocketAlbum');
}

function RedirectToPrints(url, formatid) {
	ShowLoadingDialog();

	redirecturl = url;

	if (selectedImages.length > 0) {
		eXpress.Web.UI.Website.UiService.AddPrints(selectedImages, packmode, formatid, RedirectToComplete);
	}
	else {
		window.location = url;
	}
}

// used in content
function SaveSelectionAndRedirect(url) {
	ShowLoadingDialog();
	redirecturl = url;

	var mediastorePartnerType = GetCookie('mspt').toLowerCase();
	if (mediastorePartnerType == '' || mediastorePartnerType == 'extrafilm') {
		if (selectedImages) {
			if (selectedImages.length > 0) {
				eXpress.Web.UI.Website.UiService.SaveSelection(selectedImages, RedirectToComplete);
			}
			else {
				eXpress.Web.UI.Website.UiService.SetCurrentAlbumAsSelection(RedirectToComplete);
			}
		}
		else {
			window.location = url;
		}
	}
	// MediaStorepartner album: Download photos first and add selection
	else {
		if (selectedImages && selectedImages.length > 0) {
			var parImAttr = [];

			for (i = 0; i < selectedImages.length; i++) {
				var image = $get(albumClientIdPrefix + selectedImages[i] + '_handle');
				parImAttr[i] = MakeParImAttrItem(image, selectedImages[i]);
			}

			eXpress.Web.UI.Website.UiService.DldImgFromPartner(parImAttr, eXpress.Web.UI.Website.EditorDnDType.orderprints, AddPrintPartnerItemResult);
		}
		else {

			window.location = url;
		}
	}
}

function RedirectToPhotoBooks(url, prdCode) {
	ShowLoadingDialog();

	redirecturl = url;
	if (selectedImages.length > 0) {
		eXpress.Web.UI.Website.UiService.AddPhotoBookItems(selectedImages, 0, EmptyGuid, prdCode, RedirectToComplete, true);
	}
	else {
		window.location = url;
	}
}

function RedirectToComplete() {
	window.location = redirecturl;
}

function PublicSharingAddSuccess(albumname, albumid) {

	if (albumid) {
		window.confirmOkAction = function() { window.location = 'photosfromfriend.aspx?albumid=' + albumid; }
	} else {
		window.confirmOkAction = CloseDialog;
	}
	eXpress.Web.UI.Website.UiService.GetPublicSharingAddSuccessDialog(albumname, RenderSmallDialog);
}

//Set cookie for mspt from Folder
function SetMsptCookieForSelectedFolder() {
	if (selectedFolders.length == 1) {
		var mspt = $get(albumClientIdPrefix + selectedFolders[0] + '_handle_box').getAttribute('mspt');
		SetCookie('mspt', mspt);
	}
}

// adds a quality icon on top of the imageBlock for albumphotos
var _forceAlbumMinRes = false;
function AddQualityIconToAlbumImages(right, height, forceAlbumMinRes) {
	var albumControl = $get(albumClientIdPrefix + "thumbs")
	var minWidth = 0;
	var minHeight = 0;

	// used in pockedbookEditor
	if (forceAlbumMinRes != null) {
		_forceAlbumMinRes = forceAlbumMinRes;
	}

	if (albumControl) {
		if (!_forceAlbumMinRes && pe && (pe.spreadMinWidth != 0) && (pe.spreadMinHeight != 0)) {
			minWidth = pe.spreadMinWidth;
			minHeight = pe.spreadMinHeight;
		}
		else {
			// print product
			minWidth = productMinWidth;
			minHeight = productMinHeight;
		}

		var allimagesQIcon = getElementsByClassName(albumControl, "div", "qualityiconalbum");

		if (allimagesQIcon && allimagesQIcon.length > 0) {
			for (i = 0; i < allimagesQIcon.length; i++) {
				if (allimagesQIcon[i]) {	

					if ((allimagesQIcon[i].getAttribute("imageWidth") < minWidth) || (allimagesQIcon[i].getAttribute("imageHeight") < minHeight)) {
						allimagesQIcon[i].style.display = "block";

						allimagesQIcon[i].style.right = right + "px";
						allimagesQIcon[i].style.top = height + "px";
						allimagesQIcon[i].style.zIndex = 50;
					}
					else {
						allimagesQIcon[i].style.display = "none";
					}
				}
			}
		}
	}
}