var http_request = false;

function sendAjaxRequest(url, args, mode, callback)
{
	http_request = getHttpRequest();
	http_request.onreadystatechange = callback;
	
	if(mode == 'POST' || mode == 'post')
	{
		http_request.open("POST", url , true);
		http_request.setRequestHeader("Content-Length", args.length);  
		http_request.setRequestHeader("CONTENT-TYPE","application/x-www-form-urlencoded");
		http_request.send(args);
	}
	else
	{
		url = url + "?" + args;
		http_request.open("GET", url, true); // ??????????URL????????????
		http_request.send(null);
	}
}

function getHttpRequest()
{
	var http_request = false; // ?????XMLHttpRequest??
	if(window.XMLHttpRequest) // Mozilla ???
	{ 	
		http_request = new XMLHttpRequest();
		if (http_request.overrideMimeType) // ??MiME??
		{	
			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) // ???????????
	{ 	
		window.alert("????XMLHttpRequest????.");
		return false;
	}
	return (http_request);
}

// ---------------------------------------------------------------------------

// 梁广智 2006.10.11 创建
function ajax_send_request(url, callback, mode, method) { // 初始化、指定处理函数、发送请求的函数

	var http_request = false;
	//开始初始化XMLHttpRequest对象
	if(window.XMLHttpRequest) { // Mozilla 浏览器
		http_request = new XMLHttpRequest();
		if (http_request.overrideMimeType) { // 设置MiME类别
			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) { // 异常，创建对象实例失败
		window.alert("不能创建XMLHttpRequest对象实例.");
		return false;
	}
	
	function f() {
	    if (http_request.readyState == 4) { // 判断对象状态
	        if (http_request.status == 200) { // 信息已经成功返回，开始处理信息
	        	var response = trim(http_request.responseText);
	            callback(response, null);
	        } 
	        else { // 页面不正常
	        	callback(null, http_request.status);
	        }
	    }	
	}
	
	http_request.onreadystatechange = f;
	
	if (method == null) {
		method = "GET";
	}
	
	if (mode == null) {
		mode = true;
	}
	
	http_request.open(method, url, mode);
	http_request.send(null);
}

function ajax_check_tip(divId, url, mode) {
	document.getElementById(divId).innerHTML = "检测中，请稍后...";
	
	function f(response, status) {
		
		if (status != null) {
        	document.getElementById(divId).className = "player_error";
			document.getElementById(divId).innerHTML = "&nbsp;<img src=../images/guide_warning.gif width=18 height=18>·您所请求的页面有异常(" + status + ")。";
			return;
		}
		
    	if (response.length > 0) {
    		if (response.charAt(0) == '0') {
    			document.getElementById(divId).className = "player_error";
				document.getElementById(divId).innerHTML = "&nbsp;<img src=../images/guide_warning.gif width=18 height=18>" + response.substring(1);       	
    		}
    		if (response.charAt(0) == '1') {
    			document.getElementById(divId).className = "player_success";
    			var content = "填写正确！";
    			if (response.length > 1) {
    				content = response.substirng(1);
    			}
				document.getElementById(divId).innerHTML = "<img src=../images/icon_right.gif>" + content;      	
    		}
        } 
        else {
        	alert("服务器输出格式错误！");
        }		
		
	}
	
	ajax_send_request(url, f, mode, "GET");
}

function ajax_get_response(url, mode) {
	var result = "";
	function f(v) { 
		result = v;
	}
	ajax_send_request(url, f, mode, "GET");
	return result;
}

// ajax动态提示
var ajax_show_tip_index = -1;
var ajax_show_tip_origen_method = "";

function ajax_show_tip(url, callback, input) {

	// 构建回调函数
	function f(result, status) {
		
		var textArray = new Array();
		var valueArray = new Array();
		
		if (result == null) {
			return;
		}
		
		// 根据规则提取信息
		var front = 0; 
		var end = 0;
		end = result.indexOf("#&*");
		while (end != -1) {
			textArray.push(result.substring(front, end));
			front = end + 3;
			end = result.indexOf("#&*", front);
		}
		front += 3;
		end = result.indexOf("$$$", front);
		while (end != -1) {
			valueArray.push(result.substring(front, end));
			front = end + 3;
			end = result.indexOf("$$$", front);
		}
		if (textArray.length < 1)
			return;
			
		
		// 构造显示提示列表的层
		var div = document.getElementById("ajax_show_tip_div");
		var table = document.getElementById("ajax_show_tip_table");
		if (div == null) {
			ajax_show_tip_origen_method = input.onkey;
		}
		
		if (div == null)  {
			// 构造div
			var div = document.createElement("div");
			div.setAttribute("id", "ajax_show_tip_div");
			div.style.backgroundColor = "white";
			div.style.position = "absolute";
			div.style.border = "1 solid";
			div.style.overflow = "auto";
			var rc = input.getBoundingClientRect();
			div.style.left = rc.left;
			div.style.top = rc.bottom;
			div.style.width = rc.right - rc.left;
			document.body.appendChild(div);
			
			// 构造table
			table = document.createElement("table");
			table.setAttribute("id", "ajax_show_tip_table");
			table.setAttribute("width", "100%");
			div.appendChild(table);
		}
		
		div.style.display = "block";
		
		
		// 清除以前的数据表格
		while(table.rows.length > 0) {
			table.deleteRow(0);
		}
		
		// 构造数据表格
		for (var i = 0; i < textArray.length; i++) {
			function over() {
				ajax_show_tip_index = this.rowIndex;
				this.style.backgroundColor = "#c7e5ed";
			}
			function out() {
				this.style.backgroundColor = "white";
			}
			function click() {
				callback(textArray[ajax_show_tip_index], valueArray[ajax_show_tip_index]);
			}
			var row = table.insertRow();
			row.onmouseover = over;
			row.onmouseout = out;
			row.onclick = click;
			var cell = row.insertCell();
			cell.innerHTML = textArray[i];
		}
		
		// 焦点丢失事件
		function hidden() {
			div.style.display = "none";
			input.onkey = ajax_show_tip_origen_method;
		}
		input.onblur = hidden;
		
		// 相应键盘事件
		function keyAction() {
			var rows = table.rows;
			if (event.keyCode == 40) {
				if (ajax_show_tip_index < rows.length - 1) {
					if (ajax_show_tip_index > -1)
						rows[ajax_show_tip_index].className = "";
					ajax_show_tip_index++;
					rows[ajax_show_tip_index].className = "selected";
				}
			}
			else if (event.keyCode == 38) {
				if (ajax_show_tip_index > 0){
					rows[ajax_show_tip_index].className = "";
					ajax_show_tip_index--;
					rows[ajax_show_tip_index].className = "selected";
				}
			}
			else if (event.keyCode == 13) {
				if (ajax_show_tip_index == -1)
					return;
				callback(textArray[ajax_show_tip_index], valueArray[ajax_show_tip_index]);
				hidden();
			}
		}
		input.onkeyup = keyAction;		
		
	}

	ajax_send_request(url, f, true, "POST");
}