﻿// JScript 文件

   

//刷新当前页
function refreshParentWindow(params)
{
    if(param==null)
    {
        param="";
    }
    //添加参数给父窗口的queryString
    var url=window.opener.location.toString();
    if(url.lastIndexOf("?")>url.lastIndexOf("/"))
    {
        url+="&&"+params;
    }
    else
    {
        url+="?"+params;
    }
    //刷新父窗口
    window.opener.location=url;
}


//在当前页面的holder内添加1张图片,将图片名称及url追加保存到input内
//holderId-图片的容器ID  saverId-保存图片信息的input的Id
function addPicture(holderId,saverId,picId,picUrl,picName)
{ 
    var holder=document.getElementById(holderId);
    var saver=document.getElementById(saverId);
    if(holder==null||saver==null)
    {
        return;
    }
    
    
    for(var i=0;i<holder.childNodes.length;i++)
    {
        var e=holder.childNodes[i].childNodes[0];                        
        if(e.tagName=="IMG"&&e.id==picId)
        {
            alert("这张图片已经添加过了");
            return;
        }
    }
  
    var div=document.createElement("div");
    var img=document.createElement("image");
    img.id=picId;
    img.src=picUrl;
    img.className="listImg3";
    div.appendChild(img);
    div.innerHTML+="<br/>"+picName;
    div.className="listDiv";
    holder.appendChild(div);
    
    saver.value+=picName+"="+ picUrl+";";
    
}

      
//清空输入框的内容
function clearInputValue(inputId)
{
    var input=document.getElementById(inputId);
    if(input!=null)
    {
        input.value="";
    }
}    


//检验字符串是否为空
function isStringNull(s)
{
    if(s==null||s=="")
    {
        return true;
    }
    else
    {
        return false;
    }
}    

//浮点数据格式检验。为空返回true
function isFloatFormatValid(f)
{
    if(f==null||f=="")
    {
        return true;
    }
    var reg=new RegExp("^\\d*\\.*\\d+$");
    return reg.test(f);
}          
      
      
//电话号码格式检验。为空返回false
function isPhoneValid(phone)
{
    phone=trim(phone);
    if(phone==null||phone=="")
    {
        return false;
    }
    var reg=new RegExp("^\\d{3,4}[-－]\\d{7,8}$|^\\d{3,4}[-－]\\d{7,8}[-转－]\\d{1,4}$");
    return reg.test(phone);
}      

//非负整型数据格式检验。为空返回true
function isIntegerFormatValid(integer)
{
    if(integer==null||integer=="")
    {
        return true;
    }
    var reg=new RegExp("^\\d*$");
    return reg.test(integer);
}    

//时间数据格式检验。为空返回true
function isDateTimeFormatValid(dt)
{
    if(dt==null||dt=="")
    {
        return true;
    }
    var reg=new RegExp("^((((1[6-9]|[2-9]\\d)\\d{2})-(0?[13578]|1[02])-(0?[1-9]|[12]\\d|3[01]))|(((1[6-9]|[2-9]\\d)\\d{2})-(0?[13456789]|1[012])-(0?[1-9]|[12]\\d|30))|(((1[6-9]|[2-9]\\d)\\d{2})-0?2-(0?[1-9]|1\\d|2[0-8]))|(((1[6-9]|[2-9]\\d)(0[48]|[2468][048]|[13579][26])|((16|[2468][048]|[3579][26])00))-0?2-29-))$");
    return reg.test(dt);
} 

//将html表格输出到Excel中
function outPutTableToExcel(table)
{
    var xls;
    try
    {
        xls=new ActiveXObject("Excel.Application");
    }
    catch(e)
    {
        alert("要打印该表，您必须安装Excel电子表格软件，同时浏览器须使用“ActiveX 控件”，您的浏览器须允许执行控件。");
        window.open(getCompanyAppUrl()+"help/outputHelp.aspx");
        return;
    }
    xls.Visible=true;    
    var workBook=xls.Workbooks.Add();
    var sheet=xls.WorkSheets(1);                             
    
    var sel = document.body.createTextRange();
    if(document.getElementById(table.id)!=null)
    {
        sel.moveToElementText(table);
        sel.select();
        document.execCommand("Copy");
        sheet.Paste();        
    }
    else
    {
        document.body.appendChild(table);
        sel.moveToElementText(table);
        sel.select();
        document.execCommand("Copy");
        sheet.Paste();
        
        document.body.removeChild(table);
    }
    
    xls.UserControl=true;
    sheet=null;
    workBook=null;
    xls=null;    
}


