var cookieOption = {expires: 365};//声明cookie的保存周期


/**
 * 预定义全局变量
 */
var	xxtGlobal	= {
	coverBox	: {
		/**
		 * @todo	弹出层独占锁 启用该锁 将禁止所以弹出层事件
		 * @todo	带遮罩的弹出层 在创建的时候自动加锁 关闭的时候自动解锁
		 */
		ExLock	: false
	},
	ajaxOption		: {		//@todo	Ajax默认配置
		cache	: false		//@todo	Ajax浏览器缓存开关
	}
};

/**
 * 模板修改器声明
 */
var modifiers	= {
	/**
	 * 截取字符串
	 *
	 * @todo	按文本宽度截取字符串 ASCII字符为一个宽度 非ASCII字符为两个宽度
	 * @param	String			str		修改器前的字符串
	 * @param	Number|String	length	约束字符串的长度 middle
	 * @param	String			tail	表示省略的字符串 默认为'...'
	 */
	strimWidth	: function (str, length, tail) {
		var lengthStyle	= {
			short	: 15,
			middle	: 20,
			long	: 30
		};
		length	= null == length || 0 >= length || ('string' == typeof length && 'undefined' == typeof lengthStyle[length])
				? lengthStyle.middle
				: length;
		length	=  'string' == typeof length	? lengthStyle[length]	: length;
		for (var num = i = 0;i < str.length;i ++) {
			num	+= 127 < str.charCodeAt(i)	? 2	: 1;
		}
		var tail	= null == tail	? '...'	: tail;
		for (var tailLength = i = 0;i < tail.length;i ++) {
			tailLength	+= 127 < tail.charCodeAt(i)	? 2	: 1;
		}
		if (num <= length) {
			return str;
		}
		for (var num = i = 0, buffer = '';i < str.length && num < length - tailLength;i ++) {
			num		+= 127 < str.charCodeAt(i)	? 2	: 1;
			buffer	+= str.charAt(i);
		}
		return num > length - tailLength	? buffer.substr(0, buffer.length - 1)+tail	: buffer+tail;
	},
	/**
	 * 空格溶解效果
	 *
	 * @todo	将数个&nbsp;空格合并防止其破坏页面样式
	 * @param	String			str		修改器前的字符串
	 * @param	Number			length	约束空格的长度
	 */
	spaceDissolve	: function (str, length) {
		length	= null == length || 'NaN' == typeof parseInt(length)	? 1	: length;
		var re	= new RegExp('((?:&nbsp;){'+length+'})(?:&nbsp;)+', 'g');
		return	str.replace(re, "$1");
	},
	/**
	 * 去掉标记
	 *
	 * @todo	删除字符串中的标记(HTML或XML 包括首尾残缺标记) 并合并标记间的无效空格
	 * @param	String			str		修改器前的字符串
	 */
	tripTags	: function (str) {
		return	str.replace(/>\s+</g, ' ').replace(/<[^>]+?>|^[^<]+?>|<[^>]+?$/g, '');
	},
	/**
	 * 强制断行
	 *
	 * @todo	对连续的英文字符强制按指定长度加入缩进用空格(非HTML实体空格)
	 * @param	String	str		修改器前的字符串
	 */
	breakWord	: function (str) {
		if (null == str || $.browser.msie) {
			return str;	
		}
		var	re	= new RegExp('(\\w)', 'g');
		var whi	=String.fromCharCode('8203');
		var	reH	= /^[^<>]*?</g;
		var reI	= />[^<>]*?</g;
		var reE	= />[^<>]*?$/g;
		var	res	= null == str.match(reH)	? str.replace(re, "$1"+whi)	: str.replace(str.match(reH)[0], str.match(reH)[0].replace(re, "$1"+whi));
		res		= null == res.match(reI)	? res.replace(re, "$1"+whi)	: res.replace(res.match(reI)[0], res.match(reI)[0].replace(re, "$1"+whi));
		res		= null == res.match(reE)	? res.replace(re, "$1"+whi)	: res.replace(res.match(reE)[0], res.match(reE)[0].replace(re, "$1"+whi));
		return	res;
	},
	/**
	 * 嵌入执行代码
	 *
	 * @todo	嵌入一个执行模板对当前的值加以替换
	 * @param	String	str	修改器前的字符串
	 * @param	String	tpl	可执行的js代码模板 当前值替换标记为$[val]
	 */
	'eval'	: function (str, tpl) {
		return	eval('('+tpl.replace('$[val]', str)+')');
	},
	intval	: function (str) {
		str	= null == str	? 0	: str;
		return	parseInt(str);
	}
};


function initNowLocation(clickclass){
	switch(clickclass){
	case "ENewspaper":
		$("#nowLocation").html("当前位置:电子报纸");
		break;
	case "ClassManager":
		$("#nowLocation").html("当前位置:班级管理");
		break;
	case "TeacherLesson":
		$("#nowLocation").html("当前位置:精品教案");
		break;
	case "EnewsExercise":
		$("#nowLocation").html("当前位置:报纸习题讲解");
		break;
	case "TeacherHelp":
		$("#nowLocation").html("当前位置:帮&nbsp;&nbsp;助");
		break;
	case "studentLesson":
		$("#nowLocation").html("当前位置:学生作业辅导系统");
		break;
	case "BulletinList":
		$("#nowLocation").html("当前位置:系统消息");
		break;
	case "TeacherTutor":
		$("#nowLocation").html("当前位置:教师在线辅导");
		break;
	case "TonlineVideo":
		$("#nowLocation").html("当前位置:教师网络课程");
		break;
	case "modifyUserInfoController":
		$("#nowLocation").html("当前位置:用户信息修改");
		break;
	case "webVideo":
		$("#nowLocation").html("当前位置:特级教师网络授课");
		break;
	case "feeSource":
		$("#nowLocation").html("当前位置:收费资源");
	case "studyReport":
		$("#nowLocation").html("当前位置:学习报告");
		
	case "StudentConceptFlash":
		$("#nowLocation").html("当前位置:学生概念动画");
	case "StudentOnline":
		$("#nowLocation").html("当前位置:学生在线视频");
	default:
		break;
		
		
	}
}
/**
 * 初始化选择教材的动作
 */
function iniBookList(html){
	$("#BookListLink a").click(function () {
		var  __id = this.id.substr(8); 
		alert(__id);
	 // JSTQuery (tupomGlobal.baseUrl+"themes/blackcandy/templates/JST/MiddleNewspapersLayout.html",tupomGlobal.baseUrl+"newspaperslayout/getLayoutList?classid="+tupomGlobal.currentClassID+"&ID="+__id, {onDataSuccess:showMsgBox,onTplExecute:callCommon.setNewsArticleLink});	
	});
}


var iniTeachingLinkList = function(html){
		$("#TeachingLink a").click(function () {
						  tupomGlobal.clickIssueId = this.id.substr(9); 
						  new coverBox ({
								  style			: 'ENewspaperPage',
								  data			: tupomGlobal.baseUrl+"enewspaperpage/IssueNoResult?categoryId="+tupomGlobal.clickIssueId,
								  cover			: true,
								  onTplExecute	: iniIssueLinkList,
								  onDataSuccess : showMsgBox
						})

		});
}
var iniTeachingLinkListEx = function(html){
		$("#TeachingLink a").click(function () {
						  tupomGlobal.clickIssueId = this.id.substr(9); 
						  new coverBox ({
								  style			: 'ENewspaperPage',
								  data			: tupomGlobal.baseUrl+"enewspaperpage/IssueNoResult?link=2&categoryId="+tupomGlobal.clickIssueId,
								  cover			: true,
								  onTplExecute	: iniIssueLinkListEx,
								  onDataSuccess : showMsgBox
						})

		});
}
			
/**
 * 提交了初始化教材和年级
 */
function submitChapterData(){
	var	me	= this;
	$("#doChpaterData").click(function(){
		//判断是否选择,如果选择了值就进行以下操作
		if($('#TeachCategory').val()!=0){
			me.box.close();
			var postData	= {
					grade		:$('#iniUserGrade').val(),
					chapterid	: $('#TeachCategory').val()
			};
			tupomGlobal.grade	= postData.grade;
			tupomGlobal.chapterid	= postData.chapterid;
			JSQuery (tupomGlobal.baseUrl+"teachcategorylistpage/doChapterData",{onDataSuccess:showMsgBox},postData);
			//$("#initGradeName").html($('#iniUserGrade option:selected').text());
			$("#initChapterName").html($('#TeachCategory option:selected').text());
	
			//初始化跟数字化报纸效果一样
			initNowLocation("ENewspaper");
			/*new coverBox ({
						  style			: 'ENTeachingLink',
						  data			: tupomGlobal.baseUrl+"enewspaperpage/getTeachMaterialResult?baseCategoryId="+tupomGlobal.chapterid,
						  cover			: true,
						  onTplExecute	: iniTeachingLinkList,
						  onDataSuccess : showMsgBox
					});*/
		}else{
			var showdata	={
					style : "Error",
					promptText	:	"请选择教材!"
			};
			 new coverBox ({
					  style			: 'Error',
					  data			: showdata,
					  cover			: true,
					  onDataSuccess : showMsgBox
			});
		}
	});
	
	

}

/**
 * 获取当前班级信息
 * @return	Object	当前班级对象
 */
function getCurrenClass () {
	alert("Debug:getCurrentClass函数已经被屏蔽,该功能应该被撤销")
	if (false != tupomGlobal.classList) {
		for (var i = 0;i < tupomGlobal.classList.data.length;i ++) {
			if (tupomGlobal.classList.data[i].classid == tupomGlobal.currentClassID) {
				return tupomGlobal.classList.data[i];
			}
		}
	}
}

/**
 * 收费版本二级页面初始化
 */
function initChargeVersion(html){
	callCommon.updateRight(html);
	var __chapterId = this.data.chapterId;
	var __objectiveSubjectLayout	= "ObjectiveSubjectLayout";
	var __subjectiveSubjectLayout	= "SubjectiveSubjectLayout";
	
	JSTQuery (tupomGlobal.baseUrl+"themes/blackcandy/templates/JST/MiddleTypicalExercise.html",tupomGlobal.baseUrl+"VideoPage/getOnlineVideoList?ChapterID="+__chapterId,{onTplExecute:TypicalExerciseMediumAppend, data:{chapterId:__chapterId, OlayoutName:__objectiveSubjectLayout, SlayoutName:__subjectiveSubjectLayout}});
	$(".objectiveSubject").click(function (){objectiveSubjectEvent(__chapterId, __objectiveSubjectLayout)});
	$(".subjectiveSubject").click(function (){subjectiveSubjectEvent(__chapterId, __subjectiveSubjectLayout)});
	$("#onlineVideo a").click(function(){
		speedTest.id = this.id.substr(6);
		if(tupomGlobal.ServerIP==''){
			JSQuery(tupomGlobal.baseUrl+'themes/blackcandy/javascript/webServer.json', {onDataSuccess:function (data) {
				speedTest.servers	= data.webServer;
				speedTest.current	= 0;
				new coverBox ({
						  style			: 'speedTest',
						  data			: {data:{IP: speedTest.servers[speedTest.current].serverIP}},
						  cover			: true,
						  onDataSuccess	: function () {}
				});
			}});
		}else{
									var videoid = this.id.substr(6);
									onlineVideoEvent(videoid);  
		}
	});
	$('.viewFlashAnimation').click(function () {
		JSQuery(tupomGlobal.baseUrl+'reportpage/animationClick', {onDataSuccess:function(){alert(1)}});
	});
}




