var userVars = "nowhynovotes=1&thewar=%7b%22inventory%22%3a%7b%7d%2c%22strike%22%3a93%2c%22laststrike%22%3a1207132023%2c%22health%22%3a%2d39%2c%22fallen%22%3a1%7d&mission=%20&specialties=%20&wufoot=c%3asocial%2cc%3avote%2cc%3acfull&ipaddy=62%2e253%2e128%2e7&votetime=2002%2d10%2d11&employment=%20&hasRecalculated=1&nwriteups=%20&showmessages_replylink=1&nwriteupsupdate=1261461711&chatterbox_msgs_descend=1&votesrefreshed=1&zenadinheader=1&displaypref_e2node=displayfull&oldexp=%20&nodelets=262%2c1922511%2c263&userstyle=1882070&motto=%20&numwriteups=%20&level=0%20%28Initiate%29%20%2f%200&can_weblog=%20&preferred_theme=1854183&favorite_noders=%2c1704834%2c1909366%2c1914469%2c1918487%2c1918596%2c1920070&includedJS=%2c1872965%2c1930065%2c1872990%2c1951752%2c1878034%2c&wuhead=r%3atype%2cl%3aauthor%2cr%3adtcreate";

var siteVars = { node_id: 17522, nodetype: "e2node"};
document.write('<script type="text/javascript" src="/js/tiny_mce/tiny_mce.js"></script>');document.write('<script type="text/javascript" src="/js/protoculous.js"></script>');
var Deferrer = {
	defer: function (callback, requiredObject) {	
		if (!Deferrer.interval) {
			Deferrer.interval = window.setInterval(Deferrer.checkInterval, 500);
		}	
		Deferrer.callbacks.push({callback: callback, requiredObject: requiredObject});
	},
	callbacks: [],
	checkInterval: function () {
		var c = Deferrer.callbacks;
		var remaining = [];
		for (var i=0; i < c.length; i++) {
			var req = eval("typeof(" + c[i].requiredObject + ")");
			if (req != 'undefined' && eval(c[i].requiredObject)) {
				c[i].callback();
			} else {
				remaining.push(c[i]);
			}
		}
		Deferrer.callbacks = remaining;
		if (Deferrer.callbacks.length == 0) {
			window.clearInterval(Deferrer.interval);
		}
	},
	onLoad: function (callback) {
		Deferrer.defer(callback, "document.getElementsByTagName('body').length");
	}
}

var Debugger = {
	log: function (str) {
		if (!Debugger.enabled) {
			return;
		}
		if (!Debugger.window) {
			Debugger.showWindow();
		}
		Debugger.window.innerHTML += "LOG: " + str + "<br>";
	},
	showWindow: function () {
		Debugger.window = document.createElement('div');
		with (Debugger.window.style) {
			width = '400px';
			height = '200px';
			backgroundColor = '#ffffff';
			border = '1px black solid';
			position = 'fixed';
			bottom = '10px';
			left = '20px';
			overflow = 'auto';
		}
		$$('body')[0].appendChild(Debugger.window);
	},
	window: false,
	enabled: false	
}

void new function() { // no exposed names...
	function activateActions() {
		for ( var i=0 , l=document.getElementsByClassName( 'showwidget' ) ; l[i] ; i++ ) {
			var classtest = /\bwidget\b/ ;
			for ( var j=0 , family = [ l[i].previousSibling , l[i].nextSibling , l[i].parentNode ,
				( l[i].previousSibling ? l[i].previousSibling.previousSibling : null ) ,
				( l[i].nextSibling ? l[i].nextSibling.nextSibling : null ) ]; j<5 ; j++ ) {
				if ( family[j] && classtest.test( family[j].className ) ) {
					l[i].href = l[i].href || 'javascript:' ;
					l[i].onclick = showhide ;
					l[i].targetwidget = family[j] ;
					if (( family[j].parentNode.style.position || "static") == "static" )
						family[j].parentNode.style.position = "relative" ;
					break ;
				}
			}
		}
		for ( var i=0 , l=document.getElementsByClassName( 'confirm' ) ; l[i] ; i++ ) {
			l[i].originalhref = l[i].href ;
			l[i].onclick = confirmAction ;
		}
	}

	function showhide() {
		if ( typeof( this.targetwidget ) == 'undefined' ) alert('Sorry, this widget opener has lost its widget.') ;
		var x = this.targetwidget ;
		if ( x.style.display == 'none' ) {
			x.style.display = 'block' ;
			x.openedBy = this ;
			this.className += ' open' ;
		} else {
			x.style.display = 'none' ;
			x.openedBy.className = x.openedBy.className.replace( ' open' , '' ) ;
  		}
		return false ;
	}
	
	function confirmAction() {
		if ( confirm( "Really " + this.title + "?" ) ) {
			parent.location= this.originalhref ;
		}
		return false ;
	}

	var oldOnLoad = window.onload ;
	window.onload = function() {
		if (oldOnLoad) oldOnLoad() ;
		activateActions() ;
	}
	
} ;

