var userAgent = navigator.userAgent.toLowerCase();
var is_opera = userAgent.indexOf('opera') != -1 && opera.version();
var is_moz = (navigator.product == 'Gecko') && userAgent.substr(userAgent.indexOf('firefox') + 8, 3);
var is_ie = (userAgent.indexOf('msie') != -1 && !is_opera) && userAgent.substr(userAgent.indexOf('msie') + 5, 3);

if(window.$) window.J = $;
$ = null;

$ = function(elementId)
{
	return document.getElementById(elementId);
};

function strlen(str) {
	if(emptyStr(str))
	return 0;
	return (is_ie && str.indexOf('\n') != -1) ? str.replace(/\r?\n/g, '_').length : str.length;
}

function chlen(str){
	return str.replace(/[^\x00-\xff]/gi,'xx').length;
}

function emptyObj(obj){
	return obj == null || typeof obj == 'undefined';
}

function emptyStr(str){
	return emptyObj(str) || str == '';
}

function getCookie(name){
	var reg = new RegExp("(^|;|\\s+)"+name+"=([^;]*)(;|$)");
	var m = document.cookie.match(reg);
	return(emptyObj(m) ? "" : unescape(m[2]) );
}

function loadJs(jsf, func){
	var j = document.createElement('script');
	j.type = 'text/javascript';
	j.src = jsf.indexOf('http:\/\/') == 0 ? jsf : ('/' + jsf);
	j.loaded = false;
	j.onload = function(){
		if(this.loaded) return;
		if(typeof func == 'function') func();
		document.body.removeChild(j);
	}
	document.body.appendChild(j);
}

function copyText(id) {
  id.focus();
  id.select();
  var clipeText = id.createTextRange();
  clipeText.execCommand("Copy");
}

function addFavorite(sURL, sTitle){
	try{
		window.external.addFavorite(sURL, sTitle);
	} catch (e){
		try{
			window.sidebar.addPanel(sTitle, sURL, "");
		} catch (e){}
	}
}
function setHome(obj,vrl){
	try{
		obj.style.behavior='url(#default#homepage)';obj.setHomePage(vrl);
	} catch(e){
		if(window.netscape) {
			try {
				netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect");
			} catch (e) { }
			var prefs = Components.classes['@mozilla.org/preferences-service;1'].getService(Components.interfaces.nsIPrefBranch);
			prefs.setCharPref('browser.startup.homepage',vrl);
		}
	}
}

function fetchOffset(obj){
	var left = obj.offsetLeft;
	var top = obj.offsetTop;
	var width = obj.offsetWidth;
	var height = obj.offsetHeight;
	while(!emptyObj(obj = obj.offsetParent)){
		left += obj.offsetLeft;
		top += obj.offsetTop;
	}
	return { 'left':left, 'top':top, 'width': width, 'height': height};
}

function getBodyWidthAndHeight(){
	var bsW = document.body.scrollWidth;
	var bsH = document.body.scrollHeight;
	var bodyw = 0;
	var bodyh = 0;
	if(is_opera){
		bodyw = document.body.clientWidth;
		bodyh = document.body.clientHeight;
	} else {
		bodyw = document.documentElement.clientWidth;
		bodyh = document.documentElement.clientHeight;
	}
	bsW = bsW < bodyw ? bodyw : bsW;
	bsH = bsH < bodyh ? bodyh : bsH;
	return {'width':bsW,'height':bsH,'cwidth':bodyw,'cheight':bodyh};
}

