var $ = function(id) {return document.getElementById(id);}

function ajax(url, pars, fun, method) {
	var request = false;
	var method  = method || "get";

	try {
		request = new XMLHttpRequest();
	} catch (trymicrosoft) {
		try {
			request = new ActiveXObject("Msxml2.XMLHTTP");
		} catch (othermicrosoft) {
			try {
				request = new ActiveXObject("Microsoft.XMLHTTP");
			} catch (failed) {
				request = false;
			}
		}
	}
	if (!request) alert("Error initializing XMLHttpRequest!");

	request.onreadystatechange = function() {
		if (request.readyState==4 && request.status == 200) {
			fun(request);
		}
	}

	if(method.toLowerCase() == "post") {
		request.open('POST', url, true);
		request.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded; charset=UTF-8');
		request.send(pars);
	} else {
		request.open("GET", url+'?' + pars, true);
		request.send(null);
	}
}

function catchAll(e, id){
	var e = e || window.event;
	var obj = (e.target) ? e.target : e.srcElement;
	var inputs = $(id).getElementsByTagName("input");
	var sum = inputs.length;

	for (var i=0; i<sum; i++)
	{
		if (inputs[i].type == "checkbox")
		{
			if (obj.checked)
				inputs[i].checked = true; // 先点击, 后触发事件
			else
				inputs[i].checked = false;
		}
	}
}

// 取得字符串中指定变量的值
String.prototype.getPars = function(key)
{
	var val = "";

	if(this.length>0)
	{
		// 参数可能 ?a=1&b=2; 不判断的话可能 ?abc=1&c=2 要去 c 的话, 会先取到 abc 的值
		var offset  = -1;
		var testFir = this.indexOf("?" +key+ "=");
		var testNet = this.indexOf("&" +key+ "=");
		if (-1 != testFir) 
			var offset = testFir;
		else if (-1 != testNet)
			var offset = testNet;

		if (offset != -1)
		{
			offset += key.length+2;
			end = this.indexOf("&", offset);
			if (end == -1) end = this.length;
			val = this.substring(offset, end);
		}
	}

	return val;
}

// 获取表单数据
function getData(formId, force) {
	var force = force || false;
	var obj = $(formId);
	var ln  = obj.length;
//alert(formId+"\n"+ln);
	var qs  = '';
	var val = '';
	var and = '';

	// 遍历得到所有值
	for (var i=0; i<ln; i++) {
		var ele = obj[i];

		if ("" != ele.name) {
			var type = ele.type;
			if ("select-one" == type) { // 没测试, 需要再加吧
				val = ele.options[ele.selectedIndex].value;
				if (force && "" == val) continue;
			} else if ("checkbox" == type || "radio" == type) {
				if (ele.checked == false) continue;
				val = ele.value;
				if (force && "" == val) continue;
			} else {
				val = ele.value;
				if (force && "" == val) continue;
			}

			qs += and +ele.name+ "=" +val.replace(/\&/g,"%26");
			and = "&";
		}
	}

	return qs;
}
