AUI().ready('aui-modal', 'aui-io-request','liferay-portlet-url', 'liferay-util-window', 'aui-base', 'liferay-language', function(A){
	
	if (Liferay.ThemeDisplay.isSignedIn()) {
		A.io.request(
				getMarketingConsentResourceUrlAsString('/marketing-consent-modal/show'),
				{
					after: {
						success: function() {
							var responseData = JSON.parse(this.get('responseData'));
							if(responseData.showMarketingConsentModal === 'true'){
								openMarketingConsentModal(responseData.openMarketingConsentModalURL);
								addListenerToSaveMarketingConsent();
							}
						}
					}
				}
		);
	}
	
	function openMarketingConsentModal(openMarketingConsentModalURL){
		if (!Liferay.Util.getWindow('portletMarketingConsentModal')) {
			Liferay.Util.openWindow({
				dialog: {
					headerContent: 'Marketing\x20consent',
					autoOpen: true,
					toolbars: false,
					resizable: false,
					cssClass: 'portlet-marketing-consent-modal',
					destroyOnHide: true,
					centered: true,
					hideOn: [],
					height: 850,
					width: 950
				},
				dialogIframe: {
					bodyCssClass: 'portlet-marketing-consent-modal'
				},
				id: 'portletMarketingConsentModal',
				title: 'marketing-consent-modal',
				uri: openMarketingConsentModalURL
			});
		}
		
		A.one('body').on('key', function(event) {
			var modalToCheck = Liferay.Util.getWindow('portletMarketingConsentModal');
			modalToCheck.once('visibleChange', function(event) {
				// If the dialog was already visible, then keep it visible.
				if (event.prevVal === true) {
					event.newVal = true;
				}
			});
		}, 'esc');
	}
	
	function addListenerToSaveMarketingConsent(){
		$("input[type='radio'][name='_com_pfiks_marketing_consent_portlet_MarketingConsentPortlet_userMarketingConsent']").click(function () {
			$('#_com_pfiks_marketing_consent_portlet_MarketingConsentPortlet_saveMarketingConsent').removeAttr('disabled');
			$('#_com_pfiks_marketing_consent_portlet_MarketingConsentPortlet_saveMarketingConsent')[0].classList.remove('disabled');
		});
		
		$('div.update-marketing-consent-modal').delegate('#_com_pfiks_marketing_consent_portlet_MarketingConsentPortlet_saveMarketingConsent', 'click',function(e){
			A.io.request(
				getMarketingConsentResourceUrlAsString('/marketing-consent-modal/update'),
				{
					after: {
						success: function() {
							Liferay.fire('closeWindow',	{id: 'portletMarketingConsentModal'});
						}
					},
					data: '_com_pfiks_marketing_consent_portlet_MarketingConsentPortlet_userMarketingConsent='+$("input[type='radio'][name='_com_pfiks_marketing_consent_portlet_MarketingConsentPortlet_userMarketingConsent']:checked").val(),
					dataType: 'JSON'
				}
			);
		});
	}
	
	function getMarketingConsentResourceUrlAsString(resourceId){
		var resourceURL = Liferay.PortletURL.createResourceURL();
		resourceURL.setParameter("p_p_id", "com_pfiks_marketing_consent_portlet_MarketingConsentPortlet");
		resourceURL.setResourceId(resourceId);
		return resourceURL.toString();
	}
	 
});
AUI.add(
	'recent-queries-scroll-web', 
	function(A) {

		var TPL_BLOCK_ENTRY_ROW = 
			'<a href="{executeSearchURL}" class="entry">' +
				'{searchKeyword}'+	
			'</a>';
		
		var scrollRecentQueryIntervalId;
		
		var RecentQueriesScrollWeb = {
				
			init: function(params) {
				var instance = this;
				var loadMoreURL = params.loadMoreURL;
				
				clearInterval(scrollRecentQueryIntervalId);

				instance._bindCloseButton(params.minimizeBarURL);
				instance._bindOpenButton(loadMoreURL, params.refreshMilliseconds, params.maximizeBarURL);
				
				if (params.recentSearchesMaximized === 'true') {
					//Initial load of items
					instance._refreshResources(loadMoreURL, true);
					
					//Repeat function every x seconds
					scrollRecentQueryIntervalId = setInterval(function(){instance._refreshResources(loadMoreURL, false);}, params.refreshMilliseconds);
					return scrollRecentQueryIntervalId;
				}
			},
			
			_bindCloseButton: function(minimizeBarURL){
				var instance = this;
				$('div.scroll-search-bar-container div.scroll-search-bar-controls div.close-scroll-search-bar-button').on('click', function(event) {
					clearInterval(scrollRecentQueryIntervalId);
					
					$.post(minimizeBarURL);
					
					$('div.scroll-search-bar-container .open-bar-component').addClass('hide');
					$('div.scroll-search-bar-container .closed-bar-component').removeClass('hide');
				});
			},
			
			_bindOpenButton: function(loadMoreURL, millisecondsRefresh, maximizeBarURL){
				var instance = this;
				
				$('div.scroll-search-bar-container div.scroll-search-bar-controls div.open-scroll-search-bar-button').on('click', function(event) {
					clearInterval(scrollRecentQueryIntervalId);
					
					instance._refreshResources(loadMoreURL, true);
					
					scrollRecentQueryIntervalId = setInterval(function(){instance._refreshResources(loadMoreURL, false);}, millisecondsRefresh);
					
					$.post(maximizeBarURL);
					
					$('div.scroll-search-bar-container div.open-bar-component').removeClass('hide');
					$('div.scroll-search-bar-container div.closed-bar-component').addClass('hide');
				});
			},
			
			_refreshResources: function(loadMoreURL, initialLoad) {
				$.post(loadMoreURL, function(data) {
					var responseData = JSON.parse(data);
					if(responseData.showBar === 'true'){
						$('#portlet_com_pfiks_search_recent_queries_scroll_RecentQueriesScrollPortlet').removeClass('hide');
						var jsonResults = responseData.resultEntries;
						if(jsonResults.length > 0) {
							var totalNewWidth = 0;
							$.each(jsonResults, function(key, value) {
								var entryValueText = A.Lang.sub(
										TPL_BLOCK_ENTRY_ROW,
										{
											executeSearchURL: value.searchURL,
											searchKeyword: value.searchKeyword
										}
								);
								var entryValue = $(entryValueText); 
								$(entryValue).hide().appendTo('div.scroll-search-bar-container > div.scroll-search-bar-marquee > div.marquee-content').fadeIn();
								totalNewWidth += $(entryValue).width(); 
							});
							
							var marqueeContainerWidth = $('.scroll-search-bar-marquee').width();
							var marqueeContentWidth = $('.marquee-content').width(); 
							var updatedWidth = marqueeContentWidth + totalNewWidth;
							if (initialLoad){
								$('.marquee-content').width(totalNewWidth); 
							} else if(updatedWidth > marqueeContainerWidth){
								$('.marquee-content').width(updatedWidth); 
							}
						}
					} else {
						$('#portlet_com_pfiks_search_recent_queries_scroll_RecentQueriesScrollPortlet').addClass('hide');
					}
				}, 'html');
			}
			
		};
		
		A.RecentQueriesScrollWeb = RecentQueriesScrollWeb;
		
	},
	'',
	{
		requires: [	
			'aui-io-request', 'aui-base', 'liferay-language'
		]
	}
);
AUI().ready('aui-io-request','liferay-portlet-url', function(A){
	
	if (Liferay.ThemeDisplay.isSignedIn()) {
		
		var portletsOnPage = document.getElementsByTagName("section");
		
		for (var i = 0; i < portletsOnPage.length; i++) {
		    var portletId = portletsOnPage[i].getAttribute("id");
		    
		    if(portletId && portletId !== undefined){
		    	var classPK,className,favouriteCssClass,containerCssClass;
		    	
		    	if(isBlog(portletId)) {
		    		classPK = getClassPK(portletId, 'classPK');
		    		if(classPK > 0) {
			    		className = 'com.liferay.blogs.kernel.model.BlogsEntry';
						containerCssClass = "div.entry-social";
						favouriteCssClass = "a.blog";
						
						existFavourite(classPK, className, addFavouriteBlogHTML);
						delegateFavouriteContentEvent(containerCssClass, favouriteCssClass, classPK, className);
		    		}
		    	
		    	} else if(isDocumentLibrary(portletId)) {
		    		classPK = getClassPK(portletId, 'classPK');
		    		if(classPK > 0) {
			    		className = 'com.liferay.document.library.kernel.model.DLFileEntry';
						containerCssClass = "div.document-info.panel-body";
						favouriteCssClass = "a.dlFileEntry";
						
						existFavourite(classPK, className, addFavouriteDLFileEntryHTML);
						delegateFavouriteContentEvent(containerCssClass, favouriteCssClass, classPK, className);
		    		}
		    		
		    	} else if(isForum(portletId)) {
		    		classPK = getClassPK(portletId, 'breadcrumbsMessageId');
		    		if(classPK > 0) {
			    		className = 'com.liferay.message.boards.kernel.model.MBMessage';
						containerCssClass = "ul.list-unstyled.taglib-icon-list";
						favouriteCssClass = "a.forum";
						
						existFavourite(classPK, className, addFavouriteForumHTML);
						delegateFavouriteContentEvent(containerCssClass, favouriteCssClass, classPK, className);
		    		}
		    		
		    	} else if(isWiki(portletId)) {
		    		classPK = getClassPK(portletId, 'classPK');
		    		if(classPK > 0) {
			    		className = 'com.liferay.wiki.model.WikiPage';
						containerCssClass = "div.page-actions.top-actions";
						favouriteCssClass = "a.wiki";
						
						existFavourite(classPK, className , addFavouriteWikiHTML);
						delegateFavouriteContentEvent(containerCssClass, favouriteCssClass, classPK, className);
		    		}
		    	}
		    }
		}
	}
	
	function getClassPK(portletId, classPKparameter){
		var namespacedPortletId = portletId.replace('portlet_', '');
		var classPKDiv = $('#_' + namespacedPortletId + '_' + classPKparameter);
		if(classPKDiv && classPKDiv !== undefined){
			return $(classPKDiv).val();
		}else{
			return 0;
		}
	}
	
	function delegateFavouriteContentEvent(containerCssClass, favouriteCssClass, classPK, className){
		$(containerCssClass).delegate(favouriteCssClass + '.favourite', 'click',function(e){
			var textSelector = $(e.currentTarget).find("span.taglib-text");
			addFavourite(e.currentTarget, textSelector, classPK, className);
		});
		
		$(containerCssClass).delegate(favouriteCssClass + '.unfavourite', 'click',function(e){
			var textSelector = $(e.currentTarget).find("span.taglib-text");
			deleteFavourite(e.currentTarget, textSelector, classPK, className);
		});
	}
	
	function addFavourite(favouriteLinkSelector, textSelector, classPK, className){
			A.io.request(
					getResourceUrlAsString('/user_favourite/add'),
					{
						after: {
							success: function() {
								var result = this.get('responseData').success;
								if(result === 'true'){
									markAsUnFavourite(favouriteLinkSelector, textSelector);
								}
							}
						},
						data: getQueryData(classPK, className),
						dataType: 'JSON'
					}
			);
	}
	
	function deleteFavourite(favouriteLinkSelector, textSelector, classPK, className){
			A.io.request(
					getResourceUrlAsString('/user_favourite/delete'),
					{
						after: {
							success: function() {
								var result = this.get('responseData').success;
								if(result === 'true'){
									markAsFavourite(favouriteLinkSelector, textSelector);
								}
							}
						},
						data: getQueryData(classPK, className),
						dataType: 'JSON'
					}
			);
	}
	
	function existFavourite(classPK, className, callBackAddHtml){
			A.io.request(
					getResourceUrlAsString('/user_favourite/exist'),
					{
						after: {
							success: function() {
								var result = this.get('responseData').exist;
								var favouriteText,linkClass,iconFavouriteClass;
								
								if(result === 'true'){
									favouriteText = getUnfavouriteText();
									linkClass = getUnFavouriteClass();
									iconFavouriteClass = getIconFavouriteActiveClass();
								}else{
									favouriteText = getFavouriteText();
									linkClass = getFavouriteClass();
									iconFavouriteClass = getIconFavouriteClass();
								}
								
								callBackAddHtml(favouriteText, linkClass, iconFavouriteClass);
							}
						},
						data: getQueryData(classPK, className),
						dataType: 'JSON'
					}
			);
	}

	function addFavouriteBlogHTML(favouriteText, linkClass, iconFavouriteClass){
		var favouriteHtml = [
		'<div class="favourite">',
		'<div class="taglib-favourite" title="' + favouriteText + '">',
		'<a href="javascript:;" class=" lfr-icon-item taglib-icon blog ' + linkClass + '" id="">', 
		'<span class="">', 
		'<span class="' + iconFavouriteClass + '">&nbsp;</span>',
		'<span class="taglib-text ">' + favouriteText + '</span>', 
		'</a>',
		'</span>', 
		'</div>',
		'</div>'].join("\n");	
		
		$('div.entry-social').prepend(favouriteHtml);
	}
	
	function addFavouriteDLFileEntryHTML(favouriteText, linkClass, iconFavouriteClass){
		var favouriteHtml = [
		'<span class="favourite">',
		'<a href="javascript:;" class=" lfr-icon-item taglib-icon dlFileEntry ' + linkClass + '" id="">',
		'<span class="' + iconFavouriteClass + '">&nbsp;</span>',
		'<span class="taglib-text ">' + favouriteText + '</span>', 
		'</a>',
		'</span>'].join("\n");	
		
		$(favouriteHtml).insertBefore('.lfr-asset-ratings');
	}
	
	function addFavouriteForumHTML(favouriteText, linkClass, iconFavouriteClass){
		var favouriteHtml = [
 		'<li class="" role="presentation">',
		'<a href="javascript:;" class=" lfr-icon-item taglib-icon forum ' + linkClass + '" id="" role="menuitem">', 
		'<span class="' + iconFavouriteClass + '">&nbsp;</span>',
		'<span class="taglib-text ">' + favouriteText+ '</span>',
		'</a>'
		].join("\n");
		
		$('ul.list-unstyled.taglib-icon-list').prepend(favouriteHtml);
	}
	
	function addFavouriteWikiHTML(favouriteText, linkClass, iconFavouriteClass){
		var linkClass = 'lfr-icon-item taglib-icon wiki ' + linkClass;
		
		var favouriteHtml = [
			'<span class="">',
			'<a href="javascript:;" class=" ' + linkClass + '" id="">', 
			'<span class="' + iconFavouriteClass + '">&nbsp;</span>',
			'<span class="taglib-text ">' + favouriteText + '</span>', 
			'</a>',
			'</span>'].join("\n");
			
		$('div.page-actions.top-actions').prepend(favouriteHtml);
	}
	
	
	function isBlog(portletId){
		return portletId.indexOf('com_liferay_blogs_web_portlet_BlogsPortlet') >= 0;
	}
 
	function isDocumentLibrary(portletId){
		return portletId.indexOf('com_liferay_document_library_web_portlet_DLPortlet') >= 0;
	}
	
	function isForum(portletId){
		return portletId.indexOf('com_liferay_message_boards_web_portlet_MBPortlet') >= 0;
	}
	
	function isWiki(portletId){
		return portletId.indexOf('com_liferay_wiki_web_portlet_WikiPortlet') >= 0;
	}
	
	function markAsUnFavourite(selector, textSelector){
		$(selector).removeClass(getFavouriteClass()).addClass(getUnFavouriteClass());
		$(textSelector).text(getUnfavouriteText());
		$('span.' + getIconFavouriteClass()).removeClass(getIconFavouriteClass()).addClass(getIconFavouriteActiveClass());
	}
	
	function markAsFavourite(selector, textSelector){
		$(selector).removeClass(getUnFavouriteClass()).addClass(getFavouriteClass());
		$(textSelector).text(getFavouriteText());
		$('span.' + getIconFavouriteActiveClass()).removeClass(getIconFavouriteActiveClass()).addClass(getIconFavouriteClass());
	}
	
	function getQueryData(classPK, className ){
		return '_com_pfiks_user_favourite_portlet_UserFavouritePortlet_classPK=' + classPK + "&_com_pfiks_user_favourite_portlet_UserFavouritePortlet_className=" + className;
	}
	
	function getResourceUrlAsString(resourceId){
		var resourceURL = Liferay.PortletURL.createResourceURL();
		resourceURL.setParameter("p_p_id", "com_pfiks_user_favourite_portlet_UserFavouritePortlet");
		resourceURL.setResourceId(resourceId);
		return resourceURL.toString();
	}
	
	function getUnfavouriteText(){
		return 'Remove\x20from\x20favourites';
	}
	
	function getFavouriteText(){
		return 'Add\x20to\x20favourites';
	}
	
	function getFavouriteClass(){
		return 'favourite';
	}
	
	function getUnFavouriteClass(){
		return 'unfavourite';
	}
	
	function getIconFavouriteClass(){
		return 'icon-favourite';
	}
	
	function getIconFavouriteActiveClass(){
		return 'icon-favourite-active';
	}
});
AUI.add(
	'user-force-details-update', 
	function(A) {
		var UserForceDetailsUpdate = {
			init: function(params) {
				var instance = this;
				var openStepURL = params.openModalStepURL;
				
				if (!Liferay.Util.getWindow('portletUserForceDetailsUpdateModal')) {
					Liferay.Util.openWindow({
						dialog: {
							headerContent: 'Update\x20your\x20details',
							autoOpen: true,
							toolbars: false,
							resizable: false,
							cssClass: 'portlet-user-force-details-update-modal',
							destroyOnHide: true,
							centered: true,
							hideOn: [],
							height: 850,
							width: 950
						},
						dialogIframe: {
							bodyCssClass: 'portlet-user-force-details-update'
						},
						id: 'portletUserForceDetailsUpdateModal',
						title: 'update-your-details',
						uri: openStepURL
					});
				}
				
				A.one('body').on('key', function(event) {
					var modalToCheck = Liferay.Util.getWindow('portletUserForceDetailsUpdateModal');
					modalToCheck.once('visibleChange', function(event) {
						// If the dialog was already visible, then keep it visible.
						if (event.prevVal === true) {
							event.newVal = true;
						}
					});
				}, 'esc');
				
			},
			
			groupListCheck: function(params){
				var namespace = params.nameSpace;
				$('#'+namespace+'updateAllGroupIds').click(function () {
					$('input[type=checkbox][name='+namespace+'selectedGroupIds]').prop('checked', this.checked);
				});
			},
			
			closeModalDialog: function(params){
				var namespace = params.nameSpace;
				A.one('#'+namespace+'closeForceUserDetailsUpdateDialog').on('click', function(event) {
					Liferay.fire('closeWindow',	{id: 'portletUserForceDetailsUpdateModal'});
				});
			}
		};

		A.UserForceDetailsUpdate = UserForceDetailsUpdate;
	},
	'',
	{
		requires: [	
			'aui-modal', 'aui-io-request','liferay-portlet-url', 'liferay-util-window', 'aui-base', 'liferay-language'
		]
	}
);

