﻿var ImagePreload = function (p_aImages, p_pfnFinished) {   // Call-back routines
    this.m_pfnPercent = this.OnImgUpdate;
    this.m_pfnFinished = p_pfnFinished;
    // Class Member Vars
    this.m_nLoaded = 0;
    this.m_nProcessed = 0;
    this.m_aImages = new Array;
    this.m_nICount = p_aImages.length;

    // Preload Array of Images
    for (var i = 0; i < p_aImages.length; i++) {
        this.Preload(p_aImages[i]);
    }
    this.g_iStep = 0;
}
var ip = ImagePreload;
ip.prototype.Preload = function (p_oImage) {
    var oImage = new Image;
    this.m_aImages.push(oImage);
    oImage.onload = ip.prototype.OnLoad;
    oImage.onerror = ip.prototype.OnError;
    oImage.onabort = ip.prototype.OnAbort;
    oImage.oImagePreload = this;
    oImage.bLoaded = false;
    oImage.source = p_oImage;
    oImage.src = p_oImage;
}
ip.prototype.OnComplete = function () {
    this.m_nProcessed++;
    if (this.m_nProcessed == this.m_nICount) {
        this.m_pfnFinished();
    } else {
        this.m_pfnPercent(Math.round((this.m_nProcessed / this.m_nICount) * 10));
    }
}
ip.prototype.OnLoad = function () {   // 'this' pointer points to oImage Object
    this.bLoaded = true;
    this.oImagePreload.m_nLoaded++;
    this.oImagePreload.OnComplete();
}
ip.prototype.OnError = function () {   // 'this' pointer points to oImage Object
    this.bError = true;
    this.oImagePreload.OnComplete();
}
ip.prototype.OnAbort = function () {   // 'this' pointer points to oImage Object
    this.bAbort = true;
    this.oImagePreload.OnComplete();
}
ip.prototype.OnImgUpdate = function (iProgress) {
    if ((iProgress >= 1) && (iProgress <= 10) && (iProgress > this.g_iStep)) {
        //if ($.browser.mozilla || $.browser.safari) {
        var prog_no = (1 + iProgress) * 10;
        //} else {
        //    var prog_no = (10 - iProgress) * 10;
        //}
        $(".preloadr").text(prog_no + "%");
        $(".preloadr").text(prog_no + "%");
        this.g_iStep++;
    }
}
