// 1. Set domain = domain-without-subdomain.

var Video = {
  // If this is defined, the uploaded callback will run it.
  is_uploaded : false,
  uploaded_callback : null,
  video_file_id : null,

  add_callback : function(name,callback){
    if(callback){
      Video[name+'_callback'] = callback;
      return true;
    }
    return false;
  },
  
  when_uploaded : function(callback){
    if(Video.is_uploaded) callback(Video.video_file_id);
    else Video.uploaded_callback = callback;
  },
  
  pending_upload : function(callback){
    if( !Video.add_callback('pending_upload',callback) ){
      Video.is_uploaded = false;
      Video.uploaded_callback = null;
      if(Video.pending_upload_callback) Video.pending_upload_callback();
    }
  },
  
  no_pending_upload : function(callback){
    if( !Video.add_callback('no_pending_upload',callback) ){
      Video.is_uploaded = true;
      if(Video.no_pending_upload_callback) Video.no_pending_upload_callback();
    }
  },
  
  is_uploading : function(callback){
    if( !Video.add_callback('is_uploading',callback) ){
      if(Video.is_uploading_callback) Video.is_uploading_callback();
    }
  },
  
  after_uploaded : function(callback){
    if( !Video.add_callback('after_uploaded',callback) ){
      if(Video.after_uploaded_callback) Video.after_uploaded_callback();
    }
  },
  
  uploaded : function(href){
    // 2. Get video_file_id from url.
    Video.video_file_id = href.toQueryParams().video_file_id;
    // Remove any current errors
    if(Video.remove_errors) Video.remove_errors();
    // Remove the previous video's preview if it's there
    if(href.match(/videos\/(\d+)\/uploaded/)){
      Video.video_id = href.match(/videos\/(\d+)\/uploaded/)[1];
      var current_preview = $$('#video_embed_'+Video.video_id)[0];
      if(current_preview) current_preview.remove();
    }
    // 3. Notify parent window that upload has finished.
    Video.is_uploaded = true;
    Video.after_uploaded();
    if(Video.uploaded_callback) Video.uploaded_callback(Video.video_file_id);
  }
};
