/**
 * jQuery ContentChange - registers change in DOM (no attrs)
 * v1.0
 * 
 * @author Plamen Nikolov @ Athlon
 * 
 * @param options - Object:
 * 		key: callback 				- function(): to be called after change
 * 		key: interval_delay 	    - integer: interval of time in miliseconds to check for change
 * 		key: clear_flag_callback  	- function(demon): - function to clear the timeout
 */
(function( $ ){ 
	
	$.fn.contentChange = function(options) {
	    
     	var opts = $.extend({}, $.fn.contentChange.defaults, options);
    
	    var elms = jQuery(this);
	    elms.each(
	      function(i){
	        var elm = jQuery(this);
	        elm.data("lastContents", elm.html());
	        window.watchContentChange = window.watchContentChange ? window.watchContentChange : [];
	        window.watchContentChange.push({"element": elm, "callback": opts.callback});
	      }
	    )
	    
	    var demon = setInterval(function(){
		    if(window.watchContentChange){
		      for( i in window.watchContentChange){
		        if(window.watchContentChange[i].element.data("lastContents") != window.watchContentChange[i].element.html()){
		          window.watchContentChange[i].callback.apply(window.watchContentChange[i].element);
		          window.watchContentChange[i].element.data("lastContents", window.watchContentChange[i].element.html())
		        };
		       }
		      }
		      
		      if(opts.clear_flag_callback)
		      	opts.clear_flag_callback(demon)
		      
		    }, opts.interval_delay); 
	    
	     return elms;
 	};
 	
 	$.fn.contentChange.defaults = {
		callback: function() {},
	    interval_delay: 1000,
	    clear_flag_callback: function() {}
 	};
 	
})( jQuery );
