function mpri(url,params,w) {    
	var http_request = false;

	if (window.XMLHttpRequest) { // Mozilla, Safari,...
		http_request = new XMLHttpRequest();
		if (http_request.overrideMimeType) {
			http_request.overrideMimeType('text/xml');
		}
	} else if (window.ActiveXObject) { // IE
		try {
			http_request = new ActiveXObject("Msxml2.XMLHTTP");
		} catch (e) {
			try {
				http_request = new ActiveXObject("Microsoft.XMLHTTP");
			} catch (e) {}
		}
	}

	if (!http_request) {
		alert('Giving up :( Cannot create an XMLHTTP instance');
		return false;
	}

	var loadingImg = document.createElement('img');
	loadingImg.src = 'modules/mod_ajaxrecommend.php?image=1';
	loadingImg.width = '13';
	loadingImg.height = '13';
	document.getElementById('DivRcm').setAttribute('align', 'center');
	document.getElementById('DivRcm').innerHTML = w + "<br />";
	document.getElementById('DivRcm').appendChild(loadingImg);
	document.getElementById('DivRcm').ajaxInProgress = true;

	http_request.onreadystatechange = function() {
		processContents(http_request);
	}
	http_request.open('POST', url, true);
	http_request.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
	http_request.setRequestHeader("Content-length", params.length);
	http_request.setRequestHeader("Connection", "close");
	http_request.send(params);
}

function prfi(i,n,e,f,s,c,m) {
	document.getElementById('DivRcm').innerHTML = "";
	if ( InvalidEmail || (RcmToArrValue[0]!="" && invalid_to_email()) ) {
		document.getElementById('DivRcm').innerHTML += "<font color=\"#FF0000\">" + i + "</font><br />";
	}
	document.getElementById('DivRcm').innerHTML +=
		"<form name=\"rcmform\" id=\"rcmform\" method=\"post\" action=\"javascript:get(document.getElementById('rcmform'));\">" +
		"<table border=\"0\" cellspacing=\"0\" cellpadding=\"0\">" +
		"<tr>" +
		"<td>" + n + "<br />" +
		"<div id=\"DivRcmFrom\"></div></td>" +
		"</tr>" +
		"<tr>" +
		"<td nowrap=\"nowrap\">*&nbsp;" + e + "<br />" +
		"<div id=\"DivRcmEmail\"></div></td>" +
		"</tr>" +
		"<tr>" +
		"<td nowrap=\"nowrap\">*&nbsp;" + f + "<br />" +
		"<div id=\"DivRcmTo\"></div></td>" +
		"</tr>" +
		"<tr><td nowrap=\"nowrap\"><div align=\"right\" id=\"DivRcmCmd\"></div></td></tr>" +
		"<tr><td nowrap=\"nowrap\"><div id=\"DivRcmMsg\"></div></td></tr>" +
		"<tr>" +
		"<td><input type=\"button\" name=\"send\" value=\"" + s + "\" class=\"button" + m + "\" onclick=\"javascript:get(this.parentNode);\" />&nbsp;" +
		"<input type=\"button\" name=\"cancel\" value=\"" + c + "\" class=\"button" + m + "\" onclick=\"javascript:rcm_cancel();\" /></td>" +
		"</tr>" +
		"</table>" +
		"</form>";
		build_rcm_from_field ();
		build_rcm_email_field ();
		build_rcm_to_field ();
		build_rcm_msg_field ();
}

function brtfi(is,ms) {
	document.getElementById('DivRcmTo').innerHTML = "";
	for (i=0; i < RcmToArrValue.length; i++) {
		if (InvalidTo[i]==1) {
			addstyle = " style=\"border-color:#FF0000\";";
		} else {
			addstyle = "";
		}
		document.getElementById('DivRcmTo').innerHTML += "<input type=\"text\" id=\"rcm_to_email_" + i + "\" name=\"rcm_to_email[]\" size=\"" + is + "\" value=\"" + RcmToArrValue[i] + "\" class=\"inputbox" + ms + "\"" + addstyle + " onchange=\"javascript: save_rcm_to_field (this.id, this.value)\" /><br />";
	}
	if (RcmToArrValue.length > 1) {
		document.getElementById('DivRcmCmd').innerHTML = "<a href=\"javascript: rcmx ()\" onclick=\"javascript: pop_rcm_to_field()\">[-]</a> <a href=\"javascript: rcmx ()\" onclick=\"javascript: push_rcm_to_field()\">[+]</a>";
	} else {
		document.getElementById('DivRcmCmd').innerHTML = "<a href=\"javascript: rcmx ()\" onclick=\"javascript: push_rcm_to_field()\">[+]</a>";
	}
}

function brffi(is,ms) {
	document.getElementById('DivRcmFrom').innerHTML = "<input type=\"text\" id=\"rcm_from_name\" name=\"rcm_from_name\" size=\"" + is + "\" value=\"" +
	RcmFromValue + "\" class=\"inputbox" + ms + "\"" +
	" onchange=\"javascript: save_rcm_from_field (this.value)\" />";
}

function brefi(is,ms) {
	if (InvalidEmail) {
		addstyle = " style=\"border-color:#FF0000\";";
	} else {
		addstyle = "";
	}
	document.getElementById('DivRcmEmail').innerHTML = "<input type=\"text\" id=\"rcm_from_email\" name=\"rcm_from_email\" size=\"" + is + "\" value=\"" +
	RcmEmailValue + "\" class=\"inputbox" + ms + "\"" + addstyle +
	" onchange=\"javascript: save_rcm_email_field (this.value)\" />";
}

