//基于Script的跨域SRV调用 Cross-site SRV
if(typeof IO == 'undefined' )IO = {};
IO.XSRV = function(){
	this.Init.apply(this, arguments);
}; 
IO.XSRV.CallbackList = [];
IO.XSRV.prototype = {
	_url : null,
	_err_cb : null,
	_loader : null,
	Init : function(a_ServiceURL, a_ErrorCB, a_loader){
		var l_opt = {};
		this._err_cb = a_ErrorCB;
		this._url = a_ServiceURL;
		if(a_loader)
		{
			if(typeof a_loader == 'string')
			{
				this._loader = document.getElementById(a_loader);
			}
			else
			{
				this._loader = a_loader;
			}
		}
		else 
		{
			this._loader = document.body;
		}
	},
	//当存在a_cid参数的时候 , 此请求使用指定的回调命名，方便Squid缓存起效果
	//若a_cid不存在，则使用当前时间戳为回调命名，让本地和Squid的缓存不起效果
	Call : function(a_srvname, a_callback, a_arguments, a_cid){
		if(a_cid)
		{
			var id = a_cid;
		}
		else
		{
			var id = (new Date()).getTime();
//			var id = Math.ceil(100000000*Math.random());
//			这句解决ie6下时间戳一致的bug
		}
		var l_load_path = this._url + '/' +
		   		'IO.XSRV.CallbackList[\'' + id  + '\']' + '/' + a_srvname;
		var l_parastr = '';
		if(typeof a_arguments == 'object')
		{
			for(var k in a_arguments)
			{
				if(l_parastr == '')
				{
					l_parastr = k + '=' + a_arguments[k];
				}
				else
				{
					l_parastr += '&' + k + '=' + a_arguments[k];
				}
			}
		}
		l_load_path = l_load_path + '?' + l_parastr;

		var l_el= document.createElement("script");
		l_el.type = "text/javascript";
		l_el.src = l_load_path;
		IO.XSRV.CallbackList[id] = function(a_data) {
			delete IO.XSRV.CallbackList[id];
			l_el.parentNode.removeChild(l_el);
			a_callback(a_data, id);
		}
		this._loader.appendChild(l_el);
	}
}