function drag(elementToDrag, rangeDrag) {
	var wh = getBodyWidthAndHeight();
	var event = window.event ? window.event : drag.caller.arguments[0];
	var startX = event.clientX, startY = event.clientY;
	var origX = elementToDrag.offsetLeft, origY = elementToDrag.offsetTop;
	var deltaX = startX - origX, deltaY = startY - origY;
	function moveHandler(e) {
		e = e||window.event;
		var ll = e.clientX - deltaX;
		if(ll < 0){
			ll = 0;
		} else if(ll > wh['width'] - elementToDrag.offsetWidth){
			ll = wh['width'] - elementToDrag.offsetWidth;
		}
		var tt = e.clientY - deltaY;
		if(tt < 0){
			tt = 0;
		} else if(tt > wh['height'] - elementToDrag.offsetHeight){
			tt = wh['height'] - elementToDrag.offsetHeight;
		}
		elementToDrag.style.left = ll + "px";
		elementToDrag.style.top = tt + "px";

		if (e.stopPropagation)
			e.stopPropagation();
		else
			e.cancelBubble = true;
	}

	function upHandler(e) {
		if (!e) e = window.event;

		if (document.removeEventListener) {
			document.removeEventListener("mouseup", upHandler, true);
			document.removeEventListener("mousemove", moveHandler, true);
		}
		else if (document.detachEvent) {
			elementToDrag.detachEvent("onlosecapture", upHandler);
			elementToDrag.detachEvent("onmouseup", upHandler);
			elementToDrag.detachEvent("onmousemove", moveHandler);
			elementToDrag.releaseCapture();
		}
		else {
			document.onmouseup = olduphandler;
			document.onmousemove = oldmovehandler;
		}
		if (e.stopPropagation)
			e.stopPropagation( );
		else 
			e.cancelBubble = true;
		
	}

	if (document.addEventListener) {
		document.addEventListener("mousemove", moveHandler, true);
		document.addEventListener("mouseup", upHandler, true);
	}
	else if (document.attachEvent) {
		elementToDrag.setCapture();
		elementToDrag.attachEvent("onmousemove", moveHandler);
		elementToDrag.attachEvent("onmouseup", upHandler);
		elementToDrag.attachEvent("onlosecapture", upHandler);
	}
	else {
		var oldmovehandler = document.onmousemove;
		var olduphandler = document.onmouseup;
		document.onmousemove = moveHandler;
		document.onmouseup = upHandler;
	}

	if (event.stopPropagation)
		event.stopPropagation( );
	else
		event.cancelBubble = true;

	if (event.preventDefault)
		event.preventDefault( );
	else
		event.returnValue = false;
}

function showComment(commentid, imgobj){
	var comment = $('cmt'+commentid);
	if(imgobj.src.indexOf('open.gif')!=-1){
		imgobj.src = '/images/closed.gif';
		comment.style.display = "none";
	} else {
		imgobj.src = '/images/open.gif';
		comment.style.display = "";
	}
	
}

var g_menu_obj = null;
var g_menu_timeout = null;
var g_menu_iframe = null;

