

var Efct = new function () {
  //  Debug.msg( "Start Utils" );
  _$cfn$_ = new Array();
  var efIdl = Utils.idCrtr();

  var efItr = function ( intr, rfn ) {
    var nEfId = efIdl();
    _$cfn$_[nEfId] = rfn;
    return setInterval( "_$cfn$_["+nEfId+"]()", intr );
  }
  this.efItr = efItr;


  var chWdEf = function ( obj, intr, step, newWd ) {
    var currWd = parseInt( obj.style.width );
    var direc = newWd < currWd ? -1 : 1;
    var ivid = Efct.efItr( intr, function () {
			     currWd += step * direc;
			     obj.style.width = currWd;
			     if ( currWd*direc > newWd*direc ) {
			       obj.style.width = newWd;
			       clearInterval( ivid );
			     }
			     else if ( currWd < 0 ) {
			       obj.style.width = 0;
			       clearInterval( ivid );
			     }
			   } );
  };
  this.chWdEf = chWdEf;

  var chOpaEf = function ( obj, intr, step, sOpa, fOpa, cFn ) {
    var direc = sOpa < fOpa ? 1 : -1;
    var crOpa = sOpa*direc;

    var ivid = Efct.efItr( intr, function () {
			     if ( crOpa > fOpa ) {
			       clearInterval( ivid );
			       if ( defined( cFn ) ) cFn();
			     }
			     else {
			       crOpa += step;
			       setOpa( obj, crOpa*direc );
			     }
			   } );
  };
  this.chOpaEf = chOpaEf;

  var setOpa = function ( obj, crOpa ) {
    if ( explorerFlag ) {
      obj.style.filter = "alpha(opacity="+crOpa+")";
    }
    else {
      obj.style.MozOpacity = crOpa / 100;
    }
  };
  this.setOpa = setOpa;



  var mvEl = function ( obj, intr, itNum, sLf, sTp, fLf, fTp, cFn ) {
    var stepLf = (fLf-sLf) / itNum;
    var stepTp = (fTp-sTp) / itNum;

    var itCnt = 0;
    var cLf = sLf;
    var cTp = sTp;
    var ivid = Efct.efItr( intr, function () {
			     if ( itCnt > itNum ) {
			       clearInterval( ivid );
			       obj.style.left = fLf;
			       obj.style.top = fTp;
			       if ( defined( cFn ) ) cFn();
			     }
			     else {
			       obj.style.left = parseInt( cLf );
			       obj.style.top = parseInt( cTp );
			       cLf += stepLf;
			       cTp += stepTp;
			     }
			     ++itCnt;
			   } );

  };
  this.mvEl = mvEl;
};
