
var Browser = {
	isIE:function ()
	{
		if( Browser._vIE!=-1 )
			return Browser._vIE>0;

		var re = /MSIE ([0-9]+)/;
		r = navigator.userAgent.match(re);

		if( r ) Browser._vIE = r[1];
		else Browser._vIE = 0;

		if( Browser._vIE>0 ) {
			Browser._tableDisplay='block';
			Browser._trDisplay='block';
		}

		return Browser._vIE>0;
	},

	ieVer:function()
	{
		if( Browser._vIE==-1 )
			Browser.isIE();
		return Browser._vIE;
	},

	_tableDisplay: 'table',
	_trDisplay: 'table-row',
	_vIE:-1
};


var Opacity = {
	//	set the opacity for different browsers
	set: function( id, val )
	{
		var v = val/100;
		var o = document.getElementById(id);
		var s = o.style;
		s.opacity = (v);
		s.MozOpacity = (v);
		s.KhtmlOpacity = (v);
		s.filter = "alpha(opacity=" + val + ")";
	},

	get: function( id )
	{
		var val = 0;

		//if the element has an opacity set, get it
		if(document.getElementById(id).style.opacity < 100) {
			val = document.getElementById(id).style.opacity * 100;
		}
		else {
			val = 100;
		}

		return parseInt(val,10);
	}
}

function trim(val)
{
	str = new String(val);
	while (str.substr(0,1) == ' ')
		str = str.substr(1, str.length);
	while (str.substr(str.length-1, str.length) == ' ')
		str = str.substr(0,str.length-1);
	return str;
};


var DarthFader = {

	_idx:-1,
//	_fadeMs:300,
//	_pauseMS:1500,
	_fadeMs:400,
	_pauseMS:1200,

	// fade out current
	// hide current
	// show next
	// fade in
	// pause

	init: function() {
		if( !document.getElementById ) return false;
		var d = document.getElementById('darthfader'); if( !d ) return;

		var a = d.getElementsByTagName('div');

		var ie6 = Browser.ieVer()==6;
		if( ie6 ) {
			var p = getPosition(d);
		}

		for( var i=0; i<a.length; i++ )
		{
			a[i].id = "_darth"+i;

			if( ie6 ) {
				a[i].style.left = p.x+'px';
				a[i].style.top = p.y+16+'px';
			}

		}
		DarthFader.waitForNextImage();
	},

	waitForNextImage: function() {
		var d = document.getElementById('darthfader');
		var a = d.getElementsByTagName('div');
		if( !DarthFader.isNextLoaded(d,a) ) {
			setTimeout('DarthFader.waitForNextImage()',250);
			return;
		}

		DarthFader.showNext();
	},

	hideCurrent: function() {
		var d = document.getElementById('darthfader');
		var a = d.getElementsByTagName('div');
		if( a.length<DarthFader._idx ) return;

		if( !DarthFader.isNextLoaded(d,a) ) {
			setTimeout('DarthFader.hideCurrent()',250);
			return;
		}

		var o = a[DarthFader._idx];

		DarthFader.fadeOut( o.id, 100 );
		DarthFader.showNext();
	},

	isNextLoaded: function(d, a) {
		var idx = DarthFader._idx+1;
		if( idx==a.length )
			idx = 0;
		var o = a[idx];
		var sz;
		var im = o.getElementsByTagName('img');
		for( var i=0; i<im.length; i++ ) {
			if( !DarthFader.isImageLoaded(im[i]) ) {
				return false;
			}
		}
		return true;
	},

	isImageLoaded: function(im) {
		if( im.naturalWidth!=undefined && im.naturalWidth==0 )
			return false;
		return im.complete;
	},

	hide: function(idx) {
		var d = document.getElementById('darthfader');
		var a = d.getElementsByTagName('div');
		o = a[idx];
		o.style.display='none';
	},

	showNext: function() {
		var d = document.getElementById('darthfader');
		var a = d.getElementsByTagName('div');
		var o;
		if( DarthFader._idx!=-1 ) {
			if( a.length<DarthFader._idx ) return;
		}
		if( ++DarthFader._idx==a.length )
			DarthFader._idx = 0;

		o = a[DarthFader._idx];
		Opacity.set(o.id,0);
		o.style.display='block';
		DarthFader.fadeUp( o.id, 0 );
	},

	fadeUp: function( id, v ) {
		Opacity.set(id,v);
		if(v<100) {
			setTimeout("DarthFader.fadeUp('"+id+"',"+(v+1)+")",1);
		}
		else {
			setTimeout('DarthFader.hideCurrent()',DarthFader._pauseMS);
		}
	},

	fadeOut: function( id, v ) {
		Opacity.set(id,v);
		if(v>0) {
			setTimeout("DarthFader.fadeOut('"+id+"',"+(v-1)+")",1);
		}
		else {
			var o = document.getElementById(id);
			o.style.display='none';
		}
	}
};










