// 获取好友列表
function get_friends(_callback,uin,from_guest)
{
	var qq = validate_qq(uin) ? uin : getUin();
	var url = 'http://users.qzone.qq.com/cgi-bin/friend/friend_get_city.cgi?cb=1&uin=' + qq;

	function callback(friends)
	{
		if(from_guest && friends && friends.error && friends.error.msg)
		{
			_callback(false);
			return false;
		}

		if(!friends || !friends.items)
		{
			show_alert_panel('好友拉取失败，请稍后再试。' , '拉取失败');
			return false;
		}

		friends = friends.items;
		store_friends_data(friends);
		if(_callback)
		{
			_callback(friends);
		}
	}

	try
	{
		loadJsonData("get_friends",url,callback,null,false,"","_Callback");
	} catch (e) {
		callback({items:[]});
	}
}

function store_friends_data(friends)
{
	var data = {};
	for(var i = 0 ; i < friends.length ; i++)
	{
		var f_qq = friends[i].uin;
		data[f_qq] = friends[i];
	}
	window.friends = data;
}

// 获取分组列表
function get_groups(_callback)
{
	var qq = getUin();
	var url = 'http://users.qzone.qq.com/fcg-bin/friend/friend_get_group.fcg?cb=1&uin=' + qq;

	function callback(groups)
	{
		if(!groups || !groups.items)
		{
			show_alert_panel('好友拉取失败，请稍后再试。' , '拉取失败');
		}

		groups = groups.items;
		if(_callback)
		{
			_callback(groups);
		}
	}
	loadJsonData("myFriendGroup",url,callback,null,false,"","_Callback");
}


function build_list(data , type)
{
	if(data['online'])
	{
		var online_html = '<p class="online" title="在线"><span>在线</span></p>';
	}
	else
	{
		var online_html = '<p class="notinline" title="离线"><span>离线</span></p>';
	}
	if(!data['remark'])
	{
		data['remark'] = '<span style="color:#ccc">点这修改备注</span>';
		data['modify_remark'] = '在此修改备注内容';
	}
	else
	{
		data['modify_remark'] = data['remark'];
	}

	if(type == 'last_friends')
	{
		return '<li><p class="visit_pic"><a href="/index.php?mod=user&act=guest&uin=' + data['qq'] + '"  target="_blank"><img src="' + data['logo'] + '" alt="城市达人"/> </a></p><p class="visit_title"><a href="/index.php?mod=user&act=guest&uin=' + data['qq'] + '" target="_blank">' + data['nickname'] + '</a></p></li>';
	}

	var remark_html = '';
	if(!type)
	{
		remark_html = '<p id="note_' + data['qq'] + '" class="note" title="单击此处可以修改收藏的好友备注信息" onmouseover="this.className=\'check_note\'" onmouseout="this.className=\'note\'" onclick="document.getElementById(\'note_add_' + data['qq'] + '\').style.display=\'block\'">' + data['remark'] + '</p><div class="note_add" id="note_add_' + data['qq'] + '" style="display:none;"><p><input type="text" id="add_note_input_' + data['qq'] + '" class="add_note" value="' + data['modify_remark'] + '" /></p><p><input name="" type="submit" onclick="modify_remark(\'' + data['qq'] + '\',$(\'add_note_input_' + data['qq'] + '\').value)" class="submit_note" value="确定" /><button class="submit_note" title="取消备注的修改" onclick="$(\'note_add_' + data['qq'] + '\').style.display=\'none\'">取消</button></p></div>';
	}

	var button_html = '<button class="fav_del" onclick="del_friend(\'' + data['qq'] + '\',\'' + data['nickname'] + '\')" title="从您的收藏删除该好友">删除</button>';
	if(type == 'last_visited')
	{
		button_html = '<button title="添加一个好友" onclick="model_wnd();add_friend_panel(\'' + data['qq'] + '\',\'' + data['nickname'] + '\',true)" class="add_friend">加好友</button>';
	}

	var html = '<li><div class="vcard"><div class="citer_pic"><a href="/index.php?mod=user&act=guest&uin=' + data['qq'] + '" target="_blank">' +
	'<img src="' + data['logo'] + '" class="logo" alt="' + data['nickname'] + '" /></a></div><p class="fn n"><strong class="given-name"><a href="http://user.qzone.qq.com/' + data['qq'] + '" target="_blank"> ' + data['nickname'] + ' </a></strong></p>' +
	'<div class="estate">' + online_html + '</div><p class="org">' + data['title'] + '达人</p><p class="adr">' +
	'<a href="/search.php?mod=friend&amp;act=search&amp;province=' + data['location'] + '" target="_blank">' + data['location_str'] + '</a>-<a href="/search.php?mod=friend&amp;act=search&amp;province=' + data['location'] + '&amp;city=' + data['sublocation'] + '" target="_blank">' + data['sublocation_str'] + '</a></p>' +
	remark_html +
	'<p class="fav_operate">' +
	button_html +
	"</p></div></li>\n";

	return html;
}

