jQuery.fn.extend({plugins_util_watch:function(p_sPropertyValue,p_fnReturnFunction,p_sMatch,p_sNotMatch){var sPV=p_sPropertyValue,sM=p_sMatch,sNM=p_sNotMatch,rxpNotMatch,rxpMatch;var I_WATCH_INTERVAL=100;sNM?rxpNotMatch=new RegExp(sNM):rxpNotMatch=null;sM?rxpMatch=new RegExp(sM):rxpMatch=null;function regexOverrideComparison(p_sOldValue,p_sNewValue){var bTest=true,sNV=p_sNewValue;if(!rxpMatch&&!rxpNotMatch){return p_sOldValue!==sNV;}if(rxpNotMatch){bTest=!(rxpNotMatch.test(sNV));}if(rxpMatch){bTest&=rxpMatch.test(sNV);}return bTest;}return this.each(function(){var self=this,sOldVal=self[sPV];$(self).data("plugins_util_watch",setInterval(function(){var sNewVal=self[sPV];if(regexOverrideComparison(sOldVal,sNewVal)){p_fnReturnFunction.call(self,sPV,sOldVal,sNewVal);}},I_WATCH_INTERVAL));});return self;},plugins_util_unwatch:function(p_sPropertyValue){return this.each(function(){clearInterval($(this).data("plugins_util_watch"));});}});