/**
 * August 11, 2006
 * 
 * $Id: pd2.js,v 1.5.2.10 2007/05/16 23:31:16 ben Exp $
 *
 */

var gCommentObject;
var ajaxfeedback_timeout = 7000;

function view_asset(base, assetNum, targetID, forcePreview)
{
	if(window.XMLHttpRequest) {
		xmlHttp = new XMLHttpRequest();
	} else {
		xmlHttp = new ActiveXObject("Msxml2.XMLHTTP");
	}

	var url = 'a?b=' + base + '&a=' + assetNum + '&m=' + targetID;

	if ((arguments.length > 3) && forcePreview) {
		url += '&p=1';
	}

	// Synchronous, so pass "false" here.
	//
	xmlHttp.open("GET", url, false);

	xmlHttp.setRequestHeader("Referer", document.location);

	xmlHttp.send(null);
	
	var xmldom = xmlHttp.responseXML;
	var payloadElem = xmldom.getElementsByTagName('payload').item(0);
    
	// Now we have to pull the content out of there and stuff it in
	// to a new div.

	var rrr = $(targetID);
	rrr.innerHTML = RicoUtil.getContentAsString(payloadElem);
}

function BuyPD2Asset(base, assetNum, targetId)
{
	if(window.XMLHttpRequest) {
		xmlHttp = new XMLHttpRequest();
	} else {
		xmlHttp = new ActiveXObject("Msxml2.XMLHTTP");
	}

	var url = 'try_buy';

	var infoString = 'b=' + base + '&a=' + assetNum;

	// Synchronous, so pass "false" here.
	//
	xmlHttp.open("POST", url, false);

	xmlHttp.setRequestHeader("Referer", document.location);
	xmlHttp.setRequestHeader("Content-Type", 
		"application/x-www-form-urlencoded; charset=UTF-8");

	xmlHttp.send(infoString);
	
	var xmldom = xmlHttp.responseXML;

	var formResult = xmldom.getElementsByTagName('form_result').item(0);
	
	var dialogText = formResult.getAttribute('message');		
	if (formResult.getAttribute('status') == 0) {
		if (confirm(dialogText)) {
			// do it.

			var bContextElem = xmldom.getElementsByTagName('buy_context').item(0);
			
			var bContext = RicoUtil.getContentAsString(bContextElem);

			if(window.XMLHttpRequest) {
				xmlHttp = new XMLHttpRequest();
			} else {
				xmlHttp = new ActiveXObject("Msxml2.XMLHTTP");
			}

			url = 'final_buy';

			infoString = 'b=' + base + '&a=' + assetNum + '&bc=' + bContext;

			xmlHttp.open("POST", url, false);
			xmlHttp.setRequestHeader("Referer", document.location);
			xmlHttp.setRequestHeader("Content-Type", 
				"application/x-www-form-urlencoded; charset=UTF-8");

			xmlHttp.send(infoString);
	
			xmldom = xmlHttp.responseXML;

			formResult = xmldom.getElementsByTagName('form_result').item(0);
			
			if (formResult.getAttribute('status') == 0) {
				if(targetId == 'one_asset'){
					var assetUrl = 'one_asset?b=' + base + '&a=' + assetNum;
					document.location.href = assetUrl;
				}else{
					view_asset(base, assetNum, targetId);
				}
			} else {
				alert(formResult.getAttribute('message'));
			}
		} else {
			return;
		}
	} else {
		alert(dialogText);
	}
}