//获取表中选中的行并输出到EXCEL
//chkColNo－checkBox所在列的序号，从0开始。checkBox应为此列所含input中的第一个元素
//输出表中去除了checkBox
function outPutSelectedTableRowsToExcel(tableId,chkColNo)
{
    var table=document.getElementById(tableId);
    if(table==null)
    {
        alert("未找到要输出的表");
        return ;
    }
    var outTable=document.createElement("table");
    outTable.id="toExcelTable";
    if(table.tHead!=null)
    {
        outTable.appendChild(table.tHead.cloneNode(true));
    }
    
    
    var rows=table.rows;
    
    if(rows==null)
    {
        alert("表中无行");
        return ;
    }
     
    
    for(var i=0;i<rows.length;i++)
    {
        var tr=rows[i];
        if(tr.nodeName=="TR")
        {
            try
            {
                var inputs=tr.childNodes[chkColNo].getElementsByTagName("input");
                if(inputs.length>0)
                {
                    var chk=inputs[0];
                    if(chk.type=="checkbox")
                    {
                        if(chk.checked==true)
                        {
                            var newTr=tr.cloneNode(true);
                            var newInputs=newTr.childNodes[chkColNo].getElementsByTagName("input");
                            var newChk=newInputs[0];
                            newChk.removeNode(true);
                            outTable.appendChild(newTr);
                        }
                    }
                }
                
            }
            catch(e)
            {}
        }
    }
    
    outPutTableToExcel(outTable);
    
    return ;
}


//设置document.form[0]的onsubmit方法
function setFormOnSubmitMethod(onSubmitMethod)
{
    var form=document.forms[0];
    if(form!=null&&form!="undefined")
    {
        form.onsubmit=onSubmitMethod;
    }   
       
}

//设置窗口大小及位置
function setWindowSizeAndPosition(width,height,x,y)
{
    window.resizeTo(width,height);
    window.moveTo(x,y);

    window.innerWidth=width;
    window.innerHeight=height;
    window.screenX=x;
    window.screenY=y;    
}
    
//设置选择列表的选择项
function setSelectionSelectedValue(selectionId,selectValue)
{
    var selection=document.getElementById(selectionId);
    for(var i=0;i<selection.childNodes.length;i++)
    {
        var option=selection.childNodes[i];
        if(option.value==selectValue)
        {
            option.selected=true;
        }
    }
}


//增加参数值列表到列表控件
function addItemListToListControl(items,listControlId)
{
}

//生成列表项。item.id="listItem"+key;
function createListItem(key,value,withCheckBox,keyDisplay)
{
    var item=document.createElement("div");
    var chk=document.createElement("checkbox");
    var divKey=document.createElement("div");    
    var divValue=document.createElement("div");
    
    item.id="listItem"+key;
    divKey.innerText=key;
    divValue.innerHTML=value;
    
    if(withCheckBox==true)
    {   
        item.appendChild(chk);        
    }
    item.appendChild(divKey);
    item.appendChild(divValue);
    
    if(keyDisplay==true)
    {
        divKey.style.display="block";
    }
    else
    {
        divKey.style.display="none";
    }      
}

//增加参数值到列表控件。设置item.Id=listControlId+"."+item.id
function addItemToListControl(key,value,listControlId,keyDisplay)
{
    var listControl=document.getElementById(listControlId);
    var item=createListItem(key,value,keyDislplay);
    
    listControl.appendChild(item);
    item.Id=listControlId+"."+item.id;
}

