function bbsLogin(obj,recall){
	var param={};
	param['formhash']=$(obj).find('input[name=formhash]').val();
	param['referer']=$(obj).find('input[name=referer]').val();
	param['username']=$(obj).find('input[name=username]').val();
	param['password']=$(obj).find('input[name=password]').val();
	param['questionid']=$(obj).find('input[name=questionid]').val();
	param['answer']=$(obj).find('input[name=answer]').val();
	param['loginsubmit']=$(obj).find('input[name=loginsubmit]').val();
	param['cookietime']=$(obj).find('input[name=cookietime]').val();
	if(!recall) recall='';
	var url=$(obj).attr('action');
	ajaxpost(url,param,recall);
}
function bbsRegist(obj,recall){
	var param={};
	param['formhash']=$(obj).find('input[name=formhash]').val();
	param['referer']=$(obj).find('input[name=referer]').val();
	param['handlekey']=$(obj).find('input[name=handlekey]').val();
	param['activationauth']=$(obj).find('input[name=activationauth]').val();
	param['username']=$(obj).find('input[name=username]').val();
	param['password']=$(obj).find('input[name=password]').val();
	param['password2']=$(obj).find('input[name=password2]').val();
	param['email']=$(obj).find('input[name=email]').val();
	param['regsubmit']=$(obj).find('input[name=true]').val();
	if(!recall) recall='';
	var url=$(obj).attr('action');
	ajaxpost(url,param,recall);
}
function ajaxpost(url,param,recall){
	$.post(url,param,function (xml){
		var xmlstr=$(xml).find('root').text();
		if(evalscript(xmlstr)){
			if (typeof recall == 'function') {
				recall();
			} else {
				eval(recall);
			}
		}
	});
}


//以下改自bbs的common.js
var BROWSER=getBrowser();
function getBrowser(){
	var b = {};
	var u = navigator.userAgent.toLowerCase();
	b.ie = window.ActiveXObject && u.indexOf('msie') != -1
			&& u.substr(u.indexOf('msie') + 5, 3);
	b.firefox = document.getBoxObjectFor
			&& u.indexOf('firefox') != -1
			&& u.substr(u.indexOf('firefox') + 8, 3);
	b.chrome = window.MessageEvent && !document.getBoxObjectFor
			&& u.indexOf('chrome') != -1
			&& u.substr(u.indexOf('chrome') + 7, 10);
	b.opera = window.opera && opera.version();
	b.safari = window.openDatabase && u.indexOf('safari') != -1
			&& u.substr(u.indexOf('safari') + 7, 8);
	b.other = !b.ie && !b.firefox && !b.chrome
			&& !b.opera && !b.safari;
	b.firefox = b.chrome ? 1 : b.firefox;
	return b;
}

function evalscript(xml) {
	s=xml.toString();
	if (s.indexOf('<script') == -1){
		alert(s);
		return false;
	}else{
		var p = /<script[^\>]*?>([^\x00]*?)<\/script>/ig;
		var arr = [];
		while (arr = p.exec(s)) {
			var p1 = /<script[^\>]*?src=\"([^\>]*?)\"[^\>]*?(reload=\"1\")?(?:charset=\"([\w\-]+?)\")?><\/script>/i;
					var arr1 = [];
			arr1 = p1.exec(arr[0]);
			if (arr1) {
				appendscript(arr1[1], '', arr1[2], arr1[3]);
			} else {
				p1 = /<script(.*?)>([^\x00]+?)<\/script>/i;
				arr1 = p1.exec(arr[0]);
				appendscript('', arr1[2], arr1[1].indexOf('reload=') != -1);
			}
		}
		return true;
	}
}
function appendscript(src, text, reload, charset) {
	var id = hash(src + text);
	var evalscripts = [];
	if (!reload && in_array(id, evalscripts))
		return;
	if (reload && document.getElementById(id)) {
		document.getElementById(id).parentNode.removeChild(document.getElementById(id));
	}
	evalscripts.push(id);
	var scriptNode = document.createElement("script");
	scriptNode.type = "text/javascript";
	scriptNode.id = id;
	scriptNode.charset = charset ? charset
			: (BROWSER.firefox ? document.characterSet : document.charset);
	try {
		if (src) {
			scriptNode.src = src;
		} else if (text) {
			scriptNode.text = text;
		}
		document.getElementById('append_parent').appendChild(scriptNode);
	} catch (e) {
	}
}
function hash(string, length) {
	var length = length ? length : 32;
	var start = 0;
	var i = 0;
	var result = '';
	filllen = length - string.length % length;
	for (i = 0; i < filllen; i++) {
		string += "0";
	}
	while (start < string.length) {
		result = stringxor(result, string.substr(start, length));
		start += length;
	}
	return result;
}
function in_array(needle, haystack) {
	if (typeof needle == 'string' || typeof needle == 'number') {
		for ( var i in haystack) {
			if (haystack[i] == needle) {
				return true;
			}
		}
	}
	return false;
}
function stringxor(s1, s2) {
	var s = '';
	var hash = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';
	var max = Math.max(s1.length, s2.length);
	for ( var i = 0; i < max; i++) {
		var k = s1.charCodeAt(i) ^ s2.charCodeAt(i);
		s += hash.charAt(k % 52);
	}
	return s;
}