Deferrer.defer( function () {
	USERVARS = userVars.toQueryParams();
	isZen = USERVARS.preferred_theme == 1854183;
}, "Prototype");

var resizeTextarea = function (e) {
var el = Event.element(e);
var init = el.scrollHeight;
el.setStyle({height: (el.scrollHeight + 10) + 'px'});
var diff = init - el.scrollHeight;
el.setStyle({height: (el.scrollHeight + (2 * diff) + 10) + 'px'});
}

Deferrer.defer(function () {$$('textarea.expandable').each(function(o) {
Event.observe(o, 'keyup', resizeTextarea);
Event.observe(o, 'textInput', resizeTextarea);
o.setStyle({height: '2em', overflow: 'hidden'});
})}, "Prototype");

var ZenCollapser = {

ajaxUrl : "/index.pl",

	varChange: function(name, value) {
		data = {
			mode: "var",
			node_id: 1873513,
			name: name,
			 value: value};
		myAjax = new Ajax.Request(
		        ZenCollapser.ajaxUrl,
		        {method: 'get', parameters: data, onComplete: ZenCollapser.ajax_response}
		);
	},

	ajax_response: function(response) {
		is_hidden = eval( '('+response.responseText +')' );
		nodelet_id=is_hidden.name.substring(5);
		if (is_hidden.value) {
			Effect.BlindUp($(nodelet_id).select('.nodelet_content').first());
		}
		else {
			Effect.BlindDown($(nodelet_id).select('.nodelet_content').first());
		}
		ZenCollapser.hasInitted = true;
	},

 	init: function() {

		$$('.nodelet').each( function(nodelet) {
			if(USERVARS['hide_'+nodelet.id] == 1) {
				nodelet.select('.nodelet_content').first().hide();
			} 
		});
		$$('.nodelet_title').invoke('observe','click',function(event){  							
			nodelet_id = Event.element(event).parentNode.id;
			new Effect.Highlight(nodelet_id);
			if ($(nodelet_id).select('.nodelet_content').first().visible()) {
				ZenCollapser.varChange('hide_'+nodelet_id, 1);
			}
			else {
				ZenCollapser.varChange('hide_'+nodelet_id, 0);
			}
		});
		$$('.nodelet_title').invoke('setStyle', {cursor: 'pointer'});
	},
	
	hasInitted: false
	
};


Deferrer.onLoad(ZenCollapser.init);

var writeupAjaxExists = undefined;
var WriteupAJAX = undefined;
Deferrer.defer( function() {
 WriteupAJAX = Class.create( {

header: "",

initialize: function (el) {
this.header = el;
this.node_id = el.id.substring(8);
this.author = el.select(".writeup_author a").first().innerHTML;
},

getItem: function(item) {
if (item == "box") {
box = this.header.select(".writeup_"+item).first();
box.style.display = "block";
return box;
}
return this.header.select(".writeup_"+item).first();
},

writeupMessage: function() {
this.getItem("box").update("<input type=\'text\' size=\'70\' value=\'\' id=\'msg_"+this.node_id+"\' name= \'msgauthor\'/> <input type=\'button\' value=\'send\' onClick=\'WU"+this.node_id+".sendmessage()\' /> <input type=\'button\' value=\'cancel\' onClick=\'WU"+this.node_id+".getItem(\"box\").hide()\' />");

},

sendmessage: function() {
E2AJAX.privateMessage(this.author.gsub(" ","_"), $("msg_"+this.node_id).value);
this.getItem("box").update("message sent");
Element.hide.delay(2, this.getItem("box"));
},

bookmark: function() {
E2AJAX.bookmarkNode(this.node_id);
this.getItem("bookmark").update("bookmarked");
},

favorite: function() {
this.getItem("favorite").update("favorited");
},

vote: function(weight) {
E2AJAX.voteNode(this.node_id, weight);
show = "up";
if (weight == -1) {show = "down";}
this.getItem("vote").update("voted " + show);
},

cool: function () {
E2AJAX.coolNode(this.node_id);
this.getItem("cool").update("cooled");
},

killBox: function() {
this.getItem("box").update("kill box");
},

kill: function() {
this.getItem("kill").update("killed");
},

toolSet: function() {
this.getItem("box").update("Publish   Hide");
}

});
 writeupAjaxExists = 1;},"Prototype");

var nsCollapser = {
 init: function() {$$('.nodelet_section .ns_title').invoke('observe','click',function(event){  Event.element(event).nextSibling.toggle(); });}
};

