var jsonpData = {"progress":"0","error":false};

function jsonp(data){

    jsonpData = eval(data)
}

function ProgressBar(interval, onstart, onprogress, ondone) {
   var
      _id,
      _url,
      _interval = interval,
      _onstart = onstart,
      _onprogress = onprogress,
      _ondone = ondone
   ;

   var _timer;

   var _progressJSONP = function() {
      clearTimeout(_timer);
      var script = document.createElement('script');
            rand_no = Math.floor(Math.random()*100000);
      script.setAttribute('src', _url+'?'+rand_no);
	document.getElementsByTagName('head')[0].appendChild(script);
        data = jsonpData;
        if (data.error) {
           alert('ERROR');
           _ondone(false);
        }
        else if (data.progress < 100) {
           _onprogress(data.progress);
           _timer = setTimeout(_progressJSONP, _interval);
//           _timer2 = setTimeout("flagJSONP = true;", _interval*2);
        }
        else if (data.progress == 100){
           //alert('DONE');
           //_ondone(0);
           _ondone(true);
        }

   }

   var _progress = function() {
      clearTimeout(_timer);

      $.getJSON(
         _url,
         {'id':_id},
         function (data) {
            data = eval(data);
            if (data.error) {
               alert('ERROR');
               _ondone(false);
            }
            else if (data.progress < 100) {
               _onprogress(data.progress);
               _timer = setTimeout(_progress, _interval);
            }
            else {
               //alert('DONE');
               //_ondone(0);
               _ondone(true);
            }
         }
      );
   }

   this.start = function(id, url) {
      _id = id;
      _url = url;
      _onstart();
      _timer = setTimeout(_progress, _interval);
   }
 this.startCross = function(id, url) {
     jsonpData = {"progress":"0","error":false};
      _id = id;
      _url = url;
     // alert(url);
      _onstart();
      _timer = setTimeout(_progressJSONP,  _interval);
   }
}