function print_friends_list_html(str , type)
{
	var html = '<ul id="friend_info">';

	if(type == 'last_visited')
	{
		html = '<h4>我最近浏览过的达人：</h4><ul>';
	}

	if(type == 'last_friends')
	{
		html = '<ul>';
	}

	var tmp = str.split("\t\t\t");
	if(tmp.length == 2)
	{
		var data = trim(tmp[0]);
		var page_str = tmp[1];
	}
	else
	{
		var data = str;
		var page_str = '';
	}


	if(data == '-1')
	{
		return '当前没有好友在线';
	}
	if(data == '-2')
	{
		return '没有任何好友';
	}
	if(!data || data == '-3')
	{
		return page_str;
	}

	var friends_str = data.split("\t\n\t");
	for(var i = 0 ; i < friends_str.length ; i++)
	{
		var friend = friends_str[i];
		var tmp_friend_info = friend.split(",\n,");
		var friend_info = {};
		friend_info['qq'] = parseInt(tmp_friend_info[0]);
		friend_info['logo'] = tmp_friend_info[1];
		friend_info['nickname'] = tmp_friend_info[2];
		friend_info['title'] = tmp_friend_info[3];
		friend_info['online'] = parseInt(tmp_friend_info[4]);
		friend_info['location'] = parseInt(tmp_friend_info[5]);
		friend_info['location_str'] = tmp_friend_info[6];
		friend_info['sublocation'] = parseInt(tmp_friend_info[7]);
		friend_info['sublocation_str'] = tmp_friend_info[8];
		friend_info['remark'] = tmp_friend_info[9];
		html += build_list(friend_info , type);
	}

	html += '</ul>';

	html += page_str;

	return html;
}

// 页面加载函数，用来显示好友
function get_friends_list(div_id , page , show_online)
{
	function callback(friends)
	{
		// get qzone data end, send data to city.
		var html = '';
		var f_qq = [];

		for(var i = (friends.length - 1) ; i >= 0 ; i--)
		{
			f_qq.push(friends[i].uin + "\t" + encodeURIComponent(friends[i].description));
		}

		// firefox 的 bug，用了 iframe 后不能马上发送 ajax，必须间隔一定时间后
		window.delay_tmp = {};
		window.delay_tmp.method = 'post';
		window.delay_tmp.url = "/index.php?mod=friendfolder&act=getfriendslisthtml&page=" + page + "&show_online=" + show_online;
		window.delay_tmp.post_data = 'f_qq=' + f_qq.join("\n");
		window.delay_tmp.asyn = false;
		window.delay_tmp.callback = function(data) {
			var html = print_friends_list_html(data);
			$(div_id).innerHTML = html;
		}

		if(Browser.isIE)
		{
			delay_ajax();
		}
		else
		{
			setTimeout("delay_ajax()" , 10);
		}

	}

	get_friends(callback);

}