////获取列表控件中的选中项，返回{key,value}数组。以item中第一个checkbox选中状态作为项的选择状态，以item中第一个div的内容为key，第二个div的内容为value
//function getSelectedItems(listControlId)
//{
//    var listControl=document.getElementById(listControlId);
//    foreach(var item in listControl.childNodes)
//    {
//        var chks=item.getElementByTagName("checkbox");
//        
//    }
//}

//获取页面中保存的参数表，返回{key,value}数组
function getParamList()
{
}

//显示参数列表
function listParams()
{
}


function submitWithParameter(param)
{
    var iptParam=document.getElementById("iptParam");
    if(iptParam==null)
    {
        iptParam=document.createElement("<input type='hidden' id='iptParam' name='iptParam' value=''/>");
        document.forms[0].appendChild(iptParam);
    }
    iptParam.value=param;
    document.forms[0].submit();
}

//获取参数下拉框选中值
//dropId0,一级参数下拉框ID
//dropId1,二级参数下拉框ID，为null或""时返回drop0选中值
function GetParameterDropDownListSelectedValue(dropId0,dropId1)
{
    var selectedValue="-1";
    
    if(dropId1!=null&&dropId1!="")
    {
        var drop1=document.getElementById(dropId1);
        if(drop1!=null)
        {
            selectedValue=drop1.value;
        }
    }
    if(selectedValue=="-1")
    {
        var drop0=document.getElementById(dropId0);
        if(drop0!=null)
        {
            selectedValue=drop0.value;
        }
    }
    return selectedValue;
}

//设置form.onsubmit函数为f
function onSubmit(f)
{
    var form=document.forms[0];
    form.onsubmit=f;
}


//若是回车事件则提交
function onEnterSubmit()
{
    if(event.keyCode==13)
    {
        document.forms[0].submit();
    }
}

//若回车则引发btnId按钮的clicked事件
function onEnterClickButton(btnId)
{
    var btn=document.getElementById(btnId);
    if(event.keyCode==13)
    {
        if(btn!=null)
        {
            event.keyCode=9;
            btn.click();
        }
    }
}


//全选或全不选控件包含的所有checkbox
//control--包含checkbox的控件
//check--选择true false
function setAllCheckBox(control,check)
{
    if(control==null)
    {
        return;
    }
    if(control.type=="checkbox")
    {
        control.checked=check;
    }
    else
    {
        for(var i=0;i<control.childNodes.length;i++)
        {
            setAllCheckBox(control.childNodes[i],check)
        }
    }
}





function setControlCss(ctl,tagName,type,cssName)
{
    if(ctl.tagName==tagName)
    {
        var cssNm="";
        try
        {
            cssNm=ctl.className;
        }
        catch(ex)
        {
            try
            {
                cssNm=ctl.attributes['class'].toString();
            }
            catch(ex)
            {
                cssNm="";
            }
        }
        if(cssNm=="")
        {
            switch(ctl.tagName)
            {
                case "TABLE":
                        try
                        {
                            ctl.className=cssName;
                        }
                        catch(ex)
                        {
                            ctl.setAttributes("class",cssName);
                        }
                    break;
                case "TD":
                        try
                        {
                            ctl.className=cssName;
                        }
                        catch(ex)
                        {
                            ctl.setAttributes("class",cssName);
                        }
                    break;
                case "INPUT":
                    if(ctl.type=="button")
                    {
                        try
                        {
                            ctl.className=cssName;
                        }
                        catch(ex)
                        {
                            ctl.setAttributes("class",cssName);
                        }
                    } 
                    else if(ctl.type=="button")
                    {
                        try
                        {
                            ctl.className=cssName;
                        }
                        catch(ex)
                        {
                            ctl.setAttributes("class",cssName);
                        }
                    } 
                    break;                
                default:
                        try
                        {
                            ctl.className=cssName;
                        }
                        catch(ex)
                        {
                            ctl.setAttributes("class",cssName);
                        }
                    break;
            }//SWICTH
        }
    }
    else
    {
        for(var i=0;i<ctl.childNodes.length;i++)
        {
            setControlCss(ctl.childNodes[i],tagName,type,cssName);
        }
    }
}