function rmxDialog(event, base, assetNum)
{
	var rmxBut = $('rmxbut_' + base + '_' + assetNum);

	if(window.XMLHttpRequest) {
		xmlHttp = new XMLHttpRequest();
	} else {
		xmlHttp = new ActiveXObject("Msxml2.XMLHTTP");
	}

	var url = 'try_remix';

	var infoString = 'b=' + base + '&a=' + assetNum;	

	xmlHttp.open("POST", url, false);

	xmlHttp.setRequestHeader("Referer", document.location);
	xmlHttp.setRequestHeader("Content-Type", 
		"application/x-www-form-urlencoded; charset=UTF-8");

	xmlHttp.send(infoString);
	
	var xmldom = xmlHttp.responseXML;

	var formResult = xmldom.getElementsByTagName('form_result').item(0);

	var dialogText = formResult.getAttribute('message');

	if (formResult.getAttribute('status') == -1) {
		alert(dialogText);
		return;
	}

	var chooserElem = xmldom.getElementsByTagName('asset_chooser').item(0);
	var chooserHTML = RicoUtil.getContentAsString(chooserElem);

	var rContextElem = xmldom.getElementsByTagName('remix_context').item(0);
	var rContext = RicoUtil.getContentAsString(rContextElem);

	var popUp = document.createElement("div");
	popUp.id = "pop_up_win";
	truePos = Position.cumulativeOffset(rmxBut);
	popUp.style.cssText = "position:absolute; top:" +
		(truePos[1] - 150) + "; left:" + 
		(rmxBut.offsetWidth + truePos[0] + 40) +
		"; width:400px; height:200px; z-index:4; background-color:#dddddd;";

	popUp.innerHTML = "<table bordercolor=\"#000000\" border=\"1\">" +
		"<tr><td>" + dialogText + "</tr></td><tr><td>" +
		"<input type=\"button\" value=\"Cancel\" onclick=\"cancelPopup();\"/>" +
		"</td></tr>" +
		"<tr><td>Add to this asset: <form method=\"post\" action=\"final_remix\">" + 
		chooserHTML + 
		"<input type=\"submit\" value=\"Go\"/>" +
		"<input type=\"hidden\" name=\"rc\" value=\"" + rContext +
		"\"/><input type=\"hidden\" name=\"b\" value=\"" + base + "\">" +
		"<input type=\"hidden\" name=\"a\" value=\"" + assetNum + "\">" +
		"</form></td></tr></table>";

	document.body.appendChild(popUp);

}

function cancelPopup(){
	var popUp = $('pop_up_win');
	popUp.parentNode.removeChild(popUp);
}

/*** 
   - postComment() post a comment from the static 
     textarea at the bottom of the comments section
   - commentDialog() and createPD2Comment() post
     comments from dynamic comment forms that are
	 place inline in the comments section
***/

function postComment(base, assetNum){
	cancelPD2Comment();	
	var xmlHttp;

	if(window.XMLHttpRequest) {
		xmlHttp = new XMLHttpRequest();
	} else {
		xmlHttp = new ActiveXObject("Msxml2.XMLHTTP");
	}

	var text_box = $('comment_text_static');
	var pro_con_select = $('pro_con_static');

	url = 'create_comment';

	var infoString = 'b=' + base + '&a=' + 
		assetNum + '&t=' + escape(text_box.value) +
		'&p=' + pro_con_select.value;

	infoString += '&' + ddxParam();

	xmlHttp.open("POST", url, false);
	xmlHttp.setRequestHeader("Content-Type", 
		"application/x-www-form-urlencoded; charset=UTF-8");
	xmlHttp.send(infoString);

	var xmldom = xmlHttp.responseXML;

	var formResult = xmldom.getElementsByTagName( 'form_result' ).item(0);

	if (formResult.getAttribute('status') == 0) {
		//find the end of the line and put the comment there
		var commentsTableBody = this.top.document.getElementById('comments_table_body');

		var new_row = document.createElement("tr");
		var new_cell = document.createElement("td");
		new_row.appendChild(new_cell);

		var payloadElem = xmldom.getElementsByTagName('payload').item(0);
		new_cell.innerHTML = RicoUtil.getContentAsString(payloadElem);

		commentsTableBody.appendChild(new_row);

		text_box.value = '';

		var idElem = xmldom.getElementsByTagName('new_id').item(0);
		document.location.href = document.location.href + "#" + RicoUtil.getContentAsString(idElem);

	} else {
		var lemElem = xmldom.getElementsByTagName('long_error_msg').item(0);
		var long_error_msg = RicoUtil.getContentAsString(lemElem);

		alert(long_error_msg);
	}	

}

