jslb_fades001.js 3.02 KB
// @license    著作権表示義務無し。商用利用、改造、自由。連絡不要。

////
//BGフェイド
//@parem id BGフェイドさせるDIVのID名
//@sample oj = new fadeBgclGry('contents')
//@requires             jslb_ajax038.js        簡易Ajaxライブラリ
//@requires             jslb_progressbar001.js プログレスバーライブラリ
//@requires             jslb_cacheajax001.js   Ajaxキャッシュ機構
function fadeBgclGry(id){
  
  var div    = "document.getElementById('"+id+"')";
  var count  = 0;
  var tid    = 0;

  //@sample oj.doBgFade('3456789abcde')
  this.doBgFade   = function (f){
    count  = 0;
    clearInterval(tid);
    tid = setInterval( function(){fade(f)} ,30);
  }
   
  function fade(f){ 
    if(!f)var f = "3456789abcdef";
    if(count < f.length){ 
      var b = f.charAt(count);
      setBgcolor( '#'+b+b+b+b+b+b );
      count++;
    } else {
      clearInterval(tid);
    }
  } 
  
  function setBgcolor(color){
    if(document.getElementById)         //e5,e6,n6,n7,m1,o6,o7,s1用
      eval(div).style.backgroundColor =color
  }
}




////
// 不透明フェイド関数
//
// @sample          fadeOpacity('drgbbs',1,0.7)
//
//   
function fadeOpacity(layName,swt,stopOpacity){
  
  if(!window.fadeOpacity[layName]) //カウンター初期化
    fadeOpacity[layName] =0 

  //フェイドスイッチ引数省略時初期値(不透明から透明へ)
  if(!arguments[1]) swt = -1
  
  //引数swtが -1 なら不透明から透明へ
  //           1 なら透明から不透明へフェイドする
  if(swt==-1)        var f  = "9876543210"
  else if(swt==1)    var f  = "0123456789"
  else               var f  = "9876543210"
  
  //停止不透明度引数省略時初期値
  if(!arguments[2] && swt==-1)   stopOpacity = 0
  else if(!arguments[2] && swt==1) stopOpacity = 10

  //フェイド処理  
  if( fadeOpacity[layName] < f.length-1 ){
  
    //カウンター番目の文字列を取り出す
    var opa = f.charAt(fadeOpacity[layName])/10

    //終了時不透明度なら終了
    if( opa == stopOpacity ){
      setOpacity(layName,stopOpacity)  //終了
      fadeOpacity[layName] = 0     //リセット
      return
    }
    // 不透明度変更を実行する
    setOpacity(layName,opa)
    // カウンターを加算
    fadeOpacity[layName]++
    //--50/1000秒後にfadeOpacityを再実行
    setTimeout('fadeOpacity("'+layName+'","'+swt+'","'+stopOpacity+'")',50)
  } else {
    //終了
    setOpacity(layName,stopOpacity)
    //--リセット
    fadeOpacity[layName] = 0

  }

}
function setOpacity(layName,arg) {
  if(window.opera)return
  var ua = navigator.userAgent
  if(ua.indexOf('Safari') !=-1 || ua.indexOf('KHTML') !=-1 ) { 
      document.getElementById(layName).style.opacity = arg
  } else if(document.all) {          //win-e4,win-e5,win-e6
      document.all(layName).style.filter="alpha(opacity=0)"
      document.all(layName).filters.alpha.Opacity  = (arg * 100)
  } else if(ua.indexOf('Gecko')!=-1) //n6,n7,m1
      document.getElementById(layName).style.MozOpacity = arg
}