if (window.onload) {
  var f = window.onload;
  window.onload = function() { nsCollapser.init(); f() };
} else {
  window.onload = nsCollapser.init;
}

var E2AJAX = {

	ajaxNode : 1873513,
	ajaxUrl : "/index.pl",

	varChange: function(name, value, callback) {
		USERVARS[name] = value;
		varString = Hash.toQueryString(USERVARS);
		data = {node_id:  E2AJAX.ajaxNode,
			mode: "allvars",
			varString: varString,
			name: name
		 };
		myAjax = new Ajax.Request(E2AJAX.ajaxUrl,{method: 'get', parameters: data, onComplete: callback});
	},

	privateMessage: function(recipient, msgText) {
		E2AJAX.sendMessage("/msg "+recipient+" "+msgText);
	},

getLastMessage: function() {

},

	sendMessage: function(msgText,checkmsg,callback) {
		if ((msgText.length ==0)&&(checkmsg == '')) {
			E2AJAX.update("chatterbox_chatter", "showchatter", {}, 0);
			$('talk_button').update('<input type="button" value="talk" onclick="updateTalk()"/>'); 
		}
		else {
			data = {
				node_id: E2AJAX.ajaxNode,
				mode: "message",
				deletelist: checkmsg,
				msgtext: msgText.replace( /[^ -~]/gm , function(x) { return "&#" + x.charCodeAt(0) + ";" ; } )
			};
			myAjax = new Ajax.Request(E2AJAX.ajaxUrl,{method: 'get', parameters: data, requestHeaders: ["If-Modified-Since", "Thu, 1 Jan 1970 00:00:00 GMT"], onComplete: callback});
		}


	},

	update: function(id, htmlcode, args, replaceID, callback) {
 args = Object.toJSON(args);

		if (replaceID == null) {replaceID = 1;}
		data = {node_id:  E2AJAX.ajaxNode,
			mode: "update",
			htmlcode: htmlcode,
			 args: args
			};

		myAjax = new Ajax.Request(E2AJAX.ajaxUrl,{method: 'get', parameters: data, requestHeaders: ["If-Modified-Since", "Thu, 1 Jan 1970 00:00:00 GMT"], onComplete: function(response) {
		if (callback != null) {
			callback();
		}
		if (replaceID) {
			$(id).replace(response.responseText);
 		}
		else {
			$(id).update(response.responseText);
		}

		 }
		});
	},

	voteNode: function(node_vote, weight) {
		data = {node_id:  E2AJAX.ajaxNode,
			mode: "vote"
	
			};
		data["vote__" + node_vote] = weight;
		$("voteinfo_"+node_vote).select(".vote_buttons").first().update("Voting ...");
		myAjax = new Ajax.Request(E2AJAX.ajaxUrl,
			{
				method: 'get', 
				parameters: data, 
				onSuccess: function() {  E2AJAX.update("voteinfo_"+node_vote, "voteit", node_vote+",2", 0);} } );
	},

	bookmarkNode: function(node_bookmark) {
		data = {
			op : "bookmark",
			node_id : node_bookmark
		};
		myAjax = new Ajax.Request(E2AJAX.ajaxUrl, {method: 'get', parameters: data});
	},

	coolNode: function (node_cool) {
		data = {
			op : "cool",
			cool_id : node_cool
		};
		myAjax = new Ajax.Request(E2AJAX.ajaxUrl, {method: 'get', parameters: data});
	},

	updateNodelet: function(nodeletName, args) {
		nodeletID = nodeletName.toLowerCase().replace(/\W/g,'');
		if (args == null) {args = {};}
		args.nodelet = nodeletName;
		E2AJAX.update(nodeletID,'updateNodelet',args);
	},

	createTitle: function(title) {
		data = {type : "e2node", 
			op : "new",
			node : title};
		myAjax = new Ajax.Request(E2AJAX.ajaxUrl, {parameters: data, onSuccess: function() {E2AJAX.titleCreated = 1;}});
	},

	createWriteup: function(parent_e2node, doctext, writeuptype) {
		data = {op: "new",
			type: "writeup",
			writeup_doctext: doctext,
			writeup_parent_e2node: parent_e2node,
			writeuptype: writeuptype
		};
		new Ajax.Request(E2AJAX.ajaxUrl, {parameters: data, method: "post"});
	},

	postWriteup: function(title, doctext, writeuptype) {
		E2AJAX.createTitle(title);
		Deferrer.defer(function() {E2AJAX.getNodeInfo(title,"e2node","node_id");}, "E2AJAX.titleCreated");
		Deferrer.defer(function() {E2AJAX.createWriteup(E2AJAX.parentNode, doctext, writeuptype);}, "E2AJAX.parentNode");
	},

	getNodeInfo: function(nodeTitle, nodeType, field) {
		data = {node_id:  E2AJAX.ajaxNode,
			mode: "getNodeInfo",
			type: nodeType,
			field: field,
			title: nodeTitle
		};
		myAjax = new Ajax.Request(E2AJAX.ajaxUrl,{method: "get", parameters: data, onComplete: function(response) { E2AJAX.parentNode = response.responseText;} });
},

	markNotificationSeen: function(notified_id) {
		//$("notified_"+notified_id).fade();
		Effect.BlindUp("notified_"+notified_id);
		data = {
			node_id:  E2AJAX.ajaxNode,
			notified_id: notified_id,
			mode: "markNotificationSeen"
		};
		myAjax = new Ajax.Request(E2AJAX.ajaxUrl,{method: "get", parameters: data});
},

	checkNotifications: function() {
		E2AJAX.checkList("checkNotifications", E2AJAX.notificationOn, E2AJAX.notificationOff, ".notified", "notified_");
	},

	checkCools: function(){
		E2AJAX.checkList("checkCools", E2AJAX.coolOn, E2AJAX.coolOff, ".cooled", "cooled_");
	},

	checkMessages: function(){

		E2AJAX.checkList("checkMessages", E2AJAX.messageOn, E2AJAX.messageOff, ".messaged", "messaged_");
	},

	checkFeedItems: function(){

		E2AJAX.checkList("checkFeedItems", E2AJAX.feedItemOn, E2AJAX.feedItemOff, ".feeditem", "feeditem_");
	},

	itemOff: function(id) {
		Effect.BlindUp($(id));
},

	itemOn: function(id, IDGroup, holder, content, position) {
		if (position == "top") {
			$(holder).insert({ top: content});
		}
		else {
			$(holder).insert({ bottom: content});
		}
		Effect.BlindDown($(IDGroup+id));
		new Effect.Highlight.defer($(IDGroup+id));
	},

	messageOff: function(messaged_id) {
		E2AJAX.itemOff(messaged_id);
	},

	messageOn: function(id, content, position) {

		content = "<div class='messaged' id='messaged_"+id+"'>"+content+"</div>";
		E2AJAX.itemOn(id,'messaged_','chatterbox_chatter',content,'bottom');
	},

	feedItemOff: function(id) {
		E2AJAX.itemOff(id);
	},

	feedItemOn: function(id, content, position) {
		content = "<div class='feeditem' id='feeditem_"+id+"' style='padding: .5em; margin-bottom: .2em'>"+content+"</div>";
		E2AJAX.itemOn(id,'feeditem_','feed_list',content,'top');
	},

	notificationOff: function(notified_id) {
		E2AJAX.itemOff(notified_id);
	},

	notificationOn: function(notified_id, content, position) {
		content = 

		 "<li class='notified' id='notified_"+notified_id+"'><a class='closebox' title='hide notification' href='javascript:E2AJAX.markNotificationSeen("+notified_id+")'>&#91;x]</a> "+content+"</li>";
		E2AJAX.itemOn(notified_id,'notified_','notifications_list',content,'top');
	},

	checkList: function(mode, callbackOn, callbackOff, currentListClass, currentListIDGroup) {
		data = {node_id:  E2AJAX.ajaxNode,
			mode: mode
		};
		myAjax = new Ajax.Request(E2AJAX.ajaxUrl,
		{
			method: "get",
			parameters: data,
			onComplete: function(response) {
				responseJSON = response.responseText.evalJSON();
				i = 1;
				while (responseJSON[i]) {

					if ($(currentListIDGroup+responseJSON[i].id) === null) {
						callbackOn.defer(responseJSON[i].id, responseJSON[i].value, "top");
					}
					i++;
				}
				$$(currentListClass).each(function(item) {
					if (typeof(responseJSON[item.id.replace(currentListIDGroup,'')]) === 'undefined') {
						callbackOff.defer(item.id);
					}
				});
			}
		});

	},

	addFeedItem: function(doctext) {
		data = {
			type : "feeditem",
			node_id : E2AJAX.ajaxNode,
			title: "feeditem",
			op : "new",
			doctext : doctext
		};
		myAjax = new Ajax.Request(E2AJAX.ajaxUrl, {
			parameters: data, 
			onSuccess: 
				function() {
					E2AJAX.checkFeedItems(); $('new_feed_item').value = '';
				}
		});
	},

	deleteFeedItem: function(item_id) {
		data = {
			mode : "deleteFeedItem",
			node_id : E2AJAX.ajaxNode,
			feeditem_nodeid : item_id
		};
		myAjax = new Ajax.Request(E2AJAX.ajaxUrl, {
			parameters: data, 
			onSuccess: 
				function() {
					E2AJAX.checkFeedItems();
				}
		});
		
	}

	

};


