﻿var Cache = new Object();

function Preload(path, completed, progressChanged, failed)
{
    /// <param name="path" type="String" />
    /// <param name="completed" type="Function" />
    /// <param name="progressChanged" type="Function" />
    /// <param name="failed" type="Function" />
    /// <returns type="Downloader" />
    
    if (IsPreloaded(path))
    {
        if (completed) completed();
        return;
        //throw("Path already in cache");
    }
    
    var downloader = Plugin.createObject("downloader")
    if (completed) downloader.addEventListener("completed", completed);
    if (progressChanged) downloader.addEventListener("downloadProgressChanged", progressChanged);
    if (failed) downloader.addEventListener("downloadFailed", failed);
    
    downloader.open("GET", path);
    downloader.send();  
    Cache[path] = downloader;
    return downloader;        
}

function IsPreloaded(path)
{
    /// <param name="path" type="String" />
    /// <returns type="Boolean" />
    
    return Cache[path]?true:false;
}