var rotor = {
  objs: {},

  loader: function() {
  	if(window.addEventListener) window.addEventListener("load", rotor.preload, false);
  	else if(window.attachEvent) window.attachEvent("onload", rotor.preload);
  },
  preload: function() {
    if(!document) return;
    var elems = document.getElementsByTagName('*');
    for(var i=0; i<elems.length; i++) {
      var cl = elems[i].className;
      if(cl && cl.indexOf("rotor")>-1) {
        var group = [];
        for(var j=0; j<elems[i].childNodes.length; j++) {
          var elem = elems[i].childNodes[j];
          if(elem.nodeType==3) continue;
          if(group.length) rotor.setOpacity(elem,0);
          group.push(elem);
        }
        if(group.length>1) {
          rotor.objs[cl] = new rotor.unit(group,cl);
          rotor.objs[cl].rotate();
        }
      }
    }
  },
  setOpacity: function(obj,lvl) {
    if(document.all) obj.style.filter = "alpha(opacity="+lvl+")";
    else obj.style.opacity = (0.0+lvl)/100;
  }
}

rotor.unit = function(objs,tgt) {
  var pos=0,lvl=0,fst=null,snd=null;
  this.rotate = function() {
    fst = objs[pos];
    var nxt = pos+1;
    if(nxt==objs.length) nxt = 0;
    snd = objs[nxt];
    lvl = 0;
    rotor.setOpacity(fst,100);
    rotor.setOpacity(snd,0);
    rotor.objs[tgt].animate();
  }
  this.animate = function() {
    rotor.setOpacity(fst,100-10*lvl);
    rotor.setOpacity(snd,10*lvl);
    if(lvl==10) {
      pos = (pos+1) % objs.length;
      setTimeout(rotor.objs[tgt].rotate,3000);
    }
    else setTimeout(rotor.objs[tgt].animate,50);
    lvl+= 1;
  }
}

rotor.loader();
