/*************************************************
  Description:	全选，反选
  @param:		
  				obj		对象名 如：document.form
  @see:			被doOption调用
  History：             
				汪卫安		2007-1-5
				曾光			2007-1-11
*************************************************/
function checkAll(obj){
	obj = eval(obj);
	for ( var i=0; i<obj.elements.length; i++ ){
		if ( obj.elements[i].type=="checkbox" && obj.elements[i].name == "id" && obj.elements[i].disabled==false ){
			if( obj.elements[i].checked == true )
				obj.elements[i].checked = false;
			else
				obj.elements[i].checked = true;
		}
	}
}
/*************************************************
  Description:	返回选中得checkbox的值用","隔开
  @param:		
  				obj		对象名 如：document.form
  History：             
				汪卫安		2007-3-3
*************************************************/
function getCheckAll(obj){
	obj = eval(obj);
	var str_ids = "";
	for ( var i=0; i<obj.elements.length; i++ ){
		if ( obj.elements[i].type=="checkbox" && obj.elements[i].checked==true && obj.elements[i].name!="is.checkbox" ){
			str_ids += obj.elements[i].value + ",";
		}
	}
	return str_ids.substring(0,str_ids.length-1);
}
/*************************************************
  Description:	返回某表单中HIDDEN元素的名字/值 
  @param:		
  				obj		对象 如：document.form
  History：             
				曹华伟		2007-3-17
*************************************************/
function getListFromHiddenProps(obj){
	var tmpArray = new Array(); 
	var uri = "";
	for ( var i=0; i<obj.elements.length; i++ ){
		if ( obj.elements[i].type=="hidden" && obj.elements[i].name.substring(0,10)!="lvtrhidden"){
			tmpArray[i] = new Array(obj.elements[i].name,obj.elements[i].value);
		}
	}
	for(var i=0;i<tmpArray.length;i++){
		if (tmpArray[i][1]!=""){
			uri += tmpArray[i][0]+"="+tmpArray[i][1]+"&";
		}
	}
	uri = uri.substring(0,uri.length-1);
	return uri;
}
/*************************************************
  Description:	返回某表单中HIDDEN元素的名字/值 
  @param:		
  				obj		对象名 如：document.form
  History：             
				汪卫安		2007-3-9
*************************************************/
function getFormHiddenProps(obj){
	obj = eval(obj);
	var tmpArray = new Array(); 
	for ( var i=0; i<obj.elements.length; i++ ){
		if ( obj.elements[i].type=="hidden" && obj.elements[i].name.substring(0,10)!="lvtrhidden"){
			//tmpArray[i][0] = obj.elements[i].name;
			//tmpArray[i][1] = obj.elements[i].value;
			tmpArray[i] = new Array(obj.elements[i].name,obj.elements[i].value);
		}
	}
	return tmpArray;
}
/*************************************************
  Description:	根据某表单中HIDDEN元素的名字/值 来组织GET参数 
  @param:		
  				formName 某表单名称 如：form1
  History：             
				汪卫安		2007-3-9
*************************************************/
function getGetHiddenProps(formName){
	var hiddens = getFormHiddenProps("document."+formName);
	var uri = "";
	for(var i=0;i<hiddens.length;i++){
		if (hiddens[i][1]!="")
			uri += hiddens[i][0]+"="+hiddens[i][1]+"&";
	}
	uri = uri.substring(0,uri.length-1);
	//uri = "&listtableprops="+encodeURIComponent(uri);
	return uri;
}
/*************************************************
  Description:	按钮点击事件
  @param:		
  				obj		对象名 如：document.form
  				msg		动作名称 如：删除
  				strid	记录唯一表示 如：ID值
  				no		记录序号  
  				label 	动作标签值 如：is.delete
  				unalert	是否去除操作前提示
  				unemptyalert 是否去除为空提示
  @see:			                     
  				调用setTrBgcolor
  				被doOption调用
  History：             
				汪卫安		2007-1-5
				曾光			2007-1-11
*************************************************/
function doOptionExt(obj, msg, strid, no, label,unalert,unemptyalert){
	var str_ids = "";
	var str_no = "";
	var str_title = "";
	var str_color = "tr_main_value_selected";
	var flag = false;
	unemptyalert = unemptyalert || false;
	var obj = eval(obj);
	if ( strid!="" || strid!=0 ){
		str_ids = strid;
		str_no = no;
		str_title = eval("obj.lvtrhidden" + no + ".value3");
		for ( var i=0; i<obj.elements.length; i++ ){
			if ( obj.elements[i].type=="checkbox" && obj.elements[i].value==str_ids ){
				setTrBgcolor("lvtr" + no, str_color);
				obj.elements[i].checked = true;
			}else{
				if ( obj.elements[i].type=="hidden" && obj.elements[i].name.substring(0,10)=="lvtrhidden"){
					//setTrBgcolor("lvtr" + obj.elements[i].value1, eval("obj.lvtrhidden" + obj.elements[i].value1 + ".value2"));
					setTrBgcolor("lvtr" + no, str_color);
				}
				obj.elements[i].checked = false;
			}
		}
	}else{
		var m = 0;
		var ids = new Array();
		for ( var i=0; i<obj.elements.length; i++ ){
			if ( obj.elements[i].type=="checkbox" && obj.elements[i].checked==true ){
				ids[m] = obj.elements[i].value;
				m++;
			}
		}
		for ( var i=0; i<obj.elements.length; i++ ){
			if ( obj.elements[i].type=="hidden" && obj.elements[i].name.substring(0,10)=="lvtrhidden"){
				setTrBgcolor("lvtr" + obj.elements[i].value1, eval("obj.lvtrhidden" + obj.elements[i].value1 + ".value2"));
				for (n=0; n<ids.length; n++){
					if (obj.elements[i].value==ids[n]){
						setTrBgcolor("lvtr" + obj.elements[i].value1, str_color);
						str_ids += obj.elements[i].value + ",";
						str_no += obj.elements[i].value1 + ",";
						str_title += obj.elements[i].value3 + "\n";
					}
				}
			}
		}
		str_ids = str_ids.substring(0,str_ids.length-1);
		str_no = str_no.substring(0,str_no.length-1);
	}
	if ( str_ids=="" ){
		if( !unemptyalert )
			alert("您没有选中任何记录，请确认！");
		if (!obj.ids)
			obj.ids = new Object(); 
	}else{
		if ( !unalert ){
			if( confirm("您确认"+ msg +"以下记录吗？\n\n" + str_title))
				flag = true;
		}else
			flag = true;
	}
	if (obj.ids)
		obj.ids.value = str_ids;
	if( flag ){
		//obj.ids.value = str_ids;
		obj.funcname.value = msg;
		obj.funclable.value = label;
	}
	return flag;
}

