Liferay.Portal = {}; Liferay.Portal.Tabs = { show: function(namespace, names, id) { var tab = jQuery('#' + namespace + id + 'TabsId'); var panel = jQuery('#' + namespace + id + 'TabsSection'); tab.siblings().removeClass('current'); tab.addClass('current'); panel.show(); var index = names.indexOf(id); names.splice(index, 1); for (var i = 0; i < names.length; i++) { el = jQuery('#' + namespace + names[i] + 'TabsSection'); el.hide(); } } }; Liferay.Portal.StarRating = new Liferay.Class( { /** * OPTIONS * * Required * displayOnly {boolean}: Whether the display is modifiable. * * Optional * rating {number}: The rating to initialize to. * * Callbacks * onComplete {function}: Called when a rating is selected. */ initialize: function(id, options) { this.options = options || {}; this.rating = this.options.rating || 0; var item = jQuery('#' + id); this.stars = item.find('img'); var self = this; if (!this.options.displayOnly) { item.bind('mouseout', {self: this}, this.onHoverOut); this.stars.each(function(index) { this.index = index + 1; jQuery(this).bind('click', {self: self}, self.onClick) .bind('mouseover', {self: self}, self.onHoverOver); }) } this.display(this.rating, 'rating'); }, display: function(rating, mode) { var self = this; rating = rating == null ? this.rating : rating; var whole = Math.floor(rating); var fraction = rating - whole; this.stars.each(function(index) { image = this; if (index < whole) { if (mode == 'hover') { image.src = image.src.replace(/\bstar_.*\./, 'star_hover.'); } else { image.src = image.src.replace(/\bstar_.*\./, 'star_on.'); } } else { if (fraction < 0.25) { image.src = image.src.replace(/\bstar_.*\./, 'star_off.'); } else if (fraction < 0.50) { image.src = image.src.replace(/\bstar_.*\./, 'star_on_quarter.'); } else if (fraction < 0.75) { image.src = image.src.replace(/\bstar_.*\./, 'star_on_half.'); } else if (fraction < 1.00) { image.src = image.src.replace(/\bstar_.*\./, 'star_on_threequarters.'); } fraction = 0; } }); }, onHoverOver: function(event) { event.data.self.display(this.index, 'hover'); }, onHoverOut: function(event) { event.data.self.display(); }, onClick: function(event) { var target = this; var newRating = target.index; var self = event.data.self; self.rating = newRating; if (self.options.onComplete) { self.options.onComplete(newRating); } self.display(newRating); } } ); Liferay.Portal.ThumbRating = new Liferay.Class( { /** * OPTIONS * * Required * displayOnly {boolean}: Whether the display is modifiable. * * Optional * rating {number}: The rating to initialize to. * * Callbacks * onComplete {function}: Called when a rating is selected. */ initialize: function(options) { var instance = this; options = options || {}; instance.rating = options.rating || 0; var item = jQuery('#' + options.id); instance.triggers = item.find('.rating'); instance._onComplete = options.onComplete; if (!options.displayOnly) { instance.triggers.click( function(event) { instance._click(event, this); } ); } }, _click: function(event, obj) { var instance = this; var trigger = jQuery(obj); var rating = trigger.is('.rate-up') ? 1 : -1; if (rating == 1) { instance.triggers.not(obj).removeClass('rate-down-rated'); if (trigger.is('.rate-up-rated')) { rating = 0; } trigger.toggleClass('rate-up-rated'); } else if (rating == -1) { instance.triggers.not(obj).removeClass('rate-up-rated'); if (trigger.is('.rate-down-rated')) { rating = 0; } trigger.toggleClass('rate-down-rated'); } if (instance._onComplete) { instance._onComplete(rating); } } } ); Liferay.Portal.ToolTip = { container: null, show: function(event, obj, text) { var instance = this; var container = instance.container; var currentItem = jQuery(obj); var position = currentItem.offset(); var dimensions = instance._windowCalculation(); if (!container) { container = jQuery('
').appendTo('body'); instance.container = container; } container.html(text); container.show(); var boxWidth = container.width(); var width = currentItem.width(); var height = currentItem.height(); var boxHeight = container.height(); var left = position.left - (boxWidth / 2); var top = position.top + height + 5; if (left < 0) { left = 5; } else { left += 5; } if (left + boxWidth > dimensions.right) { left = (left - (boxWidth / 2 )) + width; } if (top + boxHeight > dimensions.bottom) { top = top - (height + boxHeight + 5); } container.css( { cursor: 'default', left: left + 'px', position: 'absolute', top: top + 'px', zIndex: Liferay.zIndex.TOOLTIP } ); currentItem.one( 'mouseout', function() { instance.hide(); } ); }, hide: function(event) { var instance = this; instance.container.hide(); }, _windowCalculation: function() { var instance = this; if (instance._window.right == null) { var windowSize = {}; var body = instance._body; if (!body) { body = jQuery('body'); instance._body = body; } instance._window = { bottom: body.height(), left: 0, right: body.width(), top: 0 }; jQuery(window).resize( function() { instance._window.bottom = body.height(); instance._window.right = body.width(); } ); } return instance._window; }, _body: null, _window: {} };