function getComments(base, assetNum, first_comment, num_comments){
	cancelPD2Comment();	
	var xmlHttp;
	var commentsPane = this.top.document.getElementById('comments_pane');

	if(window.XMLHttpRequest) {
		xmlHttp = new XMLHttpRequest();
	} else {
		xmlHttp = new ActiveXObject("Msxml2.XMLHTTP");
	}

	url = 'get_comments';

	var infoString = 'b=' + base + '&a=' + 
		assetNum + '&s=' + first_comment +
		'&m=' + num_comments;

	infoString += '&' + ddxParam();

	xmlHttp.open("POST", url, false);
	xmlHttp.setRequestHeader("Content-Type", 
		"application/x-www-form-urlencoded; charset=UTF-8");
	xmlHttp.send(infoString);

	var xmldom = xmlHttp.responseXML;

	var formResult = xmldom.getElementsByTagName( 'form_result' ).item(0);

	if (formResult.getAttribute('status') == 0) {
		var payloadElem = xmldom.getElementsByTagName('payload').item(0);
		commentsPane.innerHTML = RicoUtil.getContentAsString(payloadElem);
	} else {
		alert(formResult.getAttribute('message'));
	}	
}

function commentDialog(event, base, assetNum, parentComment)
{
	if(!event) var event = window.event;
	cancelPD2Comment();	

	gCommentObject = new Object();
	gCommentObject.base = base;
	gCommentObject.assetNum = assetNum;
	gCommentObject.parentComment = parentComment;

	var popUp = document.createElement("div");

	popUp.id = "pop_up_comment";

	if (parentComment > 0) {
		var comTargetText = "comment " + parentComment;
	} else {
		var comTargetText = "the asset";
	}

	popUp.innerHTML = "<table class='comment'><tr><td><div class='quick_post'>" +
		"<div class='category'>" + 
		"<br/>My feelings on this asset are: " + 
		"<select name='pro_con' id='pro_con'>" +
        "<option value='1'>Pro</option>" + 
		"<option value='-1'>Con</option>" + 
		"<option value='0' SELECTED>Neutral</option>" + 
		"</select>" +
		// "&nbsp; &nbsp; This is a:" +
		// "<select name='question_answer' id='question_answer'>" +
        // "<option value='1' SELECTED>Comment</option>" + 
		// "<option value='-1'>Question</option>" + 
		// "<option value='0'>Answer</option>" + 
		// "</select>" +
		"</div>" +
		"<textarea name='comment_text' id='comment_text'></textarea>" +
		"<div id='bbcode'><a href='bbcode' target='_blank'>[BBcode]</a>:ON</div>" + 	 
		"<input class='login' type='button' value='Post' onclick='createPD2Comment();' />" +
		"<input class='login' type='button' value='Cancel' onclick='cancelPD2Comment();' />" +
		"</div></td><td class='author'></td></table>";

	var appendTo;
	if(event.target){
		appendTo = event.target.parentNode;
	}else{
		appendTo = event.srcElement.parentNode;
	}
	var regex = new RegExp("table", "i")
	while(!appendTo.nodeName.match(regex))
		appendTo = appendTo.parentNode;
	appendTo = appendTo.parentNode;
	appendTo.appendChild(popUp);

	gCommentObject.popUp = popUp;

	$('comment_text').focus();
	return false;
}

function cancelPD2Comment(){
	var popUp = $('pop_up_comment');
	if (popUp) {
		popUp.parentNode.removeChild(popUp);
	}
	gCommentObject = null;
}