/*************************************************
  Description:	提交表单
  @param:		
  				obj		表单对象
  @see:			
  				被doOption调用
  History：             
				曾光			2007-1-12
*************************************************/
function doSubmit(obj){
	showTip();
	obj.submit();
}
/*************************************************
  Description:	提交检索表单
  @param:		
  				obj		表单对象
  @see:			
  				被doOption调用
  History：             
				曾光			2007-1-12
*************************************************/
function doQueSubmit(queform){
	showTip();
	var obj = eval(queform);
	if (document.getElementById("div_quedetail")){
		var flag = document.getElementById("div_quedetail").style.display;
		if (flag=="block"){
			if (obj.que_keywords1)
				obj.que_keywords.value = obj.que_keywords1.value;
		}
		else{
			if (obj.que_keywords1)
				obj.que_keywords1.value = obj.que_keywords.value;
		}
	}
	obj.submit();
}

/*************************************************
  Description:	按钮点击事件，主程序、接口
  @param:		
  				obj		对象名 如：document.form
  				msg		动作名称 如：删除
  				strid	记录唯一表示 如：ID值
  				no		记录序号
  				label 	动作标签值 如：is.delete
  				queform	搜索表单
  @see:			
  				调用setTrBgcolor
  				调用doOptionExt，doSubmit，doQueSubmit，checkAll,doOptInterface
  History：             
				汪卫安		2007-1-5
				曾光			2007-1-11
*************************************************/
function doOption(obj, msg, strid, no, label, queform){
	var submitflag = doOptInterface(obj, msg, strid, no, label, queform);
	
	//部分特殊事件
	if( label == "is.selectall" ){//全选
		checkAll(obj);
		return;
	}
	if( label == "is.query" ){//检索
		if( submitflag )
			doQueSubmit(queform);
		return;
	}
	//提交表单
	if( submitflag )
		doSubmit(obj);
}

