/*  preload function
    parameters: obj (object)
        selector
        callback
*/

function preloadImage(obj)
{
    obj = (typeof(obj) == "object")? obj : {};
    var selector = (obj.selector)? obj.selector : "img.preload";
    var callback = (obj.callback)? obj.callback : null;
    
    var elements = $(selector);
    
    var attributesCopy = ["class", "id", "alt"];
    for(var i = 0; i < elements.length; i++)
    {
        var img = new Image();
        var src = $(elements[i]).attr("src");
        
        // copy attributes
        
        for(var j = 0; j < attributesCopy.length; j++)
        {
            var attr = $(elements[j]).attr(attributesCopy[j]);
            $(img).attr(attributesCopy[j], attr);
        }
        
        $(img).hide();
        $(elements[i]).replaceWith(img);
        
        $(img).load(function(){
            $(this).fadeIn();
            $(this).removeClass("preload");
            if(callback)
            {
                callback(this);
            }
        }).attr('src', src);
    }
}
