function $(e) { return document.getElementById(e); }
var d = { lt: [], lt_m: {}, l: [], l_m: {}, lv: {}, load: {}, m: [], m_m: {}, tslt: [], tslt_m: {}, c: [], p: {}, u: {}, r: [], loc: '', systime: 0 };
var is_logged_in = false;
var popped_up = false;
var TDPCore = {
	init: function() {
		// if ( ! TDPCore.is_fresh() ) return;
		TDPCore.init_immediate();
		window.setTimeout('TDPCore.init_deferred()', 1); },
	is_fresh: function() { 
		if ( window.location != d.loc ) {
			TDPCore.net.xmhr('/data?' + new Date().getTime().toString(),null,null);
			return false;
		} return true; },
	browser: {
		test_js: function() { if ( $('no_js') && $('no_js').style ) $('no_js').style.display = 'none'; } },
	init_immediate: function() {
		is_logged_in = ( d.u.n.length > 0 ? true : false); 	
		if ( d.load.links ) TDPLinks.init_immediate();
		if ( d.load.comments ) TDPComments.init_immediate();
		if ( d.load.cloud ) TDPCloud.init_immediate();
		if ( d.load.banner ) TDPBanner.init_immediate();
		if ( d.load.mb ) TDPMb.init_immediate();
		if ( d.load.rc ) TDPRc.init_immediate();
		TDPMacro.init_immediate(); },
	init_deferred: function() {
		if ( d.load.links ) TDPLinks.init_deferred();
		if ( d.load.comments ) TDPComments.init_deferred();
		if ( d.load.cloud ) TDPCloud.init_deferred();
		if ( d.load.banner ) TDPBanner.init_deferred();
		if ( d.load.mb ) TDPMb.init_deferred();
		if ( d.load.rc ) TDPRc.init_deferred();
		TDPMacro.init_deferred();
		window.onresize = TDPCore.resize.popup;
		window.setTimeout('TDPCore.thumb.load_all()',1);
		TDPCore.tac.tag_cache = [];
		TDPCore.tac.tag_misses = [];
		document.onmousemove = function(e) { TDPCore.follow.move(parseInt(TDPCore.pos.mouseX(e)), parseInt(TDPCore.pos.mouseY(e))); }; },
	hide: {
		popup: function() {
			TDPCore.net.reload_on_next_complete = false;
			popped_up = false;			
			$('register_login_block').style.display = 'none';
			$('submit_block').style.display = 'none';
			$('popup').style.display = 'none';
			$('cover').style.display = 'none'; } },
	resize: {
		popup: function() {
			if ( ! popped_up )
				return;
			scroll_y_offset = window.pageYOffset||document.body.scrollTop||document.documentElement.scrollTop;
			window_height = window.innerHeight||document.documentElement.clientHeight;
			window_height = window_height > 0 ? window_height : document.body.clientHeight;
			$('popup').style.top = window_height * 0.05 + scroll_y_offset + 'px';
			$('cover').style.height = $('page').offsetHeight + 'px';
			$('cover').style.width = $('page').offsetWidth + 'px'; } },		
	show: {
		popup: function() {
			popped_up = true;
			TDPCore.resize.popup();
			$('cover').style.display = 'block';
			$('popup').style.display = 'block'; },
		prompt_login: function() { TDPPopup.register_login_show(); TDPCore.show.popup(); },
		move: function(i) { if ( TDPCore.test.is_logged_in() ) { TDPPopup.submit_show_move(i); TDPCore.show.popup(); } },
		submit: function(i) { if ( TDPCore.test.is_logged_in() ) { TDPPopup.submit_show_submit(); TDPCore.show.popup(); } } },
	test: {
		is_logged_in: function() { if ( is_logged_in ) return true; else { TDPCore.show.prompt_login(); return false; } } },
	go: {
		vote_lto: function(url, dl, v) { 
			if ( TDPCore.test.is_logged_in() ) { TDPCore.arrows.vote(dl, v); TDPCore.net.xmhr(url + dl.lto, null, null); } },
		vote_cto: function(url, dl, v, e) { 
			if ( ! TDPCore.test.is_logged_in() ) return;
			TDPCore.net.xmhr(url + dl.cto, null, null);
			e.style.backgroundColor = '#FFFF99';
			e.style.color = 'black'; } },
	arrows: {
		vote: function(dl, v) {
			var lti = dl.lti;
			var i = d.l_m[dl.lto];
			var l_vi = $('l_v' + i);
			if ( (d.lv[lti] > 0 && v > 0) || (d.lv[lti] < 0 && v < 0) ) {
				dl.vt = parseInt(dl.vt) - parseInt(d.lv[lti]||0);
				d.lv[lti] = 0;
				l_vi.innerHTML = parseInt(dl.vt) * 10;
			} else {
				dl.vt = parseInt(dl.vt) - parseInt(d.lv[lti]||0) + parseInt(v);
				d.lv[lti] = v;
				l_vi.innerHTML = parseInt(dl.vt) * 10; }
			TDPCore.arrows.set(dl, null); },
		set: function(dl, visibility) {
			var v = d.lv[dl.lti];
			var lto = dl.lto;
			var l_u = $('l_auo' + d.l_m[lto]);
			var l_d = $('l_ado' + d.l_m[lto]);
			var lt_u = $('lt_tauo' + d.lt_m[lto]);
			var lt_d = $('lt_tado' + d.lt_m[lto]);
			var tslt_u = $('tslt_tauo' + d.tslt_m[lto]);
			var tslt_d = $('tslt_tado' + d.tslt_m[lto]);
			if ( v > 0 ) {
				if ( l_u ) l_u.className = 'arrow up_vote';
				if ( lt_u ) lt_u.className='arrow_large up_vote_large';
				if ( tslt_u ) tslt_u.className='arrow_large up_vote_large';
				if ( l_d ) l_d.className = 'arrow down';
				if ( lt_d ) lt_d.className='arrow_large down_large';
				if ( tslt_d ) tslt_d.className='arrow_large down_large';
			} else if ( v < 0 ) {
				if ( l_u ) l_u.className = 'arrow up';
				if ( lt_u ) lt_u.className='arrow_large up_large';
				if ( tslt_u ) tslt_u.className='arrow_large up_large';
				if ( l_d ) l_d.className = 'arrow down_vote';
				if ( lt_d ) lt_d.className='arrow_large down_vote_large';
				if ( tslt_d ) tslt_d.className='arrow_large down_vote_large';
			} else {
				if ( l_u ) l_u.className = 'arrow up';
				if ( lt_u ) lt_u.className='arrow_large up_large';
				if ( tslt_u ) tslt_u.className='arrow_large up_large';
				if ( l_d ) l_d.className = 'arrow down';
				if ( lt_d ) lt_d.className='arrow_large down_large';
				if ( tslt_d ) tslt_d.className='arrow_large down_large'; }
			if ( visibility != null ) {
				if ( lt_u ) lt_u.style.visibility=visibility;
				if ( tslt_u ) tslt_u.style.visibility=visibility;
				if ( lt_d ) lt_d.style.visibility=visibility;
				if ( tslt_d ) tslt_d.style.visibility=visibility; } } },
	thumb: {
		to_highlight: null,
		test_related: function() {
			var e = window.event;
			if ( e ) {
				from_e = e.srcElement ? e.srcElement : e.target;
				to_e = e.toElement ? e.toElement : e.relatedTarget;
				if ( from_e && to_e && to_e.className.indexOf('overlay') < 0 && from_e.id.replace(/[^0-9]*/,'') == to_e.id.replace(/[^0-9]*/,'') ) return true;
			} return false; },
		mouse_over: function(dl, i, prefix) {
			window.status = dl.u;
			var this_highlight = TDPCore.thumb.to_highlight;
			if ( this_highlight && this_highlight[0] && this_highlight[0].style ) this_highlight[0].style.backgroundColor = 'white';
			if ( this_highlight && this_highlight[1] && this_highlight[1].style ) this_highlight[1].style.backgroundColor = 'white';
			this_highlight = TDPCore.thumb.to_highlight = [ $('l_l' + d.l_m[dl.lto]), $('tc' + d.m_m[dl.mti])];
			if ( this_highlight[0] && this_highlight[0].style ) this_highlight[0].style.backgroundColor = '#ffff99';
			if ( this_highlight[1] && this_highlight[1].style ) this_highlight[1].style.backgroundColor = '#ffff99';
			TDPCore.arrows.set(dl, 'visible');
			TDPCore.follow.set(dl, i, prefix); },
		mouse_out: function(dl) {
			if ( TDPCore.thumb.test_related() ) return;
			TDPCore.follow.close();
			window.status = '';
			var this_highlight = TDPCore.thumb.to_highlight;
			if ( this_highlight && this_highlight[0] && this_highlight[0].style ) this_highlight[0].style.backgroundColor = '';
			if ( this_highlight && this_highlight[1] && this_highlight[1].style ) this_highlight[1].style.backgroundColor = '';
			TDPCore.arrows.set(dl, 'hidden'); },
		adjust: function(thumb, tries, max_width, collapse) {
			thumb = $(thumb);
			if ( thumb.src.indexOf('/1.png') >= 0 ) return;
			center = max_width/2;
			width = [ thumb.offsetWidth, thumb.clientWidth, thumb.width ].sort()[2]
			if ( width == 0 && tries > 0 ) {
				thumb.parentNode.parentNode.parentNode.parentNode.parentNode.style.display = '';
				setTimeout("TDPCore.thumb.adjust('" + thumb.id + "', " + (tries-1) + ", " + max_width + ", " + collapse + ")", 25);
				return;
			} else if ( width == 0 )
				thumb.style.width = max_width;
			else if ( collapse ) {
				thumb.parentNode.parentNode.parentNode.style.width = (width > max_width ? max_width : width) + 'px';
				thumb.style.width = (width > max_width ? max_width : width) + 'px';
				thumb.parentNode.parentNode.style.clip = 'rect(auto ' + (width/2+center) + 'px auto ' + (width/2-center) + 'px auto)';			
			} else {
				thumb.parentNode.parentNode.style.clip = 'rect(auto ' + (width/2+center) + 'px auto ' + (width/2-center) + 'px auto)';
				thumb.parentNode.parentNode.style.left = -(width/2)+center + 'px';
			} thumb.parentNode.parentNode.parentNode.parentNode.parentNode.style.display = ''; },
		load_all: function() {
			var m = d.lt.length;
			for ( var i = 0; i < m; i++ ) $('lt_i' + i).onload();
			m = d.tslt.length;
			for ( var i = 0; i < m; i++ ) $('tslt_i' + i).onload(); } },
	follow: {
		to_follow: null,
		to_load: null,
		set: function(dl, i, prefix) {
			var this_follow = TDPCore.follow.to_follow;
			if ( this_follow == $(prefix + '_fb' + i) ) return;
			if ( document.onmousemove && this_follow && this_follow.style ) this_follow.style.visibility = 'hidden';
			if ( d.u.sr == "false" ) return;
			window.status = dl.u;
			if ( (dl.tu.length == 0 && dl.p != '1') ||
				(dl.s.length == 0 && prefix.indexOf('lt') < 0) ) return;
			TDPCore.follow.to_follow = $(prefix + '_fb' + i);
			TDPCore.follow.to_load = $(prefix + '_fbto' + i);
			TDPCore.follow.open(dl, i, prefix); },
		move: function(x, y) {
			this_follow = TDPCore.follow.to_follow;
			if ( d.u.sr == "false" || ! this_follow || ! this_follow.style ) return;
			offset = window.pageYOffset||document.body.scrollTop||document.documentElement.scrollTop;
			height = window.innerHeight||document.documentElement.clientHeight||document.body.clientHeight;				
			if ( x + 20 + this_follow.offsetWidth < $('page').offsetWidth )
				this_follow.style.left = (x + 20) + 'px';
			else
				this_follow.style.left = (x - 20 - this_follow.offsetWidth) + 'px';
			div_height = this_follow.clientHeight||this_follow.offsetHeight;
			bottom = y + 20 + div_height;
			y = (bottom > offset + height) ? y - div_height : y + 20;
			this_follow.style.top = y + 'px';
			if ( TDPCore.follow.to_follow && TDPCore.follow.to_follow ) {
				TDPCore.follow.to_follow.style.visibility = 'visible';
				TDPCore.follow.to_load.onload();} },
		open: function(dl, i, prefix) {
			if ( dl.tu.length > 0 ) $(prefix + '_fbto' + i).src = dl.tu;
			else $(prefix + '_fbt' + i).style.display = 'none';
			$(prefix + '_fbtt' + i).innerHTML = dl.t;
			$(prefix + '_fbsn' + i).innerHTML = dl.sn + ' - ' + dl.c;
			$(prefix + '_fbs' + i).innerHTML = dl.s;
			$(prefix + '_fbtsh' + i).innerHTML = ((dl.tsh + dl.ts).length > 0 ? ('thumbnail image from ' + dl.tsh + ': ' + dl.ts) : ''); },
		close: function() {
			var this_follow = TDPCore.follow.to_follow;
			if ( this_follow && this_follow.style ) this_follow.style.visibility = 'hidden';
			TDPCore.follow.to_follow = null;
			window.status = ''; } },
	pos: {
		findPosX: function(obj) {
			var curleft = 0;
			if( obj.offsetParent ) while(1) {
				curleft += obj.offsetLeft;
				if( ! obj.offsetParent ) break;
				obj = obj.offsetParent;
			} else if( obj.x ) curleft += obj.x;
			return curleft; },
		findPosY: function(obj) {
			var curtop = 0;
			if( obj.offsetParent ) while(1) {
				curtop += obj.offsetTop;
				if( ! obj.offsetParent ) break;
				obj = obj.offsetParent;
			} else if( obj.y ) curtop += obj.y;
			return curtop; },
		mouseX: function(evt) {
			if ( ! evt ) evt = window.event;
			if ( evt.pageX ) return evt.pageX; 
			else if ( evt.clientX ) return evt.clientX +(document.documentElement.scrollLeft ?  document.documentElement.scrollLeft : document.body.scrollLeft);
			else return 0; },
		mouseY: function(evt) {
			if ( ! evt ) evt = window.event;
			if ( evt.pageY ) return evt.pageY;
			else if ( evt.clientY ) return evt.clientY + (document.documentElement.scrollTop ? document.documentElement.scrollTop : document.body.scrollTop);
			else return 0; } },
	time: {
		m: [ [ 60, 'sec', 60 ], [ 60, 'min', 60 ], [ 24, 'hour', 24 ], [ 60, 'day', 30 ], [ 18, 'month', 12 ], [ 100, 'year', 1] ],
		ago: function(t) {
			var m = TDPCore.time.m.length;
			t = d.systime - t;
			var r = '';
			for ( var i = 0; i < m; i++ ) {
				var tm = TDPCore.time.m[i];
				if ( t < tm[0] ) { r = tm[1]; break; }
				t = parseInt(t / tm[2]);
			}
			return [ t, ' ', r, (t == 1 ? '' : 's') ].join(''); } },
	net: {
		xmhr: function(url, form, callbacks) {
			if ( callbacks == null ) callbacks = {};
			var xmlhttp = null;
			if ( window.XMLHttpRequest ) xmlhttp = new XMLHttpRequest();
			else if ( window.ActiveXObject )
		      try { xmlhttp = new ActiveXObject("Msxml2.XMLHTTP"); }
			  catch (e) { try { xmlhttp = new ActiveXObject("Microsoft.XMLHTTP"); } catch (e) {} }
			else try { xmlhttp = window.createRequest(); } catch (e) {}
			if ( xmlhttp == null ) return;
			xmlhttp.onreadystatechange = function() {
				if ( xmlhttp.readyState != 4 ) return;
				if ( callbacks.complete != null ) eval(callbacks.complete);
				eval(xmlhttp.responseText);	
				if ( xmlhttp.status >= 200 && xmlhttp.status < 300 ) { if ( callbacks.success != null ) eval(callbacks.success); }
				else if ( callbacks.failure != null ) eval(callbacks.failure);
			};
			if ( callbacks.before != null ) eval(callbacks.before);		
			data = null;
			if ( form != null ) {
				xmlhttp.open("POST", url, true);
				xmlhttp.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
				data = '';
				for ( var i = 0; i < form.elements.length; i++ )
					data = [ data, (i == 0 ? '' : '&'), form.elements[i].name, '=', escape(form.elements[i].value) ].join('');
			}
			else xmlhttp.open("GET", url, true);
			xmlhttp.send(data);
			if ( callbacks.after != null ) eval(callbacks.after); },
		recaptcha: function(f) {
			TDPCore.net.xmhr('/captcha_crypt?form=' + f, null, null);
			$(f + '_captcha_image').src = '/captcha?' + new Date().getTime(); } },
	tac: {
		tag_cache: [],
		tag_cache_misses: [],
		keyUp: function(v, e) {
			v = v || window.event;
			var code = v.keyCode || v.which;
		    if (code == 9 || code == 8 || code == 37 || code == 39 || code == 46) return false;
			var sel = TDPCore.tac.getSelected(e);
		    if ( sel.e != e.value.length ) return false;
			var w = TDPCore.tac.currentWord(e, sel) || '';
			w = w.toLowerCase().replace(/[\W]*/,'');
			TDPCore.tac.addSelected(e, sel, TDPCore.tac.suggest(w)); },
	    suggest: function(w) {
			var tc = TDPCore.tac.tag_cache; var m = tc.length; var l = w.length;
			if ( l == 0 ) return '';
			for ( var i = 0; i < m; i++ ) if ( tc[i].substr(0,l) == w ) return tc[i].substr(l);
			tc = TDPCore.tac.tag_cache_misses; m = tc.length;
			for ( var i = 0; i < m; i++ ) if ( w.indexOf(tc[i]) == 0 ) return '';
			tc.push(w);
			TDPCore.net.xmhr('/tag_complete?tags=' + w.replace(/_/,' '), null, null);
			return ''; },
		getSelected: function(e) {
			if ( e.selectionStart ) return { s: e.selectionStart, e: e.selectionEnd };
			if ( document.selection && document.selection.createRange ) {
				var r = document.selection.createRange();
				return { s: TDPCore.tac.ieOffset(r, "StartToStart"), e: TDPCore.tac.ieOffset(r, "EndToEnd") }; }
			return { s: -1, e: -1 }; },
	    setSelected: function(e, ss, ee) {
			if ( e.selectionStart ) { e.selectionStart = ss; e.selectionEnd = ee; }
			else if (document.selection && document.selection.createRange) {
			    e.focus();
			    var s = document.selection.createRange();
			    s.moveStart('character', -e.value.length);
			    s.moveStart('character', ss);
			    s.moveEnd('character', ee - ss);
			    s.select(); } },
	    addSelected: function(e, sel, s) {
			e.value = e.value + s;
			TDPCore.tac.setSelected(e, sel.s, e.value.length); },
	    cursorToEnd: function(e) {
			var l = e.value.length;
			TDPCore.tac.setSelected(e, l, l); },
	    currentWord: function (e, sel) {
			var s = sel.s;
			while (s > 0 && e.value.charAt(s) != ' ') s--;
			return e.value.substring(s, e.value.length); },
		ieOffset: function(r, t) {
		    var r2 = r.duplicate();
		    r2.collapse(true);
		    var p = r2.parentElement();
		    var l = r2.text.length;
		    r2.move("character", -p.value.length);
		    var d = parseInt(l/2) < 1 ? 1 : parseInt(l/2);
		    r2.collapse(true);
		    var o = 0; var s = 0;
	        while( (test = r2.compareEndPoints(t, r)) != 0 && s < 1000 ) {
				if( test < 0 ) { r2.move("character", d); o += d; }
				else { r2.move("character", -d); o -= d; }
				d = parseInt(d/2) < 1 ? 1 : parseInt(d/2);
				s++; }
			return o; } },
	text: {
		clear_prompt: function(element, prompt) {
			if ( element.value == prompt ) { element.style.color = 'black'; element.value = ''; } },
		input: function(element, max_length) {
			if ( element.value.length > max_length ) element.value = element.value.substr(0, max_length-1); } },
	page: {
		pager: function(p) {
			d.p.p = parseInt(d.p.p);
			if ( isNaN(d.p.p) ) d.p.p = 0;
			var np = 'page=' + (d.p.p + p);
			var w = window.location.href.replace(/page=[^&#]*/,np);
			if ( w.indexOf('page=') < 0 )
				if ( window.location.href.indexOf('?') < 0 ) window.location = window.location.href + '?' + np;
				else window.location = window.location.href + '&' + np;
			else window.location = w; } } };
var TDPLinks = {
	options: {
		l_lli: [ '<span id="l_v', null, '">', null, '</span>&nbsp;points ', null, ' old claimed by ',
					'<a href="/links/author?author=',
					null, '">', null, '</a> ', null,
					' <a href="/comments/link?link=',
					null, '">comments</a> ' ],
		l_ctt: [ '<a href="/links/tag?tag=',
					null, '">', null, '</a>' ],
		l_uli: [ ' published ', null, ' ago ' ] },
	init_immediate: function() {
		var m = d.lt.length;
		for ( var i = 0; i < m; i++ )
			$('lt_i' + i).src = d.lt[i].tu;
							
		m = d.l.length;
		for ( var i = 0; i < m; i++ ) {
			var l = d.l[i];
//			$('l_n' + i).appendChild(document.createTextNode(l.n + '.'));
//			if ( l.an.length > 0 ) {
//				var c = TDPLinks.options.l_lli;
//				c[1] = i; c[3] = parseInt(l.vt) * 10; c[5] = TDPCore.time.ago(l.pa); c[8] = l.an; c[10] = l.an; c[12] = l.cc; c[14] = l.lo;
//				$('l_lli' + i).innerHTML = c.join(''); }
			if ( l.p != 1 ) {
				$('l_auo' + i).style.visibility = 'visible';
				$('l_ado' + i).style.visibility = 'visible'; }
//			$('l_ls' + i).appendChild(document.createTextNode(l.sn));
//			$('l_l' + i).innerHTML = l.t;
		} },
	init_deferred: function() {
		var m = d.lt.length;
		for ( var i = 0; i < m; i++ ) {
			var lt = d.lt[i];
			$('lt_i' + i).alt = lt.u;
			if ( d.lv[lt.lti] == 1 )
				$('lt_tauo' + i).className = 'arrow_large up_vote_large';
			else if ( d.lv[lt.lti] == -1 )
				$('lt_tado' + i).className = 'arrow_large down_vote_large';
		}
		
		m = d.l.length;
		for ( var i = 0; i < m; i++ ) {
			var l = d.l[i];
			if ( l.p != 1 ) {
				if ( d.lv[l.lti] == 1 )
					$('l_auo' + i).className = 'arrow up_vote';
				else if ( d.lv[l.lti] == -1 )
					$('l_ado' + i).className = 'arrow down_vote';
				if ( l.cto.length > 0 ) {
//					var c = TDPLinks.options.l_ctt;
//					c[1] = l.cto; c[3] = l.ctt;
//					$('l_ctt' + i).innerHTML = c.join('');
					$('l_ct' + i).style.display = '';
				}
			} else {
//				var c = TDPLinks.options.l_uli; c[1] = TDPCore.time.ago(l.pa);
//				$('l_uli' + i).appendChild(document.createTextNode(c.join('')));
//				$('l_lc' + i).appendChild(document.createTextNode('claim this link'));
			}
			$('l_lls' + i).style.visibility = 'visible';
		}
					
		for ( var i = d.l.length; i < 25; i++ )
			if ( $('l_r' + i) ) $('l_r' + i).style.display = 'none';

		if ( d.l.length == 0 && d.c.length == 0 )
			$('l_nml').style.display = 'block';
		
		if ( d.p.p == 0 )
			$('pp').style.display = 'none';
		
		$('pager').style.display = ''; } };
var TDPPopup = {
	popup_onsubmit: function(action, f, mesg) {
		var ff = document.forms[f];
		if ( ff && (ff = ff.elements['captcha_reload']) ) ff.style.display = 'none';
		TDPCore.net.xmhr(action + '?form=' + f + '&captcha_crypt=' + d.p.a, document.forms[f],
			{ before:'document.' + f + '.commit.value = \'Submitting...\'; document.' + f + '.commit.disabled = true;', 
				failure:'document.' + f + '.commit.value = \'' + mesg + ' Failed...Try Again?\'; document.' + f + '.commit.disabled = false;', 
				success:'document.' + f + '.commit.value = \'Loading...\';', 
				complete:'TDPCore.show.popup()' }); },
	reveal_commit: function(e_show, e_hide) { e_show.style.display = ''; e_hide.style.display = 'none'; },	
	register_login_show: function() {
		$('register_login_block').style.display = 'block';
		document.login_popup.onsubmit = function() { TDPPopup.popup_onsubmit('/login', 'login_popup', 'Login'); return false; };
		document.register.onsubmit = function() { TDPPopup.popup_onsubmit('/register', 'register', 'Registration'); return false; }; },
	submit_show_submit: function() {
		document.submit.commit.value = 'Submit Link';
		$('sb_u').style.display = '';
		$('submit_block').style.display = '';
		document.submit.onsubmit = function() { TDPPopup.popup_onsubmit('/submit', 'submit', 'Submission'); return false; }; },
	submit_show_move: function(i) {
		document.submit.commit.value = 'Claim Link';
		$('sb_u').style.display = 'none';
		$('submit_block').style.display = '';
		document.submit.onsubmit = function() { TDPPopup.popup_onsubmit('/move', 'submit', 'Submission'); return false; };
		if ( i < 0 ) return;
		document.submit.link.value = d.l[i].lo;
		document.submit.title.value = d.l[i].t;
		document.submit.summary.value = d.l[i].s; },
	submit_suggest: function() {
		TDPCore.net.xmhr('/suggest?url=' + 
			escape(document.submit.url.value) + '&link=' +
			escape(document.submit.link.value), null, 
			{ before:'$(\'submit_suggest_link\').style.display = \'none\'; $(\'submit_suggest_loading_message\').style.display = \'\'', 
				complete:'$(\'submit_suggest_link\').style.display = \'\'; $(\'submit_suggest_loading_message\').style.display = \'none\'; TDPCore.show.popup()' }); },
	submit_tagmages: function(n) {
		var v = parseInt(document.submit.thumb_page.value);
		document.submit.thumb_page.value = n < 0 ? v > 1 ? v - 1 : 1 : n == 0 ? 1 : v + 1;
		$('tagmage_tip').style.display = '';
		TDPCore.net.xmhr('/tagmages?tags=' + 
			escape(document.submit.tags.value) + '&thumb_page=' +
			escape(document.submit.thumb_page.value), null, 
			{ before:'$(\'submit_thumb_search_link\').style.display = \'none\'; $(\'submit_thumb_search_loading_message\').style.display = \'\'', 
				complete:'$(\'submit_thumb_search_link\').style.display = \'\'; $(\'submit_thumb_search_loading_message\').style.display = \'none\'; TDPCore.show.popup()' }); },
	submit_show_advanced: function(e) {
		var a = document.getElementsByName('advanced');
		for ( i = 0; i < a.length; i++ )
			try { a.item(i).style.display = 'table-row'; }
			catch (err) { a.item(i).style.display = 'inline'; }
		e.style.display = 'none';
		TDPCore.show.popup(); },
	submit_select_thumbnail: function(i) {
		document.submit.thumb_url.value = $('tagmage_' + i).src; 
		document.submit.thumb_source.value = $('tagmage_info_' + i).innerHTML;
		TDPPopup.submit_thumb_preview(); },
	submit_thumb_preview: function() {
		if ( document.submit.thumb_url.value.length == 0 ) return;
		$('submit_tagmage_preview_image').src = document.submit.thumb_url.value;
		$('submit_tagmage_preview').style.visibility = 'visible'; },
	focus: function(e, x, pop) { e.style.backgroundColor = '#FFFEDC'; TDPPopup.pophelp_open(e, x, pop); },
	blur: function(e, pop) { e.style.backgroundColor = 'white'; TDPPopup.pophelp_close(pop); },
	focus_expand: function(e, x, pop) { e.style.height = '100px'; TDPPopup.focus(e, x, pop); },
	blur_shrink: function(e, pop) { e.style.height = '30px'; TDPPopup.blur(e, pop); },
	pophelp_open: function(input, x, pop) {
		if ( ! $(pop) ) return;
		$(pop).style.left = (TDPCore.pos.findPosX(input) + x + 10) + 'px';
		$(pop).style.top = (TDPCore.pos.findPosY(input) - 2) + 'px';
		$(pop).style.visibility = 'visible'; },
	pophelp_close: function(pop) { if ( ! $(pop) ) return; $(pop).style.visibility = 'hidden'; },
	st_preview: function(input) {
		if ( input.value.replace(/^[ _]+/,'').length > 0 )
			$('ph_stp').innerHTML = '<p>here is a preview of your tags as others will see them:<br>tag: <font style="color:blue;"><b>' + input.value.replace(/^[ _]+/,'').replace(/ +/g,'</b></font><br>tag: <font style="color:blue;"><b>').replace(/_+/g,' ') + '</b></font></p>';
		else $('ph_stp').innerHTML = ''; } };
var TDPMb = {
	options: {
		uy0: [ null, ' has ', null, ' points' ] },
	init_immediate: function() {
		if ( d.p.c.length > 0 ) {
			$('mcy').href = '#';
			$('mcy').innerHTML = d.p.c;
			$('mcy').parentNode.className = 'current';
		} else if ( $('mb_' + d.p.t) ) $('mb_' + d.p.t).className = 'current'; },
	init_deferred: function() {} };

var TDPRc = {
	init_immediate: function() {
		if ( d.u.n.length > 0 ) {
			$('rcuy').style.display = '';
			$('rcuny').appendChild(document.createTextNode('hi ' + d.u.n + '. you are logged in with ' + d.u.k + ' points.'));
		} else $('rcun').style.display = ''; },
	init_deferred: function() { 
		if ( d.u.sm != "false" ) {
			$('dashboard_hide').style.display = 'block';
			$('dashboard').style.display = 'block';
		} else $('dashboard_show').style.display = 'block'; },
	login_onsubmit: function() {
		TDPCore.net.xmhr('/login?form=login', document.login, 
			{ before:'document.login.commit.value = \'Submitting...\'; document.login.commit.disabled = true', 
				failure:'document.login.commit.value = \'Login\'; document.login.commit.disabled = false', 
				success:'document.login.commit.value = \'Reloading...\'' }) },
	show_my_menu: function() {
		TDPCore.net.xmhr('/user_prefs?show_my_menu=show', null, 
			{ before:'$(\'dashboard\').style.display = \'\'; $(\'dashboard_hide\').style.display = \'\'; $(\'dashboard_show\').style.display = \'none\'' }) },
	hide_my_menu: function() {
		TDPCore.net.xmhr('/user_prefs?show_my_menu=hide', null, 
			{ before:'$(\'dashboard\').style.display = \'none\'; $(\'dashboard_hide\').style.display = \'none\'; $(\'dashboard_show\').style.display = \'\'' }) },
	toggle_link_rollover: function() {
		TDPCore.net.xmhr('/user_prefs?show_link_rollover=' + 
			(d.u.sr == 'false' ? 'show' : 'hide'), null, 
			{ complete:'window.location.reload()' }) },
	toggle_banner: function() {
		TDPCore.net.xmhr('/user_prefs?show_banner=' + 
			(d.u.sb == 'false' ? 'show' : 'hide'), null, 
			{ complete:'window.location.reload()' }) } };
var TDPCloud = {
	init_immediate: function() {},
	init_deferred: function() { 
		TDPCloud.show_tags.all();

		m = d.tslt.length;
		for ( var i = 0; i < m; i++ )
			$('tslt_i' + i).src = d.tslt[i].tu; },
	show_tags: {
		all: function() {
			var m = d.m.length;
			for ( var i = 0; i < m; i++ ) {
				dm = d.m[i];
				var e = $('tc' + i);
				e.innerHTML = dm.t + ' ';
				e.parentNode.style.display = '';
				e.style.fontSize = dm.vc;
				e.style.color = dm.vs; } },
		good: function() {
			var m = d.m.length;
			for ( var i = 0; i < m; i++ ) {
				dm = d.m[i];
				try { if ( parseInt(dm.vs.substr(4,dm.vs.length-2).split(',')[2]) > 0 ) $('tc' + i).parentNode.style.display = ''; } catch (err) {} } },
		bad: function() {
			var m = d.m.length;
			for ( var i = 0; i < m; i++ ) {
				dm = d.m[i];
				try { if ( parseInt(dm.vs.substr(4,dm.vs.length-2).split(',')[0]) > 0 ) $('tc' + i).parentNode.style.display = ''; } catch (err) {} } } },
	hide_tags: {
		all: function() { 
			var m = d.m.length;
			for ( var i = 0; i < m; i++ )
				$('tc' + i).parentNode.style.display = 'none'; } } };
var TDPComments = {
	init_immediate: function() {
		var m = d.c.length;
		for ( var i = 0; i < m; i++ ) {
			var c = d.c[i];
			if ( c.lt.length == 0 || d.l[0] )
				$('c_li' + i).style.display = 'none';
			else
				$('c_lt' + i).innerHTML = c.lt;
			$('c_c' + i).innerHTML = c.fc;
			$('c_cf' + i).appendChild(document.createTextNode(c.an));
			$('c_ct' + i).appendChild(document.createTextNode(c.rn));
			$('c_cpa' + i).appendChild(document.createTextNode(TDPCore.time.ago(c.pa)));
			$('c_r' + i).style.display = ''; }
		if ( d.l.length > 0 && $('c_rb') ) $('c_rb').style.display = ''; },
	init_deferred: function() {
		var m = d.c.length;
		for ( var i = 0; i < m; i++ ) {
			$('c_r' + i).style.paddingLeft = d.c[i].lvl + 'px'; } },
	comment_action: function(f, i) {
		var link_obfusid = d.l[0] ? d.l[0].lo : (i && d.c[i]) ? d.c[i].lo : '';
		var comment_obfusid = d.c[i] ? d.c[i].mo : '';
		return '/comment?form=' +
			f.id + '&captcha_crypt=' + d.p.a +
			'&link=' + link_obfusid +
			'&comment=' + comment_obfusid; },
	comment_onsubmit: function(f, i) {
		TDPCore.net.xmhr(TDPComments.comment_action(f, i), f,
			{ before:'$(\'' + f.id + '\').commit.value = \'Submitting...\'; $(\'' + f.id + '\').commit.disabled = true;', 
				failure:'$(\'' + f.id + '\').commit.value = \'Save Failed...Try Again?\'; $(\'' + f.id + '\').commit.disabled = false;', 
				success:'$(\'' + f.id + '\').commit.value = \'Comment Saved! Reloading...\';' }); },
	focus: function(e) { e.style.height = '150px'; e.style.width = '450px'; TDPPopup.focus(e, 450, 'ch_c'); },
	blur: function(e) { e.style.height = '30px'; e.style.width = '300px'; TDPPopup.blur(e, 'ch_c');},
	reveal_submit: function(e_show, e_hide) { if ( TDPCore.test.is_logged_in() ) { e_show.style.display = ''; e_hide.style.display = 'none'; } } };
var TDPBanner = {
	init_immediate: function() {
		if ( d.r && d.r.length > 0 && $('b0') && d.u.sb != 'false' ) {
			$('b0_t').innerHTML = eval(d.r[0]);
			if ( is_logged_in ) $('b0_c').style.display = '';
			$('b0').style.display = ''; } },
	init_deferred: function() {} };
var TDPMacro = {
	options: {
		vote: function(p) {
			if ( ! is_logged_in ) { $('lrp_mesg').innerHTML = "no worries! your vote will still be saved after you login or register"; $('lrp_mesg').style.display = 'block'; }
			var url = [ "/vote?vote=",
				p["vote"], '&',
				"macro", '=', 'true', '&',
				"id", '=' ].join('');
			TDPCore.go.vote_lto(url, d.l[d.l_m[p["id"]]], p["vote_value"]); },
		move_link: function(p) {
			if ( ! is_logged_in ) { $('lrp_mesg').innerHTML = "don't fret! your link submission will still be waiting for you after you login or register"; $('lrp_mesg').style.display = 'block'; }
			TDPCore.show.move(-1);
			e = document.forms['submit'].elements;
			e["link"].value = p["link"] || '';
			e["title"].value = p["title"] || '';
			e["tags"].value = p["tags"] || '';
			e["summary"].value = p["summary"] || '';
			e["thumb_url"].value = p["thumb_url"] || '';
			e["thumb_source"].value = p["thumb_source"] || ''; } },
	init_immediate: function() {},
	init_deferred: function() {
		var q = window.location.search;
		if ( ! q ) return;
		q = q.match(/macro=([^&]*)&?/i);
		if ( ! q || ! q[1] ) return;
		q = unescape(q[1]).split('&');
		var p = {}; var m = q.length;
		var s = '';
		for ( var i = 0; i < m; i++ ) {
			var o = q[i].split('=');
			p[unescape(o[0])] = unescape(o[1]||o[0]);
			s = s + unescape(o[0]) + '=' + unescape(o[1]||o[0]) + ' '; }
//		alert(s);
		if ( p.cmd ) TDPMacro.options[p.cmd](p); },
	reload: function() {
		h = window.location.href.replace(/v=[^&]*&?/i,'').replace(/macro=[^&]*&?/i,'v=' + new Date().getTime());
		window.location.replace(h); } };
var TDPWidget = {
	options: {
		p: [ 'url', 'title', 'summary', 'thumb_url', 'thumb_source', 'width', 'height' ] },
	wc: function() {
		alert('For Firefox, Safari, and Opera, left click, hold, and drag this button to your toolbar.  For Internet Explorer, right click on this button and choose "Add To Favorites" and add to the "Links" folder.'); },
	show_custom: function(e) {
		e = e.elements;
		var q = [];
		for ( var i in TDPWidget.options.p )
			if ( e[TDPWidget.options.p[i]] && e[TDPWidget.options.p[i]].value.length > 0 )
				q = q.concat(TDPWidget.options.p[i] + '=' + escape(escape(e[TDPWidget.options.p[i]].value).replace('+','%20')));
		var l;
		var w = l = q.join('&');
		if ( e[1] && e[1].checked )
			w = 'large?' + w;
		else
			w = 'small?' + w;
		w = 'http://thedailypolitical.com/w/' + w;
		l = 'http://thedailypolitical.com/z?' + l;
		e['w'].value = '<script type="text/javascript" src="' + w + '"></script>';
		e['l'].value = l;
		$('la').href = l; } };