public static void GenerateWebContent(SalesLibraries.Business.Entities.Wallbin.Persistent.Library sourceLibrary)
		{
			var targetLibrary = new SoapLibrary();
			targetLibrary.ImportData(sourceLibrary);

			var config = new LibraryConfig();
			config.libraryId = sourceLibrary.ExtId.ToString();
			config.LoadData(Configuration.RemoteResourceManager.Instance.ErrorEmailSettingsFile.LocalPath);
			targetLibrary.config = config;

			#region Pages
			var pages = new List<SoapLibraryPage>();
			foreach (var sourcePage in sourceLibrary.Pages)
			{
				var page = new SoapLibraryPage();
				page.ImportData(sourcePage);
				pages.Add(page);
			}
			targetLibrary.pages = pages.ToArray();
			#endregion

			var autoWidgets = new List<SoapAutoWidget>();
			foreach (var sourceAutoWidget in sourceLibrary.Settings.AutoWidgets)
			{
				var autoWidget = new SoapAutoWidget();
				autoWidget.libraryId = sourceLibrary.ExtId.ToString();
				autoWidget.ImportData(sourceAutoWidget);
				autoWidgets.Add(autoWidget);
			}
			targetLibrary.autoWidgets = autoWidgets.ToArray();

			var previewContainers = new List<SoapUniversalPreviewContainer>();
			foreach (var sourcePreviewContainer in sourceLibrary.PreviewContainers)
			{
				var previewContainer = new SoapUniversalPreviewContainer();
				previewContainer.ImportData(sourcePreviewContainer);
				previewContainers.Add(previewContainer);
			}
			targetLibrary.previewContainers = previewContainers.ToArray();

			var jsonString = JsonConvert.SerializeObject(targetLibrary);
			using (var sw = new StreamWriter(Path.Combine(sourceLibrary.Path, Constants.LibrariesJsonFileName), false))
			{
				sw.Write(jsonString);
				sw.Flush();
				sw.Close();
			}

			var xml = new StringBuilder();
			xml.AppendLine("<Library>");
			xml.AppendLine(@"<Identifier>" + sourceLibrary.ExtId + @"</Identifier>");
			xml.AppendLine(@"</Library>");
			using (var sw = new StreamWriter(Path.Combine(sourceLibrary.Path, Constants.ShortLibraryInfoFileName), false))
			{
				sw.Write(xml.ToString());
				sw.Flush();
			}
		}
		private static void ImportData(
			this SoapAutoWidget target,
			SalesLibraries.Business.Entities.Wallbin.NonPersistent.AutoWidget source)
		{
			var imageConverter = TypeDescriptor.GetConverter(typeof(Bitmap));
			target.extension = source.Extension;
			target.widget = Convert.ToBase64String((byte[])imageConverter.ConvertTo(source.DisplayedImage, typeof(byte[])));
		}
		private static void ImportData(
			this SoapBanner target,
			SalesLibraries.Business.Entities.Wallbin.NonPersistent.BannerSettings source)
		{
			var imageConverter = TypeDescriptor.GetConverter(typeof(Bitmap));
			target.id = Guid.NewGuid().ToString();
			target.isEnabled = source.Enable;
			target.image = Convert.ToBase64String((byte[])imageConverter.ConvertTo(source.DisplayedImage, typeof(byte[])));
			target.showText = source.TextEnabled;
			target.imageAlignment = source.ImageAlignement.ToString().ToLower();
			target.imageVerticalAlignment = source.ImageVerticalAlignement.ToString().ToLower();
			target.text = source.TextEnabled ? source.DisplayedText : null;
			target.foreColor = source.ForeColor.ToHex();
			target.font = new Font();
			target.font.ImportData(source.Font);
			target.dateModify = DateTime.Now.ToString("MM/dd/yyyy hh:mm:ss tt");
		}
		private static void ImportData(
			this LinkBundleLinkSettings target,
			SalesLibraries.Business.Entities.Wallbin.NonPersistent.LinkSettings.LinkBundleLinkSettings source)
		{
			var imageConverter = TypeDescriptor.GetConverter(typeof(Bitmap));

			((IBaseLinkSettings)target).ImportData(source);
			target.customWebFormat = source.CustomWebFormat;
			target.bundleItems = source.Bundle.Settings.Items
				.Where(sourceBundleItem => sourceBundleItem.Visible)
				.Select(sourceBundleItem =>
				{
					IBaseLinkBundleItem linkItem;
					switch (sourceBundleItem.ItemType)
					{
						case LinkBundleItemType.LibraryLink:
							linkItem = new LibraryLinkBundleItem();
							((LibraryLinkBundleItem)linkItem).libraryLinkId = ((LibraryLinkItem)sourceBundleItem).LinkId.ToString();
							break;
						case LinkBundleItemType.Url:
							linkItem = new UrlLinkBundleItem();
							((UrlLinkBundleItem)linkItem).url = ((UrlItem)sourceBundleItem).Url;
							break;
						case LinkBundleItemType.Info:
							linkItem = new LinkBundleInfoItem();
							((LinkBundleInfoItem)linkItem).header = ((InfoItem)sourceBundleItem).Header;
							((LinkBundleInfoItem)linkItem).body = ((InfoItem)sourceBundleItem).Body;
							break;
						case LinkBundleItemType.Strategy:
							linkItem = new LinkBundleStrategyItem();
							((LinkBundleStrategyItem)linkItem).header = ((StrategyItem)sourceBundleItem).Header;
							((LinkBundleStrategyItem)linkItem).body = ((StrategyItem)sourceBundleItem).Body;
							break;
						case LinkBundleItemType.Revenue:
							linkItem = new LinkBundleRevenueItem();
							((LinkBundleRevenueItem)linkItem).revenueType = (Int32)((RevenueItem)sourceBundleItem).RevenueType;
							((LinkBundleRevenueItem)linkItem).infoItems = ((RevenueItem)sourceBundleItem).InfoItems
								.Select(sourceInfoItem =>
								{
									var infoItem = new LinkBundleRevenueInfoItem();
									infoItem.infoType = sourceInfoItem.Title;
									infoItem.value = (float)sourceInfoItem.Value;
									return infoItem;
								})
								.ToArray();
							((LinkBundleRevenueItem)linkItem).additionalInfo = ((RevenueItem)sourceBundleItem).AdditionalInfo;
							break;
						default:
							throw new ArgumentOutOfRangeException();
					}
					linkItem.id = sourceBundleItem.Id.ToString();
					linkItem.itemType = (Int32)sourceBundleItem.ItemType;
					linkItem.collectionOrder = sourceBundleItem.CollectionOrder;
					linkItem.title = sourceBundleItem.Title;
					linkItem.image = Convert.ToBase64String((byte[])imageConverter.ConvertTo(sourceBundleItem.Image, typeof(byte[])));
					linkItem.hoverTip = sourceBundleItem.HoverTip;
					return linkItem;
				})
				.ToArray();
		}
		private static void ImportData(
			this DocumentLinkSettings target,
			SalesLibraries.Business.Entities.Wallbin.NonPersistent.LinkSettings.DocumentLinkSettings source)
		{
			((IBaseLinkSettings)target).ImportData(source);
			target.forcePreview = source.ForcePreview;
		}
		private static void ImportData(
			this ExcelLinkSettings target,
			SalesLibraries.Business.Entities.Wallbin.NonPersistent.LinkSettings.ExcelLinkSettings source)
		{
			((IBaseLinkSettings)target).ImportData(source);
			target.forceDownload = source.ForceDownload;
			target.forceOpen = source.ForceOpen;
		}
		private static void ImportData(
			this InternalShortcutLinkSettings target,
			SalesLibraries.Business.Entities.Wallbin.NonPersistent.LinkSettings.InternalShortcutLinkSettings source)
		{
			((IBaseLinkSettings)target).ImportData(source);
			target.internalLinkType = (Int32)source.InternalLinkType;
			target.shortcutId = source.ShortcutId;
			target.openOnSamePage = source.OpenOnSamePage;
		}
		private static void ImportData(
			this InternalLibraryObjectLinkSettings target,
			SalesLibraries.Business.Entities.Wallbin.NonPersistent.LinkSettings.InternalLibraryObjectLinkSettings source)
		{
			((IBaseLinkSettings)target).ImportData(source);
			target.internalLinkType = (Int32)source.InternalLinkType;
			target.libraryName = source.LibraryName;
			target.pageName = source.PageName;
			target.windowName = source.WindowName;
			target.linkName = source.LinkName;
		}
		private static void ImportData(
			this InternalLibraryFolderLinkSettings target,
			SalesLibraries.Business.Entities.Wallbin.NonPersistent.LinkSettings.InternalLibraryFolderLinkSettings source)
		{
			((IBaseLinkSettings)target).ImportData(source);
			target.internalLinkType = (Int32)source.InternalLinkType;
			target.libraryName = source.LibraryName;
			target.pageName = source.PageName;
			target.windowName = source.WindowName;
			target.headerIcon = source.HeaderIcon;
			target.showHeaderText = source.ShowHeaderText;
			target.windowViewType = source.WindowViewType;
			target.column = source.Column;
			target.linksOnly = source.LinksOnly;
		}
		private static void ImportData(
			this InternalLibraryPageLinkSettings target,
			SalesLibraries.Business.Entities.Wallbin.NonPersistent.LinkSettings.InternalLibraryPageLinkSettings source)
		{
			((IBaseLinkSettings)target).ImportData(source);
			target.internalLinkType = (Int32)source.InternalLinkType;
			target.libraryName = source.LibraryName;
			target.pageName = source.PageName;
			target.headerIcon = source.HeaderIcon;
			target.showHeaderText = source.ShowHeaderText;
			target.pageViewType = source.PageViewType;
			target.showLogo = source.ShowLogo;
			target.showText = source.ShowText;
			target.showWindowHeaders = source.ShowWindowHeaders;
			target.textColor = source.TextColor?.ToHex() ;
			target.backColor = source.BackColor?.ToHex(); ;
		}
		private static void ImportData(
			this InternalWallbinLinkSettings target,
			SalesLibraries.Business.Entities.Wallbin.NonPersistent.LinkSettings.InternalWallbinLinkSettings source)
		{
			((IBaseLinkSettings)target).ImportData(source);
			target.internalLinkType = (Int32)source.InternalLinkType;
			target.libraryName = source.LibraryName;
			target.pageName = source.PageName;
			target.headerIcon = source.HeaderIcon;
			target.showHeaderText = source.ShowHeaderText;
			target.pageViewType = source.PageViewType;
			target.pageSelectorType = source.PageSelectorType;
			target.showLogo = source.ShowLogo;
		}
		private static void ImportData(
			this AppLinkSettings target,
			SalesLibraries.Business.Entities.Wallbin.NonPersistent.LinkSettings.AppLinkSettings source)
		{
			((IBaseLinkSettings)target).ImportData(source);
			target.secondPath = source.SecondPath;
		}
		private static void ImportData(
			this PowerPointLinkSettings target,
			SalesLibraries.Business.Entities.Wallbin.NonPersistent.LinkSettings.PowerPointLinkSettings source)
		{
			((IBaseLinkSettings)target).ImportData(source);
			target.slideWidth = Convert.ToSingle(source.Width);
			target.slideHeight = Convert.ToSingle(source.Height);
		}
		private static void ImportData(
			this IBaseLinkSettings target,
			SalesLibraries.Business.Entities.Wallbin.NonPersistent.LinkSettings.BaseLinkSettings source)
		{
			target.isTextWordWrap = source.TextWordWrap;
			if (source is LibraryObjectLinkSettings)
			{
				target.note = source.Note;

				var objectSource = (LibraryObjectLinkSettings)source;
				target.hoverNote = objectSource.HoverNote;
				target.showOnlyCustomHoverNote = objectSource.ShowOnlyCustomHoverNote;
				target.isBold = (objectSource.RegularFontStyle & FontStyle.Bold) == FontStyle.Bold;
				target.isItalic = (objectSource.RegularFontStyle & FontStyle.Italic) == FontStyle.Italic;
				target.isUnderline = (objectSource.RegularFontStyle & FontStyle.Underline) == FontStyle.Underline;
				target.foreColor = source.ForeColor?.ToHex();
				target.isSpecialFormat = objectSource.IsSpecialFormat;
				if (objectSource.IsSpecialFormat)
				{
					target.font = new Font();
					target.font.ImportData(source.Font);
				}
				else
					target.font = null;
			}
		}