(function () {
  var ns = $.namespace("pskl.service");
  ns.ImageUploadService = function () {
    this.serviceUrl_ = "http://screenletstore.appspot.com/__/upload";
  };

  ns.ImageUploadService.prototype.init = function () {
    // service interface 
  };

  /**
   * Upload a base64 image data to distant service. If successful, will call provided callback with the image URL as first argument;
   * @param {String} imageData base64 image data (such as the return value of canvas.toDataUrl())
   * @param {Function} cbSuccess success callback. 1st argument will be the uploaded image URL
   * @param {Function} cbError error callback 
   */
  ns.ImageUploadService.prototype.upload = function (imageData, cbSuccess, cbError) {
    var xhr = new XMLHttpRequest();
    var formData = new FormData();
    formData.append('data', imageData);
    xhr.open('POST', this.serviceUrl_, true);
    xhr.onload = function (e) {
      if (this.status == 200) {
        var imageUrl = "http://screenletstore.appspot.com/img/" + this.responseText; 
        cbSuccess(imageUrl);
      } else {
        cbError();
      }
    };

    xhr.send(formData);
  };
  
})();