var DDFader = {

	_data:new Array(),
	_div:new Array(),
	_iDiv:0,


	_fadeMs:300,
	_pauseMS:1500,

	// fade out current
	// hide current
	// show next
	// fade in
	// pause

	init: function() {
		if( !document.getElementById ) return false;
		var d = document.getElementById('darthfader'); if( !d ) return;

		var ie6 = Browser.ieVer()==6;
		if( ie6 ) {
			var p = getPosition(d);
		}

		var o = d.getElementsByTagName('div');
		var div;
		if( o.length==0 ) {	// two divs for swapping content
			div = document.createElement('div'); div.id="ddf0";d.appendChild( div ); DDFader._div.push(div);
			if( ie6 ) {
				div.style.left = p.x+'px';
				div.style.top = p.y+16+'px';
			}
			div = document.createElement('div'); div.id="ddf1";d.appendChild( div ); DDFader._div.push(div);
			if( ie6 ) {
				div.style.left = p.x+'px';
				div.style.top = p.y+16+'px';
			}
		}

		var reg	= /([a-zA-Z '*.,\(\)\"\-<>\/=]+)/mig;
		var reg2	= /<span[a-zA-Z0-9\" =]*>([a-zA-Z '*.,\(\)\"\-]+)<\/span>/i;
		var r, r2, n;

		var a = document.getElementsByTagName('dd');
		var s, s2;

		for( var i=0; i<a.length; i++ ) {
			s = new String(a[i].innerHTML);
			r = s.match(reg);
			for( var j=0; j<r.length; j++ ) {
				s2 = trim(r[j]);
				r2 = s2.match(reg2);
				if( r2 && r2.length ) {
					DDFader._data.push( r2[1] );
				}
				else {
					DDFader._data.push( s2 );
				}

			}
		}

		DDFader._data.pop( DDFader._data.length-1 );

		DDFader.setNextContent();
		DDFader.waitForNextImage();
	},

	setNextContent: function () {
		// next random person
		DDFader._idx = parseInt( Math.random()*DDFader._data.length, 10 );

		var imsrc = DDFader._data[DDFader._idx]+'.jpg';

		var div = DDFader.getNextDiv();
		div.innerHTML = '<img class="bdr" src="../images/roll/'+imsrc+'" />'+
						'<img src="../feed/t.php?w=515&t='+escape(DDFader._data[DDFader._idx])+'" />';

		DDFader.removeImageIfNotExists(imsrc);
	},

	removeImageIfNotExists: function(imsrc) {
		Query.request(imsrc, DDFader.removeImageIfNotExists_Callback)
	},

	removeImageIfNotExists_Callback: function( status ) {
		if( !status ) {
			// img did not exist
			var div = DDFader.getNextDiv();
			div.innerHTML = '<img src="../feed/t.php?h=150&w=515&f=32&t='+escape(DDFader._data[DDFader._idx])+'" />';
//			div.innerHTML = '<h1>'+DDFader._data[DDFader._idx]+'</h1>';
		}
	},

	getNextDiv: function() {
		return DDFader._div[1-DDFader._iDiv];
	},

	getCurrentDiv: function() {
		return DDFader._div[DDFader._iDiv];
	},

	waitForNextImage: function() {
		if( !DDFader.isNextLoaded() ) {
			setTimeout('DDFader.waitForNextImage()',250);
			return;
		}

		DDFader.showNext();
	},

	isNextLoaded: function() {
		var div = DDFader.getNextDiv();

		var im = div.getElementsByTagName('img');
		for( var i=0; i<im.length; i++ ) {
			if( !DDFader.isImageLoaded(im[i]) ) {
				return false;
			}
		}
		return true;
	},

	isImageLoaded: function(im) {
		if( im.naturalWidth!=undefined && im.naturalWidth==0 )
			return false;
		return im.complete;
	},

	moveNext: function() {
		DDFader.setNextContent();
		DDFader.hideCurrent();
	},

	hideCurrent: function() {
		if( !DDFader.isNextLoaded() ) {
			setTimeout('DDFader.hideCurrent()',250);
			return;
		}
		var o = DDFader.getCurrentDiv();
		DDFader.fadeTo( o, 0, DDFader._fadeMs, "DDFader.showNext()" );
	},

	showNext: function() {
		var o = DDFader.getCurrentDiv();
		o.style.display='none';

		DDFader._iDiv = 1 - DDFader._iDiv;

		o = DDFader.getCurrentDiv();
		Opacity.set(o.id,0);
		o.style.display='block';

		DDFader.fadeTo( o, 100, DDFader._fadeMs, "setTimeout('DDFader.moveNext()',"+DDFader._pauseMS+")" );
	},

	fadeTo: function( o, to, ms, onComplete ) {
		if( ms==undefined ) ms=DDFader._fadeMs;
		//speed for each frame
		var speed = Math.round(ms / 50);
		var timer = 1;
		var from = Opacity.get( o.id );
		var d = from>to ? -1 : 1;
		var i = from;

		while(i!=to) {
			setTimeout("Opacity.set('"+o.id+"',"+i+")",(timer++ * speed)); i+=d;
		}

		if( onComplete ) { setTimeout(onComplete,(timer * speed)); }
	}

};


function blur(o) { if(o.blur)o.blur() };

