function UploadPhoto(){
  this.userId = 0;
  this.albumId = 0;
  this.iframeName = '_uploaderIframe';
  this.view = {
    loading : '<div>上传中&nbsp;<img src="http://xfiles.cdnmyspace.cn/dir/userhome/v5/images/loading.gif"/></div>'
  };
  this.isOpenWindow = false;
  this.action = "http://upload.myspace.cn/imageupload/UploadImage.aspx?PrintJSON=SongShu&entity=UserID%3D0%3BAlbumID%3D{albumId}%3BEntityType%3DUser%3B";

  this.dom = {
    wrapper : '',
    fileInputs : '',
    tip : '',
    sumbit : ''
  };
  this.failure = [];
  this.success = [];
  this.currentFileInputIndex = 0;
}
UploadPhoto.prototype = {
  init : function(){
    this.view.wrapper = this.dom.wrapper.innerHTML;
    
  },
  getDom : function(){
  },
  getAlbumId : function(callback){    
  },
  batchUpload : function(){
    window["sqlNoFlash"] = {};
    sqlNoFlash.seqUpload = this.uploadDone.bind(this);   
  
    var counter = 0;
    for(var i=0,l=this.dom.fileInputs.length; i<l; i++){
      var fileInput = this.dom.fileInputs[i];
      var lsVal = fileInput.value;
      if(lsVal==""){
        counter++;
        continue;
      }
      lsVal = lsVal.substring(lsVal.lastIndexOf("\\")+1);
      if(!this.validateFormat(lsVal)){
        this.showTip(lsVal+" 的图片格式不正确！");
        return false;
      }
      fileInput.store('fileName',lsVal);
    }
    if(counter==this.dom.fileInputs.length){
      this.showTip("还没有选择图片呢！");
      return false;
    }
    if(document.domain!="myspace.cn"){
      document.domain = "myspace.cn";
    }
    if(this.dom.fileInputs.length>0){
      this.upload();
    }
  },
  upload : function(){
    this.updateUI("start");
    var currentFileInput = this.dom.fileInputs[this.currentFileInputIndex];
    if(currentFileInput.value == ""){
      this.uploadDone();
      return false;
    }
    var form = this.form;
    if(!form){
      var form = document.createElement("form");
      var iframe;
      try{
        iframe = document.createElement('<iframe name="'+this.iframeName+'">');
      }catch(e){
        iframe = document.createElement('iframe');
        iframe.name = this.iframeName;
      }
      iframe.style.display = "none";
      document.body.appendChild(iframe);

      form.method = "post";
      form.target = this.iframeName;
      form.style.display = "none";
      form.encoding = "multipart/form-data";
      document.body.appendChild(form);
      this.form = form;
    }else{
      form.innerHTML = "";
    }
    var _this = this;
    this.getAlbumId(function(){
      form.action = _this.action.substitute({albumId:_this.albumId});
      form.appendChild(currentFileInput);
      form.submit();      
    });
  },
  uploadDone : function(aoData){
    this.response = aoData;
    //该上传控件空白
    if(aoData){
      this.updateUI("end");
    }
    if(this.dom.fileInputs.length > this.currentFileInputIndex + 1){
      this.currentFileInputIndex++;
      this.upload();
    }else{
      this.updateUI("over");
    }
  },
  onStart : function(){
    this.showTip(this.view.loading, true);
  },
  onEnd : function(){
    var currentFileInput = this.dom.fileInputs[this.currentFileInputIndex];
    var fileName = currentFileInput.retrieve('fileName');
    if(this.response.status!="ok"){
      this.failure.push(fileName);
    }else{
      this.success.push(fileName);
    }
    this.showTip(fileName+" 上传完成");
  },
  onOver : function(){
    var tip;
    if(this.failure.length==0){
      tip = "上传成功";
    }else{
      tip = this.failure.join() + " 上传失败，图片最大5M";
    }
    if(this.isOpenWindow && this.success.length > 0){
      window.open("http://photo.myspace.cn/"+this.userId+"/album/"+this.albumId);
    }
    this.showTip(tip);
    
    this.currentFileInputIndex = 0;
    this.failure = [];
    this.success = [];
    this.destroy();
  },
  updateUI : function(flag){
    var fooName = 'on'+flag.replace(/\b[a-z]/g, function(match){return match.toUpperCase();});
    this[fooName]();
  },
  destroy : function(){
    this.dom.wrapper.innerHTML = this.view.wrapper;
  },
  showTip : function(asMsg, isKeep){
    clearTimeout(this.timer);
    this.dom.tip.innerHTML = asMsg;
    this.dom.tip.style.display = "block";
    if(!isKeep){
      this.timer = (function(){
        this.dom.tip.style.display = "none";
      }).delay(5000,this);
    }
    //alert(asMsg);
  },
  validateFormat : function(asSrc){
    var index=asSrc.lastIndexOf(".");
    var lsEx=asSrc.substring(index+1).toLowerCase();

    if(lsEx=="jpeg"||lsEx=="jpg"||lsEx=="gif"||lsEx=="tiff"||lsEx=="bmp"||lsEx=="png"){
      return true
    }else{
      return false;
    }  
  }
}




