File "spia.js"

Full Path: /home/ozbarhaber/public_html/wp-content/plugins/wassup/js/spia.js
File size: 4.39 KB
MIME-type: text/plain
Charset: utf-8

/**
 * Javascripts for wassup-spy page.
 *  $Id: spia.js,v 1.4.1 Exp $
 *
/* "spy" is a jQuery plugin by Remy Sharp (leftlogic.com/info/articles/jquery_spy2) v1.4 2006/09/30 11:05:04 remy Exp
*/
var spyRunning = 1;
(function($) {
$.fn.spy = function(settings) {
	var spy=this;
	spy.epoch=new Date(1970, 0, 1);
	spy.last='';
	spy.parsing=0;
	spy.waitTimer=0;
	spy.json=null;
	if (!settings.ajax) {alert("An AJAX/AJAH URL must be set for the spy to work."); return;}
	spy.attachHolder = function() {
		// not mad on this, but the only way to parse HTML collections
		if (o.method == 'html') $('body').append('<div style="display: none!important;" id="_spyTmp"></div>');
	}
	// returns true for 'no dupe', and false for 'dupe found'
	// latest = is latest ajax return value (raw)
	// last = is previous ajax return value (raw)
	// note that comparing latest and last if they're JSON objects
	// always returns false, so you need to implement it manually.
	spy.isDupe = function(latest, last) {
		if(last){ //Wassup v1.9 bugfix for undefined error
			if ((last.constructor == Object) && (o.method == 'html')) {return (String(latest.text()).substring(0,32) == String(last.text()).substring(0,32));}
			else if (last.constructor == String) {return (latest == last);}
			else {return false;}
		} else {
			return false;
		}
	}
	spy.timestamp = function() {
		var now=new Date();
		return Math.floor((now - spy.epoch) / 1000);
	}
	spy.parse = function(e, r) {
		spy.parsing = 1; // flag to stop pull via ajax
		if (o.method == 'html'){$('div#_spyTmp').html(r);}
		else if(o.method == 'json'){ eval('spy.json = ' + r);}
		if ((o.method == 'json' && spy.json.constructor == Array) || o.method == 'html') {
			if (spy.parseItem(e)) {
				spy.waitTimer = window.setInterval(function(){
					if(spyRunning){ 
						if(!spy.parseItem(e)){
							spy.parsing = 0;
							clearInterval(spy.waitTimer);
						}
					}
				},o.pushTimeout);
			} else {
				spy.parsing = 0;
			}
		} else if (o.method == 'json') { // we just have 1
			eval('spy.json = ' + r)
			spy.addItem(e, spy.json);
			spy.parsing = 0;
		}
	}
	// returns true if there's more to parse
	spy.parseItem = function(e) {
		if (o.method == 'html') {
			// note: pre jq-1.0 doesn't return the object
			var i = $('div#_spyTmp').find('div:first').remove();
			if(i.size() > 0){ i.hide(); spy.addItem(e,i);}
			return ($('div#_spyTmp').find('div').size() != 0);
		} else {
			if(spy.json.length){ var i = spy.json.shift(); spy.addItem(e,i);}
			return (spy.json.length != 0);
		}
	}
	spy.addItem = function(e, i) {
		if (! o.isDupe.call(this, i, spy.last)) {
			spy.last = i; // note i is a pointer - so when it gets modified, so does spy.last
			$('#' + e.id + ' > div:gt(' + (o.limit - 2) + ')').remove();
			$('#' + e.id + ' > div:gt(' + (o.limit - o.fadeLast - 2) + ')').fadeEachDown();
			o.push.call(e, i);
			$('#' + e.id + ' > div:first').fadeIn(o.fadeInSpeed);
		}
	}
	spy.push = function(r) { $('#' + this.id).prepend(r);}
	var o = {
		limit: (settings.limit || 10),
		fadeLast: (settings.fadeLast || 5),
		ajax: settings.ajax,
		timeout: (settings.timeout || 3000),
		pushTimeout: (settings.pushTimeout || settings.timeout || 3000),
		method: (settings.method || 'html').toLowerCase(),
		push: (settings.push || spy.push),
		fadeInSpeed: (settings.fadeInSpeed || 'slow'), // 1400 = crawl
		timestamp: (settings.timestamp || spy.timestamp),
		isDupe: (settings.isDupe || spy.isDupe)
	};
	spy.attachHolder();
	return this.each(function() {
		var e = this;
		var timestamp = o.timestamp.call();
		var lr = ''; // last ajax return
		spy.ajaxTimer = window.setInterval(function() {
			if (spyRunning && (!spy.parsing)){
				$.post(o.ajax,{'timestamp': timestamp},function(r){ spy.parse(e,r);});
				timestamp = o.timestamp.call();
			}
		}, o.timeout);
	});
};
$.fn.fadeEachDown = function() {
	var s=this.size();
	return this.each(function(i){
		var o = 1 - (s == 1 ? 0.5 : 0.85/s*(i+1));
		var e = this.style;
		if (window.ActiveXObject) e.filter = "alpha(opacity=" + o*100 + ")";
		e.opacity = o;
	});
};
})(jQuery);

//Wassup add-ons functions...
function pauseSpy(){spyRunning=0;return false;}
function playSpy(){spyRunning=1;return false;}
function pad(n){n=n.toString();return (n.length==1?'0'+n:n);}
function spiaTimestamp(){
	var d=new Date();
	var timestamp=d.getFullYear()+'-'+pad(d.getMonth())+'-'+pad(d.getDate());
	timestamp +=' ';
	timestamp +=pad(d.getHours())+':'+pad(d.getMinutes())+':'+pad(d.getSeconds());
	return timestamp;
}