// 添加好友
function add_friend(f_qq , not_reload , check_friends)
{
	var error = 0;
	var qq = getUin();

	if(!validate_qq(f_qq))
	{
		alert('输入的QQ错误。');
		return false;
	}

	function callback(txt)
	{
		if(txt.indexOf('<succ>') == -1)
		{
			var error_msg = get_error_msg(txt);
			if(Browser.isIE)
			{
				error_msg = '好友个数过多!'; // tmp, can't parse xml.
			}
			show_alert_panel(error_msg);
			return false;
		}

		if(check_friends)
		{
			function checkCallback(txt)
			{
				txt = parseInt(txt);
				if(txt != 1)
				{
					show_alert_panel('该用户不是城市达人用户，已经添加到QQ空间好友。' , '添加成功');
					error = 1;
				}
			}
			// 判断该用户是否是城市达人
			var post_data = 'f_qq=' + f_qq;
			var t = new Request( checkCallback , 'post' , 'http://city.qzone.qq.com/index.php?mod=friendfolder&act=checkuser' , post_data , true);
			t.sendRequest();
		}

		// 添加成功，发送统计信息
		var stat_data = 'uin=' + qq;
		var t = new Request( function(){} , 'post' , 'http://city.qzone.qq.com/index.php?mod=friendfolder&act=stat' , stat_data);
		t.sendRequest();

		if(error)
		{
			return false;
		}

		//alert('添加成功');
		if(!not_reload)
		{
			window.location.reload();
		}
		return true;
	}

	var url = 'http://users.qzone.qq.com/cgi-bin/friend/friend_add_info.cgi';
	var description = document.add_friend_form.description.value;
	var group_id = document.add_friend_form.group_id.value;
	//var group_id = 1;
	var flag = ((document.add_friend_form.fFocus.checked) ? 2 : 0) + ((document.add_friend_form.fOpen.checked) ? 8 : 0);
	var vcode = document.add_friend_form.verifycode.value;
	description = description.replace(/&/g,'%26');
	description = description.replace(/=/g,'%3D');

	if(description.getLength() > 30)
	{
		alert('最多允许输入15个汉字');
		return false;
	}

	var post_data = 'description=' + description + '&flag=' + encodeURIComponent(flag) + '&fuin=' + encodeURIComponent(f_qq) + '&groupId=' + encodeURIComponent(group_id) + '&uin=' + encodeURIComponent(qq) + '&verifycode=' + encodeURIComponent(vcode);

	loadXMLAsync("add_friend" , url , callback , null , true , post_data , 'text');
	return true;
}

function get_error_msg(txt)
{
	var error_msg = '系统繁忙，请稍后再试。';
	if(txt.indexOf('<error>') != -1 && txt.indexOf('</error>') != -1)
	{
		var start_pos = txt.indexOf('<error>');
		var end_pos = txt.indexOf('</error>');
		error_msg = txt.substring(start_pos , end_pos);
	}
	return error_msg;
}

// 删除好友
function del_friend(f_qq , nickname)
{
	if(confirm('确定要删除 ' + nickname + ' 吗？'))
	{
		function callback(txt)
		{
			if(txt.indexOf('<succ>') == -1)
			{
				var error_msg = get_error_msg(txt);

				show_alert_panel(error_msg);
				return false;
			}

			//alert('删除成功');
			window.location.reload();
			return true;
		}

		var qq = getUin();
		var post_data = 'fuin=' + f_qq + '&uin=' + qq;
		loadXMLAsync("del_friend" , 'http://users.qzone.qq.com/cgi-bin/friend/friend_del_info.cgi' , callback , null , true , post_data , 'text');
	}
}

// to fix firefox bug.
function delay_ajax()
{
	// send ajax
	var t = new Request(window.delay_tmp.callback , window.delay_tmp.method , window.delay_tmp.url , window.delay_tmp.post_data , window.delay_tmp.asyn);
	t.sendRequest();

	// unset vars
	window.delay_tmp = null;
}

