﻿general.namespace('SW.Controls');

(function () {

        var Tooltip = SW.Controls.Tooltip = function (offsetX, offsetY, className) {
            this.OFFSET_X = this.OFFSET_Y = 15;
            if (offsetX || offsetX === 0) this.OFFSET_X = offsetX;
            if (offsetY || offsetY === 0) this.OFFSET_Y = offsetY;
            var tooltip = this.tooltip = document.createElement('div');
            tooltip.className = className || 'region-tooltip';
            tooltip.style.zIndex = '50000';
        	tooltip.style.display = 'none';
        	tooltip.style.position = 'absolute';
            document.body.appendChild(tooltip);
            
            var me = this;
            
            var mouseMove;
            
            if (YAHOO.env.ua.webkit !== 0) {
                mouseMove = function (evt) {
                    me.updatePosition(
                        evt.pageX + document.documentElement.scrollLeft,
                        evt.pageY + document.documentElement.scrollTop
                    ); 
                };
            }
            else {
                mouseMove = function (evt) {
                    me.updatePosition(
                        evt.clientX + document.documentElement.scrollLeft,
                        evt.clientY + document.documentElement.scrollTop
                    ); 
                };
            }
            
            general.addListener(document, 'mousemove', mouseMove);
        };
        
        Tooltip.prototype.constructor = Tooltip;
        
        
        /*  */
        Tooltip.prototype.updatePosition = function(x, y) {
            this.tooltip.style.left = (x + this.OFFSET_X) + 'px';
            this.tooltip.style.top = (y + this.OFFSET_Y) + 'px';
        };
        
        
        /*  */
        Tooltip.prototype.show = function() {
            this.tooltip.style.display = 'block';
        };


        /*  */
        Tooltip.prototype.hide = function() {
            this.tooltip.style.display = 'none';
        };

        
        /*  */
        Tooltip.prototype.setMessage = function(message /* specified in HTML */) {
            this.tooltip.innerHTML = message;
        };
        
        
        /*  */
        Tooltip.prototype.showMessage = function(message /* specified in HTML */) {
            this.tooltip.innerHTML = message;
            this.show();
        };

})();