var onlineVideoEvent		= function(__videoid){
	   new coverBox ({
		  style			: 'twoVideo',
		  data			: tupomGlobal.baseUrl+"videopage/show?VideoType=TeachOnline&VideoID="+__videoid,
		  cover			: true,
		  onTplExecute	: runVideo,
		  onCloseHandler: function() { 
		   deconcept.SWFObjectUtil.prepUnload();		
		   unloadSwf();
			  JSQuery(tupomGlobal.baseUrl+"reportpage/blank", {});
		  } 
	});
}

var __intervalID = 0;

function runVideo(){
	var firstvisit = 1;
	var flashvars_b = {config:"configInject: true"};
	var params_b = {};
	var attributes_b = { id: "Blackboard",name: "Blackboard"};
	swfobject.embedSWF("themes/blackcandy/images/ondemandBoard01.swf", "blackboardvideo", "992", "580", "6.0.0","expressInstall.swf", flashvars_b, params_b, attributes_b);

	var flashvars_c = {config:"configInject: true"};
	var params_c = {};
	var attributes_c = { id: "Photo",name: "Photo"};
	swfobject.embedSWF("themes/blackcandy/images/ondemandPhoto01.swf", "photovideo", "224", "156", "6.0.0","expressInstall.swf", flashvars_c, params_c, attributes_c);
	// wait for the page to fully load before initializing
	__intervalID = setInterval(function(){
		try {
			BlackboardPlayer = thisMovie("Blackboard");
			PhotoPlayer = thisMovie("Photo");
			clearInterval(__intervalID);
//			alert(typeof BlackboardPlayer.setConfig);
			init();
		} catch(e) {}
	}, 500);
//	timer = setTimeout("init()", 1000);

	
}
/**
 * 初始化用户信息右栏
 * @param html   嵌入模板
 * @return
 */
function iniModifyUserInfo (html) {
	callCommon.updateRight(html);
/*	
	$('#Form_RegistForm_img_action_doRegistForm').click(function () {
		$('#Form_RegistForm').submit();
	});
	$('#uploadIconBrows').click(function () {
		$('#Form_RegistForm_usericon').click();
	});
	document.getElementById('Form_RegistForm_usericon').onchange=function(){
		$('#uploadFileField').val($(this).val());
	};
*/
	var uploader	= createSWFUpload({
		btnBrowseID	: 'uploadIconBrows',
		onQueued	: function (file) {
			$('#uploadFileField').val(file.name);
		},
		onSuccess	: function (data){
			refreshIcon(data);
		}
	});
	$('#Form_RegistForm_img_action_doRegistForm').click(function () {
		uploader.startUpload();
	});
}


 /**
 * 初始化期数连接列表
 * @param html	解析后的模版串
 * @return
 */
function iniIssueLinkList(html){
	$("#IssueLink a").click(function () {
									  var  __id = this.id.substr(9); 
									 JSTQuery (tupomGlobal.baseUrl+"themes/blackcandy/templates/JST/RightNewspapersLayout.html",
												tupomGlobal.baseUrl+"newspaperslayout/getLayoutList?LayoutName=NewspaperLayout&bookId="+tupomGlobal.chapterid+"&IssueId="+__id, 
												{
													onDataSuccess:showMsgBox,
													onTplExecute:callCommon.setNewsArticleLink
												});	
	});
}
function iniIssueLinkListEx(html){
	$("#IssueLink a").click(function () {
									  var  __id = this.id.substr(9); 
									  JSTQuery (tupomGlobal.baseUrl+"themes/blackcandy/templates/JST/RightTeachExerciseLayout.html",
												tupomGlobal.baseUrl+"newspaperslayout/getENewsExerciseList?LayoutName=SubjectiveSubjectLayout&bookId="+tupomGlobal.chapterid+"&IssueId="+__id, 
												{
													onDataSuccess:showMsgBox,
													onTplExecute:callCommon.setExerciseLink
												});	
	});
}


/**
 * 初始化收费版本的总目录
 * @return
 */
function iniGeneralList(data){
	var result = showMsgBox(data);
	if(result == true){
		new coverBox ({
			  style			: 'GeneralList',
			  data			: data,
			  cover			: true,
			  onTplExecute	: showAllBookChapter
		});
	}
}
/**
 * 初始化概念动画的教材版本弹出框(学生版)
 * @param data
 * @return
 */
function iniFlashList(data){
	var result = showMsgBox(data);
	if(result == true){
		new coverBox ({
			  style			: 'iniVideoChapter',
			  data			: data,
			  cover			: true,
			  onTplExecute	: showFlashPage
		});
	}
}
function showFlashPage(){
	//初始化章节的连接
	$(".chargeVersion").click(function(){
		var __chapterid = this.id.substr(10);
		  JSTQuery (tupomGlobal.baseUrl+"themes/blackcandy/templates/JST/RightStudentFlash.html",
					tupomGlobal.baseUrl+"StudentCategoryListPage/getStudentVideoChapter?typeid="+__chapterid, 
					{
						onDataSuccess:showMsgBox,
						onTplExecute:setStudentFlashLink
					});
	});
}
/**
 * 学生版本的在概念动画右部分视频专题载入
 */
setStudentFlashLink = function(tpl){
	$("#rightConsole").html(tpl);
	var __id = this.json.data[0].ID;
	JSTQuery (tupomGlobal.baseUrl+"themes/blackcandy/templates/JST/BottomStudentFlash.html", tupomGlobal.baseUrl+"StudentCategoryListPage/videoList?vtype=flash&ID="+__id,{onDataSuccess:showMsgBox,onTplExecute:updateFlashBottom});
	//激发专题列表的点击动作,显示专题中的文章列表
	$(".EeachingPlanTitle").click(function(){
		var __eid = this.id.substr(12);
		JSTQuery (tupomGlobal.baseUrl+"themes/blackcandy/templates/JST/BottomStudentFlash.html", tupomGlobal.baseUrl+"StudentCategoryListPage/videoList?vtype=flash&ID="+__eid,{onDataSuccess:showMsgBox,onTplExecute:updateFlashBottom});
	});
	//其他年级动画点击动作
	$("#otherVideoType").click(function(){
		JSQuery (tupomGlobal.baseUrl+"Studentcategorylistpage/videoCaList?type=flash",{onDataSuccess:iniFlashList});
	});
}
/**
 * 学生版概念动画更新动画列表
 */
flashvisited=0;
updateFlashBottom = function(tpl){
	if(flashvisited==0){
	$("#teachingPlanLayout").append(tpl);
	flashvisited=1;
	}else{
	$("#eNewsEditionContent").remove();
	$("#teachingPlanLayout").append(tpl);
	}
}
/**
 * 初始化概念动画的教材版本弹出框(学生版)
 * @param data
 * @return
 */
function iniVideoList(data){
	var result = showMsgBox(data);
	if(result == true){
		new coverBox ({
			  style			: 'iniVideoChapter',
			  data			: data,
			  cover			: true,
			  onTplExecute	: showVideoPage
		});
	}
}
function showVideoPage(){
	//初始化章节的连接
	$(".chargeVersion").click(function(){
		var __chapterid = this.id.substr(10);
		  JSTQuery (tupomGlobal.baseUrl+"themes/blackcandy/templates/JST/RightStudentVideo.html",
					tupomGlobal.baseUrl+"StudentCategoryListPage/getStudentVideoChapter?type='online'&typeid="+__chapterid, 
					{
						onDataSuccess:showMsgBox,
						onTplExecute:setStudentVideoLink
					});
	});
}
/**
 * 学生版本的在线视频右部分视频专题载入
 */
setStudentVideoLink = function(tpl){
	$("#rightConsole").html(tpl);
	var __id = this.json.data[0].ID;
	JSTQuery (tupomGlobal.baseUrl+"themes/blackcandy/templates/JST/BottomStudentVideo.html", tupomGlobal.baseUrl+"StudentCategoryListPage/videoList?vtype=online&ID="+__id,{onDataSuccess:showMsgBox,onTplExecute:updateStudentVideoBottom});
	//激发专题列表的点击动作,显示专题中的文章列表
	$(".EeachingPlanTitle").click(function(){
		var __eid = this.id.substr(12);
		JSTQuery (tupomGlobal.baseUrl+"themes/blackcandy/templates/JST/BottomStudentVideo.html", tupomGlobal.baseUrl+"StudentCategoryListPage/videoList?vtype=online&ID="+__eid,{onDataSuccess:showMsgBox,onTplExecute:updateStudentVideoBottom});
	});
	//其他年级视频点击动作
	$("#otherVideoType").click(function(){
		JSQuery (tupomGlobal.baseUrl+"Studentcategorylistpage/videoCaList?type=online",{onDataSuccess:iniVideoList});
	});
}
/**
 * 学生版本-在线视频-加载视频的列表
 */
var videoSvisited=0;
updateStudentVideoBottom = function(tpl){
	if(videoSvisited==0){
	$("#teachingPlanLayout").append(tpl);
	videoSvisited=1;
	}else{
	$("#eNewsEditionContent").remove();
	$("#teachingPlanLayout").append(tpl);
	}
	
	$(".VideoItemSee a").click(function(){
		showStudentVideo($(this).attr("rel"));	
	});	
}
function showStudentVideo(videoid){
		speedTest.id = videoid;
		if(tupomGlobal.ServerIP==''||tupomGlobal.ServerIP==null){
			speedTest.console	= new coverBox ({
				  style			: 'speedTest',
				  data			: tupomGlobal.baseUrl+'themes/blackcandy/javascript/webServer.json',
				  //{data:{IP: speedTest.servers[speedTest.current].serverIP}},
				  cover			: true,
				  onDataSuccess	: function (json) {
					  speedTest.servers	= json.webServer;
					  speedTest.current	= 0;
					  json.data	= {
							  IP	: speedTest.servers[speedTest.current].serverIP
					  };
					 // onlineStudentVideoEvent(videoid);
				  }
			});
			/*
			JSQuery(tupomGlobal.baseUrl+'themes/blackcandy/javascript/webServer.json', {onDataSuccess:function (data) {
				speedTest.servers	= data.webServer;
				speedTest.current	= 0;
				
			}});
			*/
		}else{
			onlineStudentVideoEvent(videoid);  
		}
}
var onlineStudentVideoEvent		= function(__videoid){
	window.open(tupomGlobal.baseUrl+"videopage?VideoID="+__videoid);
//	   new coverBox ({
//		  style			: 'twoVideo',
//		  data			: tupomGlobal.baseUrl+"videopage/studentshow?VideoID="+__videoid,
//		  cover			: true,
//		  onTplExecute	: runVideo,
//		  onCloseHandler: function() { 
//		  	deconcept.SWFObjectUtil.prepUnload();		
//		  	unloadSwf();
//		  }
//	});
}
/**
 * 初始化教师版本的在线视频
 * @return
 */
function iniTeachVideoTypeList(data){
	var result = showMsgBox(data);
	if(result == true){
		new coverBox ({
			  style			: 'TeachVideoType',
			  data			: data,
			  cover			: true,
			  onTplExecute	: showVideoTypeSpecial
		});
	}
}
/**
 * 显示该视频类别的专题列表
 * @return
 */