//设置控件中所有tagName类型节点的css类名
//tagName-控件的tagName 请大写，type－当控件为input时的input类型名称，请小写
function setCss(ctlId,tagName,type,cssName)
{
    var ctl=document.getElementById(ctlId);
    if(ctl!=null)
    {
        setControlCss(ctl,tagName,type,cssName);
    }
}

//设置控件中所有表格表头列的css类名
//tagName 请大写，type 请小写
function setTHeadCss(ctlId,cssName)
{  
    var ctl=document.getElementById(ctlId); 
    var tbs;
    if(ctl!=null)
    {
        tbs=ctl.getElementsByTagName("TABLE");
    }
    if(tbs!=null)
    {
        for(var i=0;i<tbs.length;i++)
        { 
            var head=tbs[i].tHead;
            if(head!=null)
            {
                setControlCss(head,"TD",'',cssName);
            }
        }
    }
}


//设置表格中除表头外td的css类名
function setTBodyTdCss(ctlId,cssName)
{
    var ctl=document.getElementById(ctlId); 
    var tbs;
    if(ctl!=null)
    {
        tbs=ctl.getElementsByTagName("TABLE");
    }
    else
    {
        return;
    }
    if(tbs!=null)
    {
        for(var i=0;i<tbs.length;i++)
        { 
            var tbody=tbs[i].tBodies[0];
            setControlCss(tbody,"TD",'',cssName);
        }
    }
}

///设置图片的链接
function setImgSrc(img,url)
{
    img.src=url;
}

//图片不能显示时设置缺省显示图片
//img-要设置出错处理的图片
//url-缺省的图片地址
function onImgError(img,url)
{
//    var img0=document.createElement("<img id='imgDft' name='imgDft' />");
    try
    {
        img.alt="-1";
        img.onerror=function (){img.alt="显示图片失败";  }
        img.src=url;
        
//        if(img.alt!="-1")
//        {
//            img.src=url;
//        }
//        else
//        {
//           img.src=url;
//        }
    }
    catch(e)
    {
        img.alt="显示图片失败";
    }
    
}

//图片不能显示时设置缺省显示图片  XZZ 20080305注译
//img-要设置出错处理的图片
//function onImgError(img)
//{
//    var url=getAppUrl()+"images/withoutphoto.gif";
//    try
//    {
//        img.alt="-1";
//        img.onerror=function (){img.alt="显示图片失败";  }
//        img.src=url;
//        
//    }
//    catch(e)
//    {
//        img.alt="显示图片失败";
//    }
//    
//}


////自动调节企业图标图片大小
//20080312  xzz
function imgwidthheight(img,w,h){
var imgw=img.width;
var imgh=img.height;
if (imgw/imgh>=w/h){
    if(imgw>w){
    img.width=w;
    img.height=w*imgh/imgw;
    }else{
        img.width=imgw;
        img.height=imgh;
        }
}else{
    if(imgh>h){
    img.height=h;
    img.width=h*imgw/imgh;
    }else{
        img.width=imgw;
        img.height=imgh;
        }
    }
}


function trim(s)
{
    return  s.replace(/(^\s*)|(\s*$)/g,"");
}

        
//测试用户名格式。返回错误消息，正确返回""
        function checkUserName(uname,msg)
        {
            if(trim(uname)=="")
            {
                 return "用户名不能为空";
            }
            var reg=new RegExp("^[_\\w\\d]{4,16}$");
            if(!reg.test(uname))
            {
                return "用户名格式不正确。请输入4-16个英文、汉字或数字。";
            }    
            
            return "";
        }
        