function showMenu(layerid, obj){
	if(g_menu_timeout)
	clearTimeout(g_menu_timeout);
	if(emptyObj($(layerid)) || (g_menu_obj == obj && $('__MENU__').style.display=='block'))
	return;
	try{
		g_menu_obj.className = g_menu_obj.className.replace(/\s*mouseover/g, "");
	}catch(e){}
	var os = fetchOffset(obj);
	var menu = $('__MENU__');
	if(emptyObj(menu)){
		menu = document.createElement('ul');
		menu.id = '__MENU__';
		menu.className = 'popmenu';
		menu.style.display = 'none';
		menu.style.position = 'absolute';
		menu.style.width = '110px';
		if(is_ie)
			$('catenav').appendChild(menu);
		else document.body.appendChild(menu);
	}

	if(is_ie && emptyObj(g_menu_iframe)){
		g_menu_iframe = document.createElement('iframe');
		g_menu_iframe.style.display = 'none';
		g_menu_iframe.allowtransparency = true;
		g_menu_iframe.style.position = 'absolute';
		g_menu_iframe.style.border = 'none';
		g_menu_iframe.frameborder = 'no';
		g_menu_iframe.style.zIndex = menu.style.zIndex - 1;
		if(is_ie)
			$('catenav').appendChild(g_menu_iframe);
		else document.body.appendChild(g_menu_iframe);
	}

	menu.innerHTML = $(layerid).innerHTML;
	obj.className += " mouseover";
	menu.style.display = 'block';
	var k = fetchOffset(document.body);
	menu.style.left = (os['left'] + 110 > k['left']+k['width'] ? os['left'] + os['width'] - 110 : os['left']) + 'px';
	menu.style.top = os['top'] + os['height'] + 'px';
	if(is_ie && g_menu_iframe){
		g_menu_iframe.style.display = 'block';
		g_menu_iframe.style.left = menu.style.left;
		g_menu_iframe.style.width = menu.offsetWidth + 'px';
		g_menu_iframe.style.height = menu.offsetHeight + 'px';
		g_menu_iframe.style.top = menu.style.top;
		g_menu_iframe.style.filter = "alpha(Opacity=0)";
		menu.style.filter = "alpha(Opacity=100,FinishOpacity=80,Style=1)";
	}

	g_menu_obj = obj;
	obj.onmouseover = menu.onmouseover = function(){ showMenu(layerid, obj);};
	obj.onmouseout = menu.onmouseout = function(){ g_menu_timeout = setTimeout("hideMenu()", 1000);};
}

function hideMenu(oo){
	if(g_menu_timeout)
	clearTimeout(g_menu_timeout);
	var menu = $('__MENU__');
	if(!emptyObj(menu))
	menu.style.display = 'none';
	try{
		g_menu_obj.className = g_menu_obj.className.replace(/\s*mouseover/g, "");
		g_menu_iframe.style.display = 'none';
	}catch(e){}
}

var g_img_url_arr = [];
var g_img_arr = [];
var g_img_currentId = 0;
var g_img_interval = null;
function simg(i){
	var ss = false;
	if(!i){
		i = g_img_currentId + 1;
	} else ss = true;
	i = (i-1) % g_img_arr.length + 1;

	if(ss){
		if(g_img_interval) clearInterval(g_img_interval);
		$('ictrl'+i).onmouseout = function(){
			g_img_interval = setInterval("simg()", 3000);
		}
	}

	try{
		$('ictrl'+g_img_currentId).className = '';
	}catch(e){}
	g_img_currentId = i;
	$('ictrl'+i).className = 'hover';
	var fimg = $('fimg');
	fimg.src = g_img_arr[i-1].src;
	fimg.parentNode.title = fimg.alt = g_img_arr[i-1].alt;
	fimg.parentNode.href = g_img_url_arr[i-1];

}

function initImg(arr){
	var fimg = $('fimg');
	var fa = fimg.parentNode;
	var imgctrl = $('imgctrl');
	var i = 1;
	for(;i<arr.length;i++){
		var a = arr[i];
		var ii = new Image();
		ii.src = a[0];
		ii.alt = a[1];
		g_img_arr.push(ii);
		g_img_url_arr.push(a[2]);
		imgctrl.innerHTML += '<li id="ictrl'+i+'" onmouseover="simg('+i+')">'+i+'</li>';
	}

	if(i<=1) return;
	fimg.src = g_img_arr[0].src;
	fa.title = fimg.alt = g_img_arr[0].alt;
	fa.href = g_img_url_arr[0];
	if(i<=2) return;
	g_img_currentId = 1;
	$('ictrl1').className = 'hover';
	g_img_interval = setInterval("simg()", 3000);
}

function tops(obj, index){
	var pp = obj.parentNode.parentNode;
	var p = pp.currentNode;
	if(p == obj) return;
	try{
		p.className = p.className.replace(/\s*current/g, '');
	}catch(e){}
	obj.className += " current";
	pp.currentNode = obj;

	$('innerC').innerHTML = $('tops'+index).innerHTML;
}