/*************************************************
  Description:	鼠标事件
  @param:		
  				obj		对象
  				label	标签
  				flag	鼠标out或者over
  				iclass	正常class
  @see:			被doOption调用
  History：             
				曾光		2007-1-5
*************************************************/
function doMouse(obj, label, iclass, flag){
	if( flag == "over" ){
		obj.className = iclass + "_over";
	}else{
		obj.className = iclass;
	}
}

/*************************************************
  Description:	设置行背景
  @param:		
  				id		行id
  				color	颜色
  @see:			被doOption调用
  History：             
				汪卫安		2007-1-5
*************************************************/
function setTrBgcolor(id, color){
	var obj1 = document.getElementById(id);
	obj1.className = color;
}


/*************************************************
  Description:	判断 str 是否是数字串，或串中包含“-”、“ ”、“:”、“;”  该串不能包含全角数字、字符
  @param:		
  				str		传入字符
  				flag	true－同时验证数字或特殊字符，false－仅验证数字
  @see:			被checkCurrpage调用
  History：             
				汪卫安		2007-1-5
*************************************************/
function isNumber(str,flag){
	var b = false;
	for ( var i=0; i<str.length; i++ )
	{
		if ( str.substring(i,i+1)<'0' || str.substring(i,i+1)>'9' )
		{
			b = true;
			if ( flag )
			{
				if ( str.substring(i,i+1)!="-" && str.substring(i,i+1)!=" " && str.substring(i,i+1)!=":" && str.substring(i,i+1)!=";" )	
					break;
				else
					b = false;
			}
		}
	}
	return b;
}


/*************************************************
  Description:	判断分页页码是否为数字
  @see:			调用isNumber
  History：             
				汪卫安		2007-1-5
*************************************************/
function checkCurrpage(){
	if ( isNumber(document.pageForm.currpage.value,false) )
	{
		alert("页码必须为数字，请确认！");
		document.pageForm.currpage.focus();
		return false;
	}
	else{
		showTip();
		return true;
	}
}

/*************************************************
  Description:	某些按钮点击时显示操作提示
  @param:		str		显示提示内容
  @see:			被doSubmit调用
  History：             
				曾光		2007-1-9
*************************************************/
function showTip(str){
	// 创建临时层
	var tmp_div = document.createElement("DIV");
	if( tmp_div ){
		tmp_div.className = "div_tip";
		tmp_div.name = "div_tip";
		tmp_div.id = "div_tip";
		str = ( str ) ? str : "操作正在进行中，请稍候...";

		tmp_div.innerHTML = "<span class=\"tip_til\">系统提示</span>";
		tmp_div.innerHTML += "<span class=\"tip_content\"><span class=\"tip_image\"></span>"+ str+"<br></span>";
		document.body.appendChild(tmp_div);
	}
}
/*************************************************
  Description:	清除操作提示
  @see:			无关联函数
  History：             
				曾光		2007-1-9
*************************************************/
function clearTip(){
	var tmp_div = document.getElementById("div_tip");
	if( tmp_div )
		document.body.removeChild(tmp_div);
}

/*************************************************
  Description:	页码跳转
  @param:		页码
  @see:			调用showTip
  History：             
				曾光		2007-1-9
*************************************************/
function goPage(num){
	num = num * 1;
	showTip("页面跳转中，请稍候...");
	document.pageForm.currpage.value=num;
	document.pageForm.submit();
}

