/*************************************************************
* Coded : Semenihin Maksim (Semenihin.Maksim@gmail.com) ©2009*
*************************************************************/

var fade = { // Namespace
    step    : 0.05,
    delay   : 10, // ms
    timer   : null,
    fade 	: function(elem,nOpacity) 	{
			if (typeof elem == 'string') elem = document.getElementById(elem);
		

		var props = ['MozOpacity', 'KhtmlOpacity', 'opacity'];
        for (var i in props) {
            if (typeof elem.style[props[i]] == 'string') {
                elem.style[props[i]] = nOpacity;
                return;
            }
        }
        // IE 6+
        try {
            nOpacity = 100 * parseFloat(nOpacity);
			if ((oAlpha = elem.filters['DXImageTransform.Microsoft.alpha'] || elem.filters.alpha)) oAlpha.opacity = nOpacity;
            else elem.style.filter += "progid:DXImageTransform.Microsoft.Alpha(opacity="+nOpacity+");";
        } catch (e) {
            // IE <= 5.5 OR Opera < 9 OR another browser. Do nothing
        }
	//}
    },



setOpacity : function(elem, nOpacity) {
       if (typeof elem == 'string') elem = document.getElementById(elem);
		
        var props = ['MozOpacity', 'KhtmlOpacity', 'opacity'];
        for (var i in props) {
            if (typeof elem.style[props[i]] == 'string') {
                elem.style[props[i]] = nOpacity;
                return;
            }
        }
        // IE 6+
        try {
            nOpacity = 100 * parseFloat(nOpacity);
			if ((oAlpha = elem.filters['DXImageTransform.Microsoft.alpha'] || elem.filters.alpha)) oAlpha.opacity = nOpacity;
            else elem.style.filter += "progid:DXImageTransform.Microsoft.Alpha(opacity="+nOpacity+");";
        } catch (e) {
            // IE <= 5.5 OR Opera < 9 OR another browser. Do nothing
        }
    },
	
	
	
	
	
	
	
	
	
	
	
	
    hide : function(id, from, to, callback) {
		(typeof(from) !== 'number') ?  from = parseFloat(from) : ""
		   !from ? from=1 : ""
           !to ? to=0 : ""
		from = parseFloat(from);
		from = parseFloat(from.toFixed(3));
		from = parseFloat(from-this.step)
        from = parseFloat(from.toFixed(3));
        from = from <= to ? to : from;
        if (this.doit(id, from, to, callback))
            this.timer = setTimeout("fade.hide('"+id+"', "+from+", "+to+", '"+(callback ? callback : '')+"')", this.delay);
    },
    show : function(id, from, to, callback) {
		(typeof(from) !== 'number') ?  from = parseFloat(from) : ""
			   !from ? from=0 : ""
               !to ? to=1 : ""
	 
		from = parseFloat(from);
		from = parseFloat(from.toFixed(3));
		from = parseFloat(from+this.step)
        from = parseFloat(from.toFixed(3));
	

		from = from >= to ? to : from;
        
		if (this.doit(id, from, to, callback))
            this.timer = setTimeout("fade.show('"+id+"', "+from+", "+to+", '"+(callback ? callback : '')+"')", this.delay);
    },
    doit : function(id, from, to, callback) {
        this.setOpacity(id, from);
        
        if (from == to) {
clearTimeout(this.timer);

         if (callback) eval(callback+'()');
        } else return true;
    }
}