function buildAlbum(aeSelect, callback){
  var lsUrl = "http://ajaxv2.myspace.cn/_Common/AjaxService/UserHomeSvc.svc/json/GetBaindOptions?optionType=1";
  var loRequest={
    "url": lsUrl,
    "method":"get",
    "callback":action
  };
  MS_loadAjax(loRequest,'/_common/static/ajax.html');	
  function action(asData){
    var loData = JSON.decode(asData);
    if(loData && loData.Msg == "ok"){
      aeSelect.options.length = 0;
      for(var i=0; i<loData.Options.length; i++) {
        var loOption = loData.Options[i];
        aeSelect.options.add(new Option(loOption.Name, loOption.Value));
      }
    }else{
      //alert(loData.Msg);
    }
    if(callback){
      callback();
    }
  }
}

function uploadPhotoInHome(){
  var uploaderObj = new UploadPhoto(); 
  var wrapper = $("file_upload_wrapper");
  var eAlbumCategory = wrapper.getElement("select");

  buildAlbum(eAlbumCategory);
  
  uploaderObj.getDom = function(){
    uploaderObj.dom.tip = wrapper.getElement(".file_upload_tip");
    uploaderObj.dom.fileInputs = wrapper.getElements(".file_input");
    uploaderObj.dom.maskInputs = wrapper.getElements(".mask_input");
    uploaderObj.dom.wrapper = $("file_upload_list");
    uploaderObj.dom.album = wrapper.getElement("select");
    uploaderObj.dom.submit = $("batch_upload_button");
  }
  uploaderObj.destroy = function(){
    uploaderObj.dom.wrapper.innerHTML = uploaderObj.view.wrapper;
    attachMaskInput();
  }
  uploaderObj.getAlbumId = function(callback){
    uploaderObj.albumId = eAlbumCategory.value;
    callback();
  }
  uploaderObj.isOpenWindow = true;
  uploaderObj.userId = JS_Context.UserId.toString();
  attachMaskInput();
  uploaderObj.dom.submit.addEvent("click",function(){
    uploaderObj.batchUpload();
  });      
  uploaderObj.init();

  function attachMaskInput(){
    var _this = uploaderObj;
    _this.getDom();
    for(var i=0,l=_this.dom.fileInputs.length; i<l; i++){
      _this.dom.fileInputs[i].addEvent("change",handler(i));
    }
    for(var i=0,l=_this.dom.maskInputs.length; i<l; i++){
      _this.dom.maskInputs[i].disabled = true;
    }    
    function handler(index){
      return function(){
        var lsName = _this.dom.fileInputs[index].value;
        _this.dom.maskInputs[index].value = lsName.substring(lsName.lastIndexOf("\\")+1);
      }
    }
  }
}