//每页显示纪录数跳转
function setPageNum(){
	showTip("页面跳转中，请稍候...");
	document.pageForm.currpage.value=1;
	document._pageForm_.submit();	
}
/*************************************************
  Description:	缩短过长字符
  @param:		str		原字符
  				stratt	附加字符（无需缩短）
  				len1	前半部分长度，默认10
  				len2	后半部分长度，默认10
  				sep		省略字符，默认“...”
  @see:			调用dateStr
  History：             
				曾光		2007-1-15
*************************************************/
function shortStr(str,stratt,len1,len2,sep){
	//初始化
	var len1 = len1 ? len1 : 10;
	var len2 = len2 ? len2 : 10;
	var sep = sep ? sep : "......";
	var id = dateStr();
	var slen = str.length;
	if( slen < len1 + len2 ){
		jsWrite( str );
	}else{
		var str1 = str.substring(0,len1);
		var str2 = str.substring(slen-len2,slen);
		document.write("<table id='shorttitle_"
		+ id +"'><tr><td class='title_short' onmouseover='showObj(\"longtitle_"
		+id+"\",true);moveTo(\"longtitle_"+id+"\",getPElement(this,7));'>"
		+ str1 + sep + str2 +"</td><td class='title_menu'>" 
		+ stratt+"</td></tr></table>");
		document.write("<div style='display:none' class='title_long' id='longtitle_"+
		 id +"' onmouseout='showObj(\"longtitle_"
		 +id+"\",false);'>"
		 + str +"</span>");
	}
}

/*************************************************
  Description:	根据时间生成随机数
  @see:			被shortStr调用
  History：             
				曾光		2007-1-15
*************************************************/
function dateStr(){
	var today = new Date(); 
	var aaa = Math.random() + "";
	return today.getTime() + aaa.split(".")[1];
}
/*************************************************
  Description:	显示隐藏对象
  @param:		id		对象id
  				flag	是否显示
  @see:			在shortStr里用到
  History：             
				曾光		2007-1-15
*************************************************/
function showObj(id,flag){
	var obj = eval("document.getElementById(\""+id + "\")");
	var showflag;
	if (flag){
		showflag = "block";
	}
	else{
		showflag = "none";
	}
	obj.style.display = showflag;
}
/*************************************************
  Description:	移动id到obj对象位置
  @param:		id		对象id
  				obj		本对象
  @see:			在shortStr里用到
  History：             
				曾光		2007-1-15
*************************************************/
function moveTo(id,obj){
	var iobj = eval("document.getElementById(\""+id + "\")");
	var left = obj.offsetLeft;
	var top = obj.offsetTop;
	iobj.style.left = left;
	iobj.style.top = top;
}