function showVideoTypeSpecial(){
	$(".VideoLessonType a").click(function () {
									  var  __id = this.id.substr(9); 
									  JSTQuery (tupomGlobal.baseUrl+"themes/blackcandy/templates/JST/RightVideoLine.html",
												tupomGlobal.baseUrl+"teachvideocategorypage/getVideoSpecial?typeid="+__id, 
												{
													onDataSuccess:showMsgBox,
													onTplExecute:setTeachVideoLink
												});	
	});
}
/**
 * 教师版本的在线视频右部分视频专题载入
 */
setTeachVideoLink = function(tpl){
	$("#rightConsole").html(tpl);
	var __id		= this.json.data[0].ID;
	var specialTitle= this.json.data[0].ChapterName;
	JSTQuery (
		tupomGlobal.baseUrl+"themes/blackcandy/templates/JST/BottomTeachVideo.html",
		tupomGlobal.baseUrl+"teachvideocategorypage/videoList?ID="+__id,
		{
			onDataSuccess	: function (json) {
					if (!showMsgBox(json)) {
						return	false;
					}
					json.specailTitle	= specialTitle;
				},
			onTplExecute	: updateVideoBottom
		});
	//激发专题列表的点击动作,显示专题中的文章列表
	$(".EeachingPlanTitle").click(function(){
		var __eid	= this.id.substr(12);
		var	me		= $(this);
		JSTQuery (
			tupomGlobal.baseUrl+"themes/blackcandy/templates/JST/BottomTeachVideo.html",
			tupomGlobal.baseUrl+"teachvideocategorypage/videoList?ID="+__eid,
			{
				onDataSuccess	: function (json) {
					if (!showMsgBox(json)) {
						return	false;
					}
					json.specailTitle	= me.attr('title');
				},
				onTplExecute	: updateVideoBottom
			});
	});
	//其他视频类别点击动作
	$("#otherVideoType").click(function(){
		 JSQuery (tupomGlobal.baseUrl+"teachvideocategorypage/getVideoTypeList",{onDataSuccess:iniTeachVideoTypeList});
	});
}
/**
 * 教师版本-在线视频-加载视频的列表
 */
var videovisited=0;
updateVideoBottom = function(tpl){
	if(videovisited==0){
	$("#teachingPlanLayout").append(tpl);
	videovisited=1;
	}else{
	$("#eNewsEditionContent").remove();
	$("#teachingPlanLayout").append(tpl);
	}
	
	$(".VideoItemSee a").click(function(){	
		showTeachVideo($(this).attr("rel"));	
	});	
}
function showTeachVideo(videoid){
		speedTest.id = videoid;
		if(tupomGlobal.ServerIP==''||tupomGlobal.ServerIP==null){
			speedTest.console	= new coverBox ({
				  style			: 'speedTest',
				  data			: tupomGlobal.baseUrl+'themes/blackcandy/javascript/webServer.json',
				  //{data:{IP: speedTest.servers[speedTest.current].serverIP}},
				  cover			: true,
				  onDataSuccess	: function (json) {
					  speedTest.servers	= json.webServer;
					  speedTest.current	= 0;
					  json.data	= {
							  IP	: speedTest.servers[speedTest.current].serverIP
					  };
					  //onlineTeachVideoEvent(videoid);
				  }
			});
			/*
			JSQuery(tupomGlobal.baseUrl+'themes/blackcandy/javascript/webServer.json', {onDataSuccess:function (data) {
				speedTest.servers	= data.webServer;
				speedTest.current	= 0;
				
			}});
			*/
		}else{
			onlineTeachVideoEvent(videoid);  
		}
}
var onlineTeachVideoEvent		= function(__videoid){
//	if(tupomGlobal.role==1){
//	   new coverBox ({
//		  style			: 'twoVideo',
//		  data			: tupomGlobal.baseUrl+"videopage/teachshow?VideoID="+__videoid,
//		  cover			: true,
//		  onTplExecute	: runVideo,
//		  onCloseHandler: function() { 
//		  	deconcept.SWFObjectUtil.prepUnload();		
//		  	unloadSwf();
//		  }
//	});
//	}else{
		window.open(tupomGlobal.baseUrl+"videopage?VideoID="+__videoid);
//	}
}
/**
 * 弹出框中显示所有的书本和章节列表
 * @return
 */
function showAllBookChapter(){
	var me = this;
	//初始化教材版本的收缩
	$(".ChargeDirectoryList .chargeVersion, .chargeVersionImg").click(function () { 									
									  var __id		= this.id.substr(10);
									  var imgName	= $("#rootItem"+__id).css("display") == "none"	? 'Open'	: 'Reduce';
									  $("#VersionImg"+__id).attr('src', tupomGlobal.baseUrl+'themes/blackcandy/images/list'+imgName+'.gif');
									  $("#rootItem"+__id).toggle();
									  me.box.resetCoverHeight();
	});
	//初始化章节的连接
	$(".chapterSection").click(function(){
		var __chapterid = this.id.substr(12);
		JSTQuery (tupomGlobal.baseUrl+'themes/blackcandy/templates/JST/ChargeVersion.html', tupomGlobal.baseUrl+"VideoPage/getOnlineVideoList?ChapterID="+__chapterid, {onTplExecute:initChargeVersion, data:{chapterId:__chapterid}});
	});
}

/**
 * 初始化教师网络授课辅导
 * @param html
 * @return
 */
function iniTeacherOnlineLinkList(html){
	var me = this;
	$("#StudentDirectoryList .studtVersion, .studtVersionImg").click(function () { 		
									  var __id = this.id.substr(10);		
									  var imgName	= $("#rootItem"+__id).css("display") == "none"	? 'Open'	: 'Reduce';
									  $("#VersionImg"+__id).attr('src', tupomGlobal.baseUrl+'themes/blackcandy/images/list'+imgName+'.gif');
									  $("#rootItem"+__id).toggle();
									  me.box.resetCoverHeight();
	});
	$("#StudentDirectoryList .studtSection, .studtVersionImg").click(function () {
									  var __id = this.id.substr(8);
									  var imgName	= $("#childItem"+__id).css("display") == "none"	? 'Open'	: 'Reduce';
									  $("#SeconImg"+__id).attr('src', tupomGlobal.baseUrl+'themes/blackcandy/images/list'+imgName+'.gif');
									  $("#childItem"+__id).toggle();
									  me.box.resetCoverHeight();
	});
	
	$("#StudentDirectoryList .studtchapter").click(function () { 
		var __id = this.id.substr(10);
		JSTQuery (tupomGlobal.baseUrl+"themes/blackcandy/templates/JST/MiddleStudentTaskLayout.html", tupomGlobal.baseUrl+"teachervideopage/listByVideoList?ChapterID="+__id, {onDataSuccess:showMsgBox,onTplExecute:showOnlineVideo});
	});
}
/**
 * 显示用户的在线视频
 * @param tpl     模板
 * @return
 */
function showOnlineVideo(tpl){
	$("#middleListConsole").html(tpl);
	var me	= this;
	var videoid = me.json.layout[0].exerciseList[0].ID
	//初始化在线视频
	JSTQuery (tupomGlobal.baseUrl+"themes/blackcandy/templates/JST/webVideoShow.html", tupomGlobal.baseUrl+"teachervideopage/show?VideoID="+videoid,{onDataSuccess:showMsgBox,onTplExecute:initHandler});
	$("#MiddleStudentTaskLayout .articleTitle a").click(function () { 
		var videoid = this.id.substr(13);
		JSTQuery (tupomGlobal.baseUrl+"themes/blackcandy/templates/JST/webVideoShow.html", tupomGlobal.baseUrl+"teachervideopage/show?VideoID="+videoid,{onDataSuccess:showMsgBox,onTplExecute:initHandler});
	});
	
}



/**
 * 初始化教师备课辅导系统的章节列表
 * @param html	解析后的模版串
 * @return
 */
function iniTeachPlanLinkList(html){
	var me	= this;
	$("#TeachDirectoryList .teachVersion, .teachVersionImg").click(function () { 		
									  var __id		= this.id.substr(10);
									  var imgName	= $("#rootItem"+__id).css("display") == "none"	? 'Open'	: 'Reduce';
									  $("#VersionImg"+__id).attr('src', tupomGlobal.baseUrl+'themes/blackcandy/images/list'+imgName+'.gif');
									  $("#rootItem"+__id).toggle();
									  me.box.resetCoverHeight();
	});
	$("#TeachDirectoryList .teachSection, .teachVersionImg").click(function () {
									  var __id = this.id.substr(8);
									  var imgName	= $("#childItem"+__id).css("display") == "none"	? 'Open'	: 'Reduce';
									  $("#SeconImg"+__id).attr('src', tupomGlobal.baseUrl+'themes/blackcandy/images/list'+imgName+'.gif');
									  $("#childItem"+__id).toggle();
									  me.box.resetCoverHeight();
	});

	$("#TeachDirectoryList .teachchapter").click(function () { 		
									 var __id = this.id.substr(10); 
									  $.cookie("teachPlanLink", {ChapterID:__id}, cookieOption);
									  JSTQuery (tupomGlobal.baseUrl+"themes/blackcandy/templates/JST/RightTeachPlantLayout.html", tupomGlobal.baseUrl+"teacher/getLayoutList?ID="+__id, {onDataSuccess:showMsgBox,onTplExecute:callCommon.updateRight});
	});
}




 /**
 * 初始化学生作业辅助系统章节列表
 * @param html	解析后的模版串
 * @return
 */
function iniStudentTaskLinkList(html){
	var me = this;
	//me.json.data.LayoutName
	$("#StudentDirectoryList .studtVersion, .studtVersionImg").click(function () { 		
									  var __id = this.id.substr(10);		
									  var imgName	= $("#rootItem"+__id).css("display") == "none"	? 'Open'	: 'Reduce';
									  $("#VersionImg"+__id).attr('src', tupomGlobal.baseUrl+'themes/blackcandy/images/list'+imgName+'.gif');
									  $("#rootItem"+__id).toggle();
									  me.box.resetCoverHeight();
	});
	$("#StudentDirectoryList .studtSection, .studtVersionImg").click(function () {
									  var __id = this.id.substr(8);
									  var imgName	= $("#childItem"+__id).css("display") == "none"	? 'Open'	: 'Reduce';
									  $("#SeconImg"+__id).attr('src', tupomGlobal.baseUrl+'themes/blackcandy/images/list'+imgName+'.gif');
									  $("#childItem"+__id).toggle();
									  me.box.resetCoverHeight();
	});
	
	$("#StudentDirectoryList .studtchapter").click(function(){
		var __id = this.id.substr(10);
		$.cookie("studentPlanLink",{ChapterID:__id, ClassID:tupomGlobal.currentClassID}, cookieOption); 
		if ('undefined' != typeof me.otherData && me.otherData.isTeacher) {
			JSTQuery (tupomGlobal.baseUrl+"themes/blackcandy/templates/JST/ClassExercise.html", tupomGlobal.baseUrl+"exerciseconsolepage/listBy?ChapterID="+__id+'&ClassID='+tupomGlobal.currentClassID, {
				onDataSuccess	: showMsgBox,
				onTplExecute	: iniExerciseConsole
			});
		} else {
			JSTQuery (tupomGlobal.baseUrl+"themes/blackcandy/templates/JST/MiddleStudentTaskLayout.html", tupomGlobal.baseUrl+"exerciselistpage/listBy?ChapterID="+__id+'&ClassID='+tupomGlobal.currentClassID, {onDataSuccess:showMsgBox,onTplExecute:callCommon.setNewsArticleLink});
		}
	});
}



