/**
Any page using this js should also import base.js and have the magic swf object embedded. 
*/
var magic = 0;
var magicRetryErrorShow = "很抱歉！由于未知原因，服务器不认可客户端的请求。<a href='http://tieba.baidu.com/f?kw=%D2%E0%B8%E8'>报告该异常</a>";
// Server needs the correct magic on the request. This method appends the magic
// to the params and if the server complains the magic is incorrect, then computes
// the correct one and resubmits.
function sendMagicRequest(url, params, show, callBack, arg, retry) {
	if (typeof retry == 'undefined')
		retry = false; 
	var arr = [url, params, show, callBack, arg, retry];
	var fullParams = params == "" ? "magic=" + magic : params + "&magic=" + magic;
	sendRequest(url, fullParams, show, magicBack, arr);
}
function magicBack(xmlHttp, arr) {
	var url = arr[0];
	var params = arr[1];
	var show = arr[2];
	var callBack = arr[3];
	var arg = arr[4];
	var retry = arr[5];
	
	var xmlDOM = xmlHttp.responseXML;
	var root = xmlDOM.documentElement;		// It's 'info'
	try	{
		var result = root.getElementsByTagName('result')[0];
		var resultCode = result.getAttribute("resultCode");
		if (resultCode == "3239" || resultCode == "3240" || resultCode == "3241") {
			// No magic given, magic format error, or incorrect magic. Resubmit.
			if (retry) {
				show.innerHTML = magicRetryErrorShow;
			} else {
				var seed = getContent(root.getElementsByTagName('seed')[0]);
				magic = document["magic"].getMagicKey(seed);
				sendMagicRequest(url, params, show, callBack, arg, true);	// It's retry
			}
		} else {
			callBack(xmlHttp, arg);
		}
	} catch(exception) {
		show.innerHTML = badFormatShow;
	}
}