function createPD2Comment()
{

	var xmlHttp;

	if(window.XMLHttpRequest) {
		xmlHttp = new XMLHttpRequest();
	} else {
		xmlHttp = new ActiveXObject("Msxml2.XMLHTTP");
	}

	var text_box = $('comment_text');
	var pro_con_select = $('pro_con');

	url = 'create_comment';

	var infoString = 'b=' + gCommentObject.base + '&a=' + 
		gCommentObject.assetNum + '&t=' + escape(text_box.value) +
		'&p=' + pro_con_select.value;

	infoString += '&' + ddxParam();

	if (gCommentObject.parentComment > 0) {
		infoString += '&c=' + gCommentObject.parentComment; 
	}

	xmlHttp.open("POST", url, false);
	xmlHttp.setRequestHeader("Content-Type", 
		"application/x-www-form-urlencoded; charset=UTF-8");
	xmlHttp.send(infoString);

	var xmldom = xmlHttp.responseXML;

	var formResult = xmldom.getElementsByTagName( 'form_result' ).item(0);

	if (formResult.getAttribute('status') == 0) {
		var payloadElem = xmldom.getElementsByTagName('payload').item(0);
		gCommentObject.popUp.innerHTML = RicoUtil.getContentAsString(payloadElem);

		var newIdElem = xmldom.getElementsByTagName('new_id').item(0);
		gCommentObject.popUp.id = RicoUtil.getContentAsString(newIdElem);

		// var commentsPane = this.top.document.getElementById('comments_pane');
		// commentsPane.innerHTML = RicoUtil.getContentAsString(payloadElem);
	} else {
		var lemElem = xmldom.getElementsByTagName('long_error_msg').item(0);
		var long_error_msg = RicoUtil.getContentAsString(lemElem);

		alert(long_error_msg);
	}	

	cancelPD2Comment();
}

function
setUserCommentProConLevel(base, assetNum){
	var xmlHttp;

	if(window.XMLHttpRequest) {
		xmlHttp = new XMLHttpRequest();
	} else {
		xmlHttp = new ActiveXObject("Msxml2.XMLHTTP");
	}

	var url = 'set_profile_record';

	var infoString = 'b=' + base + '&a=' + assetNum;

	var elm = $('Settings_maxCommentCons');
	if(isNaN(elm.value)){
		alert('Please enter a valid number.');
		return;
	}
	infoString += '&r[]=Settings' + '&Settings_maxCommentCons=' + elm.value;

	elm = $('Settings_minCommentPros');
	if(isNaN(elm.value)){
		alert('Please enter a valid number.');
		return;
	}
	infoString += '&Settings_minCommentPros=' + elm.value;

	xmlHttp.open("POST", url, false);
	xmlHttp.setRequestHeader("Content-Type", 
		"application/x-www-form-urlencoded; charset=UTF-8");
	xmlHttp.send(infoString);

	var xmldom = xmlHttp.responseXML;

	var formResult = xmldom.getElementsByTagName( 'form_result' ).item(0);


	if (formResult.getAttribute('status') == 0) {
	    // var commentsPane = this.top.document.getElementById('comments_pane');
		// var payloadElem = xmldom.getElementsByTagName('payload').item(0);
		// commentsPane.innerHTML = RicoUtil.getContentAsString(payloadElem);

		window.location.reload( true );

	} else {
		alert(formResult.getAttribute('message'));
	}	

}

function
rateComment(base, assetNum, commentNum, proCon)
{
	var xmlHttp;

	if(window.XMLHttpRequest) {
		xmlHttp = new XMLHttpRequest();
	} else {
		xmlHttp = new ActiveXObject("Msxml2.XMLHTTP");
	}

	url = 'rate_comment';

	var infoString = 'b=' + base + '&a=' + assetNum + '&c=' + commentNum +
		'&p=' + proCon;
	infoString += '&' + ddxParam();

	xmlHttp.open("POST", url, false);
	xmlHttp.setRequestHeader("Content-Type", 
		"application/x-www-form-urlencoded; charset=UTF-8");
	xmlHttp.send(infoString);

	var xmldom = xmlHttp.responseXML;

	var formResult = xmldom.getElementsByTagName( 'form_result' ).item(0);


	if (formResult.getAttribute('status') == 0) {
		var payloadElem = xmldom.getElementsByTagName('payload').item(0);
		var ratingsPane = $('comment_rating_summary_' + commentNum);
		ratingsPane.innerHTML = RicoUtil.getContentAsString(payloadElem);
	} else {
		alert(formResult.getAttribute('message'));
	}	
	
}


