var oCntrys = {};
var oDepartment = {};
var oHighMiddle = {};
var oUnivs = {};
var oMyNwks = {};

PSH0 = function(iId, sName)
{
	var obj = new Object();
	obj.id = iId;
	obj.name = sName;
	oCntrys[iId]=obj;
}

//push data of level 1
PSH1 = function(iCntryId, iId, sName)
{
	if(!oCntrys[iCntryId])
		return;

	if(!(oCntrys[iCntryId].province))
		oCntrys[iCntryId].province={};

	var obj = new Object();
	obj.id = iId;
	obj.name = sName;
	oCntrys[iCntryId].province[iId] = obj;
}

//push data of level 2
PSH2 = function(iCntryId, iPrvncId, iId, sName)
{
	if(!oCntrys[iCntryId] || !(oCntrys[iCntryId].province[iPrvncId]) )
		return;

	if(!(oCntrys[iCntryId].province[iPrvncId].city))
		oCntrys[iCntryId].province[iPrvncId].city={};

		
	var obj = new Object();
	obj.id = iId;
	obj.name = sName;
	oCntrys[iCntryId].province[iPrvncId].city[iId] = obj;
}

//push data of level 3
PSH3 = function(iCntryId, iPrvncId, iCtyId, iId, sName)
{
	if(!oCntrys[iCntryId] || !(oCntrys[iCntryId].province[iPrvncId]) || !(oCntrys[iCntryId].province[iPrvncId].city[iCtyId]) )
		return;

	if(!(oCntrys[iCntryId].province[iPrvncId].city[iCtyId].district))
		oCntrys[iCntryId].province[iPrvncId].city[iCtyId].district={};

	var obj = new Object();
	obj.id = iId;
	obj.name = sName;
	oCntrys[iCntryId].province[iPrvncId].city[iCtyId].district[iId] = obj;
}

//push data of university
PSHU = function(iCntryId, iPrvncId, iId, sName)
{
	if(!oCntrys[iCntryId] || !(oCntrys[iCntryId].province[iPrvncId]) )
		return;
	
	if(!(oCntrys[iCntryId].province[iPrvncId].university))
		oCntrys[iCntryId].province[iPrvncId].university={};

	var obj = new Object();
	obj.id = iId;
	obj.name = sName;
	oCntrys[iCntryId].province[iPrvncId].university[iId] = obj;
	oUnivs[iId] = obj;
}

_Get_DepartmentById = function(iDept_Id,aListOfDepartment)
{
	if(!aListOfDepartment)return null;
	for(var i=0;i<aListOfDepartment.length;i++)
	{
		if(iDept_Id==aListOfDepartment[i].id)
			return aListOfDepartment[i];
	}
	return null;
}

//fCall_Back = function(ArrayList_Of_Department)
_Get_Department_DATA = function(iUniv_Id, fCall_Back, iDept_Id)
{
	//尚未获取到
	if(!oDepartment[iUniv_Id])
	{
		var url = "http://widget.xunlei.com/portal/data/department/"+iUniv_Id+".xml";
		new Ajax.Request(url, {
			response: "Object",
			onSuccess: Delegate.create(this, function(evt){
				try
				{
					var department_list = evt.response;
					if(department_list&&department_list.department)//如果获取到数据了，存起来
						oDepartment[iUniv_Id] = $A(department_list.department);

					if(iDept_Id&&iDept_Id>0)
						fCall_Back(     _Get_DepartmentById(iDept_Id, oDepartment[iUniv_Id])   );
					else
						fCall_Back(oDepartment[iUniv_Id]);

				}catch(ex)
				{
					alert(ex);
				}
			}),
			on404: function(evt){
				//TODO:Nothing;
			}
		});
	}
	//已经获取过了
	else
	{
		if(iDept_Id&&iDept_Id>0)
			fCall_Back(     _Get_DepartmentById(iDept_Id, oDepartment[iUniv_Id])   );
		else
			fCall_Back(oDepartment[iUniv_Id]);
	}
}

