function logOut(sReturnURL)
{
	Browser.clearCookie("usrname");
	Browser.clearCookie("nickname");
	
	if(!sReturnURL)
		sReturnURL = window.location.href;

	window.location="http://i.xunlei.com/login.html?u1="+encodeURIComponent(sReturnURL);
}

function setAllSelect (str) 
{
	var selects = document.getElementsByTagName("select");
	for ( var i=0; i<selects.length; i++ )
	{
		selects[i].style.display = str;
	}
}


function addZero(d)
{
        if(parseInt(d)>=10)
                return d;
        else 
                return "0"+d;
}

var User = {
	myUin:  Browser.getCookie('usrname'),
	myNickName: Browser.getCookie('nickname')==""?Browser.getCookie('usrname'):Browser.getCookie('nickname'),
	getURL:function(uin)
	{
		return "http://"+uin+".blog.xunlei.com";
	},
	getLogo:function(uin)
	{
		//return "http://imain.xunlei.com/img/"+encodeURIComponent(uin)+".gif";
		return "http://imain.xunlei.com/imgus/"+encodeURIComponent(uin)+".gif";
	},
	getLogoBig:function(uin)
	{
		//return "http://imain.xunlei.com/img/"+encodeURIComponent(uin)+".gif";
		return "http://imain.xunlei.com/imgub/"+encodeURIComponent(uin)+".gif";
	}
};


function getNowTime(iTime)
{
        var date;
		if (iTime)
			date=new Date(iTime);
		else
			date=new Date();
        return date.getFullYear()+ "-" + addZero(date.getMonth()+1)  + "-" + addZero(date.getDate()) + " "+ addZero(date.getHours()) + ":" + addZero(date.getMinutes()) +":" + addZero(date.getSeconds()) ;
}

function g_sendUrlByIfr(u, callback) {
	var ifr=document.createElement("iframe");
	var ifr_id="iframe_tmp_"+new Date().getTime();
	ifr.id=ifr_id;
	ifr.name=ifr_id;
	ifr.width=0;
	ifr.height=0;
	document.body.appendChild(ifr);

try{
	if(ifr.addEventListener)
	{
		ifr.addEventListener("load", Delegate.create (this, function(){
							var o;
							var ifrs=document.getElementsByTagName("iframe");
							for (var i = 0; i < ifrs.length; i++)
							{ 
        						if (ifrs[i].id ==ifr_id)
								{
									o=frames[i];
									break;
								}	
							}
							if(o && callback)
							{	
								callback(o);
								
								//document.body.removeChild(o);
							}
						}),
						false
		);
	}
	else if( Browser.isMSIE )
	{
		ifr.attachEvent("onreadystatechange", function (){
							if(ifr.readyState!="complete") return;
							if(callback)
								callback(document.frames[ifr_id]);
							document.body.removeChild(ifr);
						}
		);
	}
	else if( ifr.attachEvent )
	{
		ifr.attachEvent("onload", function (){
							if(callback)
								callback(document.frames[ifr_id]);
							document.body.removeChild(ifr);
						}
		);
	}
	ifr.src=u; 
}
catch (e) {}

}

var ejs={selectone:{},radio:{},checkbox:{}}

ejs._check_type = function(eObject, sType)
{
	return (!eObject||!(eObject.type)||sType!=eObject.type.toLowerCase())?false:true;
}

ejs.selectone.checkType=function(oSelect)
{
	return ejs._check_type(oSelect,"select-one");
//	return (!oSelect||!(oSelect.type)||"SELECT-ONE"!=oSelect.type.toUpperCase())?false:true;
}

ejs.selectone.clear=function(oSelect)
{
	if(!this.checkType(oSelect)) return null;
	//clear
	var count = oSelect.options.length;
	while((count--)>0)
	{
		oSelect.removeChild(oSelect.options[0]);
	}
	return oSelect;
}

ejs.selectone.push=function(oSelect,sText,sValue)
{
	if(!this.checkType(oSelect)) return;
	var oOption = new Option(sText,sValue);
	oSelect.options.add(oOption);
}

