var TWX_AllFlyDivs = new Array();

function TWX_FlyDiv(mm_effect, mm_id, mm_src_id, mm_src_offx, mm_src_offy, mm_tar_id, mm_offx, mm_offy, mm_steps, mm_endshowevent, mm_endhideevent)
{
   this.Set(mm_effect, mm_id, mm_src_id, mm_src_offx, mm_src_offy, mm_tar_id, mm_offx, mm_offy, mm_steps, mm_endshowevent, mm_endhideevent);
}

TWX_FlyDiv.prototype.Set = function(mm_effect, mm_id, mm_src_id, mm_src_offx, mm_src_offy, mm_tar_id, mm_offx, mm_offy, mm_steps, mm_endshowevent, mm_endhideevent)
{
   this._effect = mm_effect;
   this._id = mm_id;
   this._fromx = 0;
   this._fromy = 0;
   this._src_id = mm_src_id;
   this._tar_id = mm_tar_id;
   this._offx = mm_offx;
   this._offy = mm_offy;
   this._src_offx = mm_src_offx;
   this._src_offy = mm_src_offy;
   this._stepx = 0;
   this._stepy = 0;
   this._counter = 0;
   this._top = 0;
   this._left = 0;
   this._endshowevent = mm_endshowevent;  
   this._endhideevent = mm_endhideevent;
   this._steps = mm_steps;
}

function TWX_FlyDivAdd(mm_effect, mm_id, mm_src_id, mm_src_offx, mm_src_offy, mm_tar_id, mm_offx, mm_offy, mm_steps, mm_endshowevent, mm_endhideevent)
{
    for(i = 0; i < TWX_AllFlyDivs.length; i++)
        if(TWX_AllFlyDivs[i]._id == mm_id)
           return i; 

    TWX_AllFlyDivs[TWX_AllFlyDivs.length] = new TWX_FlyDiv(mm_effect, mm_id, mm_src_id, mm_src_offx, mm_src_offy, mm_tar_id, mm_offx, mm_offy, mm_steps, mm_endshowevent, mm_endhideevent);
 
    return TWX_AllFlyDivs.length - 1;
}

function TWX_FlyDivIsVisible(_idx)
{
   var _el;
   _el = document.getElementById(TWX_AllFlyDivs[_idx]._id);
   if(_el.style.visibility == 'visible')
      return true;
   else
      return false;
}

function TWX_FlyDivShow(_idx)
{
   var _el, _h, _tar_el, _src_el;
   
   _el = document.getElementById(TWX_AllFlyDivs[_idx]._id);
   _tar_el = document.getElementById(TWX_AllFlyDivs[_idx]._tar_id);
   _src_el = document.getElementById(TWX_AllFlyDivs[_idx]._src_id);
   
   TWX_AllFlyDivs[_idx]._fromx = DOM_FindPosX(_src_el) + TWX_AllFlyDivs[_idx]._src_offx;
   TWX_AllFlyDivs[_idx]._fromy = DOM_FindPosY(_src_el) + TWX_AllFlyDivs[_idx]._src_offy;
  
 	 if (window.flydiv_show) 
       clearTimeout(window.flydiv_show);  
  
   var _x = DOM_FindPosX(_tar_el) + TWX_AllFlyDivs[_idx]._offx;
   var _y = DOM_FindPosY(_tar_el) + TWX_AllFlyDivs[_idx]._offy;

   if(TWX_AllFlyDivs[_idx]._effect == '-') 
   {
      _el.style.visibility = 'visible';        
      return;
   }
   if(TWX_AllFlyDivs[_idx]._effect == '')
   {    
      if(TWX_AllFlyDivs[_idx]._counter == 0)
      {  
         TWX_AllFlyDivs[_idx]._stepx = (_x - TWX_AllFlyDivs[_idx]._fromx) / TWX_AllFlyDivs[_idx]._steps;
         TWX_AllFlyDivs[_idx]._stepy = (_y - TWX_AllFlyDivs[_idx]._fromy) / TWX_AllFlyDivs[_idx]._steps;

         DOM_SetPosTop(_el, TWX_AllFlyDivs[_idx]._fromy);
         DOM_SetPosLeft(_el, TWX_AllFlyDivs[_idx]._fromx);
         

         TWX_AllFlyDivs[_idx]._top =  DOM_PosTop(_el);         
         TWX_AllFlyDivs[_idx]._left = DOM_PosLeft(_el);   

         _el.style.visibility = 'visible';        
      }
      else
      {
         TWX_AllFlyDivs[_idx]._top -= TWX_AllFlyDivs[_idx]._stepy;
         TWX_AllFlyDivs[_idx]._left -= TWX_AllFlyDivs[_idx]._stepx;
         
         DOM_SetPosTop(_el, TWX_AllFlyDivs[_idx]._top);
         DOM_SetPosLeft(_el, TWX_AllFlyDivs[_idx]._left);         
      }      
   
      var _s = 'TWX_FlyDivShow(' + _idx + ');';
      TWX_AllFlyDivs[_idx]._counter++;      
      
      if(TWX_AllFlyDivs[_idx]._counter <= TWX_AllFlyDivs[_idx]._steps) 
         window.flydiv_show = window.setTimeout(_s, TWX_AllFlyDivs[_idx]._steps);
      else
      {
         TWX_AllFlyDivs[_idx]._counter = 0;
         eval(TWX_AllFlyDivs[_idx]._endshowevent);         
      }
   }
}

