function rcFX_HasOpacity( div ){
  if( !div ) return false;
  if( !div.style ) return false;
  if( div.style.filter==undefined && div.style.opacity==undefined && div.style.MozOpacity==undefined ) return false;
  return true;
}

function rcFX_GetDimension( div ){
  var dimension={};
  dimension.left=div.offsetLeft;
  dimension.top=div.offsetTop;
  dimension.width=div.offsetWidth;
  dimension.height=div.offsetHeight;

  return dimension;
}

function rcFX_SetOpacity( div, opacity ){
  if( opacity<0 ) opacity=0;
  else if( opacity>100 ) opacity=100;
  
  div.style.opacity=opacity/100;
  div.style.MozOpacity=opacity/100;
  div.style.filter="alpha(opacity=" + opacity + ")";
}

function rcFX_Fade( div, from, to, step, ms, func ){
  if( from<to )
    _rcFX_Fade( div, from, to, step, ms, func );
  else
    _rcFX_Fade( div, from, to, -step, ms, func );
}

function _rcFX_Fade( div, opacity, toOpacity, step, ms, func ){
  rcFX_SetOpacity( div, opacity );

  if( ( step>0 && opacity<toOpacity ) || ( step<0 && opacity>toOpacity ) )
    setTimeout( function(){ _rcFX_Fade( div, opacity+step, toOpacity, step, ms, func ); }, ms );
  else if( typeof func=="function" )
    func();
  //g_rcAjaxTemplate.debug( opacity );
}

function rcFX_HideLeft( div, step, ms, func ){
  var dimension=rcFX_GetDimension( div );
  var left=dimension.left - step;

  div.style.left=left + 'px';

  if( left + dimension.width >=0 )
    setTimeout( function(){ rcFX_HideLeft( div, step, ms, func ); }, ms );
  else if( typeof func=="function" )
    func();
}

function rcFX_ShowLeft( div, to, step, ms, func ){
  var dimension=rcFX_GetDimension( div );

  div.style.left='-' + dimension.width + 'px';
  _rcFX_ShowLeft( div, to, step, ms, func );
}

function _rcFX_ShowLeft( div, to, step, ms, func ){
  var dimension=rcFX_GetDimension( div );
  var left=dimension.left + step;

  if( left > to ) left=to;
  div.style.left=left + 'px';
  
  if( left < to )
    setTimeout( function(){ _rcFX_ShowLeft( div, to, step, ms, func ); }, ms );
  else if( typeof func=="function" )
    func();
}

function rcFX_Move( div, times, stepX, stepY, ms, func ){
  var dimension=rcFX_GetDimension( div );
  var left=dimension.left + stepX;
  var top=dimension.top + stepY;
  div.style.left=left + 'px';
  div.style.top=top + 'px';

  //g_rcAjaxTemplate.debug( left );

  if( --times>0 )
    setTimeout( function(){ rcFX_Move( div, times, stepX, stepY, ms, func ); }, ms );
  else if( typeof func=="function" )
    func();
}

