_framework_javascript_extensions.prototype.tooltip=new _framework_javascript_extensions_tooltip_plugin();
function _framework_javascript_extensions_tooltip_plugin(){
    this.delay=null;
	this.obj_float_div=false;
	this.is_allowed=true;
    this.init=function(){
	    ext.load_css([ext.get_script_base('tooltip.js'),'/css/tooltip.css'].join(''));
		if(ext.is_ie)
	    ext.load_css([ext.get_script_base('tooltip.js'),'/css/tooltip_ie.css'].join(''));
		ext.add_event(document,'mousemove',this.document_onmousemove);
		if(document.getElementById&&document.createElement)tooltip.define();
	}
	this.hide=function() {
		clearTimeout(this.delay); this.delay = null;
        if (!this.obj_float_div) return;
        this.obj_float_div.style.visibility='hidden';
        this.obj_float_div.style.left="-3000px";
        this.obj_float_div=false;
    }
	this.show=function(div_mark){
		if(this.delay) {
		    clearTimeout(this.delay);this.delay = null;
		   } else {
		      this.obj_float_div = ext.get_element(div_mark);
		      this.delay=setTimeout('ext.tooltip.show("' + div_mark + '");', 400);
		      return;
		   }
		   if (!this.obj_float_div) return;
		   if (this.obj_float_div.offsetWidth) {
		      this.obj_float_div.style.width = "auto";
		      this.obj_float_div.style.height = "auto";
		      if (this.obj_float_div.offsetWidth > 300) this.obj_float_div.style.width = "300px";
		   }
		   this.obj_float_div.style.visibility = 'visible';
	}
	this.on_blur=function(){
	     this.hide();
	}
	this.on_focus=function(){
	}
	this.document_onmousemove=function(e) {
	   if (!ext.tooltip.obj_float_div)return;
	   var pos_X=0,pos_Y=0;
	   if (!e) e=window.event;
	   if (e){
	      if (typeof(e.pageX)=='number'){
	         pos_X = e.pageX; pos_Y = e.pageY;
	      } else if ( typeof(e.clientX) == 'number' ) {
	         pos_X = e.clientX; pos_Y = e.clientY;
	         if ( document.body && ( document.body.scrollTop || document.body.scrollLeft ) && !( window.opera || window.debug || navigator.vendor == 'KDE' ) ) {
	            pos_X += document.body.scrollLeft; pos_Y += document.body.scrollTop;
	         } else if ( document.documentElement && ( document.documentElement.scrollTop || document.documentElement.scrollLeft ) && !( window.opera || window.debug || navigator.vendor == 'KDE' ) ) {
	            pos_X += document.documentElement.scrollLeft; pos_Y += document.documentElement.scrollTop;
	         }
	      }
	   }
	 
	   var scroll_X = 0, scroll_Y = 0;
	   if ( document.body && ( document.body.scrollTop || document.body.scrollLeft ) && !( window.debug || navigator.vendor == 'KDE' ) ) {
	      scroll_X = document.body.scrollLeft; scroll_Y = document.body.scrollTop;
	   } else if ( document.documentElement && ( document.documentElement.scrollTop || document.documentElement.scrollLeft ) && !( window.debug || navigator.vendor == 'KDE' ) ) {
	      scroll_X = document.documentElement.scrollLeft; scroll_Y = document.documentElement.scrollTop;
	   }
	 
	   var win_size_X = 0, win_size_Y = 0;
	   if (window.innerWidth && window.innerHeight) {
	      win_size_X = window.innerWidth; win_size_Y = window.innerHeight;
	   } else if (document.documentElement && document.documentElement.clientWidth && document.documentElement.clientHeight) {
	      win_size_X = document.documentElement.clientWidth; win_size_Y = document.documentElement.clientHeight;
	   } else if (document.body && document.body.clientWidth && document.body.clientHeight) {
	      win_size_X = document.body.clientWidth; win_size_Y = document.body.clientHeight;
	   }
	 
	   pos_X += 15; pos_Y += 15;
	 
	   if (ext.tooltip.obj_float_div.offsetWidth && ext.tooltip.obj_float_div.offsetHeight) {
	      if (pos_X - scroll_X + ext.tooltip.obj_float_div.offsetWidth + 5 > win_size_X) pos_X -= (ext.tooltip.obj_float_div.offsetWidth + 25);
	      if (pos_Y - scroll_Y + ext.tooltip.obj_float_div.offsetHeight + 5 > win_size_Y) pos_Y -= (ext.tooltip.obj_float_div.offsetHeight + 20);
	   }

	   ext.tooltip.obj_float_div.style.left = pos_X + "px"; ext.tooltip.obj_float_div.style.top = pos_Y + "px";
	 
	}
}


tooltip = {
   // автор оригинального скрипта: Paul Sowden - http://www.idontsmoke.co.uk
   t: document.createElement("DIV"),
   define: function(){
      tooltip.t.setAttribute("id", "tooltip");
      document.body.appendChild(tooltip.t);
      tooltip.t.className = "hint";
      var all_elements = (document.all) ? document.all : document.getElementsByTagName("*");
      for (var i = 0; i < all_elements.length; i++) {
         var element_title = null;
         if ( all_elements[i].getAttribute("title") ) {
            element_title = all_elements[i].getAttribute("title");
            all_elements[i].removeAttribute("title");
         }
         if (element_title) {
            all_elements[i].setAttribute("text", element_title);
            tooltip.set_event(all_elements[i], "mouseover", tooltip.show_tooltip);
            tooltip.set_event(all_elements[i], "mouseout", tooltip.hide_tooltip);
         }
      }
   },

   show_tooltip: function(e){
      if(!ext.tooltip.is_allowed)return;
      obj_tooltip = (window.event) ? window.event.srcElement : e.currentTarget;
      if (!obj_tooltip.getAttribute("text")) return;
	  tooltip.t.innerHTML=obj_tooltip.getAttribute("text");
//      tooltip.t.appendChild(document.createTextNode(obj_tooltip.getAttribute("text")));
      ext.tooltip.show('tooltip');
   },

   hide_tooltip: function(e){
      ext.tooltip.hide();
//      if (tooltip.t.firstChild){tooltip.t.removeChild(tooltip.t.firstChild)};
      tooltip.t.innerHTML='';
   },

   set_event: function(t_object,t_event,t_action) {
      if ( !t_object ) return null;
      if (t_object.addEventListener) {
         t_object.addEventListener(t_event, t_action, true);
      } else if (t_object.attachEvent) {
         t_object.attachEvent("on" + t_event, t_action);
      } else {
         return null;
      }
   }

}
