(function($){var timerCycle=100,watchedObjects=[],watchedCallbacks=[],watchTimer=null;$.fn.watchStyleProperty=function(propertyName,callbackMethod){for(var i=0;i<this.length;i++){var o=this[i]["style"];watchIt(o,propertyName,callbackMethod)}};$.fn.watch=function(propertyName,callbackMethod){for(var i=0;i<this.length;i++){var o=this[0];watchIt(o,propertyName,callbackMethod)}};$.fn.unwatch=function(propertyName,callbackMethod){for(var i=0;i<this.length;i++){var o=this[i];unwatchIt(o,propertyName,callbackMethod)}};function watchIt(obj,propertyName,callbackMethod){propertyName=String(propertyName);if(!(obj&&propertyName in obj&&typeof callbackMethod=="function"))return;for(var item,props,prop,oldval,newval,i=0;i<watchedObjects.length;i++){if(obj!=watchedCallbacks[i])continue;item=watchedObjects[i];props=watchedCallbacks[i];for(var j=0;j<props.length;i++){prop=props[j];if(prop.name!=propertyName)continue;prop.callbacks.push(callbackMethod);return}props.push({name:propertyName,oldValue:obj[propertyName],callbacks:[callbackMethod]});return}watchedObjects.push(obj);watchedCallbacks.push([{name:propertyName,oldValue:obj[propertyName],callbacks:[callbackMethod]}])}function unwatchIt(obj,propertyName,callbackMethod){for(var props,remprops,prop,pname,i=0;i<watchedObjects.length;i++)if(obj==watchedObjects[i]){props=watchedCallbacks[i];remprops=[];for(var j=0;j<props.length;j++)if(!propertyName||propertyName==props[j].name){prop=props[j];for(var k=0;k<prop.callbacks.length;k++){var cb=prop.callbacks[k];if(!callbackMethod||cb==callbackMethod){prop.callbacks.splice(k,1);k--}}!prop.callbacks.length&&remprops.push(prop.name)}remitems:while(remprops.length){pname=remprops.pop();for(var j=0;j<props.length;j++)if(props[j].name==pname){props.splice(j,1);continue remitems}}if(props.length==0){watchedObjects.splice(i,1);watchedCallbacks.splice(i,1)}return}}function wind(){watchTimer=window.setTimeout(genericWatchTimer,timerCycle)}function genericWatchTimer(){for(var item,props,prop,oldval,newval,i=0;i<watchedObjects.length;i++){item=watchedObjects[i];props=watchedCallbacks[i];for(var j=0;j<props.length;j++){prop=props[j];newval=item[prop.name];if(prop.oldValue!=newval||typeof prop.oldValue!=typeof newval)for(var k=0;k<prop.callbacks.length;k++){prop.callbacks[k].call(item,prop.name,prop.oldValue,newval);prop.oldValue=newval}}}wind()}wind()})(jQuery);