/**
 * 获取模板和数据的入口函数
 *
 */
function showMsgBox(data){
	if ('undefined' != typeof data.style) {
		data.cover	= true;
		new coverBox(data);
		switch(data.style){
			case 'Error':
				return false;
			case 'Notice':
				return true;
			case 'Success':
				return true;
			default:
				return true;
		}
	}
	return true;
}


//======================================= public =================================================
/**
 * 获取模板和数据并加以执行
 *
 * @require	jquery.js					//JQuery框架内核
 * @require	trimpath-template-1.0.38.js	//JST模板内核
 *
 * @param	tplPath		String			模板路径
 * @param	jsonPath	String|Object	数据路径
 * @param	opt			Object			参数(包含回调方法)
 * 						{
 *	 					onTplError		: Function			模板加载过程出错时调用
 *						onDataError		: Function			数据加载过程出错时调用
 *						onDataSuccess	: Function			数据加载成功模板执行之前调用
 *						onTplExecute	: Function			模板执行之后调用
 *						decode			: String			JQuery的解码规则 默认为JSON 或者为 TEXT
 *						tpl				: String|undefined	返回模板
 *						json			: Object|undefined	返回的数据
 *						data			: Object|undefined	传递参数
 *						}
 * @param	postData	Object|String	post数据
 */

function JSTQuery (tplPath, jsonPath, opt, postData) {
	opt.tplPath		= tplPath;
	opt.jsonPath	= jsonPath;
	opt.postData	= postData;
	opt.baseUrl		= opt.baseUrl	? opt.baseUrl	: tupomGlobal.baseUrl;	//@todo	默认顶级url
	var tplOptions	= {
			jsonOpt	: {
				cache	: xxtGlobal.ajaxOption.cache,
				dataType: opt.decode	? opt.decode	: 'json',
				url		: jsonPath,
				success	: function (jsonData, textStatus) {
							opt.json		= 'text' == opt.decode	? {data:jsonData}	: jsonData;
							opt.json.baseUrl= opt.baseUrl;
							if ('undefined' != typeof opt.onDataSuccess) {
								if(false === opt.onDataSuccess(opt.json)){
									return ;	//返回 false 停止执行
								}
							}
							opt.json._MODIFIERS		= modifiers;
							this.tplExecuteResult	= this.tpl.process(opt.json);
							if ('undefined' != typeof opt.onTplExecute) {
								opt.onTplExecute(this.tplExecuteResult);
							}
						}
					},
			cache	: xxtGlobal.ajaxOption.cache,
			dataType: 'text',
			url		: tplPath,
			success	: function (tplData, textStatus) {
						opt.tpl		= tplData;
						this.tpl	= tplData;
						if ('' == jsonPath) {	//若jsonPath参数为空
							if ('undefined' != typeof opt.onTplExecute) {
								opt.onTplExecute(this.tpl);
							}
							return ;
						}
						this.getData();
					},
			getData	: function () {
						if (null == this.tpl) {
							alert('模板未加载');	//debug
							return ;
						}
						if ('object' == typeof jsonPath) {	//@todo 当jsonPath为对象 则直接执行模板
							opt.json		= jsonPath;
							opt.json.baseUrl= opt.baseUrl;
							if ('undefined' != typeof opt.onTplExecute) {
								opt.json._MODIFIERS	= modifiers;
								opt.onTplExecute(this.tpl.process(opt.json));
							}
							return ;
						}
						this.jsonOpt.tpl	= this.tpl;
						$.ajax(this.jsonOpt);
					}
		};
	tplOptions.error		= 'undefined' != typeof opt.onTplError	? opt.onTplError	: null;
	tplOptions.jsonOpt.error= 'undefined' != typeof opt.onDataError	? opt.onDataError	: null;
	if (null != postData) {
		tplOptions.jsonOpt.data	= postData;
		tplOptions.jsonOpt.type	= 'POST';
	}
	$.ajax(tplOptions);
}

/**
 * 获取数据
 *
 * @require	jquery.js					//JQuery框架内核
 *
 * @param	jsonPath	String			数据路径
 * @param	opt			Object			参数(包含回调方法)
 * 						{
 *						onDataError		: Function			数据加载过程出错时调用
 *						onDataSuccess	: Function			数据加载成时调用
 *						decode			: String			JQuery的解码规则 默认为JSON 或者为 TEXT
 *						json			: Object|undefined	返回的数据
 *						}
 * @param	postData	Object|String	post数据
 */
function JSQuery (jsonPath, opt, postData) {
	var	jsonOptions	= {
				cache	: xxtGlobal.ajaxOption.cache,
				dataType: opt.decode	? opt.decode	: 'json',
				url		: jsonPath,
				success	: function (jsonData) {
							opt.json		= 'text' == opt.decode	? {data:jsonData}	: jsonData;
							if ('undefined' != typeof opt.onDataSuccess) {
								opt.onDataSuccess(jsonData);
							}
						}
					};
	jsonOptions.error= 'undefined' != typeof opt.onDataError	? opt.onDataError	: null;
	if (null != postData) {
		jsonOptions.data	= postData;
		jsonOptions.type	= 'POST';
	}
	$.ajax(jsonOptions);
}

/**
 * 提交用户修改数据页面
 * @return
 */
function SubMitUserData(){

	var postData	= {
			surname		: $('#Form_RegistForm_surname').val(),
			firstname	: $('#Form_RegistForm_firstname').val(),
			useraddress	: $('#Form_RegistForm_useraddress').val(),
			phone		: $('#Form_RegistForm_phone').val(),
			country		: $('#Form_RegistForm_country').val(),
			img			: $('#Form_RegistForm_usericon').val(),
			playertype	: $("input[@type=radio][@checked]").val()
	};
	
	/*if($('#Form_RegistForm_class').val()!=''){
		postData.ChooseClass	= $('#Form_RegistForm_class').val();
	}*/
	JSTQuery (
		tupomGlobal.baseUrl+"themes/blackcandy/templates/JST/HomeShowUser.html",
		tupomGlobal.baseUrl+"registpage/doRegistForm",
		{
			onTplExecute	: callCommon.showUserInfo,
			onDataSuccess	: showMsgBox
		},
		postData
	);
	//JSTQuery (tupomGlobal.baseUrl+"themes/blackcandy/templates/JST/HomeShowClass.html", tupomGlobal.baseUrl+"home/forHtmlClassInfo",{onTplExecute:callCommon.showClassList},postData);
}


/**
 * 更新右侧框体,将用户的消息详情填写进去
 * @param bid          消息的id
 * @return
 */
function updataRightMsg(bid){
	var opturl;
	opturl = tupomGlobal.baseUrl+"bulletindetailpage/getMessageDetail?bid="+bid;
	JSTQuery (tupomGlobal.baseUrl+"themes/blackcandy/templates/JST/userMsgDetail.html",opturl,{onTplExecute:callCommon.updateRight});
	//将中间栏消息状态部分刷新
	JSTQuery (tupomGlobal.baseUrl+'themes/blackcandy/templates/JST/userMsgList.html', tupomGlobal.baseUrl+"bulletinpage/getMessageList", {onTplExecute:initBulletin});
	
}

/**
 * 图片上传之后弹出文本框,然后刷新图片的页面
 * @param data    传入的json信息
 * @return
 */
function refreshIcon (data) {
	showMsgBox(data);
	if('Success' == data.style){
		var r	= data.data.imagePath+'?r='+Math.ceil(Math.random() * 10000);
		$('#photoIcon img').attr('src', r);
		$('#usericon img').attr('src', r);
	}
}

/**
 * 更新教师在线辅导部分的加锁解锁按钮,将所按钮更新成锁贴
 * @param data    onDataSuccess 
 * @return
 */
function updateLockButton(data){
	showMsgBox(data);
	var a = this.data.threadid;
	if(data.style == 'Success'){
		if(this.data.lock == 1){			//如果做得是加锁操作,应该更新为解锁
			//如果做得是加锁操作,应该更新为解锁
			$(".btnNotice").html("<a id='lockThePost_0' href='javascript:void(0)'>解锁</a>");
			$("#sendNoticeDiv").show();
			$(".btnNotice a").click(function(){	
				JSQuery (tupomGlobal.baseUrl+"forumthreadpage/lock?lock=0&ThreadID="+a ,{data:{threadid:a,lock:0},onDataSuccess:updateLockButton});
			});
		}else{	
			$("#sendNoticeDiv").hide();//更新为锁贴,并且将添加帖子的文本框去掉
			$(".btnNotice").html("<a id='lockThePost_1' href='javascript:void(0)'>锁贴</a>");
			$(".btnNotice a").click(function(){	
			JSQuery (tupomGlobal.baseUrl+"forumthreadpage/lock?lock=1&ThreadID="+a ,{data:{threadid:a,lock:1},onDataSuccess:updateLockButton});
			});
		}
	}
}

/**
 * 初始化班级练习列表
 */
function iniExerciseConsole (html) {
	callCommon.updateRight(html);
	$('#modifySchoolClassExercise').click(function () {
		$('#schoolClassForExercise').val(tupomGlobal.currentClassID);
		JSQuery(tupomGlobal.baseUrl+'exerciseconsolepage/modifyRelationship',{
			onDataSuccess	: showMsgBox
		},$('input').serialize());
	});
}
//======================================= public =================================================
/**
 * 公共函数对象
 *
 */
callCommon = {};



 /**
 * 浮动层(例如 电子化报纸的选择期数层)
 * @param tpl	解析后的模版串
 * @return
 */
callCommon.floatMiddle = function(tpl){
	MsgBox.showCoverLayer();
	$("#middleListConsole").html(tpl);
	setXY($("#showDialogMsg"))
	
	}


/**
 * 中栏
 *
 */
callCommon.updateMiddle = function(tpl){	
	$("#middleListConsole").html(tpl);
}
//用来判断是否已经加载过了习题列表
var visited=0;
callCommon.updateBottom = function(tpl){
	//document.write(tpl);
	var	re	= new RegExp('<!--(?:.|\s)*?-->', 'g');
	tpl	= tpl.replace(re, '').replace(/<![^>]+?>/g, '');
	if(visited==0){
		$("#TeachExerciseLayout").append(tpl);
		visited=1;
	}else{
		$("#eNewsEditionContent").remove();
		$("#TeachExerciseLayout").append(tpl);
	}

	$(".parseAnswer").click(function(){
					var __questionId	= this.id.substr(11);
					showParseAnswerBtn(__questionId);					 
	});	
}

/**
 * 右栏
 *
 */
