// Global variables.
var fadeStatus = false;

// Global functions.
function swap(obj, content){
	if(!fadeStatus){
		fadeStatus = true;
		obj.fadeOut();
		setTimeout(function(){
			obj.innerHTML = content;
			obj.fadeIn();
			fadeStatus = false;
		}, 800);
	}
}

// Element extensions.
Element.addMethods({
    fadeOut: function(obj){
        if(!obj.fadeStatus){
            var frameRate = 40; // Approx 24 fps.
            if(arguments[1]){
                if (typeof arguments[1] == "number"){
                    frameRate = parseInt(arguments[1]);
                }
            }            
            obj.fadeStatus = true;
        
            obj.setOpacity(1.0);
            var currentOpacity = 1.0;
        
            var temp = setInterval(function(){
                currentOpacity -= .1;
                obj.setOpacity(currentOpacity);
                
                if (currentOpacity <=0){
                    obj.setOpacity(0.0);
                    clearTimeout(temp);
                    obj.fadeStatus = false;
                }
            },frameRate);
        }
    },
    
    fadeIn: function(obj){
        if(!obj.fadeStatus){
            var frameRate = 40; // Approx 24 fps.
            if(arguments[1]){
                if (typeof arguments[1] == "number"){
                    frameRate = parseInt(arguments[1]);
                }
            }            
            obj.fadeStatus = true;
            
            obj.setOpacity(0.0);
            var currentOpacity = 0.0;
            obj.style.display = 'block';
            
            var temp = setInterval(function(){
                currentOpacity += .1;
                obj.setOpacity(currentOpacity);
            
                if(currentOpacity >= 1.0){
                    obj.setOpacity(1.0);
                    clearTimeout(temp);
                    obj.fadeStatus = false;
                }
            },frameRate);
        }
    }
});