var debug_log = '';
//var predictad_should_continue = false;
//var predictad_disable_events = true;

/* PATCH FOR FUCKIN TOOLBAR */
var predictad_ac_off = true;

window.onerror = function(message, url, line){
	debug_log += "'"+message+"' in "+url+':'+line+"\n";
}

if (navigator.userAgent.indexOf('Firefox') != -1) {
	Object.prototype.watch = function (prop, handler) {
		var val = this[prop],
		getter = function () {
			return val;
		},
		setter = function (newval) {
			if (typeof(handler) == 'function') {
				return val = handler.call(this, prop, val, newval);
			}
		};
		if (delete this[prop]) { // can't watch constants
			if (Object.defineProperty) // ECMAScript 5
				Object.defineProperty(this, prop, {
					get: getter,
					set: setter
				});
			else if (Object.prototype.__defineGetter__ && Object.prototype.__defineSetter__) { // legacy
				Object.prototype.__defineGetter__.call(this, prop, getter);
				Object.prototype.__defineSetter__.call(this, prop, setter);
			}
		}
	};
	
	
	/* Toolbar fixes */
	/*
	if (typeof(window['$']) != "undefined") {
		delete($);
		delete(window['$']);
	}
	if (typeof(window['jQuery']) != "undefined") {
		delete(jQuery);
		delete(window['jQuery']);
	}
	*/
	var jq_changes = 0;
	window.watch('$', function(obj, prop, myval, newval){
		jq_changes++;
		if (jq_changes > 1) {
			//console.debug( obj );
			//console.debug( prop );
			//console.debug( myval );
			//console.debug( newval );
			//console.debug( window['$'] );
			
			if (typeof(myval) != 'function') {
			}
			
			try {
				i.dont.exist+=0;
			} catch(e) {
				if (e.stack && jQuery) {
					var log = 'URL: '+ window.location.href + "\n";
					log += 'Username: ' + jQuery('#uinfo-user .link').text() + "\n";
					log += 'Type: '+ (typeof myval) + "\n";
	
					log += e.stack;
					//if (console)
					//	console.debug(log);
					debug_log += log;
					//jQuery.post('/browsertest', { output: log });
				}
			}
		}
		return myval;
	});

}

