/**
 * Author:		ideadawn
 * Contact:		ideadawn@126.com
 * Copyright:	YuYe Technologie
 * Date:		2009.09
 */

/* 基本功能构造开始 */
// 基类
var ideadawn = function(id) {
	return document.getElementById(id);
}
// 扩展新方法
ideadawn.extend = function(obj)
{
	if( typeof obj == 'object' ) {
		for( var key in obj )
		{
			ideadawn[key] = obj[key];
		}
	}
	return null;
}
// 构造基础方法
ideadawn.extend({
	// 基准URL地址
	surl: 'http://www.zjxyol.com/',
	browser:
	{
		msie: null,
		firefox: null,
		opera: null,
		safari: null,
		chrome: null,
		check: function()
		{
			var ua = window.navigator.userAgent;
			if( ua.indexOf('MSIE') != -1 ) {
				ideadawn.browser.msie = ua.match(/MSIE\s*([\d\.]+)/)[1];
			} else if( document.getBoxObjectFor ) {
				ideadawn.browser.firefox = ua.match(/Firefox\/([\d\.]+)/)[1];
			} else if( window.opera ) {
				ideadawn.browser.opera = ua.match(/Opera[^\d]+([\d\.]+)/)[1];
			} else if( ua.indexOf('Safari') != -1 && ua.indexOf('Version') != -1 ) {
				ideadawn.browser.safari = ua.match(/Version\/([\d\.]+)/)[1];
			} else if( ua.indexOf('Chrome') != -1 ) {
				ideadawn.browser.chrome = ua.match(/Chrome\/([\d\.]+)/)[1];
			}
			return null;
		}
	},
	onLoad: function(func)
	{
		if( document.addEventListener ) {
			document.addEventListener("DOMContentLoaded", function() {
				document.removeEventListener("DOMContentLoaded", arguments.callee, false);
				func();
				return null;
			}, false);
		} else if( document.attachEvent ) {
			if( document.documentElement.doScroll && window.self == window.top ) {
				(function() {
					try {
						document.documentElement.doScroll("left");
					}catch(ex) {
						setTimeout(arguments.callee, 20);
						return null;
					}
					func();
					return null;
				})();
			} else {
				document.attachEvent("onreadystatechange", function() {
					if( document.readyState == "complete" ) {
						document.detachEvent("onreadystatechange", arguments.callee);
						func();
					}
					return null;
				});
			}
		}
		return null;
	},
	onUnload: function(func)
	{
		window.onunload = function()
		{
			func();
			window.dhm = window.ideadawn = null;
		}
		return null;
	},
	
	remove: function(arr, i)
	{
		for(var j=i; j<arr.length; j++)
		{
			arr[j] = arr[j+1];
		}
		arr.pop();
		return arr;
	},
	redirect: function(url, black)
	{
		if( url != undefined && url != '' ) {
			if( ! /http:\/\//.test(url) ) {
				url = ideadawn.surl + url;
			}
			if( black != undefined ) {
				window.open(url, 'newwindow');
			} else {
				window.location.href = url;
			}
		}
		return null;
	},
	
	// 获取一类元素
	tag: function(container, tag_str)
	{
		return container.getElementsByTagName(tag_str);
	},
	// 去掉字符串两端的空格
	trim: function(str)
	{
		return str.replace(/^\s*|\s*$/, '');
	},
	// 判断是否为空
	empty: function(str)
	{
		if( ! str || str == '' || str == 0 ) {
			return true;
		} else {
			return false;
		}
	},
	
	// 克隆对象
	clone: function(obj)
	{
		if( typeof obj != 'object' ) {
			return obj;
		}
		var objFunc = function(){};
		objFunc.prototype = obj;
		return new objFunc();
	},
	
	// 事件绑定
	bind: function(obj, estr, f)
	{
		if( ideadawn.empty(estr) && ideadawn.empty(f) ) {
			for(var i=0; i<obj.length; i++)
			{
				ideadawn.bind(ideadawn(obj[i][0]), obj[i][1], obj[i][2]);
			}
		} else {
			if( obj.addEventListener ) {
				obj.addEventListener(estr, f, false);
			} else if( obj.attachEvent ) {
				obj.attachEvent('on'+estr, f);
			} else {
				obj['on'+estr] = f;
			}
		}
		return null;
	},
	unbind: function(obj, estr, f)
	{
		if( ideadawn.empty(estr) && ideadawn.empty(f) ) {
			for(var i=0; i<obj.length; i++)
			{
				ideadawn.unbind(dhm(obj[i][0]), obj[i][1], obj[i][2]);
			}
		} else {
			if( obj.addEventListener ) {
				obj.removeEventListener(estr, f, false);
			} else if( obj.attachEvent ) {
				obj.detachEvent('on'+estr, f);
			} else {
				obj['on'+estr] = null;
			}
		}
		return null;
	},
	
	// CSS
	css: function(obj, key, value)
	{
		if( value !== undefined ) {
			obj.style[key] = value;
			return null;
		} else {
			if( obj.style[key] ) {
			   return obj.style[key];
			}
			if( obj.currentStyle ) {
			   return obj.currentStyle[key];
			}
			if( document.defaultView && document.defaultView.getComputedStyle) {
			   return document.defaultView.getComputedStyle(obj, null).getPropertyValue(key);
			}
		}
	},
	
	// 显示与隐藏
	show: function(obj, isBlock)
	{
		if( isBlock == true ) {
			ideadawn.css(obj, 'display', 'block');
		} else {
			ideadawn.css(obj, 'display', '');
		}
		return null;
	},
	hide: function(obj)
	{
		return ideadawn.css(obj, 'display', 'none');
	},
	toggle: function(obj, isBlock)
	{
		if( obj.style.display == 'none' ) {
			return ideadawn.show(obj, isBlock);
		} else {
			return ideadawn.hide(obj);
		}
	},
	
	// 创建新元素
	textNode: function(str)
	{
		return document.createTextNode(str);
	},
	newElem: function(str)
	{
		return document.createElement(str);
	}
});

