summaryrefslogtreecommitdiff
path: root/addons/web/static/lib/jquery.tipTip
diff options
context:
space:
mode:
authorVo Minh Thu <vmt@openerp.com>2012-01-18 11:12:52 +0100
committerVo Minh Thu <vmt@openerp.com>2012-01-18 11:12:52 +0100
commit75b3fc0907ee873c6e16d1fa8e8bfe58d4f520c1 (patch)
tree3e7f7bbe9110eeae766b46bb9c16a867579b6452 /addons/web/static/lib/jquery.tipTip
parent3203d264aecd751a8c261cea4f72fa323a3098be (diff)
parent152f92916bc36d00c0e59fbc49fb655a4fd85908 (diff)
[MERGE] merged trunk.
bzr revid: vmt@openerp.com-20120118101252-e81nlyzym2nkebf4
Diffstat (limited to 'addons/web/static/lib/jquery.tipTip')
-rw-r--r--addons/web/static/lib/jquery.tipTip/jquery.tipTip.fme.patch58
-rw-r--r--addons/web/static/lib/jquery.tipTip/jquery.tipTip.js519
-rw-r--r--addons/web/static/lib/jquery.tipTip/jquery.tipTip_old.js191
-rw-r--r--addons/web/static/lib/jquery.tipTip/tipTip.css27
4 files changed, 348 insertions, 447 deletions
diff --git a/addons/web/static/lib/jquery.tipTip/jquery.tipTip.fme.patch b/addons/web/static/lib/jquery.tipTip/jquery.tipTip.fme.patch
deleted file mode 100644
index 1a62870a6b0..00000000000
--- a/addons/web/static/lib/jquery.tipTip/jquery.tipTip.fme.patch
+++ /dev/null
@@ -1,58 +0,0 @@
---- jquery.tipTip_old.js 2011-12-01 14:15:35.000000000 +0100
-+++ jquery.tipTip.js 2011-12-07 12:32:32.000000000 +0100
-@@ -20,6 +20,9 @@
- */
-
- (function($){
-+ $.tipTipClear = function() {
-+ $("#tiptip_holder").remove();
-+ }
- $.fn.tipTip = function(options) {
- var defaults = {
- activation: "hover",
-@@ -31,7 +34,7 @@
- fadeIn: 200,
- fadeOut: 200,
- attribute: "title",
-- content: false, // HTML or String to fill TipTIp with
-+ content: false, // HTML String or function to fill TipTIp with
- enter: function(){},
- exit: function(){}
- };
-@@ -51,12 +54,7 @@
-
- return this.each(function(){
- var org_elem = $(this);
-- if(opts.content){
-- var org_title = opts.content;
-- } else {
-- var org_title = org_elem.attr(opts.attribute);
-- }
-- if(org_title != ""){
-+ if(opts.content || org_elem.attr(opts.attribute)){
- if(!opts.content){
- org_elem.removeAttr(opts.attribute); //remove original Attribute
- }
-@@ -99,6 +97,8 @@
-
- function active_tiptip(){
- opts.enter.call(this);
-+ var org_title = typeof opts.content === 'function' ? opts.content.call(org_elem, opts) : opts.content;
-+ org_title = org_title || org_elem.attr(opts.attribute);
- tiptip_content.html(org_title);
- tiptip_holder.hide().removeAttr("class").css("margin","0");
- tiptip_arrow.removeAttr("style");
-@@ -177,7 +177,12 @@
- tiptip_holder.css({"margin-left": marg_left+"px", "margin-top": marg_top+"px"}).attr("class","tip"+t_class);
-
- if (timeout){ clearTimeout(timeout); }
-- timeout = setTimeout(function(){ tiptip_holder.stop(true,true).fadeIn(opts.fadeIn); }, opts.delay);
-+ timeout = setTimeout(function() {
-+ tiptip_holder.stop(true,true);
-+ if ($.contains(document.documentElement, org_elem[0])) {
-+ tiptip_holder.fadeIn(opts.fadeIn);
-+ }
-+ }, opts.delay);
- }
-
- function deactive_tiptip(){
diff --git a/addons/web/static/lib/jquery.tipTip/jquery.tipTip.js b/addons/web/static/lib/jquery.tipTip/jquery.tipTip.js
index 522df828003..ff8cc1b0ba6 100644
--- a/addons/web/static/lib/jquery.tipTip/jquery.tipTip.js
+++ b/addons/web/static/lib/jquery.tipTip/jquery.tipTip.js
@@ -1,196 +1,325 @@
- /*
- * TipTip
- * Copyright 2010 Drew Wilson
- * www.drewwilson.com
- * code.drewwilson.com/entry/tiptip-jquery-plugin
- *
- * Version 1.3 - Updated: Mar. 23, 2010
- *
- * This Plug-In will create a custom tooltip to replace the default
- * browser tooltip. It is extremely lightweight and very smart in
- * that it detects the edges of the browser window and will make sure
- * the tooltip stays within the current window size. As a result the
- * tooltip will adjust itself to be displayed above, below, to the left
- * or to the right depending on what is necessary to stay within the
- * browser window. It is completely customizable as well via CSS.
- *
- * This TipTip jQuery plug-in is dual licensed under the MIT and GPL licenses:
- * http://www.opensource.org/licenses/mit-license.php
- * http://www.gnu.org/licenses/gpl.html
- */
-
-(function($){
- $.tipTipClear = function() {
- $("#tiptip_holder").remove();
+/*
+* TipTip
+* Copyright 2010 Drew Wilson
+* www.drewwilson.com
+* code.drewwilson.com/entry/tiptip-jquery-plugin
+*
+* Version 1.3 - Updated: Mar. 23, 2010
+*
+* This Plug-In will create a custom tooltip to replace the default
+* browser tooltip. It is extremely lightweight and very smart in
+* that it detects the edges of the browser window and will make sure
+* the tooltip stays within the current window size. As a result the
+* tooltip will adjust itself to be displayed above, below, to the left
+* or to the right depending on what is necessary to stay within the
+* browser window. It is completely customizable as well via CSS.
+*
+* This TipTip jQuery plug-in is dual licensed under the MIT and GPL licenses:
+* http://www.opensource.org/licenses/mit-license.php
+* http://www.gnu.org/licenses/gpl.html
+*/
+
+(function ($) {
+ $.fn.tipTip = function (options) {
+
+ var defaults = {
+ activation: 'hover', // How to show (and hide) the tooltip. Can be: hover, focus, click and manual.
+ keepAlive: false, // When true the tooltip won't disapper when the mouse moves away from the element. Instead it will be hidden when it leaves the tooltip.
+ maxWidth: '200px', // The max-width to set on the tooltip. You may also use the option cssClass to set this.
+ edgeOffset: 0, // The offset between the tooltip arrow edge and the element that has the tooltip.
+ defaultPosition: 'bottom', // The position of the tooltip. Can be: top, right, bottom and left.
+ delay: 400, // The delay in msec to show a tooltip.
+ fadeIn: 200, // The length in msec of the fade in.
+ fadeOut: 200, // The length in msec of the fade out.
+ attribute: 'title', // The attribute to fetch the tooltip text if the option content is false.
+ content: false, // HTML or String or Function (that returns HTML or String) to fill TipTIp with
+ enter: function () { }, // Callback function before a tooltip is shown.
+ afterEnter: function () { }, // Callback function after a tooltip is shown.
+ exit: function () { }, // Callback function before a tooltip is hidden.
+ afterExit: function () { }, // Callback function after a tooltip is hidden.
+ cssClass: '', // CSS class that will be applied on the tooltip before showing only for this instance of tooltip.
+ detectTextDir: true // When false auto-detection for right-to-left text will be disable (When true affects a bit the performance).
+ };
+
+ // Setup tip tip elements and render them to the DOM
+ if ($('#tiptip_holder').length <= 0) {
+ var tiptip_inner_arrow = $('<div>', { id: 'tiptip_arrow_inner' }),
+ tiptip_arrow = $('<div>', { id: 'tiptip_arrow' }).append(tiptip_inner_arrow),
+ tiptip_content = $('<div>', { id: 'tiptip_content' }),
+ tiptip_holder = $('<div>', { id: 'tiptip_holder' }).append(tiptip_arrow).append(tiptip_content);
+ $('body').append(tiptip_holder);
+ } else {
+ var tiptip_holder = $('#tiptip_holder'),
+ tiptip_content = $('#tiptip_content'),
+ tiptip_arrow = $('#tiptip_arrow');
+ }
+
+ return this.each(function () {
+ var org_elem = $(this),
+ data = org_elem.data('tipTip'),
+ opts = data && data.options || $.extend({}, defaults, options),
+ callback_data = {
+ holder: tiptip_holder,
+ content: tiptip_content,
+ arrow: tiptip_arrow,
+ options: opts
+ };
+
+ if (data) {
+ switch (options) {
+ case 'show':
+ activate();
+ break;
+ case 'hide':
+ deactivate();
+ break;
+ case 'destroy':
+ org_elem.unbind('.tipTip').removeData('tipTip');
+ break;
+ case 'position':
+ position_tiptip();
+ }
+ } else {
+ var timeout = false;
+
+ org_elem.data('tipTip', { options: opts });
+
+ if (opts.activation == 'hover') {
+ org_elem.bind('mouseenter.tipTip', function () {
+ activate();
+ }).bind('mouseleave.tipTip', function () {
+ if (!opts.keepAlive) {
+ deactivate();
+ } else {
+ tiptip_holder.one('mouseleave.tipTip', function () {
+ deactivate();
+ });
+ }
+ });
+ } else if (opts.activation == 'focus') {
+ org_elem.bind('focus.tipTip', function () {
+ activate();
+ }).bind('blur.tipTip', function () {
+ deactivate();
+ });
+ } else if (opts.activation == 'click') {
+ org_elem.bind('click.tipTip', function (e) {
+ e.preventDefault();
+ activate();
+ return false;
+ }).bind('mouseleave.tipTip', function () {
+ if (!opts.keepAlive) {
+ deactivate();
+ } else {
+ tiptip_holder.one('mouseleave.tipTip', function () {
+ deactivate();
+ });
+ }
+ });
+ } else if (opts.activation == 'manual') {
+ // Nothing to register actually. We decide when to show or hide.
+ }
+ }
+
+ function activate() {
+ if (opts.enter.call(org_elem, callback_data) === false) {
+ return;
+ }
+
+ // Get the text and append it in the tiptip_content.
+ var org_title;
+ if (opts.content) {
+ org_title = $.isFunction(opts.content) ? opts.content.call(org_elem, callback_data) : opts.content;
+ } else {
+ org_title = opts.content = org_elem.attr(opts.attribute);
+ org_elem.removeAttr(opts.attribute); //remove original Attribute
+ }
+ if (!org_title) {
+ return; // don't show tip when no content.
+ }
+
+ tiptip_content.html(org_title);
+ tiptip_holder.hide().removeAttr('class').css({ 'max-width': opts.maxWidth });
+ if (opts.cssClass) {
+ tiptip_holder.addClass(opts.cssClass);
+ }
+
+ // Calculate the position of the tooltip.
+ position_tiptip();
+
+ // Show the tooltip.
+ if (timeout) {
+ clearTimeout(timeout);
+ }
+
+ timeout = setTimeout(function () {
+ tiptip_holder.stop(true, true).fadeIn(opts.fadeIn);
+ }, opts.delay);
+
+ $(window).bind('resize.tipTip scroll.tipTip', position_tiptip);
+
+ // Ensure clicking on anything makes tipTip deactivate
+ $(document).unbind("click.tipTip dblclick.tipTip").bind("click.tiptip dblclick.tiptip", deactivate);
+
+
+ org_elem.addClass('tiptip_visible'); // Add marker class to easily find the target element with visible tooltip. It will be remove later on deactivate().
+
+ opts.afterEnter.call(org_elem, callback_data);
+ }
+
+ function deactivate() {
+ if (opts.exit.call(org_elem, callback_data) === false) {
+ return;
+ }
+
+ if (timeout) {
+ clearTimeout(timeout);
+ }
+
+ tiptip_holder.fadeOut(opts.fadeOut);
+
+ $(window).unbind('resize.tipTip scroll.tipTip');
+ $(document).unbind("click.tipTip").unbind("dblclick.tipTip");
+
+ org_elem.removeClass('tiptip_visible');
+
+ opts.afterExit.call(org_elem, callback_data);
+ }
+
+ function position_tiptip() {
+ var org_offset = org_elem.offset(),
+ org_top = org_offset.top,
+ org_left = org_offset.left,
+ org_width = org_elem.outerWidth(),
+ org_height = org_elem.outerHeight(),
+ tip_top,
+ tip_left,
+ tip_width = tiptip_holder.outerWidth(),
+ tip_height = tiptip_holder.outerHeight(),
+ tip_class,
+ tip_classes = { top: 'tip_top', bottom: 'tip_bottom', left: 'tip_left', right: 'tip_right' },
+ arrow_top,
+ arrow_left,
+ arrow_width = 12, // tiptip_arrow.outerHeight() and tiptip_arrow.outerWidth() don't work because they need the element to be visible.
+ arrow_height = 12,
+ win = $(window),
+ win_top = win.scrollTop(),
+ win_left = win.scrollLeft(),
+ win_width = win.width(),
+ win_height = win.height(),
+ is_rtl = opts.detectTextDir && isRtlText(tiptip_content.text());
+
+ function moveTop() {
+ tip_class = tip_classes.top;
+ tip_top = org_top - tip_height - opts.edgeOffset - (arrow_height / 2);
+ tip_left = org_left + ((org_width - tip_width) / 2);
+ }
+
+ function moveBottom() {
+ tip_class = tip_classes.bottom;
+ tip_top = org_top + org_height + opts.edgeOffset + (arrow_height / 2);
+ tip_left = org_left + ((org_width - tip_width) / 2);
+ }
+
+ function moveLeft() {
+ tip_class = tip_classes.left;
+ tip_top = org_top + ((org_height - tip_height) / 2);
+ tip_left = org_left - tip_width - opts.edgeOffset - (arrow_width / 2);
+ }
+
+ function moveRight() {
+ tip_class = tip_classes.right;
+ tip_top = org_top + ((org_height - tip_height) / 2);
+ tip_left = org_left + org_width + opts.edgeOffset + (arrow_width / 2);
+ }
+
+ // Calculate the position of the tooltip.
+ if (opts.defaultPosition == 'bottom') {
+ moveBottom();
+ } else if (opts.defaultPosition == 'top') {
+ moveTop();
+ } else if (opts.defaultPosition == 'left' && !is_rtl) {
+ moveLeft();
+ } else if (opts.defaultPosition == 'left' && is_rtl) {
+ moveRight();
+ } else if (opts.defaultPosition == 'right' && !is_rtl) {
+ moveRight();
+ } else if (opts.defaultPosition == 'right' && is_rtl) {
+ moveLeft();
+ } else {
+ moveBottom();
+ }
+
+ // Flip the tooltip if off the window's viewport. (left <-> right and top <-> bottom).
+ if (tip_class == tip_classes.left && !is_rtl && tip_left < win_left) {
+ moveRight();
+ } else if (tip_class == tip_classes.left && is_rtl && tip_left - tip_width < win_left) {
+ moveRight();
+ } else if (tip_class == tip_classes.right && !is_rtl && tip_left > win_left + win_width) {
+ moveLeft();
+ } else if (tip_class == tip_classes.right && is_rtl && tip_left + tip_width > win_left + win_width) {
+ moveLeft();
+ } else if (tip_class == tip_classes.top && tip_top < win_top) {
+ moveBottom();
+ } else if (tip_class == tip_classes.bottom && tip_top > win_top + win_height) {
+ moveTop();
+ }
+
+ // Fix the vertical position if the tooltip is off the top or bottom sides of the window's viewport.
+ if (tip_class == tip_classes.left || tip_class == tip_classes.right) { // If positioned left or right check if the tooltip is off the top or bottom window's viewport.
+ if (tip_top + tip_height > win_height + win_top) { // If the bottom edge of the tooltip is off the bottom side of the window's viewport.
+ tip_top = org_top + org_height > win_height + win_top ? org_top + org_height - tip_height : win_height + win_top - tip_height; // Make 'bottom edge of the tooltip' == 'bottom side of the window's viewport'.
+ } else if (tip_top < win_top) { // If the top edge of the tooltip if off the top side of the window's viewport.
+ tip_top = org_top < win_top ? org_top : win_top; // Make 'top edge of the tooltip' == 'top side of the window's viewport'.
+ }
+ }
+
+ // Fix the horizontal position if the tooltip is off the right or left sides of the window's viewport.
+ if (tip_class == tip_classes.top || tip_class == tip_classes.bottom) {
+ if (tip_left + tip_width > win_width + win_left) { // If the right edge of the tooltip is off the right side of the window's viewport.
+ tip_left = org_left + org_width > win_width + win_left ? org_left + org_width - tip_width : win_width + win_left - tip_width; // Make 'right edge of the tooltip' == 'right side of the window's viewport'.
+ } else if (tip_left < win_left) { // If the left edge of the tooltip if off the left side of the window's viewport.
+ tip_left = org_left < win_left ? org_left : win_left; // Make 'left edge of the tooltip' == 'left side of the window's viewport'.
+ }
+ }
+
+ // Apply the new position.
+ tiptip_holder
+ .css({ left: Math.round(tip_left), top: Math.round(tip_top) })
+ .removeClass(tip_classes.top)
+ .removeClass(tip_classes.bottom)
+ .removeClass(tip_classes.left)
+ .removeClass(tip_classes.right)
+ .addClass(tip_class);
+
+ // Position the arrow
+ if (tip_class == tip_classes.top) {
+ arrow_top = tip_height; // Position the arrow vertically on the top of the tooltip.
+ arrow_left = org_left - tip_left + ((org_width - arrow_width) / 2); // Center the arrow horizontally on the center of the target element.
+ } else if (tip_class == tip_classes.bottom) {
+ arrow_top = -arrow_height; // Position the arrow vertically on the bottom of the tooltip.
+ arrow_left = org_left - tip_left + ((org_width - arrow_width) / 2); // Center the arrow horizontally on the center of the target element.
+ } else if (tip_class == tip_classes.left) {
+ arrow_top = org_top - tip_top + ((org_height - arrow_height) / 2); // Center the arrow vertically on the center of the target element.
+ arrow_left = tip_width; // Position the arrow vertically on the left of the tooltip.
+ } else if (tip_class == tip_classes.right) {
+ arrow_top = org_top - tip_top + ((org_height - arrow_height) / 2); // Center the arrow vertically on the center of the target element.
+ arrow_left = -arrow_width; // Position the arrow vertically on the right of the tooltip.
+ }
+
+ tiptip_arrow
+ .css({ left: Math.round(arrow_left), top: Math.round(arrow_top) });
+ }
+ });
}
- $.fn.tipTip = function(options) {
- var defaults = {
- activation: "hover",
- keepAlive: false,
- maxWidth: "200px",
- edgeOffset: 3,
- defaultPosition: "bottom",
- delay: 400,
- fadeIn: 200,
- fadeOut: 200,
- attribute: "title",
- content: false, // HTML String or function to fill TipTIp with
- enter: function(){},
- exit: function(){}
- };
- var opts = $.extend(defaults, options);
-
- // Setup tip tip elements and render them to the DOM
- if($("#tiptip_holder").length <= 0){
- var tiptip_holder = $('<div id="tiptip_holder" style="max-width:'+ opts.maxWidth +';"></div>');
- var tiptip_content = $('<div id="tiptip_content"></div>');
- var tiptip_arrow = $('<div id="tiptip_arrow"></div>');
- $("body").append(tiptip_holder.html(tiptip_content).prepend(tiptip_arrow.html('<div id="tiptip_arrow_inner"></div>')));
- } else {
- var tiptip_holder = $("#tiptip_holder");
- var tiptip_content = $("#tiptip_content");
- var tiptip_arrow = $("#tiptip_arrow");
- }
-
- return this.each(function(){
- var org_elem = $(this);
- if(opts.content || org_elem.attr(opts.attribute)){
- if(!opts.content){
- org_elem.removeAttr(opts.attribute); //remove original Attribute
- }
- var timeout = false;
-
- if(opts.activation == "hover"){
- org_elem.hover(function(){
- active_tiptip();
- }, function(){
- if(!opts.keepAlive){
- deactive_tiptip();
- }
- });
- if(opts.keepAlive){
- tiptip_holder.hover(function(){}, function(){
- deactive_tiptip();
- });
- }
- } else if(opts.activation == "focus"){
- org_elem.focus(function(){
- active_tiptip();
- }).blur(function(){
- deactive_tiptip();
- });
- } else if(opts.activation == "click"){
- org_elem.click(function(){
- active_tiptip();
- return false;
- }).hover(function(){},function(){
- if(!opts.keepAlive){
- deactive_tiptip();
- }
- });
- if(opts.keepAlive){
- tiptip_holder.hover(function(){}, function(){
- deactive_tiptip();
- });
- }
- }
-
- function active_tiptip(){
- opts.enter.call(this);
- var org_title = typeof opts.content === 'function' ? opts.content.call(org_elem, opts) : opts.content;
- org_title = org_title || org_elem.attr(opts.attribute);
- tiptip_content.html(org_title);
- tiptip_holder.hide().removeAttr("class").css("margin","0");
- tiptip_arrow.removeAttr("style");
-
- var top = parseInt(org_elem.offset()['top']);
- var left = parseInt(org_elem.offset()['left']);
- var org_width = parseInt(org_elem.outerWidth());
- var org_height = parseInt(org_elem.outerHeight());
- var tip_w = tiptip_holder.outerWidth();
- var tip_h = tiptip_holder.outerHeight();
- var w_compare = Math.round((org_width - tip_w) / 2);
- var h_compare = Math.round((org_height - tip_h) / 2);
- var marg_left = Math.round(left + w_compare);
- var marg_top = Math.round(top + org_height + opts.edgeOffset);
- var t_class = "";
- var arrow_top = "";
- var arrow_left = Math.round(tip_w - 12) / 2;
-
- if(opts.defaultPosition == "bottom"){
- t_class = "_bottom";
- } else if(opts.defaultPosition == "top"){
- t_class = "_top";
- } else if(opts.defaultPosition == "left"){
- t_class = "_left";
- } else if(opts.defaultPosition == "right"){
- t_class = "_right";
- }
-
- var right_compare = (w_compare + left) < parseInt($(window).scrollLeft());
- var left_compare = (tip_w + left) > parseInt($(window).width());
-
- if((right_compare && w_compare < 0) || (t_class == "_right" && !left_compare) || (t_class == "_left" && left < (tip_w + opts.edgeOffset + 5))){
- t_class = "_right";
- arrow_top = Math.round(tip_h - 13) / 2;
- arrow_left = -12;
- marg_left = Math.round(left + org_width + opts.edgeOffset);
- marg_top = Math.round(top + h_compare);
- } else if((left_compare && w_compare < 0) || (t_class == "_left" && !right_compare)){
- t_class = "_left";
- arrow_top = Math.round(tip_h - 13) / 2;
- arrow_left = Math.round(tip_w);
- marg_left = Math.round(left - (tip_w + opts.edgeOffset + 5));
- marg_top = Math.round(top + h_compare);
- }
-
- var top_compare = (top + org_height + opts.edgeOffset + tip_h + 8) > parseInt($(window).height() + $(window).scrollTop());
- var bottom_compare = ((top + org_height) - (opts.edgeOffset + tip_h + 8)) < 0;
-
- if(top_compare || (t_class == "_bottom" && top_compare) || (t_class == "_top" && !bottom_compare)){
- if(t_class == "_top" || t_class == "_bottom"){
- t_class = "_top";
- } else {
- t_class = t_class+"_top";
- }
- arrow_top = tip_h;
- marg_top = Math.round(top - (tip_h + 5 + opts.edgeOffset));
- } else if(bottom_compare | (t_class == "_top" && bottom_compare) || (t_class == "_bottom" && !top_compare)){
- if(t_class == "_top" || t_class == "_bottom"){
- t_class = "_bottom";
- } else {
- t_class = t_class+"_bottom";
- }
- arrow_top = -12;
- marg_top = Math.round(top + org_height + opts.edgeOffset);
- }
-
- if(t_class == "_right_top" || t_class == "_left_top"){
- marg_top = marg_top + 5;
- } else if(t_class == "_right_bottom" || t_class == "_left_bottom"){
- marg_top = marg_top - 5;
- }
- if(t_class == "_left_top" || t_class == "_left_bottom"){
- marg_left = marg_left + 5;
- }
- tiptip_arrow.css({"margin-left": arrow_left+"px", "margin-top": arrow_top+"px"});
- tiptip_holder.css({"margin-left": marg_left+"px", "margin-top": marg_top+"px"}).attr("class","tip"+t_class);
-
- if (timeout){ clearTimeout(timeout); }
- timeout = setTimeout(function() {
- tiptip_holder.stop(true,true);
- if ($.contains(document.documentElement, org_elem[0])) {
- tiptip_holder.fadeIn(opts.fadeIn);
- }
- }, opts.delay);
- }
-
- function deactive_tiptip(){
- opts.exit.call(this);
- if (timeout){ clearTimeout(timeout); }
- tiptip_holder.fadeOut(opts.fadeOut);
- }
- }
- });
- }
-})(jQuery);
+
+ var ltrChars = 'A-Za-z\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u02B8\u0300-\u0590\u0800-\u1FFF\u2C00-\uFB1C\uFDFE-\uFE6F\uFEFD-\uFFFF',
+ rtlChars = '\u0591-\u07FF\uFB1D-\uFDFD\uFE70-\uFEFC',
+ rtlDirCheckRe = new RegExp('^[^' + ltrChars + ']*[' + rtlChars + ']');
+
+ function isRtlText(text) {
+ return rtlDirCheckRe.test(text);
+ };
+
+})(jQuery);
+
diff --git a/addons/web/static/lib/jquery.tipTip/jquery.tipTip_old.js b/addons/web/static/lib/jquery.tipTip/jquery.tipTip_old.js
deleted file mode 100644
index d2b460d1261..00000000000
--- a/addons/web/static/lib/jquery.tipTip/jquery.tipTip_old.js
+++ /dev/null
@@ -1,191 +0,0 @@
- /*
- * TipTip
- * Copyright 2010 Drew Wilson
- * www.drewwilson.com
- * code.drewwilson.com/entry/tiptip-jquery-plugin
- *
- * Version 1.3 - Updated: Mar. 23, 2010
- *
- * This Plug-In will create a custom tooltip to replace the default
- * browser tooltip. It is extremely lightweight and very smart in
- * that it detects the edges of the browser window and will make sure
- * the tooltip stays within the current window size. As a result the
- * tooltip will adjust itself to be displayed above, below, to the left
- * or to the right depending on what is necessary to stay within the
- * browser window. It is completely customizable as well via CSS.
- *
- * This TipTip jQuery plug-in is dual licensed under the MIT and GPL licenses:
- * http://www.opensource.org/licenses/mit-license.php
- * http://www.gnu.org/licenses/gpl.html
- */
-
-(function($){
- $.fn.tipTip = function(options) {
- var defaults = {
- activation: "hover",
- keepAlive: false,
- maxWidth: "200px",
- edgeOffset: 3,
- defaultPosition: "bottom",
- delay: 400,
- fadeIn: 200,
- fadeOut: 200,
- attribute: "title",
- content: false, // HTML or String to fill TipTIp with
- enter: function(){},
- exit: function(){}
- };
- var opts = $.extend(defaults, options);
-
- // Setup tip tip elements and render them to the DOM
- if($("#tiptip_holder").length <= 0){
- var tiptip_holder = $('<div id="tiptip_holder" style="max-width:'+ opts.maxWidth +';"></div>');
- var tiptip_content = $('<div id="tiptip_content"></div>');
- var tiptip_arrow = $('<div id="tiptip_arrow"></div>');
- $("body").append(tiptip_holder.html(tiptip_content).prepend(tiptip_arrow.html('<div id="tiptip_arrow_inner"></div>')));
- } else {
- var tiptip_holder = $("#tiptip_holder");
- var tiptip_content = $("#tiptip_content");
- var tiptip_arrow = $("#tiptip_arrow");
- }
-
- return this.each(function(){
- var org_elem = $(this);
- if(opts.content){
- var org_title = opts.content;
- } else {
- var org_title = org_elem.attr(opts.attribute);
- }
- if(org_title != ""){
- if(!opts.content){
- org_elem.removeAttr(opts.attribute); //remove original Attribute
- }
- var timeout = false;
-
- if(opts.activation == "hover"){
- org_elem.hover(function(){
- active_tiptip();
- }, function(){
- if(!opts.keepAlive){
- deactive_tiptip();
- }
- });
- if(opts.keepAlive){
- tiptip_holder.hover(function(){}, function(){
- deactive_tiptip();
- });
- }
- } else if(opts.activation == "focus"){
- org_elem.focus(function(){
- active_tiptip();
- }).blur(function(){
- deactive_tiptip();
- });
- } else if(opts.activation == "click"){
- org_elem.click(function(){
- active_tiptip();
- return false;
- }).hover(function(){},function(){
- if(!opts.keepAlive){
- deactive_tiptip();
- }
- });
- if(opts.keepAlive){
- tiptip_holder.hover(function(){}, function(){
- deactive_tiptip();
- });
- }
- }
-
- function active_tiptip(){
- opts.enter.call(this);
- tiptip_content.html(org_title);
- tiptip_holder.hide().removeAttr("class").css("margin","0");
- tiptip_arrow.removeAttr("style");
-
- var top = parseInt(org_elem.offset()['top']);
- var left = parseInt(org_elem.offset()['left']);
- var org_width = parseInt(org_elem.outerWidth());
- var org_height = parseInt(org_elem.outerHeight());
- var tip_w = tiptip_holder.outerWidth();
- var tip_h = tiptip_holder.outerHeight();
- var w_compare = Math.round((org_width - tip_w) / 2);
- var h_compare = Math.round((org_height - tip_h) / 2);
- var marg_left = Math.round(left + w_compare);
- var marg_top = Math.round(top + org_height + opts.edgeOffset);
- var t_class = "";
- var arrow_top = "";
- var arrow_left = Math.round(tip_w - 12) / 2;
-
- if(opts.defaultPosition == "bottom"){
- t_class = "_bottom";
- } else if(opts.defaultPosition == "top"){
- t_class = "_top";
- } else if(opts.defaultPosition == "left"){
- t_class = "_left";
- } else if(opts.defaultPosition == "right"){
- t_class = "_right";
- }
-
- var right_compare = (w_compare + left) < parseInt($(window).scrollLeft());
- var left_compare = (tip_w + left) > parseInt($(window).width());
-
- if((right_compare && w_compare < 0) || (t_class == "_right" && !left_compare) || (t_class == "_left" && left < (tip_w + opts.edgeOffset + 5))){
- t_class = "_right";
- arrow_top = Math.round(tip_h - 13) / 2;
- arrow_left = -12;
- marg_left = Math.round(left + org_width + opts.edgeOffset);
- marg_top = Math.round(top + h_compare);
- } else if((left_compare && w_compare < 0) || (t_class == "_left" && !right_compare)){
- t_class = "_left";
- arrow_top = Math.round(tip_h - 13) / 2;
- arrow_left = Math.round(tip_w);
- marg_left = Math.round(left - (tip_w + opts.edgeOffset + 5));
- marg_top = Math.round(top + h_compare);
- }
-
- var top_compare = (top + org_height + opts.edgeOffset + tip_h + 8) > parseInt($(window).height() + $(window).scrollTop());
- var bottom_compare = ((top + org_height) - (opts.edgeOffset + tip_h + 8)) < 0;
-
- if(top_compare || (t_class == "_bottom" && top_compare) || (t_class == "_top" && !bottom_compare)){
- if(t_class == "_top" || t_class == "_bottom"){
- t_class = "_top";
- } else {
- t_class = t_class+"_top";
- }
- arrow_top = tip_h;
- marg_top = Math.round(top - (tip_h + 5 + opts.edgeOffset));
- } else if(bottom_compare | (t_class == "_top" && bottom_compare) || (t_class == "_bottom" && !top_compare)){
- if(t_class == "_top" || t_class == "_bottom"){
- t_class = "_bottom";
- } else {
- t_class = t_class+"_bottom";
- }
- arrow_top = -12;
- marg_top = Math.round(top + org_height + opts.edgeOffset);
- }
-
- if(t_class == "_right_top" || t_class == "_left_top"){
- marg_top = marg_top + 5;
- } else if(t_class == "_right_bottom" || t_class == "_left_bottom"){
- marg_top = marg_top - 5;
- }
- if(t_class == "_left_top" || t_class == "_left_bottom"){
- marg_left = marg_left + 5;
- }
- tiptip_arrow.css({"margin-left": arrow_left+"px", "margin-top": arrow_top+"px"});
- tiptip_holder.css({"margin-left": marg_left+"px", "margin-top": marg_top+"px"}).attr("class","tip"+t_class);
-
- if (timeout){ clearTimeout(timeout); }
- timeout = setTimeout(function(){ tiptip_holder.stop(true,true).fadeIn(opts.fadeIn); }, opts.delay);
- }
-
- function deactive_tiptip(){
- opts.exit.call(this);
- if (timeout){ clearTimeout(timeout); }
- tiptip_holder.fadeOut(opts.fadeOut);
- }
- }
- });
- }
-})(jQuery);
diff --git a/addons/web/static/lib/jquery.tipTip/tipTip.css b/addons/web/static/lib/jquery.tipTip/tipTip.css
index 4fb95d37691..dc41b650615 100644
--- a/addons/web/static/lib/jquery.tipTip/tipTip.css
+++ b/addons/web/static/lib/jquery.tipTip/tipTip.css
@@ -13,15 +13,15 @@
}
#tiptip_holder.tip_bottom {
- padding-top: 5px;
+ padding-bottom: 5px;
}
#tiptip_holder.tip_right {
- padding-left: 5px;
+ padding-right: 5px;
}
#tiptip_holder.tip_left {
- padding-right: 5px;
+ padding-left: 5px;
}
#tiptip_content {
@@ -110,4 +110,25 @@
#tiptip_holder.tip_top #tiptip_arrow_inner {
border-top-color: rgba(20,20,20,0.92);
}
+}
+
+/* Alternative theme for TipTip */
+#tiptip_holder.alt.tip_top #tiptip_arrow_inner {
+ border-top-color: #444444;
+}
+
+#tiptip_holder.alt.tip_bottom #tiptip_arrow_inner {
+ border-bottom-color: #444444;
+}
+
+#tiptip_holder.alt.tip_right #tiptip_arrow_inner {
+ border-right-color: #444444;
+}
+
+#tiptip_holder.alt.tip_left #tiptip_arrow_inner {
+ border-left-color: #444444;
+}
+
+#tiptip_holder.alt #tiptip_content {
+ background-color: #444444; border: 1px solid White; border-radius: 3px; box-shadow: 0 0 3px #555555; color: #FFFFFF; font-size: 11px; padding: 4px 8px; text-shadow: 0 0 1px Black;
} \ No newline at end of file