//fCall_Back = function(ArrayList_Of_Department)
Get_Department_List = function(iUniv_Id, fCall_Back)
{
	_Get_Department_DATA(iUniv_Id, fCall_Back);
}

//fCall_Back = function(Department_Object)
//
Get_Department = function(iUniv_Id,iDept_Id,fCall_Back)
{
	_Get_Department_DATA(iUniv_Id, fCall_Back, iDept_Id);
}

//fCall_Back = function(ArrayList_Of_HighMiddle)
Get_HighMiddle_List = function(iDstct_Id, fCall_Back)
{
	//尚未获取到
	if(!oHighMiddle[iDstct_Id])
	{
		var url = "http://widget.xunlei.com/portal/data/highschool/"+iDstct_Id+".xml";
		new Ajax.Request(url, {
			response: "Object",
			onSuccess: Delegate.create(this, function(evt){
				try
				{
					var highschool_list = evt.response;
					if(highschool_list&&highschool_list.highmiddle)//如果获取到数据了，存起来
						oHighMiddle[iDstct_Id] = $A(highschool_list.highmiddle);

					fCall_Back(oHighMiddle[iDstct_Id]);
	
				}catch(ex)
				{
					alert(ex);
				}
			}),
			on404: function(evt){
				alert("无法获取高中数据.");
			}
		});
	}
	//已经获取过了
	else
	{
		fCall_Back(oHighMiddle[iDstct_Id]);
	}
}

_Nwk_Action = function(sURL_Exra,oContainer,fCallback_NO_PARAM)
{
	if(!oContainer)
	{
		alert("使用_Nwk_Action须指定Container");
		return;
	}
	
	if(sURL_Exra)
	{
		var url = "http://portal.widget.xunlei.com/cgi-bin/"+sURL_Exra;
		new Ajax.Request(url, {
			response: "Object",
			onSuccess: Delegate.create(this, function(evt){
				try
				{
					var nwk_resp = evt.response;
					if(nwk_resp&&nwk_resp.result)
					{
						oContainer.style.display="block";
						oContainer.innerHTML = nwk_resp.str;
					}

					if(fCallback_NO_PARAM)
						fCallback_NO_PARAM();
	
				}catch(ex)
				{
					alert(ex);
				}
			}),
			on404: function(evt){
				alert("无法找到接口");
			}
		});
	}
}

Join_Network = function(iNwk_Type,iNwk_Obj_Id,oContainer,fCallback_NO_PARAM)
{
	if(iNwk_Type&&iNwk_Obj_Id&&iNwk_Type>0&&iNwk_Obj_Id>0)
	{
		var sURL_Extra = "cgi_network_join"+"?nwk_type="+iNwk_Type+"&nwk_obj_id="+iNwk_Obj_Id+"&ct="+(new Date().getTime());;
		_Nwk_Action(sURL_Extra,oContainer,fCallback_NO_PARAM);
	}
}

Join_Area_Network = function(iNwk_Obj_Id,iProvinceId,iDistrictId,oContainer,fCallback_NO_PARAM)
{
	if(iNwk_Obj_Id&&iNwk_Obj_Id>0)
	{
		var sURL_Extra = "cgi_network_join?nwk_type=1&nwk_obj_id="+iNwk_Obj_Id+"&province_id="+iProvinceId+"&district_id="+iDistrictId+"&ct="+(new Date().getTime());;
		_Nwk_Action(sURL_Extra,oContainer,fCallback_NO_PARAM);
	}
}

Quit_Network = function(iNwk_Type,iNwk_Obj_Id,oContainer,fCallback_NO_PARAM)
{
	if(iNwk_Type&&iNwk_Obj_Id&&iNwk_Type>0&&iNwk_Obj_Id>0)
	{
		var sURL_Extra = "cgi_network_quit"+"?nwk_type="+iNwk_Type+"&nwk_obj_id="+iNwk_Obj_Id+"&ct="+(new Date().getTime());;
		_Nwk_Action(sURL_Extra,oContainer,fCallback_NO_PARAM);
	}
}