//测试密码格式和一致性。返回错误消息，正确返回""
        function checkPassword(pwd,rePwd)
        {
            if(pwd==""&&rePwd=="")
            {
                return "密码不能为空";
            }
            if(pwd!=rePwd)
            {
                return "两次输入的密码不一致";
            }
            if(pwd.length<6||pwd.length>16)
            {
                return "密码长度不对，应为6-16";                
            }       
            return "";
        }
        
        //获取企业模块的起始虚拟路径.失败返回""
        function getCompanyAppUrl()
        {
            var s=window.location.href;
            var n=s.indexOf("/Company/");
            var cUrl="";
            if(n>=0)
            {
                cUrl=s.substring(0,n)+"/Company/";
            }
            return cUrl;
        }
        
        
        
        //获取企业模块所属应用程序的虚拟根路径.失败返回""
        function getAppUrl()
        {
            var s=window.location.href;
            var n=s.indexOf("/Company/");
            var cUrl="";
            if(n>=0)
            {
                cUrl=s.substring(0,n)+"/";
            }
            return cUrl;
        }
        
        //计算字符串长度，一个汉字按两个字符计算
        function computeStringLength(str)
        {
             str=str.replace(/[^\x00-\xff]/g,"**");             
             return str.length;            
        }

        //检查字符串str长度是否超过指定数量len,若超过则返回true,否则返回false
        //一个汉字按两个字符计算
        function isStringOverFlow(str,len)
        {
            return computeStringLength(str)>len?true:false;
        }
        
        
        ///检查panel所包含的文本框输入字符串长度是否超限，若超限设置panel内的消息label文字并返回true,否则返回false
        //
        function checkPanelInputStringLength(pnl,tbxId,lbMsgId,len,msg)
        {
            //获取客户端ID包含tbxId的所有node
            
            //获取客户端ID包含msgDivId的所有node
                       
        }
        
        //检查repeater内输入字符串的长度是否超限，若超限设置每行内的消息文字并返回false,否则返回true
        function checkRepeaterInputStringLength(rptId,pnlId,tbxId,lbMsgId,len,msg)
        {
            //获取所有客户端ID包含pnlId的所有node
            //检查node内的输入字符串
            checkPanelInputStringLength(pnl,tbxId,lbMsgId,len,msg);
        }
        
    // *********************************************************************
    ///////// 服务器端CustomValidator检验字符串长度是否超限的客户端方法 ///////////////   
    ///////// len－字符串长度限制

    function CheckStrInput(arg,len)
    {
        if(isStringOverFlow(arg.Value,len))
        {
            arg.IsValid=false;
        }
        else
        {
            arg.IsValid=true;
        }
    }

    //将日期字符串转换成时间对象
    function strToDate(str) 
    { 
        var r = str.match(/^(\d{1,4})(-|\/)(\d{1,2})\2(\d{1,2})$/); 
        if(r==null)
        {
            return null; 
        }
        else
        {
            return new Date(r[1], r[3]-1, r[4]); 
        }
    } 
    //将长时间字符串转换成时间对象
    function strToDateTime(str) 
    { 
        var reg = /^(\d{1,4})(-|\/)(\d{1,2})\2(\d{1,2}) (\d{1,2}):(\d{1,2}):(\d{1,2})$/; 
        var r = str.match(reg); 
        if(r==null)
        {
            return null; 
        }
        else
        {
            return new Date(r[1], r[3]-1,r[4],r[5],r[6],r[7]); 
        }
    } 

    //检查日期字符串格式是否正确
    function isDateValid(str) 
    { 
        str=trim(str);
        var r = str.match(/^(\d{1,4})(-|\/)(\d{1,2})\2(\d{1,2})$/); 
        if(r==null)
        {
            return false; 
        }
        var d= new Date(r[1], r[3]-1, r[4]); 
        if(d.getFullYear()==r[1]&&(d.getMonth()+1)==r[3]&&d.getDate()==r[4])
        {
            return true;
        }
        else
        {
            return false;
        }
    } 
    
    //检查电子邮件地址是否合法
    function isEmailValid(email)
    {
        email=trim(email);
        if(email==null||email=="")
        {
            return false;
        }
        var reg=new RegExp("^([\\w-\\.]+)@((\\[[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.)|(([\\w-]+\\.)+))([a-zA-Z]{2,4}|[0-9]{1,3})(\\]?)$");
        return reg.test(email);
    }
    
    
    //服务器端customValidator验证日期格式的客户端方法
    function CheckDate(src,arg)
    {
        if(isDateValid(arg.Value))
        {
            arg.IsValid=true;
        }
        else
        {
            arg.IsValid=false;
        }
        
    }
    
    