// 初始化浏览器对象
ideadawn.browser.check();
// 快捷方式
var dhm = ideadawn;

// 载入ajax对象
ideadawn.extend({
	ajax: {
		// XMLHTTPRequest实例
		instance: null,
		// 超时
		timeout: 10,
		// 时间控制器
		timer: null,
		// 发生错误时的回调函数
		error: null,
		// 成功时的回调函数
		success: null,
		// 请求地址
		url: ideadawn.surl,
		// 请求方法
		method: 'POST',
		// 预处理队列
		pretreat: 'ideadawn.ajaxHeader("Content-Type", "application/x-www-form-urlencoded; charset=UTF-8")'
	},
	// 初始化ajax
	ajaxInit: function()
	{
		if( ideadawn.ajax.instance != null ) {
			return true;
		}
		if( ! window.XMLHttpRequest ) {
			XMLHttpRequest = function()
			{
				return new ActiveXObject('Microsoft.XMLHTTP');
			};
		}
		ideadawn.ajax.instance = new XMLHttpRequest();
		return true;
	},
	// 预发送数据(http头)
	ajaxHeader: function(key, value)
	{
		if( ideadawn.empty(key) || ideadawn.empty(value) ) {
			return false;
		}
		ideadawn.ajax.instance.setRequestHeader(key, value);
		return null;
	},
	// 预执行函数
	ajaxPretreat: function(obj)
	{
		if( ideadawn.empty(obj) ) {
			return false;
		}
		if( typeof obj == 'string' ) {
			if( /\(/.test(obj) ) {
				eval(obj);
			} else {
				eval(obj)();
			}
		}
		if( typeof obj == 'obj' ) {
			for( var key in obj ) {
				if( typeof obj[key] == 'string' ) {
					ideadawn.ajaxPretreat(key);
				}
				if( typeof obj[key] == 'object' ) {
					ideadawn.ajaxPretreat(obj[key]);
				}
			}
		}
		return null;
	},
	// 发送数据
	ajaxSend: function(url, method, data, success, error)
	{
		if( ! ideadawn.ajax.instance ) {
			ideadawn.ajaxInit();
		}
		var tmp_ajax = ideadawn.clone(ideadawn.ajax);
		
		if( url && url.toString().length > 1 ) {
			url = tmp_ajax.url + url;
		} else {
			url = tmp_ajax.url;
		}
		
		method = method.toUpperCase();
		if( method != 'POST' || method != 'GET' ) {
			method = tmp_ajax.method.toUpperCase();
		}
		
		if( typeof data == 'object' ) {
			var tmp_data = '', comma = '';
			for( var key in data )
			{
				tmp_data += comma + key + '=' + data[key];
				comma = '&';
			}
		} else {
			var tmp_data = data;
		}
		data = null;
		
		tmp_ajax.instance.open(method, url, true);
		var tmp_error;
		if( error ) {
			tmp_error = error;
		} else if( tmp_ajax.error ) {
			tmp_error = tmp_ajax.error;
		} else {
			tmp_error = null;
		}
		tmp_ajax.timer = window.setTimeout(
			function(){
				ideadawn.ajaxError(tmp_ajax.instance, tmp_error);
			}, 
			tmp_ajax.timeout * 1000
		);
		
		tmp_ajax.instance.onreadystatechange = function(){
			if( tmp_ajax.instance.readyState == 4 ) {
				if( tmp_ajax.instance.status == 200 ) {
					window.clearTimeout(tmp_ajax.timer);
					tmp_ajax.timer = null;
					if( ideadawn.empty(success) ) {
						success = tmp_ajax.success;
					}
					ideadawn.ajaxComplete(decodeURI(ideadawn.trim(tmp_ajax.instance.responseText)), success);
				}
			}
		};
		ideadawn.ajaxPretreat(ideadawn.ajax.pretreat);
		ideadawn.ajax.instance.send(tmp_data);
		return null;
	},
	// POST方法
	post: function(url, data, success, error)
	{
		return ideadawn.ajaxSend(url, 'POST', data, success, error);
	},
	// GET方法
	get: function(url, data, success, error)
	{
		return ideadawn.ajaxSend(url, 'GET', data, success, error);
	},
	// 默认错误处理函数
	ajaxError: function(xhr, error)
	{
		xhr.abort();
		xhr = null;
		if( error ) {
			eval(error)();
		}
		return null;
	},
	// 默认成功处理函数
	ajaxComplete: function(text, success)
	{
		if( success ) {
			eval(success)(text);
		}
		return null;
	}
});
/* 基本功能构造完毕 */

/* 主页功能实现 */
dhm.extend({
	showCode: function(iid, sid)
	{
		if( /\#/.test(sid) ) {
			var icurl = dhm.surl + 'index.php?c=sign&a=pocket&extra=';
		} else {
			dhm.show(dhm(sid), true);
			var icurl = dhm.surl + 'index.php?c=sign&a=code&extra=';
		}
		var dt = new Date();
		var now = parseInt(dt.getTime());
		var extra = (parseInt((now * 19)/119)).toString().substr(4);
		icurl += extra;
		dhm(iid).src = icurl;
		
		return null;
	},
	switchTab: function(tab)
	{
		if(tab.id == '' || tab.id == undefined) {
			return false;
		}
		var i = tab.id.lastIndexOf ('_');
		if (i <= 1) {
			var tabName = '';
		} else {
			var tabName = tab.id.substr (0 , i);
		}
		
		if (tabName == '') {
			alert ("No tabName for tab [" + tab.id + "]");
			return;
		}
		var index = 1;
		while(true)
		{
			var tabTitle = document.getElementById(tabName + '_' + index);
			if (tabTitle == undefined)
				break;
			tabTitle.className = tabName + "_off";
			var tabContent = document.getElementById(tabName + '_' + index + '_content');
			if (tabContent != undefined)
				tabContent.style.display = "NONE";
			index++;
		}
		
		tab.className = tabName + "_on";
		var tabContent = document.getElementById(tab.id + '_content');
		if (tabContent != undefined)
			tabContent.style.display = "BLOCK";
		var tabHeader = document.getElementById(tabName + "_header");
		if (tabHeader != undefined)
		{
			tabHeader.className = "tabheader_" + tab.id;
		}
		return null;
	},
	switchToTab1: function(){ideadawn.switchTab(ideadawn('tb_1'));},
	switchToTab2: function(){ideadawn.switchTab(ideadawn('tb_2'));},
	switchToTab3: function(){ideadawn.switchTab(ideadawn('tb_3'));},
	switchToTab21:function(){ideadawn.switchTab(ideadawn('tb2_1'));},
	switchToTab22:function(){ideadawn.switchTab(ideadawn('tb2_2'));},
	imgSwtching: false,
	imgShowIndex: 0,
	switchImage: function(index)
	{
		if( dhm.imgSwitching ) {
			return false;
		}
		var img = dhm.tag(dhm('bar_div'), 'img');
		var li = dhm.tag(dhm('bar_ul'), 'li');
		for(var i=0; i<img.length; i++)
		{
			if( img[i].style.display != 'none' ) {
				break;
			}
		}
		
		if( img[i] && li[i] && li[index].className != 'bar_current' ) {
			dhm.imgSwitching = true;
			dhm.imgShowIndex = index;
		} else {
			return false;
		}
		li[i].className = '';
		li[index].className = 'bar_current';
		dhm.changeOpacity(img[i], '-', 100, 5, 10, img[index]);
		return null;
	},
	changeOpacity: function(obj, dol, now, val, time, exec)
	{
		if( dol == '+' ) {
			var dest = now + val;
		} else {
			var dest = now - val;
		}
		obj.style.opacity = dest/100;
		obj.style.filter = 'alpha(opacity='+ dest +')';
		
		var still_exec = 0;
		if( dest != 100 && dest != 0 ) {
			still_exec = 2;
		} else if( exec ) {
			if( dest == 100 ) {
				dol = '-';
			} else {
				dol = '+';
			}
			still_exec = 1;
			obj.style.display = 'none';
			exec.style.display = 'block';
			obj = exec;
			exec = null;
		}
		
		if( still_exec > 0 ) {
			window.setTimeout(function(){
				dhm.changeOpacity(obj, dol, dest, val, time, exec);
			}, time);
		} else {
			dhm.imgSwitching = false;
		}
		return null;
	},
	switchImageAuto: function()
	{
		window.setInterval(function(){
			var len = (dhm.tag(dhm('bar_div'), 'img')).length;
			var next = dhm.imgShowIndex + 1;
			if( next == len ) {
				next = 0;
			}
			dhm.switchImage(next);
		}, 2500);
		return null;
	},
	openLinks: function()
	{
		var url = dhm('mediaLinks').value;
		ideadawn.redirect(url, true);
		return null;
	},
	
	// 投票
	vote: {
		list: null,
		hasvote: null,
		imgs: [10,1,7,2,0,3,4,5,8,9,6]
	},
	// 显示投票结果
	voteProc: function(div, now, perNow, removeLabel)
	{
		if( now == dhm.vote.list.length ) {
			return true;
		}
		++perNow;
		
		var total = 0;
		for(var j=0; j<dhm.vote.list.length; j++)
		{
			total += dhm.vote.list[j].times;
		}
		if( total == 0 ) {
			var per = 0;
		} else {
			var per = ((dhm.vote.list[now].times/total)*100).toString();
			var pos = per.indexOf('.');
			if( pos != -1 ) {
				per = parseFloat(per.substr(0, pos+2));
			} else {
				per = parseInt(per);
			}
		}
		
		var imgExists = dhm.tag(div[now], 'img');
		if( ! imgExists[0] ) {
			div[now].appendChild(dhm.newElem('br'));
			//var label = dhm.newElem('label');
			//label.innerHTML = "&nbsp;";
			//div[now].appendChild(label);
			div[now].appendChild(dhm.textNode(' '));
			var img = new Image();
			var paddingImg = new Image();
			paddingImg.src = img.src = dhm.surl +'frontend/images/spacer.gif';
			img.width = 100;
			paddingImg.width = 1;
			paddingImg.height = img.height = 14;
			var rd = parseInt(Math.random() * (dhm.vote.imgs.length-1));
			paddingImg.className = img.className = 'vote_bg';
			var top = '-'+ (14* dhm.vote.imgs[rd]) +'px';
			dhm.vote.imgs = dhm.remove(dhm.vote.imgs, rd);
			dhm.css(paddingImg, 'backgroundPosition', '-99px '+top);
			dhm.css(img, 'backgroundPosition', '-100px '+top);
			div[now].appendChild(paddingImg);
			div[now].appendChild(img);
			div[now].appendChild(dhm.textNode(' '));
			div[now].appendChild(dhm.newElem('span'));
		}
		if( removeLabel ) {
			var label = dhm.tag(div[now], 'label')[0];
			if( label ) {
				div[now].removeChild(label);
			}
		}
		
		var perImg = dhm.tag(div[now], 'img')[1];
		if( dhm.browser.msie ) {
			var posArr = [perImg.currentStyle.backgroundPositionX, perImg.currentStyle.backgroundPositionY];
		} else if( document.defaultView.getComputedStyle ) {
			var posArr = document.defaultView.getComputedStyle(perImg, null).getPropertyValue('background-position').split(' ');
		} else {
			var posArr = dhm.css(perImg, 'backgroundPosition').split(' ');
		}
		
		var span = dhm.tag(div[now], 'span')[0];
		if( per < 1 ) {
			span.innerHTML = per.toString() +'%';
			++now;
			perNow = 0;
		} else if( perNow >= per  ) {
			var left = (-100 + per).toString() + 'px';
			dhm.css(perImg, 'backgroundPosition', left +' '+ dhm.trim(posArr[1]));
			span.innerHTML = per.toString() +'%';
			++now;
			perNow = 0;
		} else {
			var left = (-100 + perNow).toString() + 'px';
			dhm.css(perImg, 'backgroundPosition', left +' '+ dhm.trim(posArr[1]));
		}
		window.setTimeout(function(){
			dhm.voteProc(div, now, perNow, removeLabel);
		}, 10);
		return true;
	},
	// 提交投票
	voteSubmit: function()
	{
		if( dhm.vote.hasvote ) {
			return null;
		}
		var st = dhm('voteST');
		
		var vl0 = 37 + parseInt(Math.random() * 5);
		var vl1 = 23 + parseInt(Math.random() * 3);
		var vl2 = 100 - vl0 - vl1;
		dhm.vote.list = [{times:vl0},{times:vl1},{times:vl2}];
		
		var div = dhm.tag(dhm('voteList'), 'div');
		var has_checked = false;
		for(var i=0; i<div.length; i++)
		{
			has_checked = (dhm.tag(div[i], 'input')[0]).checked;
			if( has_checked ) {
				break;
			}
		}
		if( ! has_checked ) {
			alert('请选择一项后再提交！');
			return false;
		}
		
		dhm.hide(st);
		dhm.vote.hasvote = true;
		
		for(var i=0; i<div.length; i++)
		{
			dhm.hide(dhm.tag(div[i], 'input')[0]);
		}
		
		dhm.voteProc(div, 0, 0, true);
		return null;
	}
});
/* 主页功能结束 */

/* 注册功能实现 */
dhm.extend({
	// 注册进度记录对象
	register: {
		username: '',
		old_un: '',
		password: '',
		repwd: '',
		email: '',
		imgcode: ''
	},
	// 注册项目合法性判断
	regUnCheck: function()
	{
		var u = dhm('username').value;
		u = dhm.trim(u);
		if( u == dhm.register.old_un ) {
			return null;
		} else {
			dhm.register.old_un = u;
		}
		dhm.register.username = '';
		if( u == '' ) {
			return false;
		} else if( u.length < 6 || u.length > 16 ) {
			alert('请确保您的学号为6-16位长度的字符串！');
		} else if( /^[A-Za-z]{1,1}[A-Za-z0-9]+$/.test(u) ) {
			dhm.ajax.error = 'dhm.unCheckError';
			dhm.ajax.success = 'dhm.unCheckOK';
			var data = 'c=register&a=check&username='+ u;
			dhm.post('', data);
		} else {
			alert('学号格式错误！');
		}
		return null;
	},
	regPwdCheck: function()
	{
		dhm.register.password = '';
		var p = dhm('password').value;
		p = dhm.trim(p);
		
		if( p == '' ) {
			return false;
		} else if( p.length >= 6 && p.length <= 16 && !(/[^A-Za-z0-9~`!@#\$%\^&\*\(\)\-_=\+\\\|\{[\}\]'";:,\.<>\/\?]+/.test(p)) ) {
			dhm.register.password = 'ok';
		} else {
			alert('密码格式错误！');
		}
		return null;
	},
	regRepwdCheck: function()
	{
		dhm.register.repwd = '';
		if( dhm.register.password != 'ok' ) {
			return false;
		}
		var p = dhm('password').value;
		var rp = dhm('repwd').value;
		p = dhm.trim(p);
		rp = dhm.trim(rp);
		if( rp == p ) {
			dhm.register.repwd = 'ok';
		} else if( rp == '' ) {
			alert('确认密码不能为空！');
		} else {
			alert('确认密码与密码不符！');
		}
		return null;
	},
	regEmailCheck: function()
	{
		dhm.register.email = '';
		var em = dhm('email').value;
		em = dhm.trim(em);
		if( em == '' ) {
			return false;
		}
		if( /[^A-Za-z0-9\s\.@\-_]+/.test(em) ) {
			alert('邮件地址中含有非法字符！');
			return false;
		}
		if( /^[A-Za-z0-9\s\.@\-_]+@[A-Za-z0-9\-_]+\.[a-z]+$|^[A-Za-z0-9\s\.@\-_]+@[A-Za-z0-9\-_]+\.[a-z]+\.[a-z]+$/.test(em) ) {
			dhm.register.email = 'ok';
		} else {
			alert('邮件地址格式错误！');
		}
		return null;
	},
	regCodeCheck: function()
	{
		dhm.register.imgcode = '';
		var c = dhm('imgcode').value;
		c = dhm.trim(c);
		if( c != '' ) {
			dhm.register.imgcode = 'ok';
		}
		return null;
	},
	// 通行证检测成功时的回调函数
	unCheckOK: function(msg)
	{
		if( msg && (/SUCCESS/.test(msg)) ) {
			dhm.register.username = 'ok';
		} else {
			dhm.register.username = '';
			alert('您的学号已经被人抢注，更换一个吧！');
		}
		return null;
	},
	// 通行证检测失败时的回调函数
	unCheckError: function()
	{
		dhm.register.username = 'ok';
		return null;
	},
	// 提交注册事件
	checkAndSubmit: function()
	{
		for( var o in dhm.register )
		{
			if( /old_/.test(o.toString()) ) {
				continue;
			}
			if( dhm.register[o] != 'ok' ) {
				alert('请正确填写您的注册信息，然后再提交！');
				dhm(o.toString()).focus();
				return false;
			}
		}
		document.regForm.submit();
	}
});
/* 注册功能结束 */

/* 经验心得玩家投稿 */
dhm.extend({
	addGuide: function()
	{
		var t = dhm('gtitle').value;
		t = dhm.trim(t);
		if( t == '' ) {
			alert('请填写标题，以方便其他玩家阅读！');
			dhm('gtitle').focus();
			return false;
		}
		var fck_ins = FCKeditorAPI.GetInstance('gtext');
		var gt = dhm.trim(fck_ins.GetXHTML());
		if( gt == '' || (/请在这里编辑您的经验心得/.test(gt)) ) {
			alert('请填写您的心得体会！');
			fck_ins.SetHTML('');
			return false;
		}
		if( (/<\s*a|<\s*script|<\s*img|<\s*\/a\s*>|<\s*\/script\s*>/i).test(gt) ) {
			alert('为了玩家的安全，请不要使用“链接”、“图片”或“JavaScript”！');
			return false;
		}
		if( dhm('guser') ) {
			var u = dhm('guser').value;
			u = dhm.trim(u);
			if( u.length < 6 || u.length > 16 || ! ((/^[A-Za-z]{1,1}/.test(u)) && (/[A-Za-z]+[0-9]+|[0-9]+[A-Za-z]+/.test(u)) ) ) {
				alert('错误的学号格式！');
				dhm('guser').focus();
				return false;
			}
			var p = dhm('gpwd').value;
			p = dhm.trim(p);
			if( p.length < 6 || p.length > 16 || (/[^A-Za-z0-9~`!@#\$%\^&\*\(\)\-_=\+\\\|\{[\}\]'";:,\.<>\/\?]+/.test(u)) ) {
				alert('错误的密码格式！');
				dhm('gpwd').focus();
				return false;
			}
		}
		var c = dhm('gcode').value;
		c = dhm.trim(c);
		if( c.length != 4 || (/[^0-9]+/.test(c)) ) {
			alert('请输入正确的验证码！');
			dhm('gcode').focus();
			return false;
		}
		document.addGForm.submit();
	}
});
/* 经验心得玩家投稿结束 */

/* 帮助中心(新手指南)开始 */
dhm.extend({
	c_hc_id: null,
	c_h_id: null,
	helpList: null,
	helpItem: null,
	expandHelp: function(c_id, obj)
	{
		if( obj ) {
			obj.blur();
		}
		var hi = dhm('hc_items_'+ c_id);
		if( hi.style.display == 'block' ) {
			hi.style.display = 'none';
			dhm('hc_img_'+ c_id).src = dhm.surl + 'frontend/images/unexpand.gif';
			return false;
		} else {
			hi.style.display = 'block';
			dhm('hc_img_'+ c_id).src = dhm.surl + 'frontend/images/expanded.gif';
		}
		return true;
	},
	listHelp: function(hc_id, obj)
	{
		if( obj ) {
			obj.blur();
		}
		hc_id = parseInt(hc_id);
		if( isNaN(hc_id) || hc_id <= 0 ) {
			return false;
		}
		
		if( dhm.helpList && dhm.helpList['hc_'+ hc_id] ) {
			dhm('itemList').innerHTML = dhm.helpList['hc_'+ hc_id];
			if( dhm.c_hc_id && dhm('hc_dd_'+ dhm.c_hc_id) ) {
				dhm('hc_dd_'+ dhm.c_hc_id).className = '';
			}
			dhm('hc_dd_'+ hc_id).className = 'hc_now';
			dhm.c_hc_id = hc_id;
			return true;
		}
		
		dhm.onHelpLoading('itemList');
		dhm.ajax.success = 'dhm.listHelpSuccess';
		var data = 'c=faq&a=items&hc_id='+hc_id;
		dhm.post(null,data);
		return null;
	},
	listHelpSuccess: function(msg)
	{
		msg = dhm.trim(msg);
		if( msg == '' ) {
			dhm('itemList').innerHTML = '暂无内容';
			return false;
		}
		var arr = eval(msg);
		if( ! arr.length ) {
			return false;
		}
		var hc_id = arr.pop();
		
		if( dhm.c_hc_id && dhm('hc_dd_'+ dhm.c_hc_id) ) {
			dhm('hc_dd_'+ dhm.c_hc_id).className = '';
		}
		dhm('hc_dd_'+ hc_id).className = 'hc_now';
		
		var html = '<ul>';
		for(var i=0; i<arr.length; i++)
		{
			html += '<li id="h_li_'+ arr[i].h_id +'" class=""><a href="javascript:;" onclick="javascript:dhm.helpInfo('+ arr[i].h_id +', this);">';
			html += '<img src="'+ dhm.surl +'frontend/images/item.gif" border="0" />&nbsp;<span>'+ arr[i].title +'</span></a></li>';
		}
		html += '</ul>';
		dhm('itemList').innerHTML = html;
		
		if( ! dhm.helpList ) {
			dhm.helpList = new Object();
		}
		dhm.helpList['hc_'+ hc_id] = html;
		dhm.c_hc_id = hc_id;
		return true;
	},
	helpInfo: function(help_id, obj)
	{
		if( obj ) {
			obj.blur();
		}
		help_id = parseInt(help_id);
		if( isNaN(help_id) || help_id <= 0 ) {
			return false;
		}
		
		if( dhm.helpItem && dhm.helpItem['help_'+ help_id] ) {
			dhm('itemInfo').innerHTML = dhm.helpItem['help_'+ help_id];
			if( dhm.c_h_id && dhm('h_li_'+ dhm.c_h_id) ) {
				dhm('h_li_'+ dhm.c_h_id).className = '';
			}
			dhm('h_li_'+ help_id).className = 'h_now';
			dhm.c_h_id = help_id;
			return true;
		}
		
		dhm.onHelpLoading('itemInfo');
		dhm.ajax.success = 'dhm.helpInfoSuccess';
		var data = 'c=faq&a=iteminfo&help_id='+help_id;
		dhm.post(null,data);
		return null;
	},
	helpInfoSuccess: function(msg)
	{
		msg = dhm.trim(msg);
		if( msg == '' ) {
			dhm('itemInfo').innerHTML = '暂无内容';
			return false;
		}
		
		var item = eval(msg);
		dhm('itemInfo').innerHTML = item[1];
		if( dhm.c_h_id && dhm('h_li_'+ dhm.c_h_id) ) {
			dhm('h_li_'+ dhm.c_h_id).className = '';
		}
		dhm('h_li_'+ item[0]).className = 'h_now';
		if( ! dhm.helpItem ) {
			dhm.helpItem = new Object();
		}
		dhm.helpItem['help_'+ item[0]] = item[1];
		dhm.c_h_id = item[0];
		return null;
	},
	/*initHelp: function()
	{
		var h = window.location.hash;
		h = (dhm.trim(h)).replace(/\#/, '');
	},*/
	onHelpLoading: function(id)
	{
		var img = '<img src="' + dhm.surl + 'frontend/images/loader.gif" />';
		var txt = '&nbsp;请稍候...';
		dhm(id).innerHTML = img + txt;
		return null;
	}
});
/* 帮助中心(新手指南)结束 */

/* 通行证管理功能开始 */
dhm.extend({
	checkUserLogin: function()
	{
		var un = dhm('username').value;
		var pw = dhm('password').value;
		un = dhm.trim(un);
		pw = dhm.trim(pw);
		if( un == '' ) {
			alert('请填写您的学号信息！');
			dhm('username').focus();
			return false;
		}
		if( pw == '' ) {
			alert('请填写您的密码！');
			dhm('password').focus();
			return false;
		}
		if( un.length < 6 || un.length > 16 ) {
			alert('学号应该是一个长度为6到16位的有效字符串！');
			dhm('username').focus();
			return false;
		}
		if( /[^a-zA-Z0-9]+/.test(un) ) {
			alert('学号是由字母和数字组成的！');
			dhm('username').focus();
			return false;
		}
		if( pw.length < 6 || pw.length > 16 ) {
			alert('密码应该是一个长度为6到16位的有效字符串！');
			dhm('password').focus();
			return false;
		}
		
		document.loginForm.submit();
	},
	checkActiveCode: function()
	{
		var ac = dhm('activecode').value;
		var ic = dhm('imgcode').value;
		ac = dhm.trim(ac);
		ic = dhm.trim(ic);
		if( ac == '' ) {
			alert('请填写您的激活码！');
			dhm('activecode').focus();
			return false;
		}
		if( ic == '' ) {
			alert('请填写验证码！');
			dhm('imgcode').focus();
			return false;
		}
		if( /[^a-zA-Z0-9]+/.test(ac) || ac.length != 15 ) {
			alert('激活码格式错误！');
			dhm('activecode').value = '';
			dhm('activecode').focus();
			return false;
		}
		if( /[^0-9]+/.test(ic) || ic.length != 4 ) {
			alert('验证码格式错误！');
			dhm('imgcode').value = '';
			dhm('imgcode').focus();
			return false;
		}
		
		document.enableForm.submit();
	},
	checkPasswordModify: function()
	{
		var ow = dhm('oldpwd').value;
		var nw = dhm('newpwd').value;
		var rw = dhm('repwd').value;
		ow = dhm.trim(ow);
		nw = dhm.trim(nw);
		rw = dhm.trim(rw);
		var reg = /[^A-Za-z0-9~`!@#\$%\^&\*\(\)\-_=\+\\\|\{[\}\]'";:,\.<>\/\?]+/;
		if( ow == '' || nw == '' || rw == '' ) {
			alert('请填写您的密码信息！');
			return false;
		}
		if( ow.length < 6 || ow.length > 16 || reg.test(ow) ) {
			alert('旧密码格式错误！密码由6到16位字母、数字或特殊字符组成！');
			dhm('oldpwd').focus();
			return false;
		}
		if( nw.length < 6 || nw.length > 16 || reg.test(nw) ) {
			alert('新密码格式错误！密码由6到16位字母、数字或特殊字符组成！');
			dhm('newpwd').focus();
			return false;
		}
		if( rw.length < 6 || rw.length > 16 || reg.test(rw) ) {
			alert('确认密码格式错误！密码由6到16位字母、数字或特殊字符组成！');
			dhm('repwd').focus();
			return false;
		}
		if( nw != rw ) {
			alert('确认密码与新密码不符！');
			return false;
		}
		document.pwdForm.submit();
	},
	checkInforModify: function()
	{
		document.modifyForm.submit();
	},
	checkEmailModify: function()
	{
		var freg = /[^A-Za-z0-9\s\.@\-_]+/;
		var rreg = /^[A-Za-z0-9\s\.@\-_]+@[A-Za-z0-9\-_]+\.[a-z]+$|^[A-Za-z0-9\s\.@\-_]+@[A-Za-z0-9\-_]+\.[a-z]+\.[a-z]+$/;
		var ev = dhm('email').value;
		ev = dhm.trim(ev);
		if( ev == '' || freg.test(ev) ) {
			alert('邮箱地址格式不正确！');
			return false;
		}
		if( rreg.test(ev) ) {
			document.emailForm.submit();
		} else {
			alert('请输入正确的邮箱地址！');
			return false;
		}
	},
	checkForgetPassword: function()
	{
		var u = dhm('username').value;
		var e = dhm('email').value;
		u = dhm.trim(u);
		e = dhm.trim(e);
		if( u == '' || e == '' ) {
			alert('请输入您的学号和邮件地址！');
			return false;
		}
		
		document.forgetForm.submit();
	},
	checkFindPassword: function()
	{
		var p = dhm('password').value;
		p = dhm.trim(p);
		var reg = /[^A-Za-z0-9~`!@#\$%\^&\*\(\)\-_=\+\\\|\{[\}\]'";:,\.<>\/\?]+/;
		if( p == '' ) {
			alert('请填写您的密码信息！');
			return false;
		}
		if( p.length < 6 || p.length > 16 || reg.test(p) ) {
			alert('密码格式错误！密码由6到16位字母、数字或特殊字符组成！');
			dhm('password').focus();
			return false;
		}
		
		document.findForm.submit();
	}
});
/* 通行证管理功能结束 */