function setfadeIn(element, delay, start, steps) {
    if (element.getAttribute("setLayout") == null) {
        element.setAttribute("setLayout", true);
    }

    element.setAttribute("fadeValue", start);
    setElementOpacity(element, start);
    element.setAttribute("FadeTimer", setTimeout('fadeIn(document.getElementById("' + element.id + '"), ' + delay + ', ' + steps +  ')', delay));
}

function fadeIn(element, delay, steps) {    
    if (element.getAttribute("FadeTimer") != null) {
        clearTimeout(parseInt(element.getAttribute("FadeTimer")));
        element.setAttribute("FadeTimer", null);
    }

    if (element.getAttribute("fadeValue") == null) {
        element.setAttribute("fadeValue", 0.000);
    }

    var iFadeValue = parseFloat(element.getAttribute("fadeValue"));

    if (iFadeValue <= 1) {
        setElementOpacity(element, iFadeValue);

        iFadeValue += steps;
        element.setAttribute("FadeTimer", setTimeout('fadeIn(document.getElementById("' + element.id + '"), ' + delay + ', ' + steps +  ')', delay));
        element.setAttribute("fadeValue", iFadeValue);
    }
    else
    {
    	setElementOpacity(element, 1);
    }
}

function IsIEFilters(element) {
    if (element.filters) {
       return true;
    }else{
        return false;
    }		
}

function setElementOpacity(element, value) {
    if (!element) {
        throw Error.argumentNull('element');
    }

    if (IsIEFilters(element)) {
        var filters = element.filters;
        var createFilter = true;
        if (filters.length !== 0) {
            var alphaFilter = filters['DXImageTransform.Microsoft.Alpha'];
            if (alphaFilter) {
                createFilter = false;
                alphaFilter.opacity = value * 100;
            }
        }
        if (createFilter) {
            element.style.filter = 'progid:DXImageTransform.Microsoft.Alpha(opacity=' + (value * 100) + ')';
        }
    }
    else {
        element.style.opacity = value;
    }
}

function getCurrentStyle(element, attribute, defaultValue) {
    var currentValue = null;
    if (element) {
        if (element.currentStyle) {
            currentValue = element.currentStyle[attribute];
        } else if (document.defaultView && document.defaultView.getComputedStyle) {
            var style = document.defaultView.getComputedStyle(element, null);
            if (style) {
                currentValue = style[attribute];
            }
        }

        if (!currentValue && element.style.getPropertyValue) {
            currentValue = element.style.getPropertyValue(attribute);
        }
        else if (!currentValue && element.style.getAttribute) {
            currentValue = element.style.getAttribute(attribute);
        }
    }

    if ((!currentValue || currentValue == "" || typeof (currentValue) === 'undefined')) {
        if (typeof (defaultValue) != 'undefined') {
            currentValue = defaultValue;
        }
        else {
            currentValue = null;
        }
    }
    return currentValue;
}

function getInheritedBackgroundColor(element) {
    if (!element) return '#FFFFFF';
    var background = getCurrentStyle(element, 'backgroundColor');
    try {
        while (!background || background == '' || background == 'transparent' || background == 'rgba(0, 0, 0, 0)') {
            element = element.parentNode;
            if (!element) {
                background = '#FFFFFF';
            } else {
                background = getCurrentStyle(element, 'backgroundColor');
            }
        }
    } catch (ex) {
        background = '#FFFFFF';
    }
    return background;
}