function
rateAsset(base, assetNum, rating)
{
	var xmlHttp;

	if(window.XMLHttpRequest) {
		xmlHttp = new XMLHttpRequest();
	} else {
		xmlHttp = new ActiveXObject("Msxml2.XMLHTTP");
	}

	url = 'rate_asset';

	var infoString = 'b=' + base + '&a=' + assetNum + '&r=' + rating;
	infoString += '&' + ddxParam();

	xmlHttp.open("POST", url, false);
	xmlHttp.setRequestHeader("Content-Type", 
		"application/x-www-form-urlencoded; charset=UTF-8");
	xmlHttp.send(infoString);

	var xmldom = xmlHttp.responseXML;

	var formResult = xmldom.getElementsByTagName( 'form_result' ).item(0);


	if (formResult.getAttribute('status') == 0) {
		var payloadElem = xmldom.getElementsByTagName('payload').item(0);
		var ratingsPane = $('asset_rating_summary');
		ratingsPane.innerHTML = RicoUtil.getContentAsString(payloadElem);	

		var total_pointsElem = xmldom.getElementsByTagName('total_points').item(0);
		var total_points = RicoUtil.getContentAsString(total_pointsElem);

		var ratingsElem = xmldom.getElementsByTagName('ratings').item(0);
		var ratings = RicoUtil.getContentAsString(ratingsElem);

		if(ratings && total_points){
			var total_points_pane = $('asset_rating_average');
			if(total_points_pane){
				var ave_rating = Math.round(total_points / ratings * 10) / 10;
				total_points_pane.innerHTML = ave_rating;
			}

			var ratings_pane = $('num_ratings');
			if(ratings_pane){
				ratings_pane.innerHTML = ratings;
			}
		}

	} else {
		alert(formResult.getAttribute('message'));
	}	
	
}

function getMouseCoords(e){
	var posx = 0;
	var posy = 0;
	if (!e) var e = window.event;
	if (e.pageX || e.pageY) {
		posx = e.pageX;
		posy = e.pageY;
	}else if (e.clientX || e.clientY) {
		posx = e.clientX + document.body.scrollLeft
			+ document.documentElement.scrollLeft;
		posy = e.clientY + document.body.scrollTop
			+ document.documentElement.scrollTop;
	}
	var obj = {}
	obj.x = posx;
	obj.y = posy;
	return obj;
}


function
ddxParam()
{
	var ddxCgi = 'ddx';
	var ddxCookie = 'PD2_SID';
	var working = ddxCgi + '=';

	// This routine stolen from the rhino book
	var allCookies = document.cookie;

	var pos = allCookies.indexOf(ddxCookie);
	if (pos != -1) {
		var start = pos + 8;
		var end = allCookies.indexOf(";", start);
		if (end == -1) {
			end = allCookies.length;
		}
		var value = allCookies.substring(start, end);
		value = unescape(value);

		working += value;
	}

	return working;
}