// 弹出面板，直接点击按钮加好友
function add_friend_panel(qq,nickname,not_reload)
{alert('QQ空间好友圈正在升级中，暂不能添加好友，带来不便，请见谅！');
	try{
			hidden_model_wnd();
	} catch(e) {};
	return;
	if(!is_logon())
	{
		try{
			hidden_model_wnd();
		} catch(e) {};

		try{
			window.scrollTo(0,0);
			window.top.qq_login_form(15000102);
		}catch(e){
			display_info_w("请先登录");
		}
		return;
	}

	qq = parseInt(qq);

	function callback(friends)
	{
		if(friends)
		{
			// 判断是否已经是好友
			for(var i = 0 ; i < friends.length ; i++)
			{
				if(parseInt(friends[i].uin) == qq)
				{
					show_alert_panel( nickname + ' 已经是你的好友了');
					return;
				}
			}
		}

		build_get_friend_panel(qq , nickname , not_reload , 'add_friend_panel' , get_friend_panel_callback);

		function get_friend_panel_callback(panel_html)
		{
			if(!$('add_friend_panel'))
			{
				var a = document.createElement("DIV");
				a.id = 'add_friend_panel';
				a.innerHTML = panel_html;
				a.style.display = 'none';
				a.className = 'fav_tip';
				//<div class="fav_tip" style="top:60%;left:30%">
				document.body.appendChild(a);
			}
			else
			{
				$('add_friend_panel').style.display = 'none';
				$('add_friend_panel').innerHTML = panel_html;
			}
			var browser_width = (parseInt(document.body.clientWidth) > 1024) ? parseInt(document.body.clientWidth) : 1024;

			$('add_friend_panel').style.top = (parseInt(document.documentElement.scrollTop) + 220) + 'px';
			$('add_friend_panel').style.left = ((browser_width - 1024) / 2 + 300) + 'px';
			$('add_friend_panel').style.zIndex='120';
			$('add_friend_panel').style.display = '';
			//$('add_friend_submit_button').focus();

			// maybe delay
			setTimeout(ffChangeImg, 90);
		}
	}

	// 拉取好友列表
	get_friends(callback);
}

function ffChangeImg()
{
	nchangeImg('ffVerify');
}

// 弹出面板，用QQ加好友
function add_friend_by_qq_panel()
{
	//build_get_friend_qq_panel(callback);
	build_get_friend_panel(0 , '' , true , 'fav_tip' , callback);

	function callback(panel_html)
	{
		if(!$('fav_tip'))
		{
			var a = document.createElement("DIV");
			a.id = 'fav_tip';
			a.innerHTML = panel_html;
			a.style.display = 'none';
			a.className = 'fav_tip';
			document.body.appendChild(a);
		}
		else
		{
			$('fav_tip').style.display = 'none';
			$('fav_tip').innerHTML = panel_html;
		}
		var browser_width = (parseInt(document.body.clientWidth) > 1024) ? parseInt(document.body.clientWidth) : 1024;

		$('fav_tip').style.top = (parseInt(document.documentElement.scrollTop) + 220) + 'px';
		$('fav_tip').style.left = ((browser_width - 1024) / 2 + 300) + 'px';
		$('fav_tip').style.zIndex='120';
		$('fav_tip').style.display='block';
		$('f_qq').value = '';
		$('f_qq').focus();

		//nchangeImg('friend_v_img');
	}
}

// 关闭面板
function close_panel(panel_id)
{
	$(panel_id).style.display = 'none';
	$(panel_id).innerHTML = '';
}

function modify_remark(qq , remark)
{
	remark = trim(remark);
	if(remark.getLength() > 30)
	{
		alert('最多允许输入15个汉字');
		return false;
	}

	// 生成 form
	var div_id = 'tmp_post_div';
	if(!$(div_id))
	{
		var i = document.createElement("DIV");
		i.id  = div_id;
		i.style.display = "none";
		document.body.appendChild(i);
	}

	var cur_qq = getUin();
	$(div_id).innerHTML = '<form target="tmp_post_frame" id="tmp_post_form" name="tmp_post_form" action="http://users.qzone.qq.com/cgi-bin/friend/friend_update_info.cgi" method="post">' +
	'<input type="text" name="uin" value="' + cur_qq + '" />' +
	'<input type="text" name="fuin" value="' + qq + '" />' +
	'<input type="text" name="groupId" value="' + window.friends[qq].groupId + '" />' +
	'<input type="text" name="flag" value="' + window.friends[qq].flag + '" />' +
	'<input type="text" name="description" value="' + remark + '" /><input type="submit" />' +
	'</form>';

	postGBKdata( $('tmp_post_form') );

	$('note_' + qq).innerHTML= remark.replace(/</g,"&lt;");		//XSS
	$('note_add_' + qq).style.display='none';
}

function postGBKdata(form)
{
	var frame_id = 'tmp_post_frame';

	if(!$(frame_id))
	{
		var i  = document.createElement("DIV");
		i.innerHTML = '<iframe id="' + frame_id + '" name="' + frame_id + '" src="about:blank"></iframe>';

		i.style.display = "none";
		document.body.appendChild(i);
	}

	form.target = frame_id;
	form.submit();
}