function TWX_FlyDivHide(_idx)
{
   var _el, _h, _tar_el, _src_el;
   
   _el = document.getElementById(TWX_AllFlyDivs[_idx]._id);
   _tar_el = document.getElementById(TWX_AllFlyDivs[_idx]._tar_id);
   _src_el = document.getElementById(TWX_AllFlyDivs[_idx]._src_id);
   
   TWX_AllFlyDivs[_idx]._fromx = DOM_FindPosX(_src_el) + TWX_AllFlyDivs[_idx]._src_offx;
   TWX_AllFlyDivs[_idx]._fromy = DOM_FindPosY(_src_el) + TWX_AllFlyDivs[_idx]._src_offx;
     
   var _x = DOM_FindPosX(_tar_el) + TWX_AllFlyDivs[_idx]._offx;
   var _y = DOM_FindPosY(_tar_el) + TWX_AllFlyDivs[_idx]._offy;
   
   if (window.flydiv_hide) 
       clearTimeout(window.flydiv_hide);   
   
   if(TWX_AllFlyDivs[_idx]._effect == '-') 
   {
      _el.style.visibility = 'hidden';        
      return;
   }

   if(_el.style.visibility == 'hidden' || _el.style.visibility == '')
   {
      DOM_SetPosTop(_el, TWX_AllFlyDivs[_idx]._fromy);
      DOM_SetPosLeft(_el, TWX_AllFlyDivs[_idx]._fromx);   
      return;
   }     
  
   if(TWX_AllFlyDivs[_idx]._effect == '')
   {
      if(TWX_AllFlyDivs[_idx]._counter == 0)
      {
         TWX_AllFlyDivs[_idx]._stepx = (TWX_AllFlyDivs[_idx]._fromx - DOM_PosLeft(_el)) / TWX_AllFlyDivs[_idx]._steps;
         TWX_AllFlyDivs[_idx]._stepy = (TWX_AllFlyDivs[_idx]._fromy - DOM_PosTop(_el)) / TWX_AllFlyDivs[_idx]._steps;
         
         TWX_AllFlyDivs[_idx]._top = DOM_PosTop(_el);         
         TWX_AllFlyDivs[_idx]._left = DOM_PosLeft(_el);       
      }
      else
      {
         TWX_AllFlyDivs[_idx]._top += TWX_AllFlyDivs[_idx]._stepy;
         TWX_AllFlyDivs[_idx]._left += TWX_AllFlyDivs[_idx]._stepx;
         
         DOM_SetPosTop(_el, TWX_AllFlyDivs[_idx]._top);
         DOM_SetPosLeft(_el, TWX_AllFlyDivs[_idx]._left);         
      }
      
      var _s = 'TWX_FlyDivHide(' + _idx + ');';
      TWX_AllFlyDivs[_idx]._counter++;
          
      if(TWX_AllFlyDivs[_idx]._counter <= TWX_AllFlyDivs[_idx]._steps) 
         window.flydiv_hide = window.setTimeout(_s, TWX_AllFlyDivs[_idx]._steps);
      else
      {
         TWX_AllFlyDivs[_idx]._counter = 0;
         eval(TWX_AllFlyDivs[_idx]._endhideevent);
 
         _el.style.visibility = 'hidden';          
      }
   }
}