var cur_statusMessage;
var cache_statusMessage = new Array();
function popStatusMessage(event, base){

	if(!cur_statusMessage){
		if(cache_statusMessage[base]){
			cur_statusMessage = cache_statusMessage[base];
		}else{
			if(window.XMLHttpRequest) {
				xmlHttp = new XMLHttpRequest();
			} else {
				xmlHttp = new ActiveXObject("Msxml2.XMLHTTP");
			}
			
			var url = 'get_popup_status';
			var infoString = 'b=' + base;
			
			xmlHttp.open("POST", url, false);
			xmlHttp.setRequestHeader("Content-Type", 
									 "application/x-www-form-urlencoded; charset=UTF-8");
			xmlHttp.send(infoString);
			
			var xmldom = xmlHttp.responseXML;
			var payloadElem = xmldom.getElementsByTagName('payload').item(0);
			
			cur_statusMessage = document.createElement("div");
			cur_statusMessage.innerHTML = RicoUtil.getContentAsString(payloadElem);
			
			cur_statusMessage.className = 'statusMessage';
			cache_statusMessage[base] = cur_statusMessage;
		}
		document.body.appendChild(cur_statusMessage);
	}

  	if(!event) event = window.event;
	var coords = getMouseCoords(event);

	if(coords.y < 100) y = coords.y;
	else y = coords.y  - 73;
	
	if(coords.x < 225) x = coords.x + 2
	else x = coords.x - 210;

	cur_statusMessage.style.top  = y  + "px";
	cur_statusMessage.style.left = x  + "px";
}

function closeStatusMessage(){
	if(cur_statusMessage){
		cur_statusMessage.parentNode.removeChild(cur_statusMessage);
		cur_statusMessage = null;
	}
}


function setUserStatus(){
	var xmlHttp;

	if(window.XMLHttpRequest) {
		xmlHttp = new XMLHttpRequest();
	} else {
		xmlHttp = new ActiveXObject("Msxml2.XMLHTTP");
	}

	var url = 'set_profile_record';
	var infoString = 'r[]=AboutMe';
	
	var elm = $('set_status');
	infoString += '&AboutMe_status=' + escape(elm.value);


	// Synchronous, so pass "false" here.
	//
	xmlHttp.open("POST", url, false);
	xmlHttp.setRequestHeader("Content-Type", 
		"application/x-www-form-urlencoded; charset=UTF-8");
	xmlHttp.send(infoString);
	
	var xmldom = xmlHttp.responseXML;

	var formResult = xmldom.getElementsByTagName( 'form_result' ).item(0);

	response = formResult.getAttribute('message');			
	
	showAjaxFeedback('status_response', '<font color="green">Status saved!</font>');
}

function showAjaxFeedback(feedbackPane,message){
	var responsePane = $(feedbackPane);
	if(responsePane){
		responsePane.innerHTML = message;
		setTimeout('$("' + feedbackPane + '").innerHTML = "";',ajaxfeedback_timeout);
	}
}

function resetPassword(){
		var xmlHttp;

	if(window.XMLHttpRequest) {
		xmlHttp = new XMLHttpRequest();
	} else {
		xmlHttp = new ActiveXObject("Msxml2.XMLHTTP");
	}

	var url = 'reset_password';

	var old_password =  $('old_password');
	var new_password =  $('new_password');
	var confirm_password =  $('confirm_password');
		
	var response;
	if(!old_password.value){
		response = "Please enter your old password.";
		showAjaxFeedback('password_response', '<font color="red">' + response + '</font>');	
		return false;
	}

	if(!new_password.value){
		response = "Please enter your new password.";
		showAjaxFeedback('password_response', '<font color="red">' + response + '</font>');	
		return false;
	}

	if(!confirm_password.value){
		response = "Please confirm your new password.";
		showAjaxFeedback('password_response', '<font color="red">' + response + '</font>');	
		return false;
	}

	if(confirm_password.value != new_password.value){
		response = "New Password and Confirm Password do not match.";
		showAjaxFeedback('password_response', '<font color="red">' + response + '</font>');	
		return false;
	}

	var infoString = 'old_password=' + old_password.value;
	infoString += '&new_password=' + new_password.value;
	infoString += '&confirm_password=' + confirm_password.value;
	
	// Synchronous, so pass "false" here.
	//
	xmlHttp.open("POST", url, false);
	xmlHttp.setRequestHeader("Content-Type", 
		"application/x-www-form-urlencoded; charset=UTF-8");
	xmlHttp.send(infoString);
	
	var xmldom = xmlHttp.responseXML;

	var formResult = xmldom.getElementsByTagName( 'form_result' ).item(0);

	response = formResult.getAttribute('message');			

	if (formResult.getAttribute('status') == 0) {
		showAjaxFeedback('password_response', '<font color="green">' + response + '</font>');	
	}else{
		showAjaxFeedback('password_response', '<font color="red">' + response + '</font>');	
	}
	return false;
}

