﻿// JScript File
/*
   功能:Javascript函数
   作者:杨艳平
   时间：2008-5-04
*/

//主函数
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))
            {
                //验证不通过,弹出提示warning
                alert(els[i].warning);
                //该表单元素取得焦点,用通用返回函数
                GoBack(els[i])  
                return false;
            }
        }
    }
}

//通用取值函数分三类进行取值
//文本输入框,直接取值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 getTotalBytes(varField) 
{
    if(varField == null)
	    return -1;	    
    var totallength=0;
    for  (var  i=0;i<varField.length;i++)
    {         
        var intCode=varField.charCodeAt(i);

        if  (intCode>=0 && intCode<=128)  
        {
           totallength=totallength+1;
        }
        else  
        {
           totallength=totallength+2;
        }
    }         
    return totallength;
}

//trim方法
function trim()
{
	for (var intBegin=0; intBegin<this.length; intBegin++)
	{	
		if(this.charAt(intBegin)!=" ")
		{
			break;
		}
	}		
	
	for (var intEnd=this.length; intEnd>0; intEnd--)
	{
		if(this.charAt(intEnd-1)!=" ")
		{
			break;
		}
	}
	
	return this.slice(intBegin, intEnd);
}

//使字符串继承trim方法
String.prototype.trim=trim;

function CheckSelectedForm(objForm, strObjName,strMessage)
{
	var		objAll		= objForm.elements;
	
	for(var nIndex = 0; nIndex < objAll.length; ++nIndex)
	{
		if((objAll(nIndex).type == "checkbox") && (objAll(nIndex).name.indexOf(strObjName) != -1) && objAll(nIndex).checked)
			break;
	}
	//没有选中
	if(nIndex >= objAll.length)
	{
		alert(strMessage);
		return false;
	}
	
	return true;
}

//*************************************GridView判断是否选中*********************************************
function CheckSelected(strObjName,strMessage)
{
	var	strRet;
	
	for(var nForm = 0; nForm < document.forms.length; ++nForm)
	{
		strRet	= CheckSelectedForm(document.forms(nForm), strObjName,strMessage);
		if(strRet == false)
			break;
	}
	
	return strRet;
}

function CheckAllSelectedForm(objForm, strObjName)
{
	var		objAll		= objForm.elements;
	
	var		strValue	= "";
	
	for(var nIndex = 0; nIndex < objAll.length; ++nIndex)
	{
		if((objAll(nIndex).type == "checkbox") && objAll(nIndex).style.display == "" && ((objAll(nIndex).name.indexOf(strObjName) != -1) || (objAll(nIndex).id.indexOf(strObjName) != -1)) && objAll(nIndex).checked)
		{
			strValue += objAll(nIndex).value+",";
		}
	}
	return strValue;
}

function CheckAllSelected(strObjName,strConfirm,strAlert)
{
	var	strRet;
	
	for(var nForm = 0; nForm < document.forms.length; ++nForm)
	{
		strRet	= CheckAllSelectedForm(document.forms(nForm), strObjName);
		if(strRet != "") break;
	}
	if(strRet != "")
	{
		return confirm(strConfirm);
	}
	else
	{
		alert(strAlert);
		return false;
	}
}

 function SelsecAll(o)
{
	var arr=document.getElementsByTagName("input");
	for(var i=0;i<arr.length;i++)
	{
		if(arr[i].type=="checkbox")
		{
		    arr[i].checked=o.checked;
		}
	}
}


 function IsSelectbox(str,oCat)
	        {
	           var arr=document.getElementsByTagName("input");
	           for(var i=0;i<arr.length;i++)
	           {
	              if(arr[i].type=="checkbox")
	              {
	                 if(arr[i].checked)
	                 {
	                   if(arr[i].name!='ckAll')
	                   {
	                     break;
	                    }
	                 }
	              }
	           }
	           if(i>=arr.length)
	           {
	              alert(str);
	              return false;
	           }
	           return confirm(oCat);
	        }
	        
/**
 * 拿到一个可用的XMLHttpRequest对象
 */
function getXMLHttpObj()
{
	var xmlHttp=null;
	if(window.ActiveXObject)
	{
		xmlHttp=new ActiveXObject("Msxml2.XMLHTTP");
		if(!xmlHttp)
		{
			xmlHttp=new ActiveXObject("Microsoft.XMLHTTP");
		}
	}
	else if(window.XMLHttpRequest)
	{
		xmlHttp=new XMLHttpRequest();
	}
	return xmlHttp;
}