callCommon.updateRight = function(tpl){
	tpl	= tpl.replace(/(assets\/)/g, tupomGlobal.baseUrl+"$1");
	$("#rightConsole").html(tpl);
	
	//返回第一篇文章
	var me	= this;
	var type = me.json ? me.json.type : "";
	if(type == "teachPlan"){
			var __articleId = me.json.ArticleId;
			JSQuery (tupomGlobal.baseUrl+"teacher/getByContent?id="+__articleId,{onDataSuccess:teachPlanIndue});
			$(".teachPlanVersion").html("教材版本:"+$("#initChapterName").html());
			$('#otherChapter').click(function() {
											initNowLocation("TeacherLesson");
											new coverBox ({
														  style			: 'Teacher',
														  data			: tupomGlobal.baseUrl+"teachcategorylistpage/listBy?ClassName=TeachArticle&TeachCategoryID="+tupomGlobal.chapterid,
														  cover			: true,
														  onTplExecute	: iniTeachPlanLinkList
											});
			});
	}
}


function teachPlanIndue(){

	$(".ManageGrade span").html(this.json.data.ArticleTitle);
	//JSTQuery (tupomGlobal.baseUrl+this.json.data.ArticleContent, "", {decode:"TEXT", data:{URLImg: "assets/TeachingPlan/", ID: this.json.data.chapterId}, onTplExecute:InduePartHtml});
	$('#teachingPlanChapter').html('<iframe id="teachingPlanChapterConsole" name="teachingPlanChapterConsole" frameborder="0" width="100%" src="'+tupomGlobal.baseUrl+this.json.data.ArticleContent+'"></iframe>');
	$('#teachingPlanChapterConsole').css({overflowX:'hidden'});
	
	$("#teachingPlanChapterConsole").load(function(){
		$(this).height($(this).contents().find("body").attr('scrollHeight') + 40);
	});

	$(".EeachingPlanTitle").click(function(){
		$('#teachingPlanContent .ManageGrade span').html($(this).attr('title'));
		$('#teachingPlanChapterConsole').attr('src', $(this).attr('content')+'?_r='+Math.floor(Math.random()*10000));
	});
}

