/*****下面是AJAX 2.0功能*******/
//常用函数
function $(id) {
	return document.getElementById(id);
}
function trim(str) {
	return (str + '').replace(/(\s+)$/g, '').replace(/^\s+/g, '');
}
function arraypop(a) {
	if(typeof a != 'object' || !a.length) {
		return null;
	} else {
		var response = a[a.length - 1];
		a.length--;
		return response;
	}
}

function arraypush(a, value) {
	a[a.length] = value;
	return a.length;
}
function in_array(needle, haystack) {
	if(typeof needle == 'string') {
		for(var i in haystack) {
			if(haystack[i] == needle) {
					return true;
			}
		}
	}
	return false;
}


var xml_http_building_link = '请等待，正在建立连接...';
var xml_http_sending = '请等待，正在发送数据...';
var xml_http_loading = '请等待，正在接受数据...';
var xml_http_load_failed = '通信失败，请刷新重新尝试！';
var xml_http_data_in_processed = '通信成功，数据正在处理中...';
//AJAX WEB2.0功能
var Ajaxs = new Array();
function Ajax(recvType, statusId) {
	var aj = new Object();
	aj.statusId = statusId ? document.getElementById(statusId) : null;
	aj.targetUrl = '';
	aj.sendString = '';
	aj.recvType = recvType ? recvType : 'XML';
	aj.resultHandle = null;

	aj.createXMLHttpRequest = function() {
		var request = false;
		if(window.XMLHttpRequest) {
			request = new XMLHttpRequest();
			if(request.overrideMimeType) {
				request.overrideMimeType('text/xml');
			}
		} else if(window.ActiveXObject) {
			var versions = ['Microsoft.XMLHTTP', 'MSXML.XMLHTTP', 'Microsoft.XMLHTTP', 'Msxml2.XMLHTTP.7.0', 'Msxml2.XMLHTTP.6.0', 'Msxml2.XMLHTTP.5.0', 'Msxml2.XMLHTTP.4.0', 'MSXML2.XMLHTTP.3.0', 'MSXML2.XMLHTTP'];
			for(var i=0; i<versions.length; i++) {
				try {
					request = new ActiveXObject(versions[i]);
					if(request) {
						return request;
					}
				} catch(e) {
					//alert(e.message);
				}
			}
		}
		return request;
	}

	aj.XMLHttpRequest = aj.createXMLHttpRequest();

	aj.processHandle = function() {
		
		if(aj.statusId) {
			aj.statusId.style.display = '';
		}
		
		if(aj.XMLHttpRequest.readyState == 1 && aj.statusId) {
			aj.statusId.innerHTML = xml_http_building_link;
		} else if(aj.XMLHttpRequest.readyState == 2 && aj.statusId) {
			aj.statusId.innerHTML = xml_http_sending;
		} else if(aj.XMLHttpRequest.readyState == 3 && aj.statusId) {
			aj.statusId.innerHTML = xml_http_loading;
		} else if(aj.XMLHttpRequest.readyState == 4) {
			if(aj.XMLHttpRequest.status == 200) {
				for(k in Ajaxs) {
					if(Ajaxs[k] == aj.targetUrl) {
						Ajaxs[k] = null;
					}
				}

				if(aj.statusId) {
					aj.statusId.innerHTML = xml_http_data_in_processed;
					aj.statusId.style.display = 'none';
				}
				
				if(aj.recvType == 'HTML') {
					aj.resultHandle(aj.XMLHttpRequest.responseText, aj);
				} else if(aj.recvType == 'XML') {					
					aj.resultHandle(aj.XMLHttpRequest.responseXML.lastChild.firstChild.nodeValue, aj);
				}
			} else {
				if(aj.statusId) {
					aj.statusId.innerHTML = xml_http_load_failed;
				}
			}
		}		
		
	}

	aj.get = function(targetUrl, resultHandle) {
		
		if(in_array(targetUrl, Ajaxs)) {
			return false;
		} else {
			arraypush(Ajaxs, targetUrl);
		}
		
		aj.targetUrl = targetUrl;
		aj.XMLHttpRequest.onreadystatechange = aj.processHandle;
		aj.resultHandle = resultHandle;		
		
		if(window.XMLHttpRequest) {
			
			aj.XMLHttpRequest.open('GET', aj.targetUrl);
			
			aj.XMLHttpRequest.send(null);			
		} else {
		        aj.XMLHttpRequest.open("GET", targetUrl, true);
		        aj.XMLHttpRequest.send();
		}						
	}

	aj.post = function(targetUrl, sendString, resultHandle) {
		if(in_array(targetUrl, Ajaxs)) {
			return false;
		} else {
			arraypush(Ajaxs, targetUrl);
		}
		aj.targetUrl = targetUrl;
		aj.sendString = sendString;
		aj.XMLHttpRequest.onreadystatechange = aj.processHandle;
		aj.resultHandle = resultHandle;
		aj.XMLHttpRequest.open('POST', targetUrl);
		aj.XMLHttpRequest.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
		aj.XMLHttpRequest.send(aj.sendString);
	}
	return aj;
}

function buildSelectOption(so, to)
{
	var obj = $(to);	
	obj.innerHTML = "";			
	var sOption = document.createElement("OPTION");
  sOption.text = "--请选择--";
  sOption.value = "";      
  obj.options.add(sOption);
	ajaxresponse(to, 'action=gettreecode&pid='+so.value+'&rd='+Math.random());
}
function buildTargetSelectOption(so, to, v)
{
	var obj = $(to);	

	obj.innerHTML = "";			
	var sOption = document.createElement("OPTION");
	
  sOption.text = "请选择 到达国家……　　　　　　　　　　　　　　　　　　";
  sOption.value = "";   
  obj.options.add(sOption);

	ajaxresponse(to, 'action=gettargettreecode&pid='+so.value+'&rd='+Math.random(), v);
}
function buildCXSelectOption(so, to, v)
{
	//alert(v);
	var obj = $(to);	
	obj.innerHTML = "";			
	var sOption = document.createElement("OPTION");
  sOption.text = "请选择 到达城市……　　　　　　　　　　　　　　　　　　";
  sOption.value = "";      
  obj.options.add(sOption);  
	ajaxresponse(to, 'action=getchexi&pid='+so.value+'&rd='+Math.random(),v);
}

function buildTargetOption(so, to)
{
	var obj = $(to);	
	obj.innerHTML = "";			
	var sOption = document.createElement("OPTION");
  sOption.text = "--请选择--";
  sOption.value = "";      
  obj.options.add(sOption);
	ajaxresponse(to, 'action=gettargetoption&pid='+so.value+'&rd='+Math.random());
}

function ajaxresponse(objname, da, v) {	
	var x = new Ajax('HTML');
	x.get('/ajax.php?' + da, function(s){		

			if (s != '')
			{
			
				var obj = $(objname);		
				var sA = s.split("\|");
				for (var i = 0; i < sA.length; i++)
				{
					var ssA = sA[i].split(",");				
					var sOption = document.createElement("OPTION");
		      sOption.text = ssA[1];
		      sOption.value = ssA[0]; 
		      
		      if (ssA[0] == v) sOption.selected = true;
		      
		      obj.options.add(sOption);
				}
			}
			
	});
}
