ajax_post = function (url, data, action) {
	//alert(url);
	new Ajax.Request(url, {
		method:'post', 
		onComplete: action,
		parameters: data
	});
}

ajax_get = function (url, action) {
	//alert(url);
	new Ajax.Request(url, {
		method:'get', 
		onComplete: action
	});
}

ajax_result = function (ajax) {
	//alert(ajax.responseText);
	if (ajax.responseText) {
		var r = ajax.responseText;
		if (r.blank()) return false;
		try {
			//var o = r.evalJSON(true);
			var o = eval("(" + r + ")");
			if (o.err) {
				alert(o.msg);
			} else {
				return o;
			}
		} catch (e) {
			alert('返回结果错误！\n Source:' + r);
		}
	}
	return false;
}

function do_ajax(u) {
	ajax_get(u, function (a) {
		if (ajax_result(a)) {
			location.reload();
		}
	});
}

function get_url_param(n) {
	var p=location.search;
	if (p.blank()) {
		var qa = location.href.replace(".shtml", "").split('\/');
		var i = 0;
		while (i < qa.length - 2) {
			i++;
			if (qa[i]==n) return qa[i + 1];
		}
	} else {
		p=p.toQueryParams();
		return p[n];
	}
}

// 调用 ajax 方法加载模块数据
function page_load_module(cid, mid) {
	if (mid && cid) {
		var p=location.search;
		var url;
		if (p.blank()) {
			var qa = location.href.replace(".shtml", "").split('\/');
			var i = 0;
			var ok = false;
			url = new Hash();
			while (i < qa.length - 2) {
				i++;
				if (ok) {
					url.set(qa[i], qa[i + 1]);
					i++;
				} else if (qa[i]=="page") {
					ok =true;
				}
			}
		} else {
			url = new Hash(p.toQueryParams());
		}		
		
		url.set('act','load');
		url.set('sid', site_id);
		url.set('cid', cid);
		url.set('mod', mid);
		ajax_get(root_url+"/module?"+url.toQueryString(),
		function (ajax) {
			var r = ajax_result(ajax);
			if (r) {
				var con = $(cid);
				if (con) {
					con.innerHTML = r.html;
				}
			}
		});
	}
}


var Url = {

	// public method for url encoding
	encode : function(string) {
		return escape(this._utf8_encode(string));
	},

	// public method for url decoding
	decode : function(string) {
		return this._utf8_decode(unescape(string));
	},

	// private method for UTF-8 encoding
	_utf8_encode : function(string) {
		string = string.replace(/\r\n/g, "\n");
		var utftext = "";

		for ( var n = 0; n < string.length; n++) {

			var c = string.charCodeAt(n);

			if (c < 128) {
				utftext += String.fromCharCode(c);
			} else if ((c > 127) && (c < 2048)) {
				utftext += String.fromCharCode((c >> 6) | 192);
				utftext += String.fromCharCode((c & 63) | 128);
			} else {
				utftext += String.fromCharCode((c >> 12) | 224);
				utftext += String.fromCharCode(((c >> 6) & 63) | 128);
				utftext += String.fromCharCode((c & 63) | 128);
			}

		}

		return utftext;
	},

	// private method for UTF-8 decoding
	_utf8_decode : function(utftext) {
		var string = "";
		var i = 0;
		var c = c1 = c2 = 0;

		while (i < utftext.length) {

			c = utftext.charCodeAt(i);

			if (c < 128) {
				string += String.fromCharCode(c);
				i++;
			} else if ((c > 191) && (c < 224)) {
				c2 = utftext.charCodeAt(i + 1);
				string += String.fromCharCode(((c & 31) << 6) | (c2 & 63));
				i += 2;
			} else {
				c2 = utftext.charCodeAt(i + 1);
				c3 = utftext.charCodeAt(i + 2);
				string += String.fromCharCode(((c & 15) << 12)
						| ((c2 & 63) << 6) | (c3 & 63));
				i += 3;
			}

		}

		return string;
	}
}