function InduePartHtml(tpl){
	tpl = tpl.replace(/(<img[^>]+?src=["']?)\.([^\s]+?)/ig, "$1"+tupomGlobal.baseUrl+"assets/TeachingPlan/"+hashPath(this.data.ID)+"$2");
	tpl	= tpl.replace(/position:\s*[^;]+\s*;/ig, 'position:inherit;');
	$("#teachingPlanChapter").html(tpl);


}

function updateNewsObject(){
	$("#newsContentTitle").html(this.json.data.ArticleTitle);
	$("#fullScreemFlash").attr('href', tupomGlobal.baseUrl+'html/flash.html?id='+this.json.data.ArticleContent.replace(/.*?(\d+)$/, "$1"));
	if ('undefined' == typeof $("#newsContentObject2").attr("data")) {
		$('#FlashID').replaceWith(this.data.objectTag.replace(/newspaperslayout\/showNewsFlash\?id=\d+/g, this.json.data.ArticleContent));
	} else {
		$("#newsContentObject1").val(this.json.data.ArticleContent);
		$("#newsContentObject2").attr("data",this.json.data.ArticleContent);
	}
}

/**
 * 章节列表弹出层的回调函数
 * @param tpl	解析后的模版串
 * @return
 */
callCommon.setNewsArticleLink = function(tpl){

	$("#rightConsole").html(tpl);

//为电子化报纸添加列表点击监听事件
	$(".objectiveSubject").click(function(){
			var __id = this.id.substr(6);
			JSQuery (tupomGlobal.baseUrl+"newspaperslayout/getByContent?id="+__id,{
				data			: {
					objectTag	: tpl.replace(/^[\s\S]*?(<object[\s\S]+<\/object>)[\s\S]*?$/g, "$1")
				},
				onDataSuccess	: updateNewsObject
			});
	});

	$('#otherIssueNewsContent').click(function() {
											 new coverBox ({
											  style			: 'ENewspaperPage',
											  data			: tupomGlobal.baseUrl+"enewspaperpage/IssueNoResult?categoryId="+tupomGlobal.clickIssueId,//bug
											  cover			: true,
											  onTplExecute	: iniIssueLinkList
											})
	});
}
callCommon.setExerciseLink = function(tpl){
	$("#rightConsole").html(tpl);
	var __id = this.json.LayoutExerciseItem[0].exerciseList[0].ID;
	JSTQuery (
		tupomGlobal.baseUrl+"themes/blackcandy/templates/JST/BottomExerciseList.html",
		tupomGlobal.baseUrl+"exerciseshowpage/show?ID="+__id,
		{
			onTplExecute	: callCommon.updateBottom
		}
	);
	//为报纸习题添加列表点击监听事件
	$(".eNewsExerciseSubject").click(function(){
			var __eid = this.id.substr(6);
			JSTQuery (
				tupomGlobal.baseUrl+"themes/blackcandy/templates/JST/BottomExerciseList.html",
				tupomGlobal.baseUrl+"exerciseshowpage/show?ID="+__eid,
				{
					onTplExecute	: callCommon.updateBottom
				}
			);
	});
		//为报纸习题页面中栏的其它期添加监听事件
	$('#otherIssueNewsContent').click(function() {
											 new coverBox ({
											  style			: 'ENewspaperPage',
											  data			: tupomGlobal.baseUrl+"enewspaperpage/IssueNoResult?link=2&categoryId="+tupomGlobal.clickIssueId,//bug
											  cover			: true,
											  onTplExecute	: iniIssueLinkListEx
											})
	});
	
}

/**
 * 电子化报纸的点击试题或习题列表后的回调function
 * @param tpl	解析后的模版串
 * @return
 */
function showStudentTaskList(tpl){
	callCommon.updateRight(tpl);
	
	$(".questionPromat li a").click(function(){
						var __statusId	= this.className.substring(16,17);
						var __id		= this.className.substr(18);
						JSQuery (tupomGlobal.baseUrl+"exerciseshowpage/getAnswer?ID="+__id+"&status="+__statusId, {onDataSuccess: showQuestionSuccessOrErrorInfo});
										 
	});
	
	$(".parseAnswer").click(function(){
					var __questionId	= this.id.substr(11);
					showParseAnswerBtn(__questionId);					 
	});	
}


/**
 * 电子化报纸(教师角色)点击试题或习题标题后的回调function
 * @param tpl	解析后的模版串
 * @return
 */
function showTeachPlantList(tpl){
	callCommon.updateRight(tpl);

	$(".parseAnswer").click(function(){
		var __id	= this.id.substr(11);
		showParseAnswerBtn(__id);
						 
	});
}

//解析按钮的动作
var showParseAnswerBtn = function(currentId){
//	alert("#idAnswerBox"+currentId);
//	alert($("#idAnswerBox"+currentId).css("display"))
	$("#idAnswerBox"+currentId).css("display") == "none" ?$("#idAnswerBox"+currentId).css("display","block") :$("#idAnswerBox"+currentId).css("display","none");								
	$("#idAnswerBox"+currentId).css("display") == "none" ?$("#parseAnswer"+currentId).text("查看解析") :$("#parseAnswer"+currentId).text("关闭解析");	
	if ('function' == typeof decideIfAnswer) {
		$(".lastquestionPromat li a").click(decideIfAnswer);
	}
}

 /**
 * 教师在线辅导系统--教师用
 * @param html	解析后的模版串
 * @return
 */
callCommon.initTeacherTutorList = function(html){
		var me = this;
		$("#rightConsole").html(html);
		createFCK("fckContent");
		
		//为教师在线辅导的主题列表添加监听事件
		$('#tagLinkList a').click(function () {
			JSTQuery(me.tplPath, tupomGlobal.baseUrl+'forumthreadpage/listByTag?TagID='+this.id.substr(16),{data:{jsonPathBase:'forumthreadpage/listByTag?TagID='+this.id.substr(16)},onTplExecute:me.onTplExecute});
		});
		
		$('#searchSubmit').click(function () {
			var srchCondition = $("input[name='srchCondition']:checked").val();
			var keyWord		  = $("#txtKeyWord").val();
			if(srchCondition=="on"){
				var linkParam = "listBy";
			}else{
				var linkParam = "searchBy?by="+srchCondition+"&keyword="+encodeURIComponent(keyWord);
			}
			JSTQuery(me.tplPath, tupomGlobal.baseUrl+'forumthreadpage/'+linkParam,{onDataSuccess:showMsgBox, onTplExecute:me.onTplExecute});
		});

		$(".noticeList .threadItem a").click(function(){
			var opt	= {
					onTplExecute	: showTeacherLineTutorList
				};
			
			var a = this.id.substr(11);//获取该主题的id
			//判断用户身份
			if(tupomGlobal.account.substr(0,1)=='t'){//教师调用教师模板
				JSTQuery (tupomGlobal.baseUrl+"themes/blackcandy/templates/JST/TeacherLineTutorList.html",tupomGlobal.baseUrl+"forumthreadpage/show?ID="+a ,opt);
			}else{//学生调用学生模板
				JSTQuery (tupomGlobal.baseUrl+"themes/blackcandy/templates/JST/TeacherLineTutorList_S.html",tupomGlobal.baseUrl+"forumthreadpage/show?ID="+a ,opt);
			}
		});
	
	  //教师在线辅导页面 发表主题功能
	 $("#sendNotice").click(function(){
		var subjectVal = $("input[name='Subject']").val();
		var contentVal = FCKeditorAPI.GetInstance("fckContent").GetXHTML(true);
		var sendTypeVal = parseInt($("input[name='radSendType'][checked]").val());
		var postData	= {Subject:subjectVal, Content:contentVal};
		if (sendTypeVal) {
			postData.ToStudentAccount	= $("input[name='ToStudentID']").val();
		}
		JSQuery (tupomGlobal.baseUrl+"forumthreadpage/addThread", {onDataSuccess:commentCallback},postData);
	 })
	 //点击发贴的群发隐藏学生护照号DIV
	 $("#massSend").click(function(){
			$(".commentBorder").css("display","none");							   
	 })
	 //点击发贴的单发显示学生护照号DIV
	 $("#singleSend").click(function(){
			$(".commentBorder").css("display","block");							   
	 })
	 
	
	 /*调用教师在线辅导页面分页栏 教师用*/
	var pageList	= new PageSpliter({
						id			: 'pageConsole',
						total		: this.json.data.total,
						tplPath		: tupomGlobal.baseUrl+'themes/blackcandy/templates/JST/themesPageBar.html',
						style		: 'All',
						onExecute	: function () {
							$('#pageConsole .page').click(function () {
								var pageNumber = parseInt($(this).text());
								pageList.changePage(pageNumber);
								var accountType = tupomGlobal.account.substr(0,1);
								var jsonPath	= null != me.data && null != me.data.jsonPathBase
												? me.data.jsonPathBase
												: "forumthreadpage/listBy?";
								if(accountType == "t"){		
										JSTQuery (tupomGlobal.baseUrl+'themes/blackcandy/templates/JST/TeacherLineTutor.html', tupomGlobal.baseUrl+jsonPath+"&page="+pageNumber, {onTplExecute:callCommon.initTeacherTutorList,data:{nowPage: pageNumber}});
								}else{
										JSTQuery (tupomGlobal.baseUrl+'themes/blackcandy/templates/JST/TeachertoSLineTutor.html', tupomGlobal.baseUrl+"forumthreadpage/listBy?page="+pageNumber, {onTplExecute:callCommon.initTeachertoSTutorList,data:{nowPage: pageNumber}});
								
								}
							});
						}
	});

	pageList.opt.nowPage	= this.data	? (this.data.nowPage	? this.data.nowPage	: 1) : 1;
	pageList.exec();
}


/**
 * 教师在线辅导系统--学生用
 * @param html	解析后的模版串
 * @return
 */
callCommon.initTeachertoSTutorList = function(html){
	$("#rightConsole").html(html);	
	createFCK("fckContent");
	
	//为教师在线辅导的主题列表添加监听事件
	$(".noticeList .threadItem a").click(function(){
		var opt	= {
				onTplExecute	: showTeacherLineTutorList
			};
		//获取该主题的id
		var a = this.id.substr(11);
		//判断用户身份
		if(tupomGlobal.account.substr(0,1)=='t'){          //教师调用教师模板
			JSTQuery (tupomGlobal.baseUrl+"themes/blackcandy/templates/JST/TeacherLineTutorList.html",tupomGlobal.baseUrl+"forumthreadpage/show?ID="+a ,opt);
		}else{												//学生调用学生模板
			JSTQuery (tupomGlobal.baseUrl+"themes/blackcandy/templates/JST/TeacherLineTutorList_S.html",tupomGlobal.baseUrl+"forumthreadpage/show?ID="+a ,opt);
		}
	});

	 //教师在线辅导页面 发表主题功能(学生)
	 $("#sendNoticetoS").click(function(){
		var subjectVal = $("input[name='Subject']").val();
		var contentVal = FCKeditorAPI.GetInstance("fckContent").GetXHTML(true);
		JSQuery (tupomGlobal.baseUrl+"forumthreadpage/addThread", {onDataSuccess:commentCallback},{Subject:subjectVal, Content:contentVal});						 
	 })
	 
	 /*调用教师在线辅导页面分页栏 教师用*/
	var pageList	= new PageSpliter({
						id			: 'pageConsole',
						total		: this.json.data.total,
						tplPath		: tupomGlobal.baseUrl+'themes/blackcandy/templates/JST/themesPageBar.html',
						style		: 'All',
						onExecute	: function () {
							$('#pageConsole .page').click(function () {
								var pageNumber = parseInt($(this).text());
								var accountType = tupomGlobal.account.substr(0,1);
								if(accountType == "t"){		
										JSTQuery (tupomGlobal.baseUrl+'themes/blackcandy/templates/JST/TeacherLineTutor.html', tupomGlobal.baseUrl+"forumthreadpage/listBy?page="+pageNumber, {onTplExecute:callCommon.initTeacherTutorList,data:{nowPage: pageNumber}});
								}else{
										JSTQuery (tupomGlobal.baseUrl+'themes/blackcandy/templates/JST/TeachertoSLineTutor.html', tupomGlobal.baseUrl+"forumthreadpage/listBy?MemberID="+tupomGlobal.userid+'&page='+pageNumber, {onTplExecute:callCommon.initTeachertoSTutorList,data:{nowPage: pageNumber}});
								
								}
							});
						}
	});
	pageList.opt.nowPage	= this.data	? (this.data.nowPage	? this.data.nowPage	: 1) : 1;
	pageList.exec();	
}


/**
 *教师在线辅导系统发表主题后的回调函数
 * @param data	封装的消息数据格式
 * @return
 */
function commentCallback(data){
	showMsgBox(data);
	if(data.style == "Success"){
		var accountType = tupomGlobal.account.substr(0,1);
		if(accountType == "t"){		
				JSTQuery (tupomGlobal.baseUrl+'themes/blackcandy/templates/JST/TeacherLineTutor.html', tupomGlobal.baseUrl+"forumthreadpage/listBy?", {onTplExecute:callCommon.initTeacherTutorList});
		}else{
				JSTQuery (tupomGlobal.baseUrl+'themes/blackcandy/templates/JST/TeachertoSLineTutor.html', tupomGlobal.baseUrl+"forumthreadpage/listBy?MemberID="+tupomGlobal.userid, {onTplExecute:callCommon.initTeachertoSTutorList});
		}					   
	}
	

}


/**
 * 发贴后更新学生贴子的列表
 * @param data
 * @return
 */
function updataStudentPostList(data){
	showMsgBox(data);
	var a = this.data.threadid;
	var page = data.data.lastPage;
	var opt	= {
			onTplExecute	: showTeacherLineTutorList
		};
	//如果用户是学生,调用学生模板
	if(tupomGlobal.account.substr(0,1)=='s'){
		JSTQuery (tupomGlobal.baseUrl+"themes/blackcandy/templates/JST/TeacherLineTutorList_S.html",tupomGlobal.baseUrl+"forumthreadpage/show?ID="+a+"&page="+page,opt);
	}else{
		JSTQuery (tupomGlobal.baseUrl+"themes/blackcandy/templates/JST/TeacherLineTutorList.html",tupomGlobal.baseUrl+"forumthreadpage/show?ID="+a+"&page="+page ,opt);
	}
	
}


/**
 * 翻页后,修改用户的页面数据(帖子页面)
 * @param opt	输入数据
 * @param page	当前页数
 * @return
 */
function changePageData(a,page){
	var opt	= {
			data			: {
				nowPage	: page
			},
			onTplExecute	: showTeacherLineTutorList
		};
	//如果用户是学生,调用学生模板
	if(tupomGlobal.account.substr(0,1)=='s'){
		JSTQuery (tupomGlobal.baseUrl+"themes/blackcandy/templates/JST/TeacherLineTutorList_S.html",tupomGlobal.baseUrl+"forumthreadpage/show?ID="+a+"&page="+page,opt);
	}else{
		JSTQuery (tupomGlobal.baseUrl+"themes/blackcandy/templates/JST/TeacherLineTutorList.html",tupomGlobal.baseUrl+"forumthreadpage/show?ID="+a+"&page="+page ,opt);
	}
}


/**
 * 显示帖子列表的页面
 */
showTeacherLineTutorList = function(html){
	$("#rightConsole").html(html);
	var threadid = this.json.Thread.ID;
	if(tupomGlobal.account.substr(0,1)=='t'&&this.json.Thread.LockMemberID!=0&&this.json.Thread.LockMemberID==tupomGlobal.userid){
		$("#sendNoticeDiv").show();
	}
	createFCK("fckContent");
	var pageList	= new PageSpliter({
		id			: 'teacherTutorPage',
		total		: this.json.totalPosts,
		tplPath		: tupomGlobal.baseUrl+'themes/blackcandy/templates/JST/page.html',
		style		: 'All',
		onExecute	: function () {
			$('#teacherTutorPage .page').click(function () {
				pageList.changePage($(this).text());
				changePageData(threadid,pageList.pageData.nowPage);
			});
			$('#teacherTutorPage .prevPage').click(function () {
				pageList.changePage(pageList.pageData.prevPage);
				changePageData(threadid,pageList.pageData.prevPage);
			});
			$('#teacherTutorPage .nextPage').click(function () {
				pageList.changePage(pageList.pageData.nextPage);
				changePageData(threadid,pageList.pageData.nextPage);
			});
		}
	});

	pageList.opt.nowPage	= this.data	? (this.data.nowPage	? this.data.nowPage	: 1) : 1;
	pageList.exec();
	//初始化锁贴动作
	$(".btnNotice a").click(function(){	

		var a = this.id.substr(12);
		//变量a为加解锁的标志,a=1加锁,a=0是解锁
		JSQuery (tupomGlobal.baseUrl+"forumthreadpage/lock?lock="+a+"&ThreadID="+threadid ,{data:{threadid:threadid,lock:a},onDataSuccess:updateLockButton});
												  });
	//学生发帖的动作初始化
	 $("#sendPost").click(function(){
			var subjectVal = $("input[name='postTitle']").val();
			var contentVal = FCKeditorAPI.GetInstance("fckContent").GetXHTML(true);
			JSQuery (tupomGlobal.baseUrl+"forumthreadpage/addPost", {data:{threadid:threadid},onDataSuccess:updataStudentPostList},{Title:subjectVal, Content:contentVal,ThreadID:threadid});						 
	 })
	 //教师在线辅导系统内容页面 为添加标签添加监听事件
	 $(".btnNoticeLabel a").click(function(){
			JSTQuery (tupomGlobal.baseUrl+"themes/blackcandy/templates/JST/TeacherLineAddLabel.html",tupomGlobal.baseUrl+"forumthreadpage/getTags?ThreadID="+threadid ,{onTplExecute	: showTeacherLineAddLabel, data: {ThreadID	: threadid}});
											
	  })
}

/**
 * 添加标签的回调函数
 */
function showTeacherLineAddLabel(html){
		$("#teachertoSLineTutorDiv").after(html);
		$(".btnNoticeLabel a").unbind('click');
		$(".btnNoticeLabel a").text("提交标签");
		$(".btnNoticeLabel").addClass("submitNoticeLabel");
		var me= this;
		var tagStr	= $("input[name='Tags[]']:checked").serialize();
		//提交标签的事件
		$(".submitNoticeLabel a").click(function(){
				var newTagStr = $("input[name='Tags[]']:checked").serialize();
				if(newTagStr != tagStr){
					JSQuery (tupomGlobal.baseUrl+"forumthreadpage/setTags?ThreadID="+me.data.ThreadID ,{data:{ThreadID:me.data.ThreadID},onDataSuccess:rollBackLabel},newTagStr);
				}else{
					$("#addLabel").remove();
					$(".btnNoticeLabel").removeClass("submitNoticeLabel"); 
					$(".btnNoticeLabel a").text("增加标签");
					$(".btnNoticeLabel a").unbind('click');
					//教师在线辅导系统内容页面 为添加标签添加监听事件
					$(".btnNoticeLabel a").click(function () {
						JSTQuery (tupomGlobal.baseUrl+"themes/blackcandy/templates/JST/TeacherLineAddLabel.html",tupomGlobal.baseUrl+"forumthreadpage/getTags?ThreadID="+me.data.ThreadID ,{onTplExecute	: showTeacherLineAddLabel, data: {ThreadID	: me.data.ThreadID}});
	})
				}
		 });
}

function rollBackLabel(data){
	var me	= this;
	showMsgBox(data);
	$("#addLabel").remove();
	$(".btnNoticeLabel").removeClass("submitNoticeLabel"); 
	$(".btnNoticeLabel a").text("增加标签");
	$(".btnNoticeLabel a").unbind('click');
	//教师在线辅导系统内容页面 为添加标签添加监听事件
	$(".btnNoticeLabel a").click(function () {
		JSTQuery (tupomGlobal.baseUrl+"themes/blackcandy/templates/JST/TeacherLineAddLabel.html",tupomGlobal.baseUrl+"forumthreadpage/getTags?ThreadID="+me.data.ThreadID ,{onTplExecute	: showTeacherLineAddLabel, data: {ThreadID	: me.data.ThreadID}});
	})
	
}


/**
 * 显示班级列表
 */
/*callCommon.showClassList = function(tpl){
	$("#classListLeftTop").html(tpl);
	$('#classListLabel_'+tupomGlobal.currentClassID).addClass('active');
	$('#classListTop li').click(function () {
		changeClass(this.id.substr(15));
		modifyClassInfo(this.id.substr(15));
	})
	
}*/
/**
 * 显示用户信息
 */
callCommon.showUserInfo = function(tpl){
	$("#userInfo").html(tpl);
	/**
	 * 用户信息修改部分
	 */
	$('#modifyUserInfoController').click(function (){
		$("dd").removeClass("now"); 
		initNowLocation('modifyUserInfoController');
		JSTQuery (tupomGlobal.baseUrl+'themes/blackcandy/templates/JST/userInfoModify.html', tupomGlobal.baseUrl+"registpage/RegistForm", {onTplExecute:iniModifyUserInfo});
	});
}










var TypicalExerciseMediumAppend = function(html){
	callCommon.updateMiddle(html);
	var __chapterId		= this.data.chapterId;
	var OlayoutName		= this.data.OlayoutName;
	var SlayoutName		= this.data.SlayoutName;
	
	$(".objectiveSubjectMiddle").click(function (){objectiveSubjectEvent(__chapterId, OlayoutName)});
	$(".subjectiveSubjectMiddle").click(function (){subjectiveSubjectEvent(__chapterId, SlayoutName)});
	$(".onlineVideoMiddel").click(function(){
		if(tupomGlobal.ServerIP==''){
			speedTest.id = this.id.substr(6);
			JSQuery(tupomGlobal.baseUrl+'themes/blackcandy/javascript/webServer.json', {onDataSuccess:function (data) {
				speedTest.servers	= data.webServer;
				speedTest.current	= 0;
				new coverBox ({
						  style			: 'speedTest',
						  data			: {data:{IP: speedTest.servers[speedTest.current].serverIP}},
						  cover			: true,
						  onTplExecute	: function () {}
				});
			}});
		}else{
									var videoid = this.id.substr(6);
									onlineVideoEvent(videoid);  
		}
//		window.open("http://testserver.com.cn/tupom/trunk/www.tupom.com/themes/blackcandy/templates/JST/MsgBox/twoVideo.html?id=1");
	});
	
}


/**
 * 定时器类型 开始
 * 通过监听器按照固定的时间间隔执行操作
 * Example:
 * function foo (hd) {
	 if (10 < hd.times) {	//1~11
		hd.stop();
	}
	 alert('Hello world'+hd.times)
	}
 * var timer	= new Timer(1000, foo, true);
 * timer.start();
 */

/**
 * 定时器
 *
 * @param	int			delay	执行间隔
 * @param	function	func	要执行的方法
 * @param	boolean		debug	调试开关
 * @return	function			对象本身
 */
function Timer (delay, func, debug) {
	this.handler	= null;
	this.funcIdx	= -1;
	this.debug		= false;
	this.funcs		= [];
	this.init(delay, func);
}

/**
 * 检查定时器是否运行
 *
 * @return	boolean	运行状态
 */
Timer.prototype.isRunning	= function () {
	return this.running;
}

/**
 * 设定调试状态
 *
 * @param	boolean	v	调试开关
 */
Timer.prototype.setDebug	= function (v) {
	this.debug	= false == v	? false	: true;
}

/**
 * 定时器初始化
 *
 * @param	int			delay	执行间隔
 * @param	function	func	要执行的方法 默认不设置
 * @param	boolean		debug	调试开关
 */
Timer.prototype.init		= function (delay, func, debug) {
	delay	= delay	? delay	: 1000;
	delay	= parseInt(delay);
	if ('NaN' == typeof delay) {
		if (this.debug) {
			alert('timer.addHandler的第二个(delay)参数比如为整数(int)类型');
		}
		return ;
	}
	if (null != func) {
		this.addListener(func);
	}
	this.setDebug(debug);
	this.delay		= delay;
	this.running	= false;
	this.times		= 0;
}

/**
 * 添加监听器
 *
 * @param	function	func	要执行的方法
 */
Timer.prototype.addListener	= function (func) {
	if('function' != typeof func) {
		if (this.debug) {
			alert('timer.addHandler的第一个(func)参数比如为函数(function)类型');
		}
		return ;
	}
	this.funcs.push(func);
}

/**
 * 移除监听器(未测试过)
 *
 * 
 */
Timer.prototype.removeListener	= function () {
	this.funcs.splice(this.funcIdx, 1);
}

/**
 * 定时器启动
 */
Timer.prototype.start		= function () {
	var fs	= this.funcs;
	var me	= this;
	if (!this.running) {
		this.handler	= window.setInterval(
			function () {
				++ me.times;
				for(var i = 0;i < fs.length;i ++){
					me.funcIdx	= i;
					fs[i](me);
				}
			},
			this.delay
		);
		this.running	= true;
	}
}

/**
 * 定时器关闭
 */
Timer.prototype.stop		= function () {
	if (this.running) {
		window.clearInterval(this.handler);
		this.running	= false;
	}
}

/**
 * 定时器类型 结束
 */
 
 









/**
 * 消息框 开始 (新) By Sanders Yao
 */

/**
 * 消息框
 * @require	jquery.js
 * @require	trimpath-template-1.0.38.js
 *
 * @param	opt	Object	设置项
 *			{
 *	 			style		: string 		模板名称 据此名称获取模板,
 *				data		: string|object	数据或获取数据的地址,
 *				cover		: boolean		启动遮罩,
 *				onTplExecute: function		模板执行后执行的初始化方法,
 *				onDataSuccess	: funtion	数据返回时调用,
 *				onCloseHandler	: Function	关闭box执行的handler
 *	 		}
 */
function coverBox (opt) {
	opt.box				= this;
	this.opt			= opt;
	//独占锁判断
	if (xxtGlobal.coverBox.ExLock) {
		return	;
	}
	if (opt.cover) {
		xxtGlobal.coverBox.ExLock	= true;
	}
	//构造唯一索引
	for (var i = 0;null != document.getElementById('msgBox_'+i) && null != document.getElementById('coverLayer_'+i);i ++) {}
	this.index	= i;
	//测量浏览器
	this.clientHeight	= document.documentElement.clientHeight;
	this.scrollTop		= document.documentElement.scrollTop;
	this.offsetHeight	= $('body').height();
	this.offsetWidth	= $('body').width();
	//执行模板
	this.iniTemplate(opt.style, opt.data);
}

/**
 * 输出遮罩
 */
coverBox.prototype.iniCoverLayer	= function () {
	var me	= this;
	$('body').append('<div id="coverLayer_'+me.index+'"><iframe name="coverLayer_'+me.index+'" frameborder="0"><\/iframe><\/div>');
	me.coverLayer	= $('#coverLayer_'+me.index);
	me.coverLayer.height(me.offsetHeight);
	me.coverLayer.width('100%');
	me.coverLayer.css({
		position	: 'absolute',
		left		: 0,
		top			: 0,
		border		: 'none 0px',
		background	: '#000',
		opacity		: 0,
		filter		: 'alpha(opacity=0)',
		display		: 'none',
		zIndex		: me.index * 2
	});
	$('#'+me.coverLayer.attr('id')+' iframe').css({
		width	: '100%',
		height	: '100%',
		opacity	: 0,
		filter	: 'alpha(opacity=0)'
	});
}

/**
 * 初始化并执行模板
 *
 * @param	style	String	样式(模板名)
 * @param	data	Object	模板数据
 */
coverBox.prototype.iniTemplate		= function (style, data) {
	var me		= this;
	var tplPath	= tupomGlobal.baseUrl+"themes/blackcandy/templates/JST/MsgBox/"+style+".html";
	var opt		= {
			onTplExecute	: function (html) {
				$('body').append(html);
				//输出遮罩
				if (me.opt.cover) {
					me.iniCoverLayer();
				}
				me.msgBox	= $('#msgBox');
				me.msgBox.attr('id', 'msgBox_'+me.index);
				me.msgBox.css({
					position	: 'absolute',
					display		: 'none',
					zIndex		: me.index * 2 + 1
				});
				me.msgBox.css('left', parseInt(me.offsetWidth-$('#msgBox_'+me.index).width())/2+'px');
				me.msgBox.css('top', parseInt(me.clientHeight-$('#msgBox_'+me.index).height())/2+me.scrollTop+'px');
				me.coverLayer.show();
				me.coverLayer.fadeTo('fast',0.66);
				me.msgBox.show('fast');
				//@todo	添加关闭事件
				$('#'+me.msgBox.attr('id')+' .close').click(function(){
					me.close();
					if ( typeof me.opt.onCloseHandler == 'function' )
						me.opt.onCloseHandler();
				});
				//@todo	添加拖拽事件
				var drogArea	= $('#'+me.msgBox.attr('id')+' .drogArea');
				drogArea.css('cursor', 'move');
				drogArea.mousedown(function (downMouse) {
					//$('body').append(me.coverLayer);
					$('body').append(me.msgBox);
					var o		= me.msgBox.offset();
					var delta	= {
						x	: o.left - downMouse.clientX,
						y	: o.top - downMouse.clientY
					};
					$(document).mousemove(function (mouse) {
						me.msgBox.css({
							left	: mouse.clientX+delta.x+'px',
							top		: mouse.clientY+delta.y+'px'
						});
					});
					$(this).mouseup(function (upMouse) {
						$(document).unbind('mousemove');
						$(this).unbind('mouseup');
					});
				});
				//@todo	运行用户定义的模板处理方法
				if ('function' == typeof me.opt.onTplExecute) {
					me.opt.onTplExecute(html);
				}
			},
			onDataSuccess	: function (data) {
				me.opt.json					= data;
				xxtGlobal.coverBox.ExLock	= false;
				if ('function' == typeof me.opt.onDataSuccess) {
					return	me.opt.onDataSuccess(data);
				}
			}
		};
	JSTQuery(tplPath, data, opt);
};

/**
 * 重设遮罩层高度
 */
coverBox.prototype.resetCoverHeight	= function () {
	var consoleHeight	= this.msgBox.height()+this.msgBox.offset().top;
	this.coverLayer.height(consoleHeight > this.coverLayer.height()	? consoleHeight	: this.coverLayer.height());
};

/**
 * 关闭对话框
 */
coverBox.prototype.close	= function () {
	var me	= this;
	me.msgBox.hide('fast', function () {
		me.msgBox.remove();
		if (null == document.getElementById('coverLayer_'+me.index)) {
			me = null;
		}
	});
	if (this.opt.cover) {
		me.coverLayer.fadeOut('fast', function () {
			me.coverLayer.remove();
			if (null == document.getElementById('msgBox_'+me.index)) {
				me = null;
			}
		});
	}
	if (xxtGlobal.coverBox.ExLock) {
		xxtGlobal.coverBox.ExLock	= false;
	}
}

/**
 * 消息框 结束 
 */

/**
 * 分页类 开始
 */

/**
 * 分页类
 *
 * @param	Object	opt	配置数据
 *					{
 *						id			: 将要加载到的容器(html标记)的id属性,
 *						total		: 记录总数 默认为0,
 *						perPage		: 每页显示记录数 默认为20,
 *						nowPage		: 当前页数 默认为1,
 *						style		: 数据样式 默认为All(显示全部页数)
 *						onExecute	: 每次执行(换页)后的初始化方法 可以用来添加事件等等,
 *					}
 * 注意:本类型不负责模板编译并加载后的事件初始化操作
 * 		若想添加初始化事件需要在配置数据中的onExecute属性上赋值为初始化方法
 *		若想模板解释执行前修改或添加给模板的数据需要在配置数据中的onGetData属性上赋值初始化方法
 *		this.pageData在执行this.exec方法时调用模板之前被赋值 可以通过修改该数据来左右模板上的显示
 *		this.changePage方法可用作任何换页动作 每次执行会更改配置数据中nowPage属性并调用this.exec方法即重新解释执行模板
 */
function PageSpliter (opt) {
	this.opt		= opt;
	this.element	= $('#'+opt.id);
	this.opt.total	= null == opt.total		? 0		: opt.total;
	this.opt.perPage= null == opt.perPage	? 20	: opt.perPage;
	this.opt.nowPage= null == opt.nowPage	? 1		: opt.nowPage;
	this.opt.style	= null == opt.style		? 'All'	: opt.style;
}

/**
 *	执行 (当前只有All一种样式)
 */
PageSpliter.prototype.exec		= function () {
	var me	= this;
	switch (me.opt.style) {
		case 'All'	:
			me.pageData	= this.styleAll();
			break;
		default		:
			alert('样式未定义');
	}
	if (null != me.opt.onGetData) {
		me.opt.onGetData();
	}
	if (null == me.opt.tpl && null == me.opt.tplPath){
		alert('模板未定义');
		return ;
	}
	if (null == me.opt.tpl) {
		var jstOpt	= {
			onTplExecute: function (html) {
				me.element.html(html);
				me.opt.tpl	= this.tpl;
				//@todo	调用用户初始化方法
				if (null != me.opt.onExecute) {
					me.opt.onExecute(me.opt.nowPage);
				}
			}
		}
		JSTQuery(me.opt.tplPath, me.pageData, jstOpt);
	} else {
		me.pageData._MODIFIERS	= modifiers;
		me.element.html(me.opt.tpl.process(me.pageData));
		//@todo	调用用户初始化方法
		if (null != me.opt.onExecute) {
			me.opt.onExecute(me.opt.nowPage);
		}
	}
}

/**
 * 输出全部页数的样式
 *
 * @return	Object	模板用的数据
 *			{
 *	 			pageList	: 页数列表,
 *				total		: 总页数,
 *				nowPage		: 当前页数,
 *				prevPage	: 上页,
 *				perPage		: 每页的条数
 *				nextPage	: 下页
 *	 		}
 */
PageSpliter.prototype.styleAll	= function () {
	var	totalPages	= Math.ceil(this.opt.total / this.opt.perPage);
	var	pageList	= [];
	for (var i = 1;i <= totalPages;i ++) {
		pageList.push(i);
	}
	pageList		= 0 == pageList.length	? [1]	: pageList;
	return {
		pageList	: pageList,
		totalPages	: totalPages,
		nowPage		: this.opt.nowPage,
		perPage		: this.opt.perPage,
		prevPage	: (1 == this.opt.nowPage	? 1	: this.opt.nowPage - 1),
		nextPage	: (0 == totalPages ? 1 : (totalPages == this.opt.nowPage	? totalPages	: this.opt.nowPage + 1))
	};
}

/**
 * 换到指定页数
 *
 * @param	int|String	page	页数
 */
PageSpliter.prototype.changePage	= function (page) {
	this.opt.nowPage	= parseInt(page);
	this.exec();
}

/**
 * 分页类 结束
 */



/**
 * 创建fck编辑器
 *
 * @param	String	textAreaID	文本域id属性
 * @return	Object				FCK编辑器对象
 */

function createFCK (textAreaID, toolbar) {
/*	var	toolbar				= null == toolbar	? 'Basic'	: toolbar;
	var oFCKeditor			= new FCKeditor(textAreaID) ;
	oFCKeditor.BasePath		= tupomGlobal.baseUrl+"themes/blackcandy/javascript/fckeditor/" ;
	oFCKeditor.ToolbarSet	= toolbar;
	oFCKeditor.ReplaceTextarea();
	return oFCKeditor;*/
	$('#fckContent').hide();
	$('#fckContent').parent().append('<input type="hidden" style="display: none;" value="" id="fckContent___Config"/>');
	$('#fckContent').parent().append('<iframe height="200" frameborder="0" width="100%" scrolling="no" src="'+tupomGlobal.baseUrl+'/themes/blackcandy/javascript/fckeditor/editor/fckeditor.html?InstanceName=fckContent&amp;Toolbar=Basic" id="fckContent___Frame" style="border: 0pt none ; margin: 0pt; padding: 0pt; background-color: transparent; background-image: none; width: 100%; height: 200px;"/>');
}


/**
 * 创建SWFUpload按钮
 *
 * @param	Object	opt			配置数据
 	{
		onQueued(file)	: 文件入队列时调用	file的结构为{id:文件在队列中的id,index:文件在队列中的键值,name:}
	}
 * @return	Object				SWFUpload对象
 */
function createSWFUpload (opt) {
	return	new SWFUpload({
		// Backend Settings
		file_post_name				: 'usericon',
		upload_url					: tupomGlobal.baseUrl+'registpage/doRegistImg',
		post_params					: {PHPSESSID	: $.cookie("PHPSESSID")},
		
		// File Upload Settings
		file_size_limit				: "2 MB",	// 2MB
		file_types					: "*.jpg;*.jpeg;*.gif;*.png",
		file_types_description		: "Web Image Files",
		file_upload_limit			: 0,
		file_queue_limit			: 0,
		
		// Event Handler Settings - these functions as defined in Handlers.js
		file_queue_error_handler	: function (file, code, msg) {
			showMsgBox({
				style	: 'Error',
				data	: {
					promptText	: 'file_queue_error:'+msg
				}
			});
		},
//		file_dialog_complete_handler: function (numOfSelected, numOnQueue) {
//			alert(numOfSelected+':'+numOnQueue);
//		},
		file_queued_handler			: function (file) {
			if ('function' == typeof opt.onQueued) {
				opt.onQueued(file);
			}
		},
		upload_error_handler		: function (file, code, msg) {

			showMsgBox({
				style	: 'Error',
				data	: {
					promptText	: 'upload_error'+msg
				}
			});
		},
		upload_success_handler		: function (file, serverData) {
			if ('function' == typeof opt.onSuccess) {
				opt.onSuccess(eval('('+serverData+')'));
			}
		},
		
		// Button Settings
		button_image_url			: tupomGlobal.baseUrl+'/themes/blackcandy/images/btnSumitFlash.jpg',
		button_placeholder_id		: opt.btnBrowseID,
		button_width				: 62,
		button_height				: 19,
		button_text					: '<span class="btn">浏览</span>',
		button_text_style			: '.btn { color:#FFFFFF }',
//		button_text_top_padding		: 5,
		button_text_left_padding	: 19,
		button_window_mode			: SWFUpload.WINDOW_MODE.TRANSPARENT,
		button_cursor				: SWFUpload.CURSOR.HAND,
		button_action				: SWFUpload.BUTTON_ACTION.SELECT_FILE,
		
		// Flash Settings
		flash_url					: tupomGlobal.baseUrl+'themes/blackcandy/javascript/SWFUpload/Flash/swfupload.swf',
		
//		custom_settings				: {
//			upload_target	: "divFileProgressContainer"
//		},
		
		// Debug Settings
		debug: false
	});
}





/**
 * 计时器类型
 */
function timepiece () {
	this.date	= new Date;
	this.map	= {};
}

/**
 * 启动一个计时器
 *
 * @param	String	key	计时器名
 */
timepiece.prototype.start	= function (key) {
	this.map[key]	= floor(this.date.getTime() / 1000);
}

/**
 * 获取时间
 *
 * @param	String|null		key	计时器名 (默认为null 为null时返回所有计时器)
 * @return	Number|Object		计时器启动后经过的时间 (单位:秒)
 */
timepiece.prototype.get	= function (key) {
	if (null === key) {
		return	this.map;
	}
	return	null !== this.map[key]	? (floor(this.date.getTime() / 1000) - this.map[key])	: 0;
}

/**
 * 清除计时器 清除名字为key的计时器
 *
 * @param	String|null	key	计时器名 (默认为null 值为null时会清除所有计时器)
 */
timepiece.prototype.clean	= function (key) {
	if (null == key) {
		this.map	= {};
	} else {
		this.map[key]	= null;
	}
}

/**
 * 将计时器中的数据全部传送到服务器端 并清空所有计时器
 */
timepiece.prototype.flush	= function () {
	JSQuery();
	this.clean();
}

var visitedSpeed = 1;
function callJavascript(str) {
	//@todo	获取数据
	$("#speedTestRate").html('(已测速'+(speedTest.current + 1)+'/'+speedTest.servers.length+')');
	var serverIP	= speedTest.servers[speedTest.current].serverIP;
	speedTest.testResult 	+= str == "Failed" ? serverIP+","+"Upstream:0 DownStream:0 Latency:10000;" : serverIP+","+str+";" ;
	if (speedTest.current + 1 >= speedTest.servers.length && visitedSpeed == 1) {
		JSQuery (tupomGlobal.baseUrl+"speedtestpage/getServerList",{onDataSuccess:showWebServerSuccessInfo}, 'testResult='+encodeURIComponent(speedTest.testResult));
		visitedSpeed =2;
		return ;
	}
	//@todo	下一个测试开始
	var flashTpl		= '<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=8,0,0,0" width="330" height="330" id="flashvars" align="middle">';
	flashTpl			+= '<param name="allowScriptAccess" value="sameDomain" />';
	flashTpl			+= '<param name="movie" value="${baseUrl}themes/blackcandy/images/bwcheck2.swf" />';
	flashTpl			+= '<param name="FlashVars" value="serverURL=${data.IP}" />';
	flashTpl			+= '<param name="quality" value="high" />';
	flashTpl			+= '<param name="bgcolor" value="#ffffff" />';
	flashTpl			+= '<embed src="${baseUrl}themes/blackcandy/images/bwcheck2.swf" FlashVars="serverURL=${data.IP}" quality="high" bgcolor="#ffffff" width="330" height="330" name="flashvars" align="middle" allowScriptAccess="sameDomain" type="application/x-shockwave-flash" pluginspage="http://www.macromedia.com/go/getflashplayer"></embed>';
	flashTpl			+= '</object>';
	++ speedTest.current
	$('#SpeedTestConsole').html(flashTpl.process({baseUrl:tupomGlobal.baseUrl,data:{IP:speedTest.servers[speedTest.current].serverIP}}));
}	



function showWebServerSuccessInfo(flag){
		var flag = this.json.data;
		var ip	= this.json.ip;
		
		var templateName	= flag ? "SpeedTestSuccess": "SpeedTestError";
		speedTest.console.close();
		if(ip != null&&ip!=''){
			tupomGlobal.ServerIP = ip;
		}
		new coverBox ({
						  style			: templateName,
						  data			: {},
						  cover			: true,
						  onTplExecute	: function () {
							  $('#btnOk').click(function(){
								  if(flag==true&&ip!=''&&tupomGlobal.role==1){
									  onlineTeachVideoEvent(speedTest.id);
								  }else if(flag==true&&ip!=''&&tupomGlobal.role!=1){
									  onlineStudentVideoEvent(speedTest.id);
								  }
							  });
						  }
						  
				});
}



function hashPath(id){
	return (Math.floor(id/2000/2000)%2000)+'/'+(Math.floor(id/2000)%2000)+'/'+(id%2000)+'/'+id;
}

function testFlashForDownload () {
	if (swfobject.getFlashPlayerVersion().major < 9) {
		new coverBox ({
			style			: 'downloadFlashPlayer',
			data			: {isIE:$.browser.msie},
			cover			: true
		})
	}
}