function build_get_friend_panel(qq , nickname , not_reload , div_id , _callback)
{
	if(qq && nickname && nickname.length > 0)
	{
		var check_friends = false;
		var global_tip_title = '添加【' + nickname + '】为空间好友';
		var f_qq_html = '<input type="hidden" id="f_qq" value="' + qq + '" name="f_qq" />';
	}
	else
	{
		var check_friends = true;
		var global_tip_title = '添加空间好友';
		var f_qq_html = '<p><span>对方的QQ号码：</span><input name="f_qq" id="f_qq" value="" type="text" /></p>';
	}
	//var f_qq_html = '<input type="hidden" value="' + qq + '" name="f_qq" />';

	function callback(groups)
	{
		var html = '';
		html += '<div class="global_tip addfriend" style="width:375px"><div class="global_tip_title"><h3>' + global_tip_title + '</h3><button title="关闭此提示框" onclick="hidden_model_wnd();close_panel(\'' + div_id + '\')" onmouseover="this.className=\'global_close_hover\'" onmouseout="this.className=\'\'">&#9587;</button></div>';
		html += '<div class="global_tip_main">';
		html += '<form id="add_friend_form" name="add_friend_form" method="post" onsubmit="return false">';
		html += '<div class="makefriend">' + f_qq_html + '<p><span>好友分组：</span><label><select name="group_id">';

		for(var group_id in groups)
		{
			html += '<option value="' + group_id + '">' + groups[group_id] + '</option>';
		}

		html += '</select></label></p><p><span>请输入验证信息：</span><label><input id="description" name="description" value="" /></label></p>';
		html += '<p class="checkbox"><label for="fFocus"><input id="fFocus" name="fFocus" type="checkbox" checked="checked" name="friendFocus" value="on" />关注好友</label> <label for="fOpen"><input id="fOpen" name="fOpen" type="checkbox" checked="checked" name="friendOpen" value="on" />公开好友</label></p>';
		html += '<p style="height:56px;"><span>验证图片：</span><label><img id="ffVerify" src="" alt="验证图片" /></label></p>'
		html += '<p><span>&nbsp;</span><label><a href="javascript:nchangeImg(\'ffVerify\');" tabindex="-1">看不清,换一张</a></label></p>';
		html += '<p><span>请输入验证码：</span><label><input id="verifycode" name="verifycode" value="" /></label></p>';
		html += '</div><div class="hint"><p><a href="http://city.qzone.qq.com/search.php?mod=ggmm&amp;sex=0" target="_blank">想认识更多美女帅哥？城市达人为您提供帅哥美女搜索！</a></p></div>';
		html += '<div class="oprate"><a href="javascript:void(0)" onclick="if(add_friend($(\'f_qq\').value,' + ((not_reload) ? 'false' : 'true') + ',' + check_friends + ')){hidden_model_wnd();$(\'' + div_id + '\').style.display=\'none\';}" title="操作提示"><span>提交</span></a><a href="javascript:void(0)" onclick="hidden_model_wnd();close_panel(\'' + div_id + '\')" title="关闭"><span>取消</span></a></div></form></div></div>';

		_callback(html);
		//return html;
	}

	// get groups
	get_groups(callback);
}

function show_alert_panel(message , title)
{
	if(!title)
	{
		title = '操作失败';
	}

	var html = '';
	html += '<div class="global_tip" style="width:300px"><div class="global_tip_title"><h3>' + title + '</h3>';
	html += '<button title="关闭此提示框" onclick="hidden_model_wnd();$(\'alert_panel\').style.display=\'none\';" onmouseover="this.className=\'global_close_hover\'" onmouseout="this.className=\'\'">&#9587;</button></div>';
	html += '<div class="global_tip_main"><div class="hint"><p>' + message + '</p></div></div>';
	html += '<div class="oprate"><a href="javascript:void(0)" id="alert_submit_button" onclick="hidden_model_wnd();$(\'alert_panel\').style.display=\'none\';" title="确定"><span>确定</span></a></div></div>';

	if(!$('alert_panel'))
	{
		var a = document.createElement("DIV");
		a.id = 'alert_panel';
		a.innerHTML = html;
		a.style.display = 'none';
		a.className = 'fav_tip';
		//<div class="fav_tip" style="top:60%;left:30%">
		document.body.appendChild(a);
	}
	else
	{
		$('alert_panel').style.display = 'none';
		$('alert_panel').innerHTML = html;
	}
	var browser_width = (parseInt(document.body.clientWidth) > 1024) ? parseInt(document.body.clientWidth) : 1024;

	$('alert_panel').style.top = (parseInt(document.documentElement.scrollTop) + 220) + 'px';
	$('alert_panel').style.left = ((browser_width - 1024) / 2 + 330) + 'px';
	$('alert_panel').style.zIndex = '120';
	$('alert_panel').style.display = '';
	$('alert_submit_button').focus();
	//return html;
}