ejs.selectone.fill=function(oSelect,aData,sTextField,sValueField)
{
	if(!this.checkType(oSelect)) return;
	if(!sTextField||""==sTextField)sTextField="text";
	if(!sValueField||""==sValueField)sValueField="value";
	try
	{
		if(aData.length||0==aData.length)
		{
			for(var i=0;i<aData.length;i++)
				eval("this.push(oSelect,aData[i]."+sTextField+",aData[i]."+sValueField+");");
		}
		else
			for(key in aData)
				eval("this.push(oSelect,aData[key]."+sTextField+",aData[key]."+sValueField+");");
	}catch(ex){}
}

ejs.selectone.get=function(oSelect)
{
	if(!this.checkType(oSelect)) return;
	if(oSelect.selectedIndex<0) return null;
	var obj = new Object();
	obj.value = oSelect.options[oSelect.selectedIndex].value;
	obj.text = oSelect.options[oSelect.selectedIndex].innerHTML;
	return obj;
}

ejs.selectone.set=function(oSelect,oSelectedOption,isText)
{
	if(!this.checkType(oSelect)) return;
	if(!oSelectedOption)return;
	var sJudge = "if(oSelect.options[i].";
	if(isText)
	{
		sJudge += "innerHTML==";
		sJudge += (oSelectedOption.text)?"oSelectedOption.text":"oSelectedOption";
	}
	else
	{
		sJudge += "value==";
		sJudge += (oSelectedOption.text)?"oSelectedOption.value":"oSelectedOption";
	}
	sJudge += "){try{oSelect.options[i].selected=true;}catch(e){try{oSelect.options.selectedIndex=i;}catch(e2){alert('ejs.selectone.set');}}}else{oSelect.options[i].selected=false;}"

	for(var i=0;i<oSelect.options.length;i++)
		eval(sJudge);
}

ejs.selectone.setIndex=function(oSelect,iIdx)
{
	if(!this.checkType(oSelect)) return;
	iIdx = parseInt(iIdx);
	if(isNaN(iIdx)||iIdx<0||iIdx>=oSelect.options.length)return;
	for(var i=0;i<oSelect.options.length;i++)
		if(i==iIdx)
		{
			try{oSelect.options[i].selected=true;}catch(e){try{oSelect.options.selectedIndex=i;}catch(e2){alert('ejs.selectone.setIndex');}}
		}
}

/*
ejs.radio.set=function(oForm,name,target_value)
{
	if(!oForm)return;
	eval("var radio = oForm."+name+";")
	if(!radio)return;
	if(!target_value)return;
	for(var i=0;i<radio.length;i++)
	{
		if(radio[i].value==target_value.toString())
			radio[i].checked=true;
		else
			radio[i].checked=false;
	}
}

ejs.radio.get=function(oForm,name)
{
	if(!oForm)return null;
	eval("var radio = oForm."+name+";")
	if(radio==null)return;
	for(var i=0;i<radio.length;i++)
	{
		if(radio[i].checked==true)
		{
			return radio[i].value;
		}
	}
	return null;
}*/
ejs.radio.checkType = function(oRadio)
{
	return ejs._check_type(oRadio,"radio");
}

ejs.radio.set = function(oRadio,target_value)
{
	if(!this.checkType(oRadio)||!oRadio.name) return;
	if(!target_value)return;
	var radio_list = $A($E(oRadio.name));
	for(var i=0;i<radio_list.length;i++)
	{
		if(radio_list[i].value==target_value.toString())
			radio_list[i].checked=true;
		else
			radio_list[i].checked=false;
	}
}

ejs.radio.get = function(oRadio)
{
	if(!this.checkType(oRadio)||!oRadio.name) return null;
	var radio_list = $A($E(oRadio.name));
	for(var i=0;i<radio_list.length;i++)
	{
		if(radio_list[i].checked==true)
			return radio_list[i].value;
	}
	return null;
}

