﻿
// 修改编辑栏高度
//num数字 正为+ objname 对象名称
function Edit_Size(num,objname)
{
	var obj=document.getElementById(objname)
	if (parseInt(obj.rows)+num>=3) {
		obj.rows = parseInt(obj.rows) + num;	
	}
}

//限制字数函数
function checkLength(which,objTarget,maxChar) 
{  
var maxChars = maxChar;  
if (which.value.length > maxChars)  
which.value = which.value.substring(0,maxChars);  
var curr = maxChars - which.value.length;  
document.getElementById(objTarget).innerHTML = curr.toString();  
}

//复选表单全选事件 form：表单名 控件名chkall
function CheckAll(form)  {
	for (var i=0;i<form.elements.length;i++)
	{
		var e = form.elements[i];
		if (e.name != 'ChkAll'&&e.type=="checkbox")
		{
			e.checked = form.ChkAll.checked;
		}
	}
}

//主函数
function CheckForm(oForm)
{
     var els = oForm.elements;
     //遍历所有表元素
     for(var i=0;i<els.length;i++)
     {
         //是否需要验证
         if(els[i].check)
         {
             var sReg = els[i].check;//取得验证的正则字符串
             var sVal = GetValue(els[i]);//取得表单的值,用通用取值函数
             var reg = new RegExp(sReg,"i");//字符串->正则表达式,不区分大小写
             if(!reg.test(sVal))
             {
                 alert(els[i].warning);//验证不通过,弹出提示warning
                 GoBack(els[i])  //该表单元素取得焦点,用通用返回函数
                 return false;
             }  //end if
         }  //end if
     }  //end for
	 
}

//通用取值函数分三类进行取值
//文本输入框,直接取值el.value
//单多选,遍历所有选项取得被选中的个数返回结果"00"表示选中两个
//单多下拉菜单,遍历所有选项取得被选中的个数返回结果"0"表示选中一个
function GetValue(el)
{
     //取得表单元素的类型
     var sType = el.type;
     switch(sType)
     {
         case "text":
         case "hidden":
         case "password":
         case "file":
         case "textarea": return el.value;
         case "checkbox":
         case "radio": return GetValueChoose(el);
         case "select-one":
         case "select-multiple": return GetValueSel(el);
     }
     //取得radio,checkbox的选中数,用"0"来表示选中的个数,我们写正则的时候就可以通过0{1,}来表示选中个数
     function GetValueChoose(el)
     {
         var sValue = "";
         //取得第一个元素的name,搜索这个元素组
         var tmpels = document.getElementsByName(el.name);
         for(var i=0;i<tmpels.length;i++)
         {
             if(tmpels[i].checked)
             {
                 sValue += "0";
             }
         }
         return sValue;
     }
     //取得select的选中数,用"0"来表示选中的个数,我们写正则的时候就可以通过0{1,}来表示选中个数
     function GetValueSel(el)
     {
         var sValue = "";
         for(var i=0;i<el.options.length;i++)
         {
             //单选下拉框提示选项设置为value=""
             if(el.options[i].selected && el.options[i].value!="")
             {
                 sValue += "0";
             }
         }
         return sValue;
     }
}

//通用返回函数,验证没通过返回的效果.分三类进行取值
//文本输入框,光标定位在文本输入框的末尾
//单多选,第一选项取得焦点
//单多下拉菜单,取得焦点
function GoBack(el)
{
     //取得表单元素的类型
     var sType = el.type;
     switch(sType)
     {
         case "text":
         case "hidden":
         case "password":
         case "file":
         case "textarea": el.focus();var rng = el.createTextRange(); rng.collapse(false); rng.select();
         case "checkbox":
         case "radio": var els = document.getElementsByName(el.name);els[0].focus();
         case "select-one":
         case "select-multiple":el.focus();
     }
}  



//另类的弹出菜单
function sAlert(str){
	var msgw,msgh,bordercolor;
	msgw=400;//提示窗口的宽度
	msgh=100;//提示窗口的高度
	bordercolor="#336699";//提示窗口的边框颜色
	titlecolor="#99CCFF";//提示窗口的标题颜色
	
	var sWidth,sHeight;
	sWidth=document.body.offsetWidth;
	sHeight=document.body.offsetHeight;
	
	
	var bgObj=document.createElement("div");
	bgObj.setAttribute('id','bgDiv');
	bgObj.style.position="absolute";
	bgObj.style.top="0";
	bgObj.style.background="#777";
	bgObj.style.filter="progid:DXImageTransform.Microsoft.Alpha(style=3,opacity=25,finishOpacity=75";
	bgObj.style.opacity="0.6";
	bgObj.style.left="0";
	bgObj.style.width=sWidth + "px";
	bgObj.style.height=sHeight + "px";
	document.body.appendChild(bgObj);
	var msgObj=document.createElement("div")
	msgObj.setAttribute("id","msgDiv");
	msgObj.setAttribute("align","center");
	msgObj.style.position="absolute";
	msgObj.style.background="white";
	msgObj.style.font="12px/1.6em Verdana, Geneva, Arial, Helvetica, sans-serif";
	msgObj.style.border="1px solid " + bordercolor;
	msgObj.style.width=msgw + "px";
	msgObj.style.height=msgh + "px";
	msgObj.style.top=(document.documentElement.scrollTop + (sHeight-msgh)/2) + "px";
	msgObj.style.left=(sWidth-msgw)/2 + "px";
	var title=document.createElement("h4");
	title.setAttribute("id","msgTitle");
	title.setAttribute("align","right");
	title.style.margin="0";
	title.style.padding="3px";
	title.style.background=bordercolor;
	title.style.filter="progid:DXImageTransform.Microsoft.Alpha(startX=20, startY=20, finishX=100, finishY=100,style=1,opacity=75,finishOpacity=100);";
	title.style.opacity="0.75";
	title.style.border="1px solid " + bordercolor;
	title.style.height="18px";
	title.style.font="12px Verdana, Geneva, Arial, Helvetica, sans-serif";
	title.style.color="white";
	title.style.cursor="pointer";
	title.innerHTML="关闭";
	title.onclick=function(){
	document.body.removeChild(bgObj);
	document.getElementById("msgDiv").removeChild(title);
	document.body.removeChild(msgObj);
	}
	document.body.appendChild(msgObj);
	document.getElementById("msgDiv").appendChild(title);
	var txt=document.createElement("p");
	txt.style.margin="1em 0"
	txt.setAttribute("id","msgTxt");
	txt.innerHTML=str;
	document.getElementById("msgDiv").appendChild(txt);
}