function load_last_visited(page)
{
	page = parseInt(page);
	function callback(data)
	{
		var html = print_friends_list_html(data , 'last_visited');
		$('last_visited').innerHTML = html;
	}
	var t = new Request(callback , "get" , "/index.php?mod=friendfolder&act=getlastvisited&page=" + page );
	t.sendRequest();
}

function load_last_friends(div_id,uin,hidden_public)
{
	function callback(friends)
	{
		if(friends == false)
		{
			$('last_friends').innerHTML = '&nbsp;&nbsp;该空间设置了访问权限,您无法查看对方的达人好友。';
			//removeElement('last_friends_div');
			return false;
		}

		// get qzone data end, send data to city.
		var html = '';
		var f_qq = [];

		var show_num = 0;
		for(var i = friends.length - 1 ; i >= 0 ; i--)
		{
			// 计算是否为公开好友
			if(hidden_public && ((parseInt(friends[i].flag)>>3) % 2 != 1))
			{
				continue;
			}

			f_qq.push(friends[i].uin + "\t" + encodeURIComponent(friends[i].description));

			show_num++;
			if(show_num > 9)
			{
				break;
			}
		}

		// firefox 的 bug，用了 iframe 后不能马上发送 ajax，必须间隔一定时间后
		window.delay_tmp = {};
		window.delay_tmp.method = 'post';
		window.delay_tmp.url = "/index.php?mod=friendfolder&act=getlastfriends";
		window.delay_tmp.post_data = 'f_qq=' + f_qq.join("\n");
		window.delay_tmp.asyn = false;
		window.delay_tmp.callback = function(data) {
			var html = print_friends_list_html(data , 'last_friends');
			$(div_id).innerHTML = html;
		}

		if(Browser.isIE)
		{
			delay_ajax();
		}
		else
		{
			setTimeout("delay_ajax()" , 10);
		}

	}

	get_friends(callback,uin,true);
}


// ----------------------------
// from zishun, common.js
// ----------------------------
/**
* 浏览器对象，包括类别属性
*/
var Browser = new Object();
Browser.isIE = window.ActiveXObject ? true : false;
Browser.isIE7 = Browser.isIE && window.XMLHttpRequest;
Browser.isMozilla = Browser.isIE?false:(typeof document.implementation != 'undefined') && (typeof document.implementation.createDocument != 'undefined') && (typeof HTMLDocument!='undefined');
Browser.isFirefox = Browser.isIE?false:(navigator.userAgent.toLowerCase().indexOf("firefox")!=-1);
Browser.isSafari = Browser.isIE?false:(navigator.userAgent.toLowerCase().indexOf("safari")!=-1);
Browser.isOpera = Browser.isIE?false:(navigator.userAgent.toLowerCase().indexOf("opera")!=-1);