//可能要作废，请勿使用
ejs.checkbox.set=function(oForm,name,target_values)
{
	if(!oForm)return;
	eval("var chkbox = oForm."+name+";")
	if(!chkbox)return;
	if(!target_values)return;
	target_values = $A(target_values);
	for(var i=0;i<chkbox.length;i++)
	{
		for(var j=0;j<target_values.length;j++)
		{
			if(chkbox[i].value==target_values[j].toString())
				chkbox[i].checked=true;
		}
	}
}

ejs.checkbox.checkType = function(oCheckbox)
{
	return ejs._check_type(oCheckbox,"checkbox");
}

ejs.checkbox.isCheck = function(oCheckbox)
{
	if(!this.checkType(oCheckbox)) return null;
	return oCheckbox.checked;
}

ejs.checkbox.setCheck = function(oCheckbox)
{
	if(!this.checkType(oCheckbox)) return;
	oCheckbox.checked = true;
}

ejs.checkbox.setUnCheck = function(oCheckbox)
{
	if(!this.checkType(oCheckbox)) return;
	oCheckbox.checked = false;
}



var date_gen = {
	_month_restrict:{1:31,2:28,3:31,4:30,5:31,6:30,7:31,8:31,9:30,10:31,11:30,12:31},
	_year_start:1957,
	_year_end:(new Date()).getFullYear(),
	_digit:function(i)
	{
		if(i<10)
			return "0" + i.toString();
		else
			return i.toString();
	},
	_array:function(iStart,iEnd,increment)
	{
		var result = [];
		if(!iStart||!iEnd)return result;
		if(!increment||0==increment)increment=1;
		i = iStart;
		while((increment>0&&i<=iEnd)||(increment<0&&i>=iEnd))
		{
			var obj = new Object();
			obj.value = this._digit(i);
			obj.text = this._digit(i);
			result.push(obj);
			i+=increment;
		}
		return result;
	},
	get_years:function()
	{
		var iStart = this._year_end;
		var iEnd = this._year_start;
		return this._array(iStart,iEnd,-1);
	},
	get_months:function()
	{
		var iStart = 1;
		var iEnd = 12;
		return this._array(iStart,iEnd);
	},
	get_days:function(iYear,iMonth)
	{
		if(isNaN(parseInt(iMonth,10))||parseInt(iMonth,10)<1||parseInt(iMonth,10)>12)
		{
			return [];
		}

		var iStart = 1;
		var iEnd = this._month_restrict[parseInt(iMonth,10)];
		if(28==iEnd)
			iEnd = (0==iYear%4)?29:28;

		return this._array(iStart,iEnd);
	},
	check:function()
	{
		if(!ejs||!ejs.selectone)throw("请包含ejs相关模块.");
	},
	_fill_:function(oSelect,itemList,emptyTxt,selectedValue)
	{
		this.check();
		ejs.selectone.clear(oSelect);
		if(emptyTxt)
			ejs.selectone.push(oSelect,emptyTxt,"");
		ejs.selectone.fill(oSelect,itemList);
		if(selectedValue)
			ejs.selectone.set(oSelect,selectedValue);
	},
	fill_years:function(oYear,emptyTxt,selectedValue)
	{
		this._fill_(oYear,this.get_years(),emptyTxt,selectedValue);
	},
	fill_months:function(oMonth,emptyTxt,selectedValue)
	{
		this._fill_(oMonth,this.get_months(),emptyTxt,selectedValue);
	},
	fill_days:function(oYear,oMonth,oDay,emptyTxt,selectedValue)
	{
		var sSelectedYear = ejs.selectone.get(oYear).value;
		var sSelectedMonth = ejs.selectone.get(oMonth).value;
		this._fill_(oDay,this.get_days(sSelectedYear,sSelectedMonth),emptyTxt,selectedValue);
	},
	clear:function(oSelect,emptyTxt)
	{
		ejs.selectone.clear(oSelect,emptyTxt);
		ejs.selectone.push(oSelect,emptyTxt,"");
	},
	year_from_str:function(date_str)
	{
		if(!date_str||""==date_str) return "0000";
		var year = date_str.substr(0,4);
		var month = date_str.substr(5,2);
		if(parseInt(year,10)>1970)
			return year;
		return "0000";
	},
	month_from_str:function(date_str)
	{
		if(!date_str||""==date_str) return "00";
		var year = date_str.substr(0,4);
		var month = date_str.substr(5,2);
		if(parseInt(year,10)>1970)
			return month;
		return "00";
	},
	day_from_str:function(date_str)
	{
		if(!date_str||""==date_str) return "00";
		var year = date_str.substr(0,4);
		var month = date_str.substr(5,2);
		var day = date_str.substr(8,2);
		if(parseInt(year,10)>1970)
			return day;
		return "00";
	}
	
	
};