Join_Cmpny_Network = function(sEmail,oContainer,fCallback_NO_PARAM)
{
	if(sEmail)
	{
		var sURL_Extra = "cgi_network_join"+"?nwk_type=3&email="+sEmail+"&ct="+(new Date().getTime());
		_Nwk_Action(sURL_Extra,oContainer,fCallback_NO_PARAM);
	}
}

Default_Network = function(iNwk_Type,iNwk_Obj_Id,oContainer,fCallback_NO_PARAM)
{
	if(iNwk_Type&&iNwk_Obj_Id&&iNwk_Type>0&&iNwk_Obj_Id>0)
	{
		var sURL_Extra = "cgi_network_make_default"+"?nwk_type="+iNwk_Type+"&nwk_obj_id="+iNwk_Obj_Id+"&ct="+(new Date().getTime());;
		_Nwk_Action(sURL_Extra,oContainer,fCallback_NO_PARAM);
	}
}

//fCallback = function(HashListOfNetwork)
My_Network = function(fCallback,bIgnoreStatus)
{
	_My_Network_(false,fCallback,bIgnoreStatus);
}

My_Network_Reload = function(fCallback,bIgnoreStatus)
{
	_My_Network_(true,fCallback,bIgnoreStatus);
}

_My_Network_ = function(bNeedReload,fCallback,bIgnoreStatus)
{
	if(!fCallback)
		return;

	for(key in oMyNwks)
	{//oMyNwks已经加载过数据
		if(!bNeedReload)
		{//如果无需加载
			fCallback(oMyNwks)
			return;
		}
		else
		{//否则,继续往下走...
			break;
		}
	}

	var url = "http://portal.widget.xunlei.com/cgi-bin/cgi_network_nwk_of_user?1=1&ct="+(new Date().getTime());
	if(bIgnoreStatus)
		url+="&ignore=true";

	new Ajax.Request(url, {
		response: "Object",
		onSuccess: Delegate.create(this, function(evt){
			try
			{
				var nwk_resp = evt.response;
				if(nwk_resp&&nwk_resp.result==0&&nwk_resp.nwk)
				{
					oMyNwks = {};
					var aMyNwks = $A(nwk_resp.nwk);
					for(var i=0;i<aMyNwks.length;i++)
					{
						oMyNwks[aMyNwks[i].type_id+"-"+aMyNwks[i].obj_id] = aMyNwks[i];
					}
					fCallback(oMyNwks);
				}
				else
				{
					fCallback(oMyNwks);
				}

			}catch(ex)
			{
				alert(ex);
			}
		}),
		on404: function(evt){
			alert("无法找到接口");
		}
	});
}

_NWK_MEMBER_ = function(iNwk_Type, iNwk_Obj_Id, iStart, iRow, fCallback)
{
	var url = "http://portal.widget.xunlei.com/cgi-bin/cgi_network_users?nwk_type="+iNwk_Type+"&nwk_obj_id="+iNwk_Obj_Id
	url += "&start="+iStart+"&row="+iRow+"&ct="+(new Date().getTime());

	new Ajax.Request(url, {
		response: "Object",
		onSuccess: Delegate.create(this, function(evt){
			try
			{
				var nwk_resp = evt.response;
				if(nwk_resp&&nwk_resp.result==0&&nwk_resp.user)
				{
					fCallback( $A(nwk_resp.user));
				}
				else
				{
					fCallback(null);
				}

			}catch(ex)
			{
				alert(ex);
			}
		}),
		on404: function(evt){
			alert("无法找到接口");
		}
	});
}