function updateStatus(){
	var bt_user = getCookie('bt_user');
	if(bt_user){
		$('lg').innerHTML = '您已经登录为用户：<a href="/my.php">'+bt_user+'</a><span id="newmsg"></span><a href="/upload.php">发种</a><a href="/addusernotice.php">发公告</a><a href="/torrentcheck.php">审种</a><a href="/logout.php">注销</a>';
		$('operation').innerHTML = '<li><span onmouseover="showMenu(\'my\', this)">个人中心</span></li>' + $('operation').innerHTML;
	} else {
		$('lg').innerHTML = '你还没有登录。<a href="/reg.php">注册</a><a href="/login.php">登录</a>';
	}
}

function checkUploadForm(obj){
	try{
		var passed = true;;
		var t = /\.torrent$/.test(obj.file.value);
		$('error_file').style.display = t ? 'none' : '';
		passed = t == false ? false : passed;

		t = /^-?[1-9][0-9]*$/.test(obj.category.value);
		$('error_category').style.display = t ? 'none' : '';
		passed = t == false ? false : passed;

		var len = chlen(obj.title.value);
		t = len > 0 && len <= 120;
		$('error_title').style.display = t ? 'none' : '';
		passed = t == false ? false : passed;

		len = chlen(obj.describe.value);
		t = len > 0 && len <= 10000;
		$('error_describe').style.display = t ? 'none' : '';
		passed = t == false ? false : passed;
		return passed;
	}catch(e){/*alert(e.message);*/return false;}
}

function checkMessageForm(obj){
	try{
		if(!obj.to.value){
			alert('请填写发送给的用户名！');
			return false;
		}
		
		var len = chlen(obj.content.value);
		if(len <= 0 || len > 500){
			alert('请填写不超过500字节的消息内容！');
			return false;
		}
	}catch(e){/*alert(e.message);*/return false;}
}

function checkAddUNForm(obj){
	try{
		var len = chlen(obj.content.value);
		if(len <= 0 || len > 50){
			alert('请填写不到50字节的内容！');
			return false;
		}
		
		len = chlen(obj.url.value);
		if(len > 100){
			alert('链接地址不要超过100字节！');
			return false;
		}
	}catch(e){alert(e.message);return false;}
}

function updateSize(){
	var bodyw = 0;
	if(is_opera) bodyw = document.body.clientWidth;
	else bodyw = document.documentElement.clientWidth;
	if(bodyw <= 1000) {
		document.body.style.width = "1000px";
	} else document.body.style.width = bodyw - 12 +"px";
}
var g_un_interval = null;
var g_un_li_interval = null;
var g_un = null;
var g_un_height = 0;
var g_un_liheight = 0;
var g_un_tmp = 0;
function scrollUNLi(){
	if(g_un_tmp>=g_un_liheight || g_un.scrollTop - g_un_height>=0){
		g_un_tmp = 0;
		if(g_un.scrollTop - g_un_height>=0) g_un.scrollTop = 0;
		if(g_un_li_interval) {clearInterval(g_un_li_interval); g_un_li_interval = null;}
	} else {
		g_un_tmp ++;
		g_un.scrollTop ++;
	}
}