function setUserEmail(){
	var xmlHttp;

	if(window.XMLHttpRequest) {
		xmlHttp = new XMLHttpRequest();
	} else {
		xmlHttp = new ActiveXObject("Msxml2.XMLHTTP");
	}

	var url = 'set_profile_record';
	
	var elm = $('email');
	var infoString = 'r[]=AboutMe';
	infoString += '&AboutMe_email=' + escape(elm.value);


	// Synchronous, so pass "false" here.
	//
	xmlHttp.open("POST", url, false);
	xmlHttp.setRequestHeader("Content-Type", 
		"application/x-www-form-urlencoded; charset=UTF-8");
	xmlHttp.send(infoString);
	
	var xmldom = xmlHttp.responseXML;

	var formResult = xmldom.getElementsByTagName( 'form_result' ).item(0);

	response = formResult.getAttribute('message');			
	
	if (formResult.getAttribute('status') == 0) {
		showAjaxFeedback('email_response', '<font color="green">Email Address Saved!</font>');	
	}else{
		showAjaxFeedback('email_response', '<font color="red">Email Address Not Saved!</font>');	
	}
	return false;
}

function do_handshake(){
	var xmlHttp;

	if(window.XMLHttpRequest) {
		xmlHttp = new XMLHttpRequest();
	} else {
		xmlHttp = new ActiveXObject("Msxml2.XMLHTTP");
	}

	var url = 'signup_handshake';
	
	var elm = $('page_load_time');
	var infoString = 'h=' + elm.value;

	// Synchronous, so pass "false" here.
	//
	xmlHttp.open("POST", url, false);
	xmlHttp.setRequestHeader("Content-Type", 
		"application/x-www-form-urlencoded; charset=UTF-8");
	xmlHttp.send(infoString);
	
	var xmldom = xmlHttp.responseXML;

	var formResult = xmldom.getElementsByTagName( 'form_result' ).item(0);

	response = formResult.getAttribute('message');			

	var payloadElem = xmldom.getElementsByTagName('payload').item(0);	

	if (formResult.getAttribute('status') == 0) {
		var key = 'm' + elm.value;
		var payload = 	RicoUtil.getContentAsString(payloadElem);
		eval(payload);
		elm.value = eval(key);
		return true;
	}

	alert('Signup handshake failed.');
	return false;
}


function ignoreUser(user_base, screen_name) 
{

	var confirm_msg = 'Do you want to ignore all comments from ' + 
		screen_name + " in all strips, forever?\nIf you change your mind later, you can always remove " + 
		screen_name + " from your Ignore List so you can see his or her comments again.";

	if (!confirm(confirm_msg)) {
		return false;
	}

	var xmlHttp;

	if (window.XMLHttpRequest) {
		xmlHttp = new XMLHttpRequest();
	} else {
		xmlHttp = new ActiveXObject("Msxml2.XMLHTTP");
	}

	var url = 'add_contact';
	
	var infoString = 'contact=' + user_base;
	infoString += '&ignore=true';
	infoString += '&' + ddxParam();

	// Synchronous, so pass "false" here.
	//
	xmlHttp.open("POST", url, false);
	xmlHttp.setRequestHeader("Content-Type", 
		"application/x-www-form-urlencoded; charset=UTF-8");
	xmlHttp.send(infoString);
	
	var xmldom = xmlHttp.responseXML;

	var formResult = xmldom.getElementsByTagName( 'form_result' ).item(0);

	response = formResult.getAttribute('message');			

	if (formResult.getAttribute('status') == 0) {
		window.location.reload( true );
	} else {
		alert(response);
	}

	return false;
}
