/*	
    function fadeOut(id, time)
	{
	    fade(id, 100, 0, time);
	    //document.getElementById(id).style.display = "none";
	}
	function fadeIn(id, time)
	{
	    //document.getElementById(id).style.display = "";
	    fade(id, 0, 100, time);
	}
	*/
	
	function fade (id, alphaStart, alphaEnd, time)
	{
		var speed = Math.round(time / 100);
		var timer = 0;
		//alert("fade " + id + ", " + alphaStart + ", " + alphaEnd + ", " +  sec );
		if (alphaStart > alphaEnd) {
			for (i = alphaStart; i >= alphaEnd; i--) {
				setTimeout("setAlpha('" + id + "', " + i + ")", timer*speed);
				timer++;
			}
		} else if (alphaStart < alphaEnd) {
			for (i = alphaStart; i <= alphaEnd; i++) {
				setTimeout("setAlpha('" + id + "', " + i + ")", timer*speed);
				timer++;
			}
		}
	}
	
	
    function toAlpha (el, alpha, onComplete, settings)
    {
        if (el._a === undefined) {
            el._a = getAlpha(el);
        }
        settings = settings || {};
        
        var start, end, step, speed, tune;
    
        var start = el._a;
        var end = alpha;
    	var step = settings.step || 0;
    	var speed = settings.speed || 40;
    	var tune = settings.tune ||10; //1;
    
    	if (start == end) {
    	    step = 0;
    	} else if (start < end) {
    	    step = +1;
    	} else {
    	    step = -1;
    	}
    
    	// sped tune
    	step *= tune;

    	// stop prev
        if (el._2ai) {
            clearInterval(el._2ai);
            el._finished = true;
        }

    	var cur = el._a;
    	function f ()
    	{
    	    cur += step;
    	    if ((step == 0) || (step < 0 && cur <= end) || (step > 0 && cur >= end)) {
    	        cur = end;
    	    }
            setAlpha(el, cur);
            el._a = cur;
    		if (cur == end) {
    		    clearInterval(el._2ai);
    		    el._finished = true;
    		    if (!onComplete) return;
    		    switch (onComplete.constructor)
    		    {
                    case String:
                        onComplete = new Function(onComplete);
                    case Function:
                        onComplete();
                    break;
                    case Array:
                        onComplete[0].apply(onComplete[1], onComplete[2]? onComplete[2] : []);
                    break;
    		    }
    		}
    	}

    	el._2ai = setInterval(f, speed);
    	el._finished = false;
    }

    function setAlpha (el, alpha)
    {
		if (typeof(el) == "string") {
			el = document.getElementById(el);
		}
        try {
    		var s = el.style;
    		//s.display = alpha > 0? "" : "none";
    		//s.visibility = alpha>0? "" : "hidden";
    		s.opacity = (alpha / 100);
    		s.MozOpacity = (alpha / 100);
    		s.KhtmlOpacity = (alpha / 100);
    		if(alpha == 100) {
    		  s.filter = "";
    		} else {
    		  s.filter = "alpha(opacity=" + alpha + ")";
    		}
    		el._a = alpha;
        } catch (e) {}
    }
    
    function getAlpha(el)
    {
        var style;
        if (el.currentStyle) {
            style = el.currentStyle;
        }
        else if (document.defaultView.getComputedStyle) {
            style = document.defaultView.getComputedStyle(el, null);
        }
        if (! style) {
            return;
        }
        //if (style.display == "none" || style.visibility == 'hidden') {
        //    return 0;
        //}
        var alpha = 100;
        var props = ['opacity', 'moz-opacity', 'khtml-opacity'];
        for (var i=0; i<props.length; i++) {
            for (var k in style) {
                if (k == props[i]) {
                    return style[k] * 100;
                }
            }
        }
        if (style.filter) {
            var m = style.filter.match(/opacity=(\d+)/i);
            if (m && m[1]) {
                alpha = m[1];
            }
        }
        return alpha;
    }