
Type.registerNamespace('AjaxControlToolkit');AjaxControlToolkit.HoverBehavior=function(element){
AjaxControlToolkit.HoverBehavior.initializeBase(this,[element]);this._elementHandlers=null;this._hoverElementHandlers=null;this._hoverElement=null;this._hoverCount=0;this._unhoverDelay=0;this._hoverDelay=0;this._hoverScript=null;this._unhoverScript=null;this._hoverFired=false;}
AjaxControlToolkit.HoverBehavior.prototype={
_setupHandlersArray:function(){
var target=[];target[0]=Function.createDelegate(this,this._onHover);target[1]=Function.createDelegate(this,this._onUnhover);return target;},
get_elementHandlers:function(){
if(!this._elementHandlers){
this._elementHandlers=this._setupHandlersArray();}
return this._elementHandlers;},
get_hoverElementHandlers:function(){
if(!this._hoverElementHandlers){
this._hoverElementHandlers=this._setupHandlersArray();}
return this._hoverElementHandlers;},
get_hoverElement:function(){
return this._hoverElement;},
set_hoverElement:function(element){
if(element!=this._hoverElement){
if(this._hoverElement){
this._setupHandlers(this._hoverElement,this.get_hoverElementHandlers(),false);}
this._hoverElement=element;if(this._hoverElement){
this._setupHandlers(this._hoverElement,this.get_hoverElementHandlers(),true);}}},
get_hoverDelay:function(){
return this._hoverDelay;},
set_hoverDelay:function(value){
this._hoverDelay=value;this.raisePropertyChanged('hoverDelay');},
get_hoverScript:function(){
return this._hoverScript;},
set_hoverScript:function(script){
this._hoverScript=script;},
get_unhoverDelay:function(){
return this._unhoverDelay;},
set_unhoverDelay:function(value){
this._unhoverDelay=value;this.raisePropertyChanged('unhoverDelay');},
get_unhoverScript:function(){
return this._unhoverScript;},
set_unhoverScript:function(script){
this._unhoverScript=script;},
dispose:function(){
var element=this.get_element();if(this._elementHandlers){
var handlers=this.get_elementHandlers();this._setupHandlers(element,handlers,false);this._elementHandlers=null;}
if(this._hoverElement){
var handlers=this.get_hoverElementHandlers();this._setupHandlers(this._hoverElement,handlers,false);this._hoverElement=null;}
AjaxControlToolkit.HoverBehavior.callBaseMethod(this,'dispose');},
initialize:function(){
AjaxControlToolkit.HoverBehavior.callBaseMethod(this,'initialize');var handlers=this.get_elementHandlers();this._setupHandlers(this.get_element(),handlers,true);if(this._hoverElement){
handlers=this.get_hoverElementHandlers();this._setupHandlers(this._hoverElement,handlers,true);}},
add_hover:function(handler){
this.get_events().addHandler("hover",handler);},
remove_hover:function(handler){
this.get_events().removeHandler("hover",handler);},
_fireHover:function(){
if(!this._hoverCount||this._hoverFired){
return;}
var handler=this.get_events().getHandler("hover");if(handler){
handler(this,Sys.EventArgs.Empty);}
if(this._hoverScript){
eval(this._hoverScript);}
this._hoverFired=true;},
_onHover:function(){
this._hoverCount++;if(!this._hoverDelay){
this._fireHover();}
else{
window.setTimeout(Function.createDelegate(this,this._fireHover),this._hoverDelay);}},
add_unhover:function(handler){
this.get_events().addHandler("unhover",handler);},
remove_unhover:function(handler){
this.get_events().removeHandler("unhover",handler);},
_fireUnhover:function(){
if(this._hoverFired&&!this._hoverCount){
this._hoverFired=false;var handler=this.get_events().getHandler("unhover");if(handler){
handler(this,Sys.EventArgs.Empty);}
if(this._unhoverScript){
eval(this._unhoverScript);}}},
_onUnhover:function(){
this._hoverCount--;if(this._hoverCount<=0){
this._hoverCount=0;if(!this._unhoverDelay){
this._fireUnhover();}
else{
window.setTimeout(Function.createDelegate(this,this._fireUnhover),this._unhoverDelay);}}},
_setupHandlers:function(element,handlers,hookup){
if(!this.get_isInitialized()||!element)return;if(hookup){
$addHandler(element,"mouseover",handlers[0]);$addHandler(element,"focus",handlers[0]);$addHandler(element,"mouseout",handlers[1]);$addHandler(element,"blur",handlers[1]);}
else{
$removeHandler(element,"mouseover",handlers[0]);$removeHandler(element,"focus",handlers[0]);$removeHandler(element,"mouseout",handlers[1]);$removeHandler(element,"blur",handlers[1]);}}}
AjaxControlToolkit.HoverBehavior.descriptor={
properties:[{name:'hoverElement',isDomElement:true},
{name:'unhoverDelay',type:Number}],
events:[{name:'hover'},
{name:'unhover'}]}
AjaxControlToolkit.HoverBehavior.registerClass('AjaxControlToolkit.HoverBehavior',AjaxControlToolkit.BehaviorBase);