source: branches/1.2/workflow/js/experience/experience.js @ 1349

Revision 1349, 4.7 KB checked in by niltonneto, 15 years ago (diff)

Ticket #561 - Inclusão do módulo Workflow faltante nessa versão.

Line 
1/* -------------------------------------------------------------------------- *
2 *   Experience Javascript Library (version 1.0b)
3 *  (c) 2007 Ahmed Saad <ahmeds@users.sourceforge.net>
4 *
5 *  Experience is freely distributable under the terms of an MIT-style license.
6 *  For details, see project website at http://experience.sf.net
7 * -------------------------------------------------------------------------- */
8
9// global namespace
10var experience  = {
11    Version : '1.0b',
12
13    Params : $H({
14        Locale: 'pt_BR',  /* The language of strings embeded in code is considered the default */
15        InterfaceDir: 'ltr'
16    }),
17
18    /* The interface to the world */
19    Core :  {
20        initialize : function(userParams){
21            experience.Params.merge(userParams);
22
23            //// PUBLIC METHODS ////////////////////////////
24
25            this.bindTip = experience.bindTip;
26            this.unbindTip = experience.unbindTip;
27        },       
28
29        bindTip : function(element, html, className){
30            element = $(element);
31            element.tipHTML = html;
32            element.tipClass = className ? className : "experienceTip";           
33            Event.observe(element, 'mousemove', experience.showHoverDiv);
34            Event.observe(element, 'mouseout', experience.hideHoverDiv);       
35        },
36   
37        unbindTip : function(element){
38            if ($('experienceTip') &&  $('experienceTip').srcElement == element){
39                experience.hideHoverDiv();
40            }
41   
42            Event.stopObserving(element, 'mousemove', experience.showHoverDiv);
43            Event.stopObserving(element, 'mouseout', experience.hideHoverDiv);
44        }
45    },
46
47    ///// PRIVATE FUNCTIONS ////////////////////////////////////////////////
48
49    Console : {
50        isEnabled: true,
51        log : function(obj){
52            if (experience.Console.isEnabled){
53                if(window.console){ // Firebug
54                    window.console.log(obj);
55                } else if (typeof(opera) != "undefined"){
56                    opera.postError(Object.inspect(obj));
57                } else {
58                    alert(Object.inspect(obj));
59                }
60            }
61        }
62    },
63
64    // internationalization support
65    tr : function (str, locales){
66        if (
67            locales.keys().include(this.Params.Locale) &&
68            typeof(locales[this.Params.Locale][str]) != 'undefined'
69        ) {
70            return locales[this.Params.Locale][str];
71        } else {
72            return str;
73        }
74    },
75
76    // browser detection
77    detectBrowser: function (){
78        if (navigator.userAgent.indexOf("MSIE 5") != -1){
79            return "ie5";
80        } else if (navigator.userAgent.indexOf("MSIE 6") != -1){
81            return "ie6";
82        } else if (navigator.userAgent.indexOf("Safari") != -1){
83            return "safari";
84        } else if (navigator.userAgent.indexOf("Firefox") != -1) {
85            return "firefox";
86        } else if (navigator.userAgent.indexOf("Opera") != -1) {
87            return "opera";
88        } else if (navigator.userAgent.indexOf("Konqueror") != -1) {
89            return "konqueror";
90        }
91    },
92
93    detectEngine: function() {
94        var browser = experience.detectBrowser();
95        if (browser == "ie5" || browser == "ie6"){
96            return "trident";
97        } else if (navigator.userAgent.indexOf("AppleWebKit") != -1){
98            return "webkit";
99        } else if (navigator.userAgent.indexOf("KHTML") != -1){
100            return "khtml";
101        } else if ( navigator.userAgent.indexOf("Gecko") != -1 &&
102                    navigator.userAgent.indexOf("like Gecko") == -1 ){
103            return "gecko";
104        }
105    },
106
107    showHoverDiv : function(e){
108        var el = Event.element(e);
109
110        if (!$('experienceTip')){
111            var div = document.createElement('div');
112            div.id = 'experienceTip';
113            div.style.position = "absolute";
114            document.getElementsByTagName('body')[0].appendChild(div);
115        }
116
117        /* A speed optimization (it's slow to reassign on every call */
118        if (experience.lastTipElement != el){
119            $('experienceTip').className = el.tipClass;
120            $('experienceTip').innerHTML = el.tipHTML;
121            $('experienceTip').srcElement = el;
122        }
123
124        $('experienceTip').style.display = "block";
125        $('experienceTip').style.top = Event.pointerY(e) + 20 + "px";
126        $('experienceTip').style.left = Event.pointerX(e) + "px";
127
128        experience.lastTipElement = el;
129    },
130
131    hideHoverDiv : function(e){
132        $('experienceTip').style.display = "none";
133    }
134}
Note: See TracBrowser for help on using the repository browser.