                             .trigger "compress.#{ pluginName }"
                 else
                     if current.width() >= optimalWidth
-                        o.opts.onBeforeDecompress(_this) if $.isFunction(o.opts.onBeforeDecompress)
-
-                        o.el
-                            .removeClass(o.opts.wrappedClass)
-                            .trigger "decompress.#{ pluginName }"
+                        if _this.isCompressed()
+                            o.opts.onBeforeDecompress(_this) if $.isFunction(o.opts.onBeforeDecompress)
+
+                            o.el
+                                .removeClass(o.opts.wrappedClass)
+                                .trigger "decompress.#{ pluginName }"
                     else
-                        o.opts.onBeforeCompress(_this) if $.isFunction(o.opts.onBeforeCompress)
-
-                        o.el
-                            .addClass(o.opts.wrappedClass)
-                            .trigger "compress.#{ pluginName }"
+                        if not _this.isCompressed()
+                            o.opts.onBeforeCompress(_this) if $.isFunction(o.opts.onBeforeCompress)
+
+                            o.el
+                                .addClass(o.opts.wrappedClass)
+                                .trigger "compress.#{ pluginName }"
 
                 return null
 

            o.opts.onBeforeLoad(_this) if $.isFunction(o.opts.onBeforeLoad)

            # Initialize
            o.el = $(el)
            o.cloneEl = o.el.clone() # Reference to the old untouched element

            o.opts.onLoad(_this) if $.isFunction(o.opts.onLoad)


        enhanceAnimation:       true
        exposeItems:            false
        fixIEResize:            false
        holder:
            class: "#{ pluginName.toLowerCase() }-holder"
            text:  '...'
        wrapperClass:           "#{ pluginName.toLowerCase() }-wrapper"
        wrappedClass:           "#{ pluginName.toLowerCase() }-wrapped"
        onBeforeCompress:       (obj) ->
