/*=========================================================*/
/*===   Created By SE@RCHER Javascript (www.03www.su)   ===*/
/*===   Updated and Optimized By Szen (szenprogs.ru)    ===*/
/*=========================================================*/

var FadeClass = {};
FadeClass.baseopacity = 0.4;
FadeClass.increment = 0.2;

FadeClass.setopacity = function(obj, value){ 
 var targetobject = obj;
 if (targetobject && targetobject.filters && targetobject.filters[0]){ 
  if (typeof targetobject.filters[0].opacity == "number"){
   targetobject.filters[0].opacity = value * 100;
  } else { 
   targetobject.style.filter = "alpha(opacity=" + value * 100 + ")";
  }
 } else if (targetobject && typeof targetobject.style.MozOpacity != "undefined"){
  targetobject.style.MozOpacity = value;
 } else if (targetobject && typeof targetobject.style.opacity != "undefined"){
  targetobject.style.opacity = value;
 }
 targetobject.currentopacity = value;
}

FadeClass.fadeupdown = function(obj, direction){
 var targetobject = obj;
 var fadeamount = (direction == "fadeup") ? this.increment : -this.increment;
 if (targetobject && (direction == "fadeup" && targetobject.currentopacity < 1 || direction == "fadedown" && targetobject.currentopacity > this.baseopacity)){
  this.setopacity(obj, targetobject.currentopacity + fadeamount);
  window["opacityfader" + obj._fadeorder] = setTimeout(function(){FadeClass.fadeupdown(obj, direction)}, 50);
 }
}

FadeClass.clearTimer = function(obj){
 if (typeof window["opacityfader" + obj._fadeorder] != "undefined"){
  clearTimeout(window["opacityfader" + obj._fadeorder]);
 }
}

FadeClass.isContained = function(m, e){
 var e = window.event || e;
 var c = e.relatedTarget || ((e.type == "mouseover") ? e.fromElement : e.toElement);
 while (c && c != m)try {c = c.parentNode} catch(e){c = m}
 if (c == m){
  return true;
 } else {
  return false;
 }
}

FadeClass.fadeinterface = function(obj, e, direction){
 if (!this.isContained(obj, e)){
  FadeClass.clearTimer(obj);
  FadeClass.fadeupdown(obj, direction);
 }
}

FadeClass.collectElementbyClass = function(classname){
 var classnameRE = new RegExp("(^|\\s+)" + classname + "($|\\s+)", "i");
 var pieces = [];
 var alltags = document.all? document.all : document.getElementsByTagName("*");
 for (var i = 0; i < alltags.length; i++){
  if (typeof alltags[i].className == "string" && alltags[i].className.search(classnameRE) != -1){
   pieces[pieces.length] = alltags[i];
  }
 }
 return pieces;
}

FadeInit = function(fclasses, fstyle, opacity, fincrement){
 FadeClass.increment = (fincrement != undefined) ? fincrement : 0.2;
 FadeClass.baseopacity = (opacity != undefined) ? opacity : 0.4;
 if(fclasses == undefined) fclasses = ['FadeClass'];
 if(fstyle == undefined) fstyle = 0;
 var targetobjects = new Array();
 for(var z = 0; z < fclasses.length; z++){
  targetobjects=targetobjects.concat(FadeClass.collectElementbyClass(fclasses[z]));
 }
 if(fstyle == 0){
  for (var i = 0; i < targetobjects.length; i++){
   targetobjects[i]._fadeorder = i;
   FadeClass.setopacity(targetobjects[i], FadeClass.baseopacity);
   targetobjects[i].onmouseover = function(e){FadeClass.fadeinterface(this, e, "fadeup");}
   targetobjects[i].onmouseout = function(e){FadeClass.fadeinterface(this, e, "fadedown");}
  }
  sz="";
  for(z = 0; z < fclasses.length; z++){
   sz += "."+fclasses[z];
   if(z < fclasses.length-1) sz += ",";
  }
  document.write("<style type=\'text/css\'>" + sz + "{filter:progid:DXImageTransform.Microsoft.alpha(opacity=" + FadeClass.baseopacity * 100 + "); -moz-opacity:" + FadeClass.baseopacity + "; opacity:" + FadeClass.baseopacity + ";}<\/style>");
 } else {
  for (var i = 0; i < targetobjects.length; i++){
   targetobjects[i]._fadeorder = i;
   FadeClass.setopacity(targetobjects[i], 1);
   targetobjects[i].onmouseover = function(e){FadeClass.fadeinterface(this, e, "fadedown");}
   targetobjects[i].onmouseout = function(e){FadeClass.fadeinterface(this, e, "fadeup");}
  }
 }
}