/*************************************************
  Description:	获得N层以上的父容器
  @param:		obj		本对象id
  				num		层次
  @see:			在shortStr里用到
  History：             
				曾光		2007-1-15
*************************************************/
function getPElement(obj,num){
	var i = 0;
	var iobj = obj;
	for( i=0;i<num;i++ ){
		if( iobj.parentElement )
			iobj = iobj.parentElement;
		else
			return iobj;
	}
	return iobj;	
}
/*************************************************
  Description:	关闭高级检索区
  @param:		flag	是否显示
  @see:			调用showObj
  History：             
				曾光		2007-1-15
*************************************************/
function showQueDetail(flag){
	if( flag ){
		var obj = eval("document.getElementById(\"div_quedetail\")");
		obj.style.left = event.x-280;
		obj.style.top = event.y+10;
	}
	showObj("div_quedetail",flag);
}
/*************************************************
  Description:	显示浮动操作层,thickbox版本，主接口
  @param:		url		地址
  				width	宽度
  				height	高度
  				title	窗口标题
  				path	显示的路径
  History：             
				曾光		2007-4-27
*************************************************/
function showTBInterface(url,title,path){
	title = title || "JCMS内容管理系统";
	var obj = getTBPath(path);
	var groupflag = getTBConfig("outGroupFlag",path);
	obj.TB_show(title, url, groupflag , obj);
}
/*************************************************
  Description:	显示浮动操作层,thickbox版本
  @param:		url		地址
  				width	宽度
  				height	高度
  				title	窗口标题
  				path	显示的路径
  History：             
				曾光		2007-4-5
*************************************************/
function showTB(url,width,height,title,path){
	str = (url.indexOf("?") >= 0) ? "&" : "?";
	showTBInterface(url+str+"TB_iframe=true&height="+height+"&width="+width,title,path);
}
/*************************************************
  Description:	显示浮动图片层,thickbox版本
  @param:		url		地址
  				title	窗口标题
  				path	显示的路径
  History：             
				曾光		2007-4-7
*************************************************/
function showTBPic(url,title,path){
	showTBInterface(url,title,path);
}
/*************************************************
  Description:	显示浮动操作层,thickbox版本
  @param:		url		地址
  				width	宽度
  				height	高度
  				title	窗口标题
  				path	显示的路径
  History：             
				曾光		2007-4-5
*************************************************/
function showTBSwf(url,width,height,title,path){
	str = (url.indexOf("?") >= 0) ? "&" : "?";
	showTBInterface(url+str+"TB_flash=true&height="+height+"&width="+width,title,path);
}
/*************************************************
  Description:	显示浮动操作层,thickbox版本
  @param:		url		地址
  				width	宽度
  				height	高度
  				title	窗口标题
  				path	显示的路径
  History：             
				曾光		2007-4-5
*************************************************/
function showTBMedia(url,width,height,title,path){
	str = (url.indexOf("?") >= 0) ? "&" : "?";
	showTBInterface(url+str+"TB_media=true&height="+height+"&width="+width,title,path);
}
/*************************************************
  Description:	显示浮动分页组,,thickbox版本
  @param:		url		地址
  				width	宽度
  				height	高度
  				title	窗口标题
  				path	显示的路径
  History：             
				曾光		2007-4-5
*************************************************/
function showTBGroup(title,url,ary,path){
	//打开组开关
	setTBConfig("outGroupFlag",true,path);
	//设置自定义组数据
	setTBConfig("outGroupAry",ary,path);
	//显示接口
	showTBInterface(url,title,path);
}
/*************************************************
  Description:	清除浮动操作层,thickbox版本	
  @param:		path	显示的路径
  				retval	返回值
  History：             
				曾光		2007-4-5
*************************************************/
function removeTB(path){
	if( getTBConfig("attachEventFlag",path) ){
		doTBAttachEvent(path);
	}
	var obj = getTBPath(path);
	obj.TB_remove();
}
/*************************************************
  Description:	返回属性值	
  @param:		path	显示的路径
  History：             
				曾光		2007-4-5
*************************************************/
function getTBConfig(name, path){
	var obj = getTBPath(path);
	return obj.TB_getConfig(name);
}
/*************************************************
  Description:	设置属性值	
  @param:		path	显示的路径
  				retval	返回值
  History：             
				曾光		2007-4-5
*************************************************/
function setTBConfig( name, value, path ){
	//当有附加事件时，自动打开附加事件开关
	if( name == "attachEvent" && value )
		setTBConfig("attachEventFlag", true, path);
	//当有并列事件时，自动打开并列事件开关
	if( name == "inEvent" && value )
		setTBConfig("inEventFlag", true, path);
	var obj = getTBPath(path);
	obj.TB_setConfig(name,value);
}
/*************************************************
  Description:	做事件	
  @param:		path	显示的路径
  				retval	返回值
  History：             
				曾光		2007-4-5
*************************************************/
function doTBAttachEvent(path){
	var obj = getTBPath(path);
	obj.TB_doEvent();
}
/*************************************************
  Description:	获取显示thickbox的默认框架对象	
  @param:		path	显示的路径
  				retval	返回值
  History：             
				曾光		2007-4-5
*************************************************/
function getTBPath(path){
	path = path || "top";
	var obj = eval(path);
	if( !obj ){
		alert("对话框框架对象为空，请刷新或者关闭浏览器重新登录。");
		return false;
	}
	return obj;
}
/*************************************************
  Description:	鼠标拖动效果部分代码start
  History：             
				曾光		2007-4-4
*************************************************/
//可以打包为js文件;
var drag_x0=0,drag_y0=0,drag_x1=0,drag_y1=0;
var moveable=false;
//开始拖动;
function startDrag(obj){
	//锁定标题栏;
	obj.setCapture();
	//定义对象;
	var win = obj.parentNode;
	//记录鼠标和层位置;
	drag_x0 = event.clientX;
	drag_y0 = event.clientY;
	drag_x1 = parseInt(win.style.left);
	drag_y1 = parseInt(win.style.top);
	moveable = true;
}
//拖动;
function drag(obj){
	var win = obj.parentNode;
	if(moveable){
		win.style.left = drag_x1 + event.clientX - drag_x0;
		win.style.top = drag_y1 + event.clientY - drag_y0;
	}
}
//停止拖动;
function stopDrag(obj){
	//放开标题栏;
	var win = obj.parentNode;
	var t = win.style.top;
	t = parseInt(t.substring(0,t.length - 2));
	if( t < 0 ){
		win.style.top = 5;
	}
	if( top ){
		var h = parseInt(top.document.body.offsetHeight);
	}else{
		var h = parseInt(top.document.body.offsetHeight);
	}
	if( t >= h ){
		win.style.top = 5;
	}
	obj.releaseCapture();
	moveable = false;
}
/*************************************************
  Description:	鼠标拖动效果部分代码end
*************************************************/
// 弹出日历的框架
// format 默认完全格式　1=yyyy-mm-dd 2=yyyy-mm-dd HH:ii 
function popUpCalendarDlg(ctrlobj,format,path){
	if (!path)
		path = "..";
	showx = event.screenX - event.offsetX;
	showy = event.screenY - event.offsetY; 
	retval = window.showModalDialog(path+"/script/calendar.htm?format="+format, "", "dialogWidth:370px;dialogHeight:260px;dialogLeft:"+showx+"px; dialogTop:"+showy+"px; status:no;directories:yes;scrollbars:no;Resizable=no;");
	if( retval != null ){
		ctrlobj.value = retval;
	}
}
// 弹出颜色的框架
function callColorDlg(formo,o){		
	var sInitColor = null;
	if (sInitColor == null) 
		var sColor = formo.colorHelper.ChooseColorDlg();
	else
		var sColor = formo.colorHelper.ChooseColorDlg(sInitColor);
	sColor = sColor.toString(16);	
	if (sColor.length < 6)
	{
		var sTempString = "FFFFFF".substring(0,6-sColor.length);
		sColor = sTempString.concat(sColor);
	}
	o.value = "#"+sColor;
}
//根据格式显示预览图片
function getFileType(s,path){
	var str = s.toLowerCase();
	var newstr = "no";
	switch( str ){
		case "avi":
		case "doc":
		case "ppt":
		case "swf":
		case "xls":
		case "mp3":
		case "txt":
		case "psd":
		case "mpp":
		case "mdb":
		case "pdf":
		case "wav":
		case "wmv":
		case "wma":
		case "jpg":
		case "bmp":
		case "png":
		case "gif":
			newstr = str;
			break;
		case "rar":
		case "zip":
			newstr = "rar";
			break;
		case "rmvb":
		case "rm":
			newstr = "rm";
			break;
		case "wm":
		case "asf":
		case "mid":
			newstr = "wm";
			break;
		case "mp4":
		case "3gp":
			newstr = "mp4";
			break;
		case "htm":
		case "html":
			newstr = "htm";
			break;
		case "mpg":
		case "mpeg":
			newstr = "mpg";
			break;
		default:
			newstr = "no";
	}
	return "<img src='"+path+"/images/filetype/"+newstr+".gif' align='absmiddle'>";
}
//图片切换
function switchImg(target,idsArray){
	if (idsArray==null)
		return;
	for (i = 0; i < idsArray.length; i++){
		var id = idsArray[i][0];
		var flag = idsArray[i][1];
		var src = document.getElementById(target+id).src;
		if (flag==0){
			document.getElementById(target+id).src = src.substring(0,src.lastIndexOf("/"))+"/no"+target+".gif";
		}
		else{
			document.getElementById(target+id).src = src;
		}
	}
}