function prmfi(ym,ms,tr,tc) {
	document.getElementById('DivRcmMsg').innerHTML = ym + " <a href=\"javascript: rcmx ()\" onclick=\"javascript: pop_rcm_msg_field()\">[-]</a><br />" +
	"<textarea id=\"rcm_text\" name=\"rcm_text\" class=\"inputbox" + ms + "\" rows=\"" + tr + "\" cols=\"" + tc + "\" onchange=\"javascript: save_rcm_msg_field (this.value)\">" +
	RcmMsgValue +
	"</textarea>";
}

function pormfi(ym) {
	RcmMsgValue = "";
	document.getElementById('DivRcmMsg').innerHTML = ym + " <a href=\"javascript: rcmx ()\" onclick=\"javascript: push_rcm_msg_field()\">[+]</a><br /><br />";
}

function processContents(http_request) {
	if (http_request.readyState == 4) {
        	document.getElementById('DivRcm').removeAttribute('align');
            if (http_request.status == 200) {
                document.getElementById('DivRcm').innerHTML = http_request.responseText;
            } else {
                document.getElementById('DivRcm').innerHTML = 'There was a problem with the request.';
            }
        }
}
    
function get(obj) {
	if (!ValidEmail(document.getElementById('rcm_from_email').value)) {
		InvalidEmail = 1;
	} else {
		InvalidEmail = 0;
	}
	for (i=0; i < RcmToArrValue.length; i++) {
		if (!ValidEmail(RcmToArrValue[i])) {
			InvalidTo[i] = 1;
		} else {
			InvalidTo[i] = 0;
		}
	}
	if (InvalidEmail || invalid_to_email()) {
		print_rcm_form();
	} else {
		var rcm_to_email = RcmToArrValue.join();
		var poststr = "rcm_from_name=" + encodeURI( document.getElementById('rcm_from_name').value ) +
			"&rcm_from_email=" + encodeURI( document.getElementById('rcm_from_email').value ) +
			"&rcm_to_email=" + encodeURI( rcm_to_email );
		if (document.getElementById('rcm_text')) {
			poststr += "&rcm_text=" + encodeURI( document.getElementById('rcm_text').value );
		}
		makePOSTRequest('modules/mod_ajaxrecommend.php', poststr);
	}
}

function push_rcm_to_field () {
	if (RcmToArrValue[RcmToArrValue.length-1]!="") {
		RcmToArrValue.push("");
		build_rcm_to_field ();
	}
}

function pop_rcm_to_field () {
	if (RcmToArrValue.length > 1) {
		RcmToArrValue.pop();
		InvalidTo[RcmToArrValue.length] = 0;
		build_rcm_to_field ();
	}
}

function save_rcm_to_field (id, str) {
	pos = id.substring(13, id.length);
	RcmToArrValue[pos] = str;
}

function save_rcm_from_field (str) {
  	RcmFromValue = str;
}

function save_rcm_email_field (str) {
	RcmEmailValue = str;
}

function build_rcm_msg_field () {
	if (RcmMsgValue!="") {
		push_rcm_msg_field ();
	} else {
		pop_rcm_msg_field ();
	}
}

function save_rcm_msg_field (str) {
	RcmMsgValue = str;
}

function rcm_cancel () {
	RcmFromValue = "";
	RcmEmailValue = "";
	RcmToArrValue = Array(0);
	RcmToArrValue.push("");
	InvalidEmail = 0;
	InvalidTo = new Array(0);
	InvalidTo.push(0);
	RcmMsgValue = "";
	print_rcm_form();
}

function invalid_to_email() {
	flag = false;
	for (i=0; i < RcmToArrValue.length; i++) {
		if (!ValidEmail(RcmToArrValue[i])) {
			flag = true;
			break;
		}
	}
	return flag;
}

function rcmx () {
	return;
}

function ValidEmail (email) {
	var emailPat=/^(.+)@(.+)$/
	var specialChars="\\(\\)<>@,;:\\\\\\\"\\.\\[\\]"
	var validChars="\[^\\s" + specialChars + "\]"
	var quotedUser="(\"[^\"]*\")"
	var ipDomainPat=/^\[(\d{1,3})\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})\]$/
	var atom=validChars + '+'
	var word="(" + atom + "|" + quotedUser + ")"
	var userPat=new RegExp("^" + word + "(\\." + word + ")*$")
	var domainPat=new RegExp("^" + atom + "(\\." + atom +")*$")
	var matchArray=email.match(emailPat)
	if (matchArray==null) {
		return false
	}
	var user=matchArray[1]
	var domain=matchArray[2]
	if (user.match(userPat)==null) {
		return false
	}
	var IPArray=domain.match(ipDomainPat)
	if (IPArray!=null) {
		// this is an IP address
		  for (var i=1;i<=4;i++) {
			if (IPArray[i]>255) {
			return false
		    }
		  }
		return true
	}
	var domainArray=domain.match(domainPat)
	if (domainArray==null) {
		return false
	}
	var atomPat=new RegExp(atom,"g")
	var domArr=domain.match(atomPat)
	var len=domArr.length
	if (domArr[domArr.length-1].length<2 ||
		domArr[domArr.length-1].length>4) {
		return false
	}
	if (len<2) {
	   return false
	}
	return true;
}