


var FCKfilesHelper = {
   register : {},
   instances : {},
   
   registerInstance : function(name) {
      this.register[name] = true;
   },
   
   isRegistred : function(name) {
      return this.register[name];
   },
   
   onSelectionChange : function(editorInstance) {
   },
   
   onAfterLinkedFieldUpdate : function(editorInstance) {
      this.doImageCache(editorInstance);
   },
   
   doImageCache : function(editorInstance) {
      var doc    = editorInstance.EditorDocument;
      var images = doc.images;
      for(var i=0;i<images.length;i++) {
         var image          = images[i];
         re                 = new RegExp('(.*?)image-cache\/([a-z]+)-([0-9]+)x([0-9]+)\/([0-9]+)-image');
         var args           = re.exec(image.src);
         image.src          = args[1] + 'image-cache/' + args[2] + '-' +image.width+ 'x' +image.height+ '/' + args[5] + '-image';
         image.setAttribute('_fcksavedurl',image.src);
      }
      editorInstance.LinkedField.value = editorInstance.GetHTML();
   },
   
   insertImage : function(name,filesystem_id,width,height) {
      if(!width)  width = 150;
      if(!height) height = 110;
      this.instances[name].InsertHtml('<img rel="image-cache" ref="'+filesystem_id+'" src="/image-cache/max-'+width+'x'+height+'/'+filesystem_id+'-image">');
      return false;
   }
}

function FCKeditor_OnComplete( editorInstance ) {
   //console.debug(editorInstance);
   if(FCKfilesHelper.isRegistred(editorInstance.Name)) {
      FCKfilesHelper.instances[editorInstance.Name] = editorInstance; 
      editorInstance.Events.AttachEvent( 'OnSelectionChange', function(editorInstance) { FCKfilesHelper.onSelectionChange(editorInstance) } );
      editorInstance.Events.AttachEvent( 'OnAfterLinkedFieldUpdate', function(editorInstance) { FCKfilesHelper.onAfterLinkedFieldUpdate(editorInstance) } );
   }
}