//-------------------------------------------------------------
var area = {
	isDebug:false,
	debug:function(msg)
	{
//		if(this.isDebug)
			alert(msg);
	},
	check:function()
	{
		if(!ejs||!ejs.selectone)throw("请包含ejs相关模块.");
	},
	_fill_:function(oSelect,areaList,emptyTxt,selectedValue,isByTxt)
	{
		this.check();
		ejs.selectone.clear(oSelect);
		if(emptyTxt)
			ejs.selectone.push(oSelect,emptyTxt,"");
		ejs.selectone.fill(oSelect,areaList,"name","id");

		if(selectedValue)
			ejs.selectone.set(oSelect,selectedValue,isByTxt);

	},
	//oCntrys[1].province[aNwk[i].ext01].city[aNwk[i].obj_id].district
	fill_prov:function(oProv,emptyTxt,selectedValue,isByTxt)
	{
//		this.debug("Oh!fill_prov");
		this.check();
		this._fill_(oProv,oCntrys[1].province,emptyTxt,selectedValue,isByTxt);
	},
	fill_city:function(oProv,oCity,emptyTxt,selectedValue,isByTxt)
	{
		try
		{
//			this.debug("Oh!fill_city");
			
			var oSelectedProv = ejs.selectone.get(oProv);
			if(oSelectedProv&&""!=oSelectedProv.value)
			{
				var str;
				var cities = oCntrys[1].province[parseInt(oSelectedProv.value)].city;
				for(city in cities)
				{
					str+=city+","
				}
				
//			this.debug("Oh!"+oSelectedProv.value+":"+str);
				
				this._fill_(oCity,oCntrys[1].province[parseInt(oSelectedProv.value)].city,emptyTxt,selectedValue,isByTxt);
			}
			else
			{
//				this.debug("damn!"+ejs.selectone.get(oProv)+":"+ejs.selectone.get(oProv).value);
			}

		}catch(ex)
		{
			this.debug("Oh,expection:"+ex);
		}
	},
	fill_dist:function(oProv,oCity,oDist,emptyTxt,selectedValue,isByTxt)
	{
		var sSelectedProv = ejs.selectone.get(oProv).value;
		var sSelectedCity = ejs.selectone.get(oCity).value;
		if(""!=sSelectedProv&&""!=sSelectedCity)
			this._fill_(oDist,oCntrys[1].province[parseInt(sSelectedProv)].city[parseInt(sSelectedCity)].district,emptyTxt,selectedValue,isByTxt);
	},
	clear:function(oSelect,emptyTxt)
	{
		ejs.selectone.clear(oSelect);
		if(emptyTxt)
			ejs.selectone.push(oSelect,emptyTxt,"");
	}
};
Clear_SelectData = function(oSelect)
{
	if(!oSelect) return null;
	if("SELECT-ONE"!=oSelect.type.toUpperCase())
	{
		alert("不是select，它是"+oSelect.type);
		return null;
	}
	//clear
	var count = oSelect.options.length;
	while((count--)>0)
	{
		oSelect.removeChild(oSelect.options[0]);
	}
	return oSelect;
}

Set_SelectData = function(oSelect,sSelectedValue)
{
	if(!sSelectedValue)return;	
	if("SELECT-ONE"!=oSelect.type.toUpperCase())return ;
	for(var i=0;i<oSelect.options.length;i++)
		if(oSelect.options[i].value == sSelectedValue)
		{
			oSelect.options[i].selected=true;
			return i;
		}
}

Set_SelectText = function(oSelect,sSelectedText)
{
	if(!sSelectedText)return;
	if("SELECT-ONE"!=oSelect.type.toUpperCase())return ;
	for(var i=0;i<oSelect.options.length;i++)
		if(oSelect.options[i].innerHTML == sSelectedText)
		{
			oSelect.options[i].selected=true;
			return i;
		}
}

Fill_SelectData = function(oSelect, aData, sEmptyTxt, sSelectedValue)
{
	oSelect = Clear_SelectData(oSelect);
	if(!oSelect)return;
	//append
	var oOption = document.createElement("OPTION");
	if(sEmptyTxt&&""!=sEmptyTxt)
	{
		oOption.innerHTML = sEmptyTxt;
		oOption.value = "";
		oSelect.appendChild(oOption);
	}

	if(aData.length)
		for(var i=0;i<aData.length;i++)
		{
			oOption = document.createElement("OPTION");
			oOption.value = aData[i].id;
			oOption.innerHTML = aData[i].name;
			oSelect.appendChild(oOption);
		}
	else
		for(key in aData)
		{
			oOption = document.createElement("OPTION");
			oOption.value = aData[key].id;
			oOption.innerHTML = aData[key].name;
			oSelect.appendChild(oOption);
		}
	Set_SelectData(sSelectedValue);
}

