// YeeSoft Javascript Libaray
// Copyright (c) 2005 YeeSoft (http://www.yeesoft.com/)
// \u6768\u71b9\u6797
// 2005-9-21
function gohref(h)
{
    location.href=h;
}

var YeeJsYXL = {
	
    jumpnumber: -1,
	
    Version: '1.0.0',
    update:	function (obj){
        var tmpTr = obj.parentNode.parentNode;
        var s=tmpTr.cells[2].innerHTML.substring(6);
        if(s=="\u6587\u672c"){
            var t=0;
            var s2=tmpTr.cells[4].innerHTML.substring(6);
            if(s2=="string"){
                t=0;
            }else if(s2=="char"){
                t=1;
            }else if(s2=="int"){
                t=2;
            }else if(s2=="boolean"){
                t=3;
            }else if(s2=="date"){
                t=4;
            }
            return(
            document.artList.textfield.value=tmpTr.cells[0].innerHTML.substring(6),
            document.artList.textfield2.value=tmpTr.cells[1].innerHTML.substring(6),
            document.artList.select.value=t,
            document.artList.textfield3.value=tmpTr.cells[3].innerHTML.substring(6));
        }else if(s=="\u65f6\u95f4"){
            return(
            document.artList3.textfield.value=tmpTr.cells[0].innerHTML.substring(6),
            document.artList3.textfield2.value=tmpTr.cells[1].innerHTML.substring(6),
            document.artList3.textfield3.value=tmpTr.cells[3].innerHTML.substring(6));
        }else if(s=="\u5217\u8868"){
            return(
            document.artList2.textfield.value=tmpTr.cells[0].innerHTML.substring(6),
            document.artList2.textfield2.value=tmpTr.cells[1].innerHTML.substring(6),
            document.artList2.textfield5.value=tmpTr.cells[5].innerHTML.substring(6),
            document.artList2.textfield6.value=tmpTr.cells[6].innerHTML.substring(6),
            document.artList2.textfield3.value=tmpTr.cells[3].innerHTML.substring(6));					
        }else {
            return(
            document.artList4.textfield.value=tmpTr.cells[0].innerHTML.substring(6),
            document.artList4.textfield2.value=tmpTr.cells[1].innerHTML.substring(6),
            document.artList4.textfield3.value=tmpTr.cells[3].innerHTML.substring(6),
            document.artList4.textfield4.value=tmpTr.cells[7].innerHTML.substring(6));
        }
    },
    GGCUpdate:function(obj){
        var tmpTr = obj.parentNode.parentNode;
        return(
        document.addform.textfield2.value=tmpTr.cells[1].innerHTML.substring(6),
        document.addform.textfield3.value=tmpTr.cells[2].innerHTML.substring(6),
        document.addform.textfield4.value=tmpTr.cells[3].innerHTML.substring(6),
        document.addform.textfield5.value=tmpTr.cells[5].innerHTML.substring(6)
    );			
    },
    save: function (obj) {
        if(obj=="1"){
            alert(Form.serialize('1'));
            var url="ajaxTest.action";
            new Ajax.Request(url,{method:'post',asynchronous:true, parameters:Form.serialize('1')});
        }else if(obj=="2"){
            alert(Form.serialize('2'));
            var url="ajaxTest.action";
            new Ajax.Request(url,{method:'post',asynchronous:true, parameters:Form.serialize('2')});
        }else if(obj=="3"){
            alert(Form.serialize('3'));
            var url="ajaxTest.action";
            new Ajax.Request(url,{method:'post',asynchronous:true, parameters:Form.serialize('3')});
        }else if(obj=="4"){
            alert(Form.serialize('4'));
            var url="ajaxTest.action";
            new Ajax.Request(url,{method:'post',asynchronous:true, parameters:Form.serialize('4')});
        }else if(obj=="5"){
            alert(Form.serialize('5'));
            var url="ajaxTest.action";
            new Ajax.Request(url,{method:'post',asynchronous:true, parameters:Form.serialize('5')});
        }else if(obj=="6"){
            alert(Form.serialize('6'));
            var url="ajaxTest.action";
            new Ajax.Request(url,{method:'post',asynchronous:true, parameters:Form.serialize('6')});
        }else if(obj=="7"){
            alert(Form.serialize('7'));
            var url="ajaxTest.action";
            new Ajax.Request(url,{method:'post',asynchronous:true, parameters:Form.serialize('7')});
        }else if(obj=='8'){
            alert(Form.serialize('8'));
            var url="ajaxTest.action";
            new Ajax.Request(url,{method:'post',asynchronous:true, parameters:Form.serialize('8')});
        }else{
            alert("\u4e0d\u80fd\u4f20\u9001\u7a7a\u6570\u636e");
        }
    },
    del: function (obj){
        var url="ajaxTest.action";
        var tmpTr = obj.parentNode.parentNode;
        var dTmp={};
        dTmp.s1=tmpTr.cells[0].innerHTML.substring(6);
        dTmp.s2=tmpTr.cells[2].innerHTML.substring(6);
        return(
        alert("\u5220\u9664"+dTmp.s1+","+dTmp.s2),
        new Ajax.Updater(url,{method:'post',asynchronous:true, parameters:"dTmp = "+dTmp}));
    },
    checkAll:function (chk, name)
    {
        for (var i = 0; i < chk.form.elements.length; i ++)
        {
            var e = chk.form.elements[i];
            if (e.type == 'checkbox' && e.name.indexOf(name) == 0)
                e.checked = chk.checked;
        }
    },
    chkAllTrue:function (input1,input2,input3){
        var objForm = document.forms[input1];
        var objLen = objForm.length;
        for (var iCount = 0; iCount < objLen; iCount++){
            if (input3=='true')
            {
                if (objForm.elements[iCount].type == "checkbox")
                {
                    objForm.elements[iCount].checked = true;
                }
            }
            else if(input3=='false')
            {
                if (objForm.elements[iCount].type == "checkbox")
                {
                    objForm.elements[iCount].checked = false;
                }
            }
        }           
    },
    delThisUserTicket:function (input1,input2){
        var objForm = document.forms[input1];
        var objLen = objForm.length;
        var strIds = '';
        for(var iCount = 0;iCount<objLen;iCount++){
            if(objForm.elements[iCount].type == "checkbox" && objForm.elements[iCount].checked == true){
                strIds+=objForm.elements[iCount].value+',';
            }
        }
        return strIds;
    },
    //\u5206\u9875
    showListPage:function(image,recordCount, show, pageCount, pageNow, pageStr){
				
        pageStr1 = YeeJsYXL.encodePageURI(pageStr);
				
        if(pageCount<1) pageCount =0;
        if(pageNow<1)  pageNow = 0;
				
        var randomStr = parseInt(Math.random()*10000000);
				
        var pageTarget=pageNow;
        var flag=pageNow-4;

        /*
                	  <ul>
	  <li class="line2_list_bottom_btn_li1"><a href="#">查看</a></li>
	  <li class="line2_list_bottom_btn_li2"><span>到第</span> <span><input type="text" name="textfield" /></span> <span>页</span></li>
	  <li class="line2_list_bottom_btn_li3"><a href="#">下一页</a></li>
	  <li class="line2_list_bottom_btn_li4"><a href="#">1</a><a href="#">2</a><a href="#">3</a><a href="#">4</a><a href="#">5</a><a href="#">6</a><a  class="line2_list_bottom_dot">......</a><a href="#">100</a></li>
	  <li class="line2_list_bottom_btn_li5"><a href="#">上一页</a></li>
	  <li class="line2_list_bottom_btn_li6">1/5733 页</li>
	  </ul>
                
         */


        str='<ul><li class="line2_list_bottom_btn_li1"><a href="javascript:YeeJsYXL.pagego(YeeJsYXL.jumpnumber,'+pageNow+','+pageCount+',\"'+pageStr+'\")">查看</a></li>';
        str+='<li class="line2_list_bottom_btn_li2"><span>到第</span> <span><input type="text" id="txtpage" onchange="YeeJsYXL.jumpnumber=this.value"/></span> <span>页</span></li>';

        if(pageNow>=pageCount)
            str+='<li class="line2_list_bottom_btn_li3"><a href="javascript::">下一页</a></li>';
        else
            str+='<li class="line2_list_bottom_btn_li3"><a href="'+pageStr1.replace("_page_",(1+pageNow))+'">下一页</a></li>';
        str+='<li class="line2_list_bottom_btn_li4" >'+YeeJsYXL.viewpage(pageCount,pageTarget,2,pageNow,pageStr)+'</li>';

        if(pageNow<=1)
            str += '<li class="line2_list_bottom_btn_li5"><a href="javascript::">上一页</a></li>';
        else
            str += '<li class="line2_list_bottom_btn_li5"><a href="'+pageStr1.replace("_page_",(pageNow-1))+'">上一页</a></li>';

        str += '<li class="line2_list_bottom_btn_li6">'+pageNow+'/'+pageCount+ ' 页</li>';
        
        str +='</ul>';

        return str;
    },
    showListPageSimple:function(image,recordCount, show, pageCount, pageNow, pageStr){
				
        pageStr1 = YeeJsYXL.encodePageURI(pageStr);
				
        if(pageCount<1) pageCount =0;
        if(pageNow<1)  pageNow = 0;
				
        var randomStr = parseInt(Math.random()*10000000);
				
        var pageTarget=pageNow;
        var flag=pageNow-4;

        str='';

        if(pageNow<=1)
            str += ' <a href="javascript::"> 上一页 </a> ';
        else
            str += ' <a href="'+pageStr1.replace("_page_",(pageNow-1))+'"> 上一页 </a> ';

        str+=''+YeeJsYXL.viewpage(pageCount,pageTarget,2,pageNow,pageStr)+' ';


        if(pageNow>=pageCount)
            str+=' <a href="javascript::"> 下一页 </a> ';
        else
            str+=' <a href="'+pageStr1.replace("_page_",(1+pageNow))+'"> 下一页 </a>';
        str += ' '+pageNow+'/'+pageCount+ ' 页';
        
        str +='';

        return str;
    },
    //博客作者列表页用来的
    showBloggerListPage:function(image,recordCount, show, pageCount, pageNow, pageStr){
						
        pageStr1 = YeeJsYXL.encodePageURI(pageStr);
						
        if(pageCount<1) pageCount =0;
        if(pageNow<1)  pageNow = 0;
						
        var randomStr = parseInt(Math.random()*10000000);
						
        var pageTarget=pageNow;
        var flag=pageNow-4;
        /*
		                  <li><a href="#" class="text click">1</a> <a href="#" class="text">2</a> 
		                      <a href="#" class="text">3</a> …… <a href="#" class="text">15</a> 
		                      <a href="#" class="text">16</a> <a href="#" class="text">17</a></li>
         */
		
        str='<li>'+YeeJsYXL.viewpage(pageCount,pageTarget,2,pageNow,pageStr)+'</li>';			
		
        return str;
    },
    //new 20060830 pageview
    viewpage:function(pageCount,pageTarget,pageHalf,pageNow,pageStr)
    {
        pageCount=parseInt(pageCount);
        pageTarget=parseInt(pageTarget);
        pageHalf=parseInt(pageHalf);
        pageNow=parseInt(pageNow);
        var page_arr;
        var page_arr_view;
        function publicrun()
        {
            page_arr=new Array();
            for(i=0;i<pageCount;i++)
            {
                page_arr[i]=i+1;
            }
            page_arr_view=page_arr.slice();
            for(i=0;i<pageCount;i++)
            {
                page_arr_view[i]="<a class=\"text\" href=\"javascript:YeeJsYXL.view("+pageCount+","+page_arr_view[i]+","+pageHalf+","+pageNow+",'"+pageStr+"')\">["+page_arr_view[i]+"]</a> ";
            }
            page_arr_view[pageTarget-1]="<a class=\"click\"  href=\"javascript:YeeJsYXL.view("+pageCount+","+page_arr[pageTarget-1]+","+pageHalf+","+pageNow+",'"+pageStr+"')\">["+page_arr[pageTarget-1]+"]</a> ";
        }
				
				
        if(pageHalf*2+3>=pageCount)
        {
            publicrun();
            var ps="";
            for(i=0;i<pageCount;i++)
            {
                ps+=page_arr_view[i];
            }
            return ps;
        }
        if(pageTarget-pageHalf<=2)
        {
            publicrun();
            var ps="";
            for(i=0;i<pageTarget+pageHalf;i++)
            {
                ps+=page_arr_view[i];
            }
            if(pageCount>6){
                ps+=" <a class='line2_list_bottom_dot'>.....</a> <a class=\"text\" href=\"javascript:YeeJsYXL.view("+pageCount+","+(pageCount-2)+","+pageHalf+","+pageNow+",'"+pageStr+"')\">["+(pageCount-2)+"]</a> <a class=\"text\" href=\"javascript:YeeJsYXL.view("+pageCount+","+(pageCount-1)+","+pageHalf+","+pageNow+",'"+pageStr+"')\">["+(pageCount-1)+"]</a> <a class=\"text\"  href=\"javascript:YeeJsYXL.view("+pageCount+","+(pageCount)+","+pageHalf+","+pageNow+",'"+pageStr+"')\">["+(pageCount)+"]</a> ";
            }else{
                ps+=" <a class='line2_list_bottom_dot'>.....</a> <a class=\"text\" href=\"javascript:YeeJsYXL.view("+pageCount+","+(pageCount-1)+","+pageHalf+","+pageNow+",'"+pageStr+"')\">["+(pageCount-1)+"]</a> <a class=\"text\"  href=\"javascript:YeeJsYXL.view("+pageCount+","+(pageCount)+","+pageHalf+","+pageNow+",'"+pageStr+"')\">["+(pageCount)+"]</a> ";
            }
            
            return ps;
        }
        if(pageTarget-pageHalf>2 && pageTarget+pageHalf+1<pageCount)
        {
            publicrun();
            var ps=" <a class=\"text\"  href=\"javascript:YeeJsYXL.view("+pageCount+","+1+","+pageHalf+","+pageNow+",'"+pageStr+"')\">[1]</a> <a class=\"text\"  href=\"javascript:YeeJsYXL.view("+pageCount+","+2+","+pageHalf+","+pageNow+",'"+pageStr+"')\">[2]</a> <a class=\"text\"  href=\"javascript:YeeJsYXL.view("+pageCount+","+3+","+pageHalf+","+pageNow+",'"+pageStr+"')\">[3]</a> <a class='line2_list_bottom_dot'>.....</a> ";
            for(i=pageTarget-pageHalf;i<(pageTarget-pageHalf)+(pageHalf*2+1);i++)
            {
                ps+=page_arr_view[i-1];
            }
            if(pageCount>6){
                ps+=" <a class='line2_list_bottom_dot'>.....</a> <a class=\"text\" href=\"javascript:YeeJsYXL.view("+pageCount+","+(pageCount-2)+","+pageHalf+","+pageNow+",'"+pageStr+"')\">["+(pageCount-2)+"]</a> <a class=\"text\" href=\"javascript:YeeJsYXL.view("+pageCount+","+(pageCount-1)+","+pageHalf+","+pageNow+",'"+pageStr+"')\">["+(pageCount-1)+"]</a> <a class=\"text\"  href=\"javascript:YeeJsYXL.view("+pageCount+","+(pageCount)+","+pageHalf+","+pageNow+",'"+pageStr+"')\">["+(pageCount)+"]</a> ";
            }else{
                ps+=" <a class='line2_list_bottom_dot'>.....</a> <a class=\"text\" href=\"javascript:YeeJsYXL.view("+pageCount+","+(pageCount-1)+","+pageHalf+","+pageNow+",'"+pageStr+"')\">["+(pageCount-1)+"]</a> <a class=\"text\"  href=\"javascript:YeeJsYXL.view("+pageCount+","+(pageCount)+","+pageHalf+","+pageNow+",'"+pageStr+"')\">["+(pageCount)+"]</a> ";
            }
            return ps;
        }
        if(pageTarget+pageHalf+1>=pageCount)
        {
            publicrun();
            var ps=" <a class=\"text\" href=\"javascript:YeeJsYXL.view("+pageCount+",1,"+pageHalf+","+pageNow+",'"+pageStr+"')\">["+1+"]</a> <a class=\"text\" href=\"javascript:YeeJsYXL.view("+pageCount+",2,"+pageHalf+","+pageNow+",'"+pageStr+"')\">["+2+"]</a> <a class='line2_list_bottom_dot'>.....</a> ";
            for(i=pageTarget-pageHalf;i<parseInt(pageCount)+1;i++)
            {
                ps+=page_arr_view[i-1];
            }
            return ps;
        }
    },
    view:function(pageCount,pageTarget,pageHalf,pageNow,pageStr)
    {
        var pc=parseInt(pageCount);
        var pt=parseInt(pageTarget);
        var ph=parseInt(pageHalf);
        var pn=parseInt(pageNow);
        var ps=pageStr;
        YeeJsYXL.pagego(pt,pn,pc,ps);
    },
    //new pgaeview 20060830 end
    //\u7ffb\u9875\u7684\u8df3\u8f6c
    pagego:function(pageGo,pageNow,pageCount,pageStr){
        pageStr = YeeJsYXL.encodePageURI(pageStr);
        if(pageGo>=1 && pageGo<=pageCount && pageNow!=pageGo)
            window.location = pageStr.replace("_page_", pageGo);
    },
    //\u5206\u9875\u4e2d\u52a0\u4e0a\u6392\u5e8f
    showListPage2:function(recordCount, show, pageCount, pageNow, order, pageStr, pageSizeStr, pageOrderStr){
				
        pageStr1 = YeeJsYXL.encodePageURI(pageStr);
        pageStr2 = YeeJsYXL.encodePageURI(pageSizeStr);
        pageStr3 = YeeJsYXL.encodePageURI(pageOrderStr);

        /*
                        <ul>
          <li class="line2_list_num">页显示数量：</li>
          <li class="line2_list_20_30_40"><a href="#" class="font_size_12_999999">20</a> <a href="#" class="font_size_12_999999">30</a> <a href="#" class="font_size_12_999999">40</a></li>
          <li class="line2_list_rank">排序方式</li>
          <li class="line2_list_select">
            <select  >
            </select>
          </li>
          <li class="line2_list_pagenum">1/5733 页</li>
          <li class="line2_list_p_page"><a href="#">上一页</a></li>
          <li class="line2_list_n_page"><a href="#">下一页</a></li>
        </ul>
         */



        var img20 = '<a href="'+pageStr2 +'20" class="font_size_12_999999">20</a>';
        var img30 = '<a href="'+pageStr2 +'30" class="font_size_12_999999">30</a>';
        var img40 = '<a href="'+pageStr2 +'40" class="font_size_12_999999">40</a>';

        switch(show){
            case '20':
                img20 = '<a href="'+pageStr2 +'20" class="font_size_12_999999" style="color:red">20</a>';
                break;
            case '30':
                img30 = '<a href="'+pageStr2 +'30" class="font_size_12_999999" style="color:red">30</a>';
                break;
            case '40':
                img40 = '<a href="'+pageStr2 +'40" class="font_size_12_999999" style="color:red">40</a>';
                break;
        }

        if(pageCount<1) pageCount =0;
        if(pageNow<1)  pageNow = 0;
				
        var randomStr = parseInt(Math.random()*10000000);

        str = '<ul><li class="line2_list_num">页显示数量：</li>';
        str += '<li class="line2_list_20_30_40">'+img20+' '+img30+' '+img40+'</li>';				
        str += '<li class="line2_list_rank">排序方式</li>';
				


        /*igyhi 20060824 close
				str += "<td width=\"30\"><a href='"+pageStr3+"1"+"'><img src='"+imgmmm+"' width=\"23\" height=\"15\" border=\"0\" /></a></td>";				
				str += "<td width=\"30\"><a href='"+pageStr3+"2"+"'><img src='"+imgmmm1+"' width=\"23\" height=\"15\" border=\"0\" /></a></td>";
				str += "<td width=\"30\"><a href='"+pageStr3+"3"+"'><img src='"+imgmmm2+"' width=\"23\" height=\"15\" border=\"0\" /></a></td>";
				str += "<td width=\"30\"><a href='"+pageStr3+"4"+"'><img src='"+imgmmm3+"' width=\"23\" height=\"15\" border=\"0\" /></a></td>";
         */
        //igyhi 20060824 insert
        str+='<li class="line2_list_select"><select id="pxfs" onchange="gohref(this.value)">'
            +"<option value='0'>--\u6392\u5e8f\u65b9\u5f0f--</option>"
            +"<option value='"+pageStr3+"1'>\u6309\u4ef7\u683c\u0020\u7531\u9ad8\u5230\u4f4e</option>"
            +"<option value='"+pageStr3+"2'>\u6309\u4ef7\u683c\u0020\u7531\u4f4e\u5230\u9ad8</option>"
            +"<option value='"+pageStr3+"5'>\u6309\u51fa\u53d1\u5730\u0020\u0020\u5b57\u6bcd\u964d\u5e8f</option>"
            +"<option value='"+pageStr3+"6'>\u6309\u51fa\u53d1\u5730\u0020\u0020\u5b57\u6bcd\u5347\u5e8f</option>"
            +"</select></li>";
        //igyhi 20060824 end

        str += '<li class="line2_list_pagenum">'+pageNow+'/'+pageCount+ '页\u5171'+recordCount+'\u6761</li>';
        //igyhi 20060911 end
        if(pageNow<=1)
            str += '<li class="line2_list_p_page"><a href="javascript::">上一页</a></li>';
        else
            str += '<li class="line2_list_p_page"><a href="'+pageStr1.replace("_page_",(pageNow-1))+'">上一页</a></li>';
        if(pageNow>=pageCount)
            str += '<li class="line2_list_n_page"><a href="javascript::">下一页</a></li>';
        else
            str += '<li class="line2_list_n_page"><a href="'+pageStr1.replace("_page_",(1+pageNow))+'">下一页</a></li>';
        // alert(str);
        return str;
    },
	
    //encodeURIComponent\u8bbf\u95ee\u7684\u8def\u5f84
    encodePageURI:function(str){	
        //var str = "s%fghfg\"sdg'sfdg!@#$%^&*()_+=-:\"{}][\|';:,./?><MNCSFGsss\u6211sss";
        var result = "";
        for( i=0; i < str.length;) {
            var aLetter = "";
            var number = str.charCodeAt(i);
            if(document.all && number>127){
                for(j=i+1; j<=str.length; j++){
                    if(str.charCodeAt(j)<=127)
                        break;
                }
                result += encodeURIComponent(str.substring(i, j));
                i = j;
            }else if(number<=127){
                result += str.substring(i, i+1);
                i = i+1;
            }else{
                result += encodeURIComponent(str.substring(i, i+1));
                i = i+1;
            }
        }
        //alert("result = " + result);
        return result;
    },
    //\u811a\u672c\u9a8c\u8bc1\u7a0b\u5e8f
    Require : /.+/,
    Email : /^\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$/,
    Phone : /^((\(\d{2,3}\))|(\d{3}\-))?(\(0\d{2,3}\)|0\d{2,3}-)?[1-9]\d{6,7}(\-\d{1,4})?$/,
    Mobile : /^((\(\d{2,3}\))|(\d{3}\-))?13\d{9}$/,
    Url : /^http:\/\/[A-Za-z0-9]+\.[A-Za-z0-9]+[\/=\?%\-&_~`@[\]\':+!]*([^<>\"\"])*$/,
    IdCard : "this.IsIdCard(value)",
    Currency : /^\d+(\.\d+)?$/,
    Number : /^\d+$/,
    Zip : /^[1-9]\d{5}$/,
    QQ : /^[1-9]\d{4,8}$/,
    Integer : /^[-\+]?\d+$/,
    Double : /^[-\+]?\d+(\.\d+)?$/,
    English : /^[A-Za-z]+$/,
    Chinese : /^[\u0391-\uFFE5]+$/,
    Username : /^[a-z]\w{3,}$/i,
    UnSafe : /^(([A-Z]*|[a-z]*|\d*|[-_\~!@#\$%\^&\*\.\(\)\[\]\{\}<>\?\\\/\'\"]*)|.{0,5})$|\s/,
    IsSafe : function(str){return !this.UnSafe.test(str);},
    SafeString : "this.IsSafe(value)",
    Filter : "this.DoFilter(value, getAttribute('accept'))",
    Limit : "this.limit(value.length,getAttribute('min'), getAttribute('max'))",
    LimitB : "this.limit(this.LenB(value), getAttribute('min'), getAttribute('max'))",
    Date : "this.IsDate(value, getAttribute('min'), getAttribute('format'))",
    Repeat : "value == document.getElementsByName(getAttribute('to'))[0].value",
    Range : "getAttribute('min') < (value|0) && (value|0) < getAttribute('max')",
    Compare : "this.compare(value,getAttribute('operator'),getAttribute('to'))",
    Custom : "this.Exec(value, getAttribute('regexp'))",
    Group : "this.MustChecked(getAttribute('name'), getAttribute('min'), getAttribute('max'))",
    ErrorItem : [document.forms[0]],
    ErrorMessage : ["\u51fa\u9519\u4e86\uff1a\t\t\t\t\n"],
    Validate : function(theForm, mode){
        try{
            var usernameTmp = document.getElementById(username).value;
            var valTmp = /^[\u4e00-\u9fa5A-Za-z0-9_-]+$/;
            var strTmp = "\u767b\u9646\u540d\u5fc5\u987b\u662f\u6570\u5b57\u6216\u82f1\u6587[4-16]\u6216\u6c49\u5b57[2-8]\u4f4d";
            if(usernameTmp!=''){
                if(!valTmp.test(usernameTmp)){
                    alert(strTmp);
                    document.getElementById(username).focus();
                    return false;
                }
            }
        }catch(e){}
        try{
            var nameTmp = document.getElementById(name).value;
            var valTmp = /^[\u4e00-\u9fa5A-Za-z0-9_-]+$/;
            var strTmp = "\u540d\u79f0\u5fc5\u987b\u662f\u6570\u5b57\u6216\u82f1\u6587[4-50]\u6216\u6c49\u5b57[2-25]\u4f4d";
            if(nameTmp!=''){
                if(!valTmp.test(nameTmp)){
                    alert(strTmp);
                    document.getElementById(name).focus();
                    return false;
                }
            }
        }catch(e){}
        var obj = theForm || event.srcElement;
        var count = obj.elements.length;
        this.ErrorMessage.length = 1;
        this.ErrorItem.length = 1;
        this.ErrorItem[0] = obj;
        for(var i=0;i<count;i++){
            with(obj.elements[i]){
                var _dataType = getAttribute("dataType");
                if(typeof(_dataType) == "object" || typeof(this[_dataType]) == "undefined") continue;
                this.ClearState(obj.elements[i]);
                if(getAttribute("require") == "false" && value == ""){
                    continue;
                }
                switch(_dataType){
                    case "IdCard" :
                    case "Date" :
                    case "Repeat" :
                    case "Range" :
                    case "Compare" :
                    case "Custom" :
                    case "Group" : 
                    case "Limit" :
                    case "LimitB" :
                    case "SafeString" :
                    case "Filter" :
                        if(!eval(this[_dataType])) {
                            this.AddError(i, getAttribute("msg"));
                        }
                        break;
                    default :
                        if(!this[_dataType].test(value)){
                            this.AddError(i, getAttribute("msg"));
                        }
                        break;
                }
            }
        }
        if(this.ErrorMessage.length > 1){
            mode = mode || 1;
            var errCount = this.ErrorItem.length;
            switch(mode){
                case 2 :
                    for(var i=1;i<errCount;i++)
                        this.ErrorItem[i].style.color = "red";
                    case 1 :
                    alert(this.ErrorMessage.join("\n"));
                    this.ErrorItem[1].focus();
                    break;
                case 3 :
                    for(var i=1;i<errCount;i++){
                        try{
                            var span = document.createElement("SPAN");
                            span.id = "__ErrorMessagePanel";
                            span.style.color = "red";
                            this.ErrorItem[i].parentNode.appendChild(span);
                            span.innerHTML = this.ErrorMessage[i].replace(/\d+:/,"*");
                        }catch(e){alert(e.description);}
                    }
                    this.ErrorItem[1].focus();
                    break;
                default :
                    alert(this.ErrorMessage.join("\n"));
                    break;
            }
            return false;
        }
        return true;
    },
    limit : function(len,min, max){
        min = min || 0;
        max = max || Number.MAX_VALUE;
        return min <= len && len <= max;
    },
    LenB : function(str){
        return str.replace(/[^\x00-\xff]/g,"**").length;
    },
    ClearState : function(elem){
        with(elem){
            if(style.color == "red")
                style.color = "";
            var lastNode = parentNode.childNodes[parentNode.childNodes.length-1];
            if(lastNode.id == "__ErrorMessagePanel")
                parentNode.removeChild(lastNode);
        }
    },
    AddError : function(index, str){
        this.ErrorItem[this.ErrorItem.length] = this.ErrorItem[0].elements[index];
        this.ErrorMessage[this.ErrorMessage.length] = this.ErrorMessage.length + ":" + str;
    },
    Exec : function(op, reg){
        return new RegExp(reg,"g").test(op);
    },
    compare : function(op1,operator,op2){
        switch (operator) {
            case "NotEqual":
                return (op1 != op2);
            case "GreaterThan":
                return (op1 > op2);
            case "GreaterThanEqual":
                return (op1 >= op2);
            case "LessThan":
                return (op1 < op2);
            case "LessThanEqual":
                return (op1 <= op2);
            default:
                return (op1 == op2); 
        }
    },
    MustChecked : function(name, min, max){
        var groups = document.getElementsByName(name);
        var hasChecked = 0;
        min = min || 1;
        max = max || groups.length;
        for(var i=groups.length-1;i>=0;i--)
            if(groups[i].checked) hasChecked++;
        return min <= hasChecked && hasChecked <= max;
    },
    DoFilter : function(input, filter){
        return new RegExp("^.+\.(?=EXT)(EXT)$".replace(/EXT/g, filter.split(/\s*,\s*/).join("|")), "gi").test(input);
    },
    IsIdCard : function(number){
        var date, Ai;
        var verify = "10x98765432";
        var Wi = [7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2];
        var area = ['','','','','','','','','','','','\u5317\u4eac','\u5929\u6d25','\u6cb3\u5317','\u5c71\u897f','\u5185\u8499\u53e4','','','','','','\u8fbd\u5b81','\u5409\u6797','\u9ed1\u9f99\u6c5f','','','','','','','','\u4e0a\u6d77','\u6c5f\u82cf','\u6d59\u6c5f','\u5b89\u5fae','\u798f\u5efa','\u6c5f\u897f','\u5c71\u4e1c','','','','\u6cb3\u5357','\u6e56\u5317','\u6e56\u5357','\u5e7f\u4e1c','\u5e7f\u897f','\u6d77\u5357','','','','\u91cd\u5e86','\u56db\u5ddd','\u8d35\u5dde','\u4e91\u5357','\u897f\u85cf','','','','','','','\u9655\u897f','\u7518\u8083','\u9752\u6d77','\u5b81\u590f','\u65b0\u7586','','','','','','\u53f0\u6e7e','','','','','','','','','','\u9999\u6e2f','\u6fb3\u95e8','','','','','','','','','\u56fd\u5916'];
        if(number.length == 18){
            var tmpN1='';
            var tmpN2='';
            tmpN1=number.substr(0,6);
            tmpN2=number.substr(8,9);
            number = tmpN1+tmpN2;
        }
        var re = number.match(/^(\d{2})\d{4}(((\d{2})(\d{2})(\d{2})(\d{3}))|((\d{4})(\d{2})(\d{2})(\d{3}[x\d])))$/i);
        if(re == null) return false;
        if(re[1] >= area.length || area[re[1]] == "") return false;
        if(re[2].length == 12){
            Ai = number.substr(0, 17);
            date = [re[9], re[10], re[11]].join("-");
        }
        else{
            Ai = number.substr(0, 6) + "19" + number.substr(6);
            date = ["19" + re[4], re[5], re[6]].join("-");
        }
        if(!this.IsDate(date, "ymd")) return false;
        var sum = 0;
        for(var i = 0;i<=16;i++){
            sum += Ai.charAt(i) * Wi[i];
        }
        Ai += verify.charAt(sum%11);
        return (number.length ==15 || number.length == 18 && number == Ai);
    },
    IsDate : function(op, formatString){
        formatString = formatString || "ymd";
        var m, year, month, day;
        switch(formatString){
            case "ymd" :
                m = op.match(new RegExp("^((\\d{4})|(\\d{2}))([-./])(\\d{1,2})\\4(\\d{1,2})$"));
                if(m == null ) return false;
                day = m[6];
                month = m[5]*1;
                year = (m[2].length == 4) ? m[2] : GetFullYear(parseInt(m[3], 10));
                break;
            case "dmy" :
                m = op.match(new RegExp("^(\\d{1,2})([-./])(\\d{1,2})\\2((\\d{4})|(\\d{2}))$"));
                if(m == null ) return false;
                day = m[1];
                month = m[3]*1;
                year = (m[5].length == 4) ? m[5] : GetFullYear(parseInt(m[6], 10));
                break;
            default :
                break;
        }
        if(!parseInt(month)) return false;
        month = month==0 ?12:month;
        var date = new Date(year, month-1, day);
        return (typeof(date) == "object" && year == date.getFullYear() && month == (date.getMonth()+1) && day == date.getDate());
        function GetFullYear(y){return ((y<30 ? "20" : "19") + y)|0;}
    }
			
			
};
