function addEvent ( obj, type, fn ) {
  if ( obj.attachEvent ) {
    obj["e"+type+fn] = fn;
    obj[type+fn] = function() { obj["e"+type+fn]( window.event ); }
    obj.attachEvent( "on"+type, obj[type+fn] );
  } else
    obj.addEventListener( type, fn, false );
}

function removeEvent ( obj, type, fn ) {
      if ( obj.detachEvent ) {
        obj.detachEvent( "on"+type, obj[type+fn] );
		    obj[type+fn] = null;
      } else
        obj.removeEventListener( type, fn, false );
}

Function.prototype.bind = function(obj) {
    var _method = this;
    return function() {
        return _method.apply(obj, arguments);
    };    
}


Function.prototype.delay = function(del) {
    var _this = this;
    (function() { 
    setTimeout(_this,del);
    })();
}

function getstyle(elem, prop) {
		if(document.defaultView)
		{
			return document.defaultView.getComputedStyle(elem, null).getPropertyValue(prop);
		}
		else if(elem.currentStyle)
		{
			var prop = prop.replace(/-(\w)/gi, function($0,$1)
			{
				//return $0.charAt($0.length - 1).toUpperCase();
				return $1.toUpperCase();
			});
			return elem.currentStyle[prop];
		}
		else return null;
	}
function $f(elms){
var $f = elms;
$f.fadeIn = function(delay,callbk,out) {
        var _this = this;
        for (i = 1; i <= 100; i++) {
          (function(j) {
                setTimeout(function() {  
                      if (out==true) j=100-j; 
                       Opacityto(_this,j);
                        _this.style.zoom = 1; // for ie, set haslayout         
                       if (j==100&&callbk!=undefined) {callbk.call(_this);}
                       else if (out==true&&callbk!=undefined&&j==0) {callbk.call(_this);}
                      },j*delay/100);
                     
            })(i);     
        }
    };

    $f.fadeOut = function(delay,callbk) {
        $.fadeIn(delay,callbk,true);
    };
   
    return $f;  
} 


function Opacityto(elm,v){
    elm.style.opacity = v/100; /* CSS3 */
    elm.MozOpacity =  v/100; /* FF */
    elm.style.KhtmlOpacity =  v/100; /* Safari */
    elm.style.filter=" alpha(opacity ="+v+")"; /* IE */
}

function slideshow(id){
    this.ul = document.getElementById(id);
    this.lis = this.ul.getElementsByTagName("LI");
    this.len = this.lis.length;
    this.width = parseInt(getstyle(this.ul.parentNode, "width"));
    for(i=1;i<this.len;i++) {
   // this.lis[i].style.width = this.width+"px";
    this.lis[i].style.display = "block";
     Opacityto(this.lis[i],0);
    }
    this.left = this.width;
    this.t=0;
    this.k = 0;
    this.dir = "plus";
    this.delay = 2000;
    this.zindex = 1;
}

slideshow.prototype = {

repeat: function(fn,del){
    var _this = this;
    (function() { 
    _this.t = setInterval(fn,del);
    })();

},



attach:function(){
    _this = this;
    this.ul.onmouseover = function(){
        _stop();
    };

    this.ul.onmouseout = function(){
        
        if (_this.t!=0) return;
        _stop();
        _go();
    }

},

go: function(){
    
    _this = this;
    _stop = this.stop.bind(this);
    _go = this.go.bind(this);
    this.attach();
    clearInterval(this.t); 
   
    this.repeat(this.show.bind(this),this.delay+2000);
  
},

show: function(){
    _this.k = (_this.dir == "plus") ? _this.k+1 : _this.k-1;
    if (_this.k== _this.len) {
        _this.dir = "minus";
        _this.k = _this.len -1;
    }
    else if (_this.k==0) {
        _this.dir = "plus";  
        _this.k = _this.k+1;

    } 
    _this.zindex +=1;
    if (_this.dir == "plus") {   
        
        _this.lis[_this.k].style.zIndex = _this.zindex;
         $f(_this.lis[_this.k]).fadeIn(1000,function(){
            Opacityto(_this.lis[_this.k-1],0);      
         });   
    }
    else if (_this.dir == "minus") {  
         
        _this.lis[_this.k-1].style.zIndex = _this.zindex;
         $f(_this.lis[_this.k-1]).fadeIn(1000,function(){
            Opacityto(_this.lis[_this.k],0);          
         });  
           
    }
           
},

stop:function(){
    clearInterval(this.t);
    this.t = 0;
}

}
window.onload=function(){
var ss1 = new slideshow("nt");
ss1.go();
}
