var intervalId;
var intarvalTarget;
function startInterval(fc,time){
    intervalId = setInterval(fc,time);
}
function stopInterval(){
    clearInterval(intervalId);
}
function Loader(loadTarget,objBar,objPercent,maxWidth,completedFc){

    this.maxWidth = maxWidth;
    this.completedFc = completedFc;
    this.toWidth = 0;
    this.completedFlg = false;
    if(objBar != undefined){
        this.loader = sender.findName(objBar);
        this.loader.width = 1;
    }
    if(objPercent != undefined)    this.per = sender.findName(objPercent);
    
    this.dlObj = sender.getHost().createObject("downloader");
    this.dlObj.addEventListener("completed", this.DownloadCompleted);
    this.dlObj.addEventListener("DownLoadProgressChanged",this.DownLoadProgress);
    this.dlObj.open("GET", loadTarget);
}
Loader.prototype ={
    StartLoader : function(){
        this.dlObj.send();
        intarvalTarget = this;
        if(this.loader != undefined) startInterval(this.ChgLoader,30);
     },
    StopLoader : function(){
        clearInterval(intervalId);
        this.dlObj.abort();
    },
    DownloadCompleted : function(sender, e){
        intarvalTarget.downLoader = sender;
        intarvalTarget.completedFlg = true;
        if(intarvalTarget.loader == undefined) intarvalTarget.completedFc();
    },
    DownLoadProgress : function(sender, e){
        intarvalTarget.toWidth = intarvalTarget.maxWidth * sender.downloadProgress;
    },
    ChgLoader : function(){
        intarvalTarget.loader.width += (intarvalTarget.toWidth - intarvalTarget.loader.width)/5;
        if(intarvalTarget.per != undefined) intarvalTarget.per.Text = Math.round(intarvalTarget.loader.width/intarvalTarget.maxWidth *100) + "%";
        if(intarvalTarget.loader.width > intarvalTarget.maxWidth -0.1 && intarvalTarget.completedFlg){
            stopInterval();
            intarvalTarget.completedFc();
        }
    }
}