/**
 * @class TabManager
 * @brief 用以创建TabGroup的"管理类"
 */
var TabManager={
	getInstance:function(tab_ctrl_id)
	{
		if(!tab_ctrl_id||""==tab_ctrl_id) return null;
		if(!this._tabGroups) this._tabGroups = {};
		if(this._tabGroups[tab_ctrl_id])return this._tabGroups[tab_ctrl_id];
		this._tabGroups[tab_ctrl_id] = new TabGroup(tab_ctrl_id);
		return this._tabGroups[tab_ctrl_id];
	}
};

/**
 * @class TabGroup
 * @brief Tab组控件
 */
function TabGroup(tab_ctrl_id)
{
	if(!tab_ctrl_id||""==tab_ctrl_id)
		throw "请指定tab_ctrl_id.";
	if(!$(tab_ctrl_id))
		throw "#tab_ctrl_id所对应的html节点不存在.";
	this._tabCtrlId = tab_ctrl_id;
}

TabGroup.prototype={
	_defaultKey:"_N_O_T_H_I_N_G_",
	_tabs:{},
	_htmlTag:"li",
	_htmlClassSelect:"select",
	_htmlClassUnselect:"",
	_htmlTemplate:"<{html_tag} id=\"{ctrl_id}_{key}\" class=\"{class_name}\" ><a href=\"javascript:;\" onclick=\"javascript:TabManager.getInstance('{ctrl_id}').selectTab('{key}');\">{name}</a></{html_tag}>",
	addTab:function(key, name, callback_select, callback_unselect)
	{
		var obj = new Object();
		obj.key = key;
		obj.name = name;
		obj.callback_select = callback_select;
		obj.callback_unselect = callback_unselect;
		this._tabs[key] = obj;
	},
	addTabs:function(aTabs, callback_select, callback_unselect)
	{
		if(!aTabs||!aTabs.length||aTabs.length==0)return;
		for(var i=0;i<aTabs.length;i++)
			this.addTab(aTabs[i].key, aTabs[i].name, callback_select, callback_unselect);
	},
	removeTab:function(key)
	{
		this._tabs[key] = null;
	},
	selectTab:function(key)
	{
		if(key==this._getDefault())return;
		this._setDefault(key);
		key = this._getDefault();
		for(_key in this._tabs)
		{
			var target_tab_elem = $(this._tabCtrlId+"_"+_key);
			if(!target_tab_elem)continue;
			if(_key==key)
			{
				target_tab_elem.className = this._htmlClassSelect;
				if(this._tabs[_key].callback_select)
					this._tabs[_key].callback_select(_key);
			}
			else
			{
				target_tab_elem.className = this._htmlClassUnselect;
				if(this._tabs[_key].callback_unselect)
					this._tabs[_key].callback_unselect(_key);
			}
		}
	},
	render:function()
	{
		var strHTML = "";
		for(_key in this._tabs)
		{
			var obj = this._tabs[_key];
			if(!obj)continue;
			strHTML+=this._replace(this._htmlTemplate,obj.key,obj.name,false);
		}
		$(this._tabCtrlId).innerHTML = strHTML;
	},
	setHtmlTag:function(htmlTag)
	{
		if(htmlTag&&""!=htmlTag) this._htmlTag = htmlTag;
	},
	setHtmlClass:function(htmlClassSelect,htmlClassUnselect)
	{
		if(htmlClassSelect&&""!=htmlClassSelect)
			this._htmlClassSelect = htmlClassSelect;
		if(htmlClassUnselect&&""!=htmlClassUnselect) 
			this._htmlClassUnselect = htmlClassUnselect;
	},
	_setDefault:function(key)
	{
		if(key&&""!=key&&this._tabs[key])
			this._defaultKey = key;
	},
	_getDefault:function()
	{
		if(this._defaultKey&&""!=this._defaultKey) return this._defaultKey;
		for(_key in this._tabs)
		{
			this._defaultKey = _key;
			return _key;
		}
		return null;
	},
	_replace:function(src,key,name,isSelected)
	{
		if(!key)key="";
		if(!name)name="";
		var tabCtrlId = this._tabCtrlId;
		var htmlTag = this._htmlTag;
		var htmlClassName = (isSelected)?this._htmlClassSelect:this._htmlClassUnselect;
		var RexStr = /{ctrl_id}|{html_tag}|{key}|{name}|{class_name}/g
		src = src.replace(RexStr,
			function(MatchStr){
				switch(MatchStr){
					case "{ctrl_id}": return tabCtrlId;
					case "{html_tag}": return htmlTag;
					case "{key}": return key;
					case "{name}": return name;
					case "{class_name}": return htmlClassName;
					default : return "";
				}
			}
		)
		return src;
	}
};