/**
* 用XMLHTTP加载异步加载数据
* @param {String} xID
* @param {String} xUrl
* @param {Function} callback
* @param {Function} err_callback
* @param {Boolean} nocache
* @param {String} data
* @param {String} returnType
* @see #LoadXMLDataEx
* @see #loadXMLAsyncNoCache
*/
var g_XDoc = {};
var g_JData = {};
var callBackHsmp=new Array();
function loadXMLAsync(xID, xUrl, callback, err_callback,nocache,data,returnType){
	var m=xUrl.match(/(^http:\/\/([a-z,A-Z,0-9,\-,_,\.]+\.qq\.com)\/)/);
	if(!m){alert("不能访问非qq.com域的资源");return;}
	var domain = m[0];
	var host = m[2];
	var proxyPageURL = domain+"proxy.html";
	if(domain == "http://imgcache.qq.com/")
	proxyPageURL = "http://imgcache.qq.com/qzone/proxy.html";

	var f = document.getElementsByTagName("iframe");
	for(var i=0;i<f.length;i++){
		var isRightProxy=false;
		try{isRightProxy=f[i].src.indexOf(proxyPageURL)==0}catch(e){}
		if(isRightProxy){//找到了代理页面
			if(!callBackHsmp[host] && typeof callBackHsmp[host] != "undefined"){//代理页面没用回调等待队列（初始化已经完成）
				frames[i].loadXMLAsync(xID, xUrl, callback, err_callback,nocache,data,returnType);
			}else{
				if (typeof callBackHsmp[host] == "undefined") callBackHsmp[host] = [];
				callBackHsmp[host][callBackHsmp[host].length]={
				"callback":callback,
				"xID":xID,
				"xUrl":xUrl,
				"err_callback":err_callback,
				"nocache":nocache,
				"data":data,
				"returnType":returnType
				};
			}
			return;
		}
	}

	if (!callBackHsmp[host]){
		callBackHsmp[host]=[{
		"callback":callback,
		"xID":xID,
		"xUrl":xUrl,
		"err_callback":err_callback,
		"nocache":nocache,
		"data":data,
		"returnType":returnType
		}];
		createProxy(proxyPageURL);
	}
};

/**
* 创建proxy页面
* @param {String} src
*/
function createProxy(src){
	var f = document.getElementsByTagName("iframe");
	for(var i=0;i<f.length;i++)
	if (f[i].src.indexOf(src)!= -1) return;

	var i = document.createElement("iframe");
	var proxyDiv = $("proxy");
	if (!proxyDiv) document.body.insertBefore(i,null); else $("proxy").appendChild(i);
	i.width=0;
	i.height=0;
	i.style.display='none';
	i.src=src;
	i = null;
}



/**
* 加载 json 数据
* @param {String} xID 缓存ID
* @param {String} url 数据来源URL
* @param {Function} callback 回调方法
* @param {Function} errcallback 错误回调
* @param {Boolean} refresh 是否总是获取服务器数据
* @param {String} charset 数据源charset
* @param {String} callbackFunctionName 数据源回调接口
* @version 1.3
* @author zishunchen & stonghuang
* @see #loadXMLAsync
*/
function loadJsonData(xID,url,callback,errcallback,refresh,charset,callbackFunctionName){
	charset = charset?charset:"GB2312";
	var cFN = callbackFunctionName?callbackFunctionName:"JsonCallback";

	if(Browser.isIE){
		var df = document.createDocumentFragment();

		df[cFN] = function(data){
			s.onreadystatechange = null;
			df = null;
			top.g_JData[xID] = data;
			try{
				if(callback)callback(data);
			}catch(e){
				if(e.number == -2146823277) return;
				status = e.message;
				setTimeout("status=''",3000);
			}
		};

		var s = df.createElement("SCRIPT");
		s.charset = charset;
		df.appendChild(s);

		s.onreadystatechange = function(){
			if(s.readyState=="loaded") {
				s.onreadystatechange=null;
				df = null;
				try{
					if (errcallback) errcallback({error:{msg:"服务器繁忙，请稍后再试.",type:900}});
				}catch(e){
					if(e.number != -2146823277)
					status=e.message;
					setTimeout("status=''",3000);
				}
			}
		};

		s.src = url;
	}else{
		var i = document.createElement("IFRAME");
		i.style.display = "none";
		i.callback = function(data){
			top.g_JData[xID] = data;
			callback(data);
			i.callback = null;
			i.src="about:blank";
			removeElement(i);
			i = null;
		};
		i.errcallback = errcallback;
		i.src="javascript:\"<script>function " + cFN + "(data){frameElement.callback(data);};<\/script><script src='"+url+"' charset='" + charset + "'><\/script>\"";
		document.body.appendChild(i);
	}
}
/**
* 删除Dom对象
* @see #$
* @param {DocumentElement or String} element 需要从页面中删除的对象
* @version 1.0
* @author zishunchen
*/
function removeElement(element){
	if((typeof element)=="string")
	element=$(element);

	if(!!element && (typeof element)=="object"){
		element.parentNode.removeChild(element);
	}
}

