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 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 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 (trigger.is('.rated')) {rating = 0;}instance.triggers.not(obj).removeClass('rated');trigger.toggleClass('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('<div class="portal-tool-tip"></div>').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: {}};