/**
 * @class Pager
 * @brief 产生分页代码
 */
function Pager(iTotal_num, iPage_size, url_format, bIsStrict)
{
	this._is_strict = (bIsStrict)?true:false;
	this._total = parseInt(iTotal_num);
	this._page_size = parseInt(iPage_size);
	if(isNaN(this._total)||isNaN(this._page_size)
	||this._total<0||this._page_size<0)throw("total_num 和 page_size 必须是>=0的整型数字");
	if(this._page_size==0)this._page_size=10;
	this._url = url_format;
	this._total_page = (iTotal_num-iTotal_num%iPage_size)/iPage_size;
	this._curr_page = 1;
	this._curr_num = this._page_size ;

	if(iTotal_num%iPage_size>0)
		this._total_page+=1;
	if(this._total_page==0)this._total_page=1;
}

Pager.prototype = {
	_max_show_page:5,
	_page_template_current:"<strong>{page}</strong>",
	_page_template_others:"<a href=\"{url}\">{page}</a>",
	_page_template_prev:"<a href=\"{url}\">&lt;上一页</a>",
	_page_template_next:"<a href=\"{url}\">下一页&gt;</a>",
	_page_template_first:"<a href=\"{url}\">首页</a>",
	_page_template_last:"<a href=\"{url}\">末页</a>",
	_page_template_separator:" ",
	_getIntValue:function(iValue)
	{
		if(isNaN(parseInt(iValue)))throw("要求传入值为[整型数字],而传入的值为:["+iValue+"]");
		return parseInt(iValue);
	},
	_replaceURL:function(iCurr)
	{
		var iSize = this._page_size;
		var src = this._url.replace(/{page}|{size}/g, 
			function(MatchStr){
				switch(MatchStr){
					case "{page}": return iCurr;
					case "{size}": return iSize;
					default : return "";
				}
			});
		return src;
	},
	getStat:function()
	{
		var str;
		for(property_item in this)
		{
			if("_getIntValue|_replaceURL|getStat|setCurrent".indexOf(property_item)>=0)continue;
			if("getPagerHTML|getPrevPageHTML|getNextPageHTML|getPageStart|getPageEnd".indexOf(property_item)>=0)
				str+=property_item+":"+eval("(this."+property_item+"())")+"\r\n";
			else
				str+=property_item+":"+eval("(this."+property_item+")")+"\r\n";
		}
		return str;
	},
	setTotalPage:function(iTotalPage)
	{
		iTotalPage = parseInt(iTotalPage);
		if(isNaN(iTotalPage)||iTotalPage<1)throw("iTotalPage必须使合法[整型数字]");
		this._total_page = iTotalPage;
	},
	setCurrent:function(curr_page, curr_num)
	{
		this._curr_page = this._getIntValue(curr_page);
		this._curr_num = this._getIntValue(curr_num);
		if( (this._is_strict)&&(this._curr_page<1||this._curr_page>this._total_page) )throw("当前页的值超出范围:");
		if( (this._is_strict)&&(this._curr_num<0||this._curr_num>this._page_size) )throw("当前记录数的值超出范围:");
	},
	/**
	 * @brief获得HTML代码: 1 2 3 ... n
	 */
	getPagerHTML:function()
	{	
		var strHTML="";
		var start_show_page = 1;
		//规范最大/最小显示页码数量
		if(this._max_show_page<3||this._max_show_page>20||this._max_show_page>this._total_page)
			this._max_show_page=(this._total_page<5)?this._total_page:5;
		this._max_show_page -= 1;
		//规范起始显示的页码		
		if(this._total_page>this._max_show_page)
			start_show_page = this._curr_page-parseInt(this._max_show_page/2);
		if(start_show_page<1)
			start_show_page = 1;
		if(start_show_page+this._max_show_page>this._total_page)
			start_show_page = this._total_page - this._max_show_page;
		//产生页码序列
		for(var i=start_show_page;i<=(start_show_page+this._max_show_page);i++)
		{
			if(i==this._curr_page)
				strHTML+=this._page_template_current.replace(/{page}/g,i);
			else
				strHTML+=this._page_template_others.replace(/{url}/g, this._replaceURL(i) ).replace(/{page}/g, i);
			if(i<this._total_page);
				strHTML+=this._page_template_separator;
		}
		return strHTML;
	},
	/**
	 * @brief获得HTML代码: 上一页
	 */
	getPrevPageHTML:function()
	{
		var strHTML="";
		if(this._curr_page>1)
			strHTML+=this._page_template_prev.replace(/{url}/g, this._replaceURL(this._curr_page-1) );
	
		return strHTML;
	},
	/**
	 * @brief获得HTML代码: 下一页
	 */
	getNextPageHTML:function()
	{
		var strHTML="";
		if(this._curr_page<this._total_page)
			strHTML+=this._page_template_next.replace(/{url}/g, this._replaceURL(this._curr_page+1) );
	
		return strHTML;
	},
	/**
	 * @brief获得HTML代码: 首页
	 */
	getFirstPageHTML:function()
	{
		var strHTML="";
		if(this._curr_page>1)
			strHTML+=this._page_template_first.replace(/{url}/g, this._replaceURL(1) );
	
		return strHTML;
	},
	/**
	 * @brief获得HTML代码: 末页
	 */
	getLastPageHTML:function()
	{
		var strHTML="";
		if(this._curr_page<this._total_page)
			strHTML+=this._page_template_last.replace(/{url}/g, this._replaceURL(this._total_page) );
	
		return strHTML;
	},
	/**
	 * @brief获得本页的开始位置
	 */
	getPageStart:function()
	{
		return (this._curr_num>0)?((this._curr_page-1)*this._page_size+1):0;
	},
	/**
	 * @brief获得本页的结束位置
	 */
	getPageEnd:function()
	{
		return (this._curr_page-1)*this._page_size+this._curr_num;
	}
};

function getPageList(cur_page, total_page, maxlist_perpage)
{
	var pager=new Object();
	if(total_page<=maxlist_perpage)
	{
		pager.from=1;
		pager.to=total_page;
	}
	else
	{
		if( cur_page<3 )
		{
			pager.from=1;
			pager.to=5;
		}
		else if( total_page-cur_page<2 )
		{
			pager.to=total_page;
			pager.from=pager.to-4;
		}
		else
		{
			pager.from=cur_page-2;
			pager.to=cur_page+2;
		}
	}

	return pager;
}