function scrollUserNotice(){
	if(!g_un){
		g_un = $('usernotice');
		if(!g_un) return;
	}
	g_un_height = g_un.scrollHeight;
	if(g_un.getElementsByTagName('li').length <= 10) return;
	g_un_liheight =  g_un_height / g_un.getElementsByTagName('li').length;
	g_un.innerHTML += g_un.innerHTML;
	g_un_interval = setInterval("g_un_li_interval = setInterval('scrollUNLi();', 50);", 4000);
	g_un.onmouseover = function(){
		if(g_un_interval) { clearInterval(g_un_interval);g_un_interval=null; }
	};
	g_un.onmouseout = function(){
		if(!g_un_interval) g_un_interval = setInterval("g_un_li_interval = setInterval('scrollUNLi();', 50);", 4000);
	};
}
var g_module = null;
var g_moduleifr = null;
function setModule(){
	var wh = getBodyWidthAndHeight();
	var bsW = wh['width'];
	var bsH = wh['height'];
	if(!g_module){
		g_module = document.createElement('div');
		with(g_module.style){
			position = 'absolute';
			display = 'none';
			background = '#bbb';
			left = 0;
			top = 0;
			zIndex = 9999;
			MozOpacity = 0.3;
			opacity = 0.3;
		}
		document.body.appendChild(g_module);
	}
	if(is_ie && !g_moduleifr){
		g_moduleifr = document.createElement('iframe');
		g_moduleifr.frameborder = 'no';
		with(g_moduleifr.style){
			border = 'none';
			position = 'absolute';
			display = 'none';
			left = 0;
			top = 0;
			zIndex = 9998;
			filter = "alpha(Opacity=0)";
		}
		g_module.style.filter = "alpha(Opacity=30)";
		document.body.appendChild(g_moduleifr);
	}
	g_module.style.width = bsW+'px';
	g_module.style.height = bsH+'px';
	g_module.style.display = '';
	if(is_ie){
		g_moduleifr.style.width = bsW+'px';
		g_moduleifr.style.height = bsH+'px';
		g_moduleifr.style.display = '';
	}
}
function removeModule(){
	if(g_module) g_module.style.display = 'none';
	if(is_ie&&g_moduleifr){
		g_moduleifr.style.display = 'none';
	}
}
function createAbsoluteDiv(id, className, cwidth, czIndex){
	var div = document.createElement('div');
	div.id = id;
	div.className = className;
	with(div.style){
		position = 'absolute';
		display = 'none';
		width = cwidth+'px';
		if(czIndex) zIndex = czIndex;
	}
	document.body.appendChild(div);
	return div;
}
function showAtCenter(obj){
	if(!obj) return;
	var wh = getBodyWidthAndHeight();
	obj.style.left = (wh['cwidth']-500<0?0:wh['cwidth']-500)/2+'px';
	obj.style.display = '';
	obj.style.top = (wh['cheight']-obj.offsetHeight-100<0?0:wh['cheight']-obj.offsetHeight-100)/2+'px';
}
var g_msg_container = null;
function readMsg(content, author, mtime){
	if(!g_msg_container){
		g_msg_container = createAbsoluteDiv('msgcon', 'orange', 500, 10000);
	}
	setModule();
	g_msg_container.innerHTML = '<h3 onmousedown="drag(this.parentNode);"><span class="close" onclick="closeMsg();">关闭</span>来自 '+author+' 的短消息（'+mtime+'）</h3><p>'+content+'</p>';
	showAtCenter(g_msg_container);
}
function closeMsg(){
	removeModule();
	if(g_msg_container) g_msg_container.style.display = 'none';
}

function setColor(color){
	if(!color){
		color = getCookie('bt_color');
	}
	var cs = document.getElementsByTagName('div');
	for(var i=0;i<cs.length;i++){
		var c = cs[i];
		var cn = c.className;
		cn = cn.replace('orange', color);
		cn = cn.replace('green', color);
		cn = cn.replace('blue', color);
		c.className = cn;
	}
}


function comment(bid){
	if(!bid || bid<=0) return;
	var bc = $('bcontent'+bid);
	if(!bc) return;
	var v = bc.value.replace(/^\s*|\s*$/g, '');
	if(!v) return alert('请填写内容');

	var frm = $('cmtfrm');
	frm.bid.value = bid;
	frm.bcontent.value = v;
	frm.submit();
}

function fetchComment(bid){
	if($('cmtcnt'+bid)) $('cmtcnt'+bid).innerHTML = 'loading...';
	loadJs('getreview.php?bid='+bid+'&r='+Math.random());
}
//window.onresize = updateSize;