Get_SelectedValue = function(oSelect)
{
	if(!oSelect||"SELECT-ONE"!=oSelect.type.toUpperCase())return null;
	if(oSelect.selectedIndex<0)return "";
	return oSelect.options[oSelect.selectedIndex].value;
}

Get_SelectedText = function(oSelect)
{
	if(!oSelect||"SELECT-ONE"!=oSelect.type.toUpperCase())return null;
	if(oSelect.selectedIndex<0)return "";
	return oSelect.options[oSelect.selectedIndex].innerHTML;
}

//-----------------------------------------------------------------------NwkSuggestion
var NwkSuggestion = {
	_resultcontainer:null,
	_repeater_tag:null,
	_repeater:null,
	_url:"http://portal.widget.xunlei.com/cgi-bin/cgi_autosuggest_nwk.fcg?search_key=",
	_values:[],
	_interval_sec:1,
	_interval_triggered:false,
	__keyword:"",
	__keyword_input:"",
	OnSelect:null
};

NwkSuggestion.Init = function(sResultContainerId)
{
	this._resultcontainer = $(sResultContainerId);
	if(!this._resultcontainer)
	{
		alert("result container doesnt exist.Failed to Initialize NwkSuggestion.");
		return;
	}
	this._repeater = RepeaterManager.getInstance(sResultContainerId);
	this._repeater_tag = sResultContainerId;
	
}

NwkSuggestion.TriggerQuery = function()
{
	//如果已经触发了，则取消之
	if(this._interval_triggered)return;
	this._interval_triggered = true;

	var tick_num = 0;
	var obj = this;
	var iInterval = setInterval(function(){
	
		if(
				(obj.__keyword==obj.__keyword_input)||
				(null==obj.__keyword_input||""==obj.__keyword_input)
		)
		{
			clearInterval(iInterval);
			obj._interval_triggered = false;
			return;
		}

		obj.__keyword = obj.__keyword_input;

		new Ajax.Request(obj._url+encodeURIComponent(obj.__keyword), {
			response: "Object",
			onSuccess: Delegate.create(obj, function(evt){
				try
				{
					obj._values = $A(evt.response.item);
	
					for(var i=0; i<obj._values.length; i++)
						obj._values[i]._idx = i;
	
					obj.query_done();

				}catch(ex)
				{
					alert(ex);
				}
			}),
			on404: function(evt){
				alert("无法找到接口");
			}
		});

	},obj._interval_sec*100);
}

NwkSuggestion.query = function(sValue)
{
	this.__keyword_input = sValue;
	this.TriggerQuery();
}

NwkSuggestion.query_done = function()
{
	this._resultcontainer.style.display="block";
	this._repeater.insertArray(this._repeater_tag,this._values);
	this._repeater.run();
}

NwkSuggestion.pick = function(iIdx)
{
	if(!this.OnSelect)return;
	
	if(iIdx>=this._values.length||iIdx<0)return;
	this.OnSelect(this._values[iIdx]);
	this.close();
}

NwkSuggestion.close = function()
{
	var obj = this;
	iTimeout = setTimeout(function(){
		obj._resultcontainer.style.display="none";
		clearTimeout(iTimeout);
	},200);
}

NwkSuggestion.OnSelect = function(oNwk)
{
	if(!oNwk||!oNwk.name)return;
	window.location.href="http://widget.xunlei.com/portal/net_index.html?nwk_type="+oNwk.type+"&nwk_obj_id="+oNwk.obj_id;
}
//-----------------------------------Related
GetRelatedAlbum = function(sKeyId,fCallback)
{
	var url = "http://album.widget.xunlei.com/fcg-bin/cgi_recent_updated_album_list.fcg?key=2_"+sKeyId;
	new Ajax.Request(url, {
		response: "Object",
		onSuccess: Delegate.create(this, function(evt){
			try
			{
				albums = $A(evt.response.record);
				fCallback(albums);

			}catch(ex)
			{
				alert(ex);
			}
		}),
		on404: function(evt){
			alert("无法找到接口");
		}
	});
}
