function bodyResize(){

    try{
    if(typeof(document.getElementById('mailContainerDiv'))=="object"&&typeof(document.getElementById('operateItem'))=="object"){
        document.getElementById('mailContainerDiv').style.height = document.body.clientHeight - 20 -document.getElementById('operateItem').offsetHeight;
    }
    }
    catch(e){}
}
function whichBrowser() {
  var agt=navigator.userAgent.toLowerCase();
  if (agt.indexOf("opera") != -1) return 'Opera';
  if (agt.indexOf("staroffice") != -1) return 'StarOffice';
  if (agt.indexOf("beonex") != -1) return 'Beonex';
  if (agt.indexOf("chimera") != -1) return 'Chimera';
  if (agt.indexOf("netpositive") != -1) return 'NetPositive';
  if (agt.indexOf("phoenix") != -1) return 'Phoenix';
  if (agt.indexOf("firefox") != -1) return 'Firefox';
  if (agt.indexOf("safari") != -1) return 'Safari';
  if (agt.indexOf("skipstone") != -1) return 'SkipStone';
  if (agt.indexOf("msie") != -1) return 'InternetExplorer';
  if (agt.indexOf("netscape") != -1) return 'Netscape';
  if (agt.indexOf("mozilla/5.0") != -1) return 'Mozilla';
  if (agt.indexOf('\/') != -1) {
    if (agt.substr(0,agt.indexOf('\/')) != 'mozilla') {
      return navigator.userAgent.substr(0,agt.indexOf('\/'));
    }
    else
      return 'Netscape';
  }
  else if (agt.indexOf(' ') != -1)
    return navigator.userAgent.substr(0,agt.indexOf(' '));
  else return navigator.userAgent;
}

function closeWindow(){
  window.top.close();
}

function setCookie(name,value){
  var Then = new Date();
  Then.setTime(Then.getTime() + 60*60*1000 )   //60秒
  //KOAL_CERT_E,KOAL_CERT_G
  document.cookie = name+"="+value+";expires="+ Then.toGMTString();
}

function getCookie(label) {
  var labelLen = label.length;
  var cLen = document.cookie.length;
  var i = 0;
  var cEnd;
  while (i < cLen) {
    var j = i + labelLen;
    if (document.cookie.substring(i,j) == label) {
      cEnd = document.cookie.indexOf(";",j);
      if (cEnd == -1) {
        cEnd = document.cookie.length;
      }
      return unescape(document.cookie.substring(j,cEnd))
    }
    i++;
  }
  return null;
}

function MyArray(data,cols){
  var objArr = data;
  if (objArr == null) objArr = new Array();
  if (cols <= 0) cols=1;

  this.columnCount = cols;
  this.rowCount = objArr.length / cols;

  if (objArr.length%cols>0) this.rowCount ++;

  this.setValue=function (row,col,value){
    var idx = row * this.columnCount + col;
    if (idx >= objArr.length) return;
    objArr [idx] = value;
  };

  this.getValue=function (row,col){
    var idx = row * this.columnCount + col;
    if (idx >= objArr.length) return null;
    return objArr [idx];
  };
}

function MyLinkedList(value){
  this.value = value;
  this.parent=null;
  this.firstChild = null;
  this.nextSibling = null;

  this.isRootItem = function(){
    return this.parent==null;
  }

  this.appendChild=function ( chld ){
    var ptr = this.firstChild;
    if (ptr!=null){
      ptr = ptr.appendSibling(chld);
    }else{
      this.firstChild = new MyLinkedList(chld);
      ptr = this.firstChild;
      this.firstChild.parent = this;
    }
    return ptr;
  };

  this.appendSibling=function (chld){
    //this is root node,then create Sibling is not allowed.
    if (this.parent==null) return null;
    var ptr = this;
    while (ptr.nextSibling!=null){
      ptr = ptr.nextSibling ;
    }
    ptr.nextSibling = new MyLinkedList(chld);
    ptr.nextSibling.parent = ptr.parent;
    return ptr.nextSibling;
  };

  this.remove=function (){
    //this is root node,then remove is not allowed.
    if (this.parent==null) return this;
    var fcPtr = (this.parent!=null?this.parent.firstChild:null);
    if (fcPtr==this){
      this.parent.firstChild = this.nextSibling;
    }else{
      while (fcPtr.nextSibling!=this){
        fcPtr = fcPtr.nextSibling;
      }
      fcPtr.nextSibling = this.nextSibling;
    }
  };
}

function MyListParser(lineSep,itemSep){
  var depth = 0;
  lineSep = ((lineSep==null)?"\n":lineSep);
  itemSep = ((itemSep==null)?"\t":itemSep);

  function parseItem(item,strTokens){
    var dVal = strTokens[strTokens.length-1];
    var retItem=null;

    if (strTokens.length > depth){
      depth = Math.min(depth+1,strTokens.length);
      retItem = item.appendChild(dVal);
    }else if(strTokens.length == depth){
      retItem = item.appendSibling(dVal);
    }else{ //data.length < depth
      while(depth > strTokens.length && item!=null){
        depth --;
        if (item.isRootItem()){
          depth = 0;
          break;
        }
        item = item.parent;
      }
      if (item.isRootItem()){
        retItem = item.appendChild(dVal);
      }
      else{
        retItem = item.appendSibling(dVal);
      }
    }
    return retItem;
  };

  this.parse = function (strList){
    var root = new MyLinkedList();
    var curItem = root;
    var strListArr = strList.split(lineSep);
    for (var ii=0;ii<strListArr.length;ii++){
      var itemArr = strListArr[ii].split(itemSep);
      curItem = parseItem(curItem,itemArr);
    }
    return root;
  };
}
function trim(s)
{
  // Remove leading spaces and carriage returns
  while ((s.substring(0,1) == '\t') || (s.substring(0,1) == ' ') || (s.substring(0,1) == '\n') || (s.substring(0,1) == '\r')){
    s = s.substring(1,s.length);
  }
  // Remove trailing spaces and carriage returns
  while ((s.substring(s.length-1,s.length) == '\t') || (s.substring(s.length-1,s.length) == ' ') || (s.substring(s.length-1,s.length) == '\n') || (s.substring(s.length-1,s.length) == '\r')){
    s = s.substring(0,s.length-1);
  }
  return s;
}
//除去字符串头和尾的空格
String.prototype.Trim = function()
{
    return this.replace(/(^\s*)|(\s*$)/g, "");
}

String.prototype.getBytes = function() {
    var cArr = this.match(/[^\x00-\xff]/ig);
    return this.length + (cArr == null ? 0 : cArr.length);
}



//不能不选且只能选一
function CheckSel(form)
{
   tt = form.elements.length;
   hh = 0;
   for(i= 0;i<tt;i++)
   {
     if(form.elements[i].type == "checkbox" || form.elements[i].type == "radio")
     {
      if(form.elements[i].checked)
      {
      	hh++;
      }
     }
   }
   if(hh == 0){
   	alert("请您选择一行！");
   	return false;
   }else if(hh >1){
   	alert("对不起，只能选择一行！");
        return false;
   }else{
        return true;
   }
}
//可以多选，但不能不选
function CheckForCheckBox(form)
{
   tt = form.elements.length;
   hh = 0;
   for(i= 0;i<tt;i++)
   {
     if(form.elements[i].type == "checkbox"|| form.elements[i].type == "radio" )
     {
      if(form.elements[i].checked)
      {
      	hh++;
      }
     }
   }
   if(hh == 0){
   	alert("请您先选择！");
   	return false;
   }else{
        return true;
   }
}


//看是否选中
function isCheck(form)
{
   tt = form.elements.length;
   hh = 0;
   for(i= 0;i<tt;i++)
   {
     if(form.elements[i].type == "checkbox"|| form.elements[i].type == "radio" )
     {
      if(form.elements[i].checked)
      {
      	hh++;
      }
     }
   }
   if(hh == 0){
   	//alert("请您先选择！");
   	return false;
   }else{
        return true;
   }
}
//全选
function CheckAll(form)
{

   tt = form.elements.length;
   for(i= 0;i<tt;i++)
   {
     form.elements[i].checked = true;
   }
}
//不选
function NoCheckAll(form)
{

   tt = form.elements.length;
   for(i= 0;i<tt;i++)
   {
     form.elements[i].checked = false;
   }
}
function CheckAllOrNone(form,box)
{
    if(box.checked){
        CheckAll(form);
    }
    else if(!box.checked){
        NoCheckAll(form);
    }
}
function CheckControl(box,control)
{

 if(box.value||box.value==""){

      if(!box.checked) control.checked = false;
      else control.checked = true;

   }
   else {

       var count =0;
       for(i= 0;i<box.length;i++)
       {
             if(!box[i].checked) count++;
        }
        if(count>0) control.checked = false;
        else control.checked = true;
   }

}

function CheckValue(box)
{
 var ret="";
 if(box.value||box.value==""){
      if(box.checked) ret = box.value;
   }
   else {
       var count =0;
       for(i= 0;i<box.length;i++)
       {
             if(box[i].checked) ret =box[i].value;
      }
   }
   return ret;
}
//不能不选且只能选一
function CheckSel(form,name)
{
   tt = form.elements.length;
   hh = 0;
   for(i= 0;i<tt;i++)
   {
     if((form.elements[i].type == "checkbox" || form.elements[i].type == "radio")&&form.elements[i].name == name)
     {
      if(form.elements[i].checked)
      {
      	hh++;
      }
     }
   }
   if(hh == 0){
   	alert("请您选择一行！");
   	return false;
   }else if(hh >1){
   	alert("对不起，只能选择一行！");
        return false;
   }else{
        return true;
   }
}

//可以多选，但不能不选
function CheckSend(form,name)
{
   tt = form.elements.length;
   hh = 0;
   for(i= 0;i<tt;i++)
   {
     if((form.elements[i].type == "checkbox"|| form.elements[i].type == "radio")&&form.elements[i].name == name)
     {
      if(form.elements[i].checked)
      {
      	hh++;
      }
     }
   }
   if(hh == 0){
   	alert("请您先选择！");
   	return false;
   }else{
        return true;
   }
}

//可以多选，但不能不选
function CheckSendByMsg(form,msg)
{
   tt = form.elements.length;
   hh = 0;
   for(i= 0;i<tt;i++)
   {
     if((form.elements[i].type == "checkbox"|| form.elements[i].type == "radio"))
     {
      if(form.elements[i].checked)
      {
      	hh++;
      }
     }
   }
   if(hh == 0){
   	alert(msg);
   	return false;
   }else{
        return true;
   }
}


function selected(value,sel)
{

       for(i= 0;i<sel.length;i++)
       {
              if(sel.options[i].value == value)sel.options[i].selected = true ;
        }



}

function bigcontent(){
  if(document.all["search"].style.display=="none"){
        document.all["search"].style.display="block";
	change.innerText=5;


  }
  else{
        document.all["search"].style.display="none";
        change.innerText=6;
  }

}
function createTdElement( innerHTML){
    var td = document.createElement("td");
	  td.innerHTML = innerHTML;
	  return td;
  }
function inArray(str,array){
	if(array!=null&&array.length>0){
	for(i=0;i<array.length;i++){
	  if(str==array[i]){

	  return true;
	  }
	}

	}
	return false;
}


function setTableNullValue(tableId,defaultValue){
 if(document.getElementById(tableId).rows.length>0){
              for(i=0;i<document.getElementById(tableId).rows.length;i++){
                 // alert(i);
                 var row = document.getElementById(tableId).rows[i];
                 if(row.cells.length>0){
                      for(j=0;j<row.cells.length;j++){
                          // alert(i);
                          var cell = row.cells[j];

                          if(cell.innerHTML==''){
                              cell.innerHTML=defaultValue;

                          }
                      }
                 }
              }
    }
 }

 function getTrIndex(tr){
  var table = tr.parentElement;
   for(i=0;i<table.rows.length;i++){
      if(tr == table.rows[i]){
	            return i;
	  }

   }

 }

 function getTdIndex(td){
   var row = td.parentElement;
   if(row.cells.length>0){
       for(j=0;j<row.cells.length;j++){
           var cell = row.cells[j];
           if(cell==td){
               return j;
           }
	   }
   }

 }



function FirstPageNo(gopage,maxrow,total)
{
    var first=0;

    if(gopage.length>0){
        if(gopage*maxrow >total) first = total - total%maxrow;
        else if(gopage <1)first = 0;
        else first = (gopage-1)*maxrow;
    }
   return first;
}
function chk_date(chk_date_da,chk_date_min,chk_date_max){
    while(chk_date_da.indexOf(" ")>0){chk_date_da=chk_date_da.replace(" ","");}
    for(chk_date_i=0;chk_date_i<chk_date_da.length;chk_date_i++){
      if("0123456789-".indexOf(chk_date_da.substring(chk_date_i,chk_date_i+1))<0)return(false);
    }
    if(chk_date_da.length==0){
      if(chk_date_min==null)return true;
      else return false;
    }
    chk_date_i=chk_date_da.indexOf("-");
    if(chk_date_i<0)return false;
    chk_date_y=strtonumber(chk_date_da.substring(0,chk_date_i));
    chk_date_da=chk_date_da.substring(chk_date_i+1);
    chk_date_i=chk_date_da.indexOf("-");
    if(chk_date_i<0)return false;
    chk_date_m=strtonumber(chk_date_da.substring(0,chk_date_i));
    chk_date_d=strtonumber(chk_date_da.substring(chk_date_i+1));
    chk_date_td=new Date(chk_date_y,chk_date_m-1,chk_date_d);
    if(chk_date_td.getFullYear()!=chk_date_y)return(false);
    if(chk_date_td.getMonth()+1!=chk_date_m)return(false);
    if(chk_date_td.getDate()!=chk_date_d)return(false);
    if(chk_date_min==null && chk_date_max==null)return true;
    if(chk_date_min==null && chk_date_max!=null)return(chk_date_td.getTime()<=chk_date_max.getTime());
    if(chk_date_min!=null && chk_date_max==null)return(chk_date_td.getTime()>=chk_date_min.getTime());
    //if(chk_date_td.getTime()<chk_date_min.getTime())return false;
    //if(chk_date_td.getTime()>chk_date_max.getTime())return false;
    return true;
  }

function strtonumber(strtonumber_da){
    strtonumber_i=parseInt(strtonumber_da,10);
    return(isNaN(strtonumber_i)?0:strtonumber_i);
  }



function isDate(o){

     if(o.value.length >0 &&!chk_date(o.value,"",""))
		{
			alert("请输入正确的日期(YYYY-MM-DD)!")
			o.value="";
			o.focus();
			return false;
		}

	return true;

  }



function isNum(o) {
	var s = o.value
	var num="0123456789."
	var len = s.length
	for(i=0;i<len;i++)
	{
		if(num.indexOf(s.charAt(i))<0)
		{
			alert("只能输入数字")
			o.value=""
			o.focus();
			return false
		}
	}
	return true
}


function isInteger(o,max) {
	var s = o.value
	var num="0123456789"
	var len = s.length
	for(i=0;i<len;i++)
	{
		if(num.indexOf(s.charAt(i))<0)
		{
			alert("只能输的0-9的数字")
			o.value=""
			o.focus();
			return false
		}
	}

	if(s>max){
	alert("请输入不大于"+max+"的数字");
		o.value=""
			o.focus();
			return false
	}
	return true
}
function isInteger(o) {
	var s = o.value
	var num="0123456789"
	var len = s.length
	for(i=0;i<len;i++)
	{
		if(num.indexOf(s.charAt(i))<0)
		{
			alert("请输入整型数字")
			o.value=""
			o.focus();
			return false
		}
	}


	return true
}

function checkLength(o,len) {
	var s = String(o.value);
	var _len = s.getBytes();

		if(_len>len)
		{
			alert("文本长度超出允许值，当前文本最大长度为"+len+"[中文长度为2]。");
			o.value=getLeftChars(o,len);
			o.focus();
			return false;
		}


	return true;
}


function getLeftChars(varField,limit_len) {
    var i = 0;
    var j=0;
	var v="";
    for (i = 0; i< varField.value.length; i++) {

     if (varField.value.charCodeAt(i) > 127 || varField.value.charCodeAt(i) == 94) {
        j=j+2;
        }
     else {
        j=j+1
     }
     if(j>limit_len)break;
	 v=v+varField.value.substring(i,i+1);
    }
    return v;
}



function isEmpty(s)
{
     if(s==null||s.Trim().length==0) return true;
	 return false;
}



function FormatInteger(s)
{
        var i = 0;
		try{
        if(s != null && s.Trim().length != 0)
            i = parseInt(s);
        }
		catch(e){}

		return i;
}
function FormatFloat(s)
{
        var f = 0;
		try{
        if(s != null && s.Trim().length != 0)
            f = parseFloat(s);
        }
		catch(e){}
        return f;
}



function FormatNumber(srcStr,nAfterDot){
  var srcStr,nAfterDot;
  var resultStr,nTen;
  srcStr = ""+srcStr+"";
  strLen = srcStr.length;
  dotPos = srcStr.indexOf(".",0);
  if (dotPos == -1){
    resultStr = srcStr+".";
    for (i=0;i<nAfterDot;i++){
      resultStr = resultStr+"0";
    }
  }
  else{
    if ((strLen - dotPos - 1) >= nAfterDot){
      nAfter = dotPos + nAfterDot + 1;
      nTen =1;
      for(j=0;j<nAfterDot;j++){
        nTen = nTen*10;
      }
      resultStr = Math.round(parseFloat(srcStr)*nTen)/nTen;
    }
    else{
      resultStr = srcStr;
      for (i=0;i<(nAfterDot - strLen + dotPos + 1);i++){
        resultStr = resultStr+"0";
      }

    }
  }

 return resultStr;

}



function FormatString(d)
 {
       return String(d);
 }

function DataLength(s)
{       s = FormatString(s);
        if(!isEmpty(s))
            return s.length;
        else
            return 0;
}

function LeftTrim(s)
{
     for(; s.charAt(0) == ' '; s = s.substring(1));
         return s;
}

function RightTrim(s)
{
    for(var i = s.length; s.charAt(i - 1) == ' '; i--)
         s = s.substring(0, i - 1);
    return s;
}

function Left(s, i)
{
    if(isEmpty(s))
          return "";
    if(i > s.length)
         i = s.length;
    return s.substring(0, i);
}

function Right(s, i)
{
    if(isEmpty(s))
	    return "";
	if(i > s.length)
        i = s.length;
	return s.substring(s.length - i);
}

function Middle(s, i,  j)
{
     s = s.substring(s.length - ((s.length - i) + 1));
     return s.substring(0, j);
}

function Instr( i,  s,  s1)
{
     if(i == 0)
          i = 1;
     return 1 + s.indexOf(s1, i - 1);
}

function getSubArray(oldarray,newarray) {
	   var ret =new Array();
	   for(var i=0;i<oldarray.length;i++){
	       if(!inArray(oldarray[i],newarray)){
		       ret[ret.length] = oldarray[i];
		   }
	   }
       return ret;
    }

function getSameValue(array){
	   for(var i=0;i<array.length;i++){
	       if(getValueCount(array,array[i])>1){
		      return true;
		   }
	   }
       return false;
}



function getValueArray(array,value) {
	   var ret =new Array();
	   for(var i=0;i<array.length;i++){
	       if(array[i]==value){
		       ret[ret.length] = array[i];
		   }
	   }
       return ret;
}

function getValueCount(array,value) {
	   var ret = 0;
	   for(var i=0;i<array.length;i++){

	       if(array[i]==value){
		       ret++;
		   }
	   }
       return ret;
}


function array2String(array,chr) {
	   var ret ="";
	   for(var i=0;i<array.length;i++){
		       ret+= array[i]+chr;
	   }
       return ret;
 }


function inArray(str,array){
	if(array!=null&&array.length>0){
	for(i=0;i<array.length;i++){
	  if(str==array[i]){

	  return true;
	  }
	}

	}
	return false;
}


function getOptions(array,value){
	var ret ="";
	//alert(array+":"+value);
	if(array!=null&&array.length>0){
	for(i=0;i<array.length;i++){
	  if(value==array[i][0]){
           ret+="<option value='"+array[i][0]+"' selected>"+array[i][1]+"</option>\n";
	  }
	  else{
	       ret+="<option value='"+array[i][0]+"'>"+array[i][1]+"</option>\n";
	  }
	}

	}
	return ret;
}


function getOptionValue(array,value){
	var ret ="";
	if(array!=null&&array.length>0){
	for(i=0;i<array.length;i++){
	  if(value==array[i][0]){
           return array[i][1];
	  }

	}

	}
	return ret;
}




function selected(value,sel)
{
       for(var i=0;i<sel.length;i++)
       {
              if(sel.options[i].value == value)sel.options[i].selected = true ;
       }
}

function selectedValue(sel)
{
       for(var i=0;i<sel.length;i++)
       {
              if(sel.options[i].selected == true)return sel.options[i].text;
       }
       return "";
}
function clearEvent()
{
       return;
}

/********************************** Empty **************************************/
/**
*校验字符串是否为空
*返回值：
*如果不为空，定义校验通过，返回true
*如果为空，校验不通过，返回false               参考提示信息：输入域不能为空！
*/
function checkIsNotEmpty(str)
{
    if(str.Trim() == "")
        return false;
    else
        return true;
}//~~~
/*--------------------------------- Empty --------------------------------------*/
/********************************** Integer *************************************/
/**
*校验字符串是否为整型
*返回值：
*如果为空，定义校验通过，      返回true
*如果字串全部为数字，校验通过，返回true
*如果校验不通过，              返回false     参考提示信息：输入域必须为数字！
*/
function checkIsInteger(str)
{
    //如果为空，则通过校验
    if(str == "")
        return true;
    if(/^(\-?)(\d+)$/.test(str))
        return true;
    else
        return false;
}//~~~
/**
*校验整型最小值
*str：要校验的串。  val：比较的值
*
*返回值：
*如果为空，定义校验通过，                返回true
*如果满足条件，大于等于给定值，校验通过，返回true
*如果小于给定值，                        返回false              参考提示信息：输入域不能小于给定值！
*/
function checkIntegerMinValue(str,val)
{
    //如果为空，则通过校验
    if(str == "")
        return true;
    if(typeof(val) != "string")
        val = val + "";
    if(checkIsInteger(str) == true)
    {
        if(parseInt(str,10)>=parseInt(val,10))
            return true;
        else
            return false;
    }
    else
        return false;
}//~~~
/**
*校验整型最大值
*str：要校验的串。  val：比较的值
*
*返回值：
*如果为空，定义校验通过，                返回true
*如果满足条件，小于等于给定值，校验通过，返回true
*如果大于给定值，                        返回false       参考提示信息：输入值不能大于给定值！
*/
function checkIntegerMaxValue(str,val)
{
    //如果为空，则通过校验
    if(str == "")
        return true;
    if(typeof(val) != "string")
        val = val + "";
    if(checkIsInteger(str) == true)
    {
        if(parseInt(str,10)<=parseInt(val,10))
            return true;
        else
            return false;
    }
    else
        return false;
}//~~~
/**
*校验整型是否为非负数
*str：要校验的串。
*
*返回值：
*如果为空，定义校验通过，返回true
*如果非负数，            返回true
*如果是负数，            返回false               参考提示信息：输入值不能是负数！
*/
function isNotNegativeInteger(str)
{
    //如果为空，则通过校验
    if(str == "")
        return true;
    if(checkIsInteger(str) == true)
    {
        if(parseInt(str,10) < 0)
            return false;
        else
            return true;
    }
    else
        return false;
}//~~~
/*--------------------------------- Integer --------------------------------------*/
/********************************** Double ****************************************/
/**
*校验字符串是否为浮点型
*返回值：
*如果为空，定义校验通过，      返回true
*如果字串为浮点型，校验通过，  返回true
*如果校验不通过，              返回false     参考提示信息：输入域不是合法的浮点数！
*/
function checkIsDouble(str)
{
    //如果为空，则通过校验
    if(str == "")
        return true;
    //如果是整数，则校验整数的有效性
    if(str.indexOf(".") == -1)
    {
        if(checkIsInteger(str) == true)
            return true;
        else
            return false;
    }
    else
    {
        if(/^(\-?)(\d+)(.{1})(\d+)$/g.test(str))
            return true;
        else
            return false;
    }
}//~~~
/**
*校验浮点型最小值
*str：要校验的串。  val：比较的值
*
*返回值：
*如果为空，定义校验通过，                返回true
*如果满足条件，大于等于给定值，校验通过，返回true
*如果小于给定值，                        返回false              参考提示信息：输入域不能小于给定值！
*/
function checkDoubleMinValue(str,val)
{
    //如果为空，则通过校验
    if(str == "")
        return true;
    if(typeof(val) != "string")
        val = val + "";
    if(checkIsDouble(str) == true)
    {
        if(parseFloat(str)>=parseFloat(val))
            return true;
        else
            return false;
    }
    else
        return false;
}//~~~
/**
*校验浮点型最大值
*str：要校验的串。  val：比较的值
*
*返回值：
*如果为空，定义校验通过，                返回true
*如果满足条件，小于等于给定值，校验通过，返回true
*如果大于给定值，                        返回false       参考提示信息：输入值不能大于给定值！
*/
function checkDoubleMaxValue(str,val)
{
    //如果为空，则通过校验
    if(str == "")
        return true;
    if(typeof(val) != "string")
        val = val + "";
    if(checkIsDouble(str) == true)
    {
        if(parseFloat(str)<=parseFloat(val))
            return true;
        else
            return false;
    }
    else
        return false;
}//~~~
/**
*校验浮点型是否为非负数
*str：要校验的串。
*
*返回值：
*如果为空，定义校验通过，返回true
*如果非负数，            返回true
*如果是负数，            返回false               参考提示信息：输入值不能是负数！
*/
function isNotNegativeDouble(str)
{
    //如果为空，则通过校验
    if(str == "")
        return true;
    if(checkIsDouble(str) == true)
    {
        if(parseFloat(str) < 0)
            return false;
        else
            return true;
    }
    else
        return false;
}//~~~
/*--------------------------------- Double ---------------------------------------*/
/********************************** date ******************************************/
/**
*校验字符串是否为日期型
*返回值：
*如果为空，定义校验通过，           返回true
*如果字串为日期型，校验通过，       返回true
*如果日期不合法，                   返回false    参考提示信息：输入域的时间不合法！（yyyy-MM-dd）
*/
function checkIsValidDate(str)
{
    //如果为空，则通过校验
    if(str == "")
        return true;
    var pattern = /^((\d{4})|(\d{2}))-(\d{1,2})-(\d{1,2})$/g;
    if(!pattern.test(str))
        return false;
    var arrDate = str.split("-");
    if(parseInt(arrDate[0],10) < 100)
        arrDate[0] = 2000 + parseInt(arrDate[0],10) + "";
    var date =  new Date(arrDate[0],(parseInt(arrDate[1],10) -1)+"",arrDate[2]);
    if(date.getYear() == arrDate[0]
       && date.getMonth() == (parseInt(arrDate[1],10) -1)+""
       && date.getDate() == arrDate[2])
        return true;
    else
        return false;
}//~~~
/**
*校验两个日期的先后
*返回值：
*如果其中有一个日期为空，校验通过,          返回true
*如果起始日期早于等于终止日期，校验通过，   返回true
*如果起始日期晚于终止日期，                 返回false    参考提示信息： 起始日期不能晚于结束日期。
*/
function checkDateEarlier(strStart,strEnd)
{
    if(checkIsValidDate(strStart) == false || checkIsValidDate(strEnd) == false)
        return false;
    //如果有一个输入为空，则通过检验
    if (( strStart == "" ) || ( strEnd == "" ))
        return true;
    var arr1 = strStart.split("-");
    var arr2 = strEnd.split("-");
    var date1 = new Date(arr1[0],parseInt(arr1[1].replace(/^0/,""),10) - 1,arr1[2]);
    var date2 = new Date(arr2[0],parseInt(arr2[1].replace(/^0/,""),10) - 1,arr2[2]);
    if(arr1[1].length == 1)
        arr1[1] = "0" + arr1[1];
    if(arr1[2].length == 1)
        arr1[2] = "0" + arr1[2];
    if(arr2[1].length == 1)
        arr2[1] = "0" + arr2[1];
    if(arr2[2].length == 1)
        arr2[2]="0" + arr2[2];
    var d1 = arr1[0] + arr1[1] + arr1[2];
    var d2 = arr2[0] + arr2[1] + arr2[2];
    if(parseInt(d1,10) > parseInt(d2,10))
       return false;
    else
       return true;
}//~~~
/*--------------------------------- date -----------------------------------------*/
/********************************** email *****************************************/
/**
*校验字符串是否为email型
*返回值：
*如果为空，定义校验通过，           返回true
*如果字串为email型，校验通过，      返回true
*如果email不合法，                  返回false    参考提示信息：Email的格式不正確！
*/
function checkEmail(str)
{
    //如果为空，则通过校验
    if(str == "")
        return true;
    if (str.charAt(0) == "." || str.charAt(0) == "@" || str.indexOf('@', 0) == -1
        || str.indexOf('.', 0) == -1 || str.lastIndexOf("@") == str.length-1 || str.lastIndexOf(".") == str.length-1)
        return false;
    else
        return true;
}//~~~
/*--------------------------------- email ----------------------------------------*/
/********************************** chinese ***************************************/
/**
*校验字符串是否为中文
*返回值：
*如果为空，定义校验通过，           返回true
*如果字串为中文，校验通过，         返回true
*如果字串为非中文，             返回false    参考提示信息：必须为中文！
*/
function checkIsChinese(str)
{
    //如果值为空，通过校验
    if (str == "")
        return true;
    var pattern = /^([\u4E00-\u9FA5]|[\uFE30-\uFFA0])*$/gi;
    if (pattern.test(str))
        return true;
    else
        return false;
}//~~~
/**
 * 计算字符串的长度，一个汉字两个字符
 */
String.prototype.realLength = function()
{
  return this.replace(/[^\x00-\xff]/g,"**").length;
}
/*--------------------------------- chinese --------------------------------------*/
/********************************** mask ***************************************/
/**
*校验字符串是否符合自定义正则表达式
*str 要校验的字串  pat 自定义的正则表达式
*返回值：
*如果为空，定义校验通过，           返回true
*如果字串符合，校验通过，           返回true
*如果字串不符合，                   返回false    参考提示信息：必须满足***模式
*/
function checkMask(str,pat)
{
    //如果值为空，通过校验
    if (str == "")
        return true;
    var pattern = new RegExp(pat,"gi")
    if (pattern.test(str))
        return true;
    else
        return false;
}//~~~
/*--------------------------------- mask --------------------------------------*/
/********************************** file ***************************************/
/**
 * added by LxcJie 2004.6.25
 * 得到文件的后缀名
 * oFile为file控件对象
 */
function getFilePostfix(oFile)
{
    if(oFile == null)
        return null;
    var pattern = /(.*)\.(.*)$/gi;
    if(typeof(oFile) == "object")
    {
        if(oFile.value == null || oFile.value == "")
            return null;
        var arr = pattern.exec(oFile.value);
        return RegExp.$2;
    }
    else if(typeof(oFile) == "string")
    {
        var arr = pattern.exec(oFile);
        return RegExp.$2;
    }
    else
        return null;
}//~~~


/**
 * Method opnwin.
 * <br>
 * 打开指定宽度和高度的窗w
 */
   function opnwin(url,winNam,width,height)
  {
    xpos=0; ypos=0;
    if ((parseInt(navigator.appVersion) >= 4 )){
      xpos = (screen.width - width)/2;
      ypos = (screen.height - height)/2;
    }
    prm = "width=" + width + ","+ "height=" + height + ","+ "location=0," + "menubar=0,"
      + "resizable=1,"+ "scrollbars=0,"+ "status=0," + "titlebar=0,"+ "toolbar=0,"+ "hotkeys=0,"
      + "screenx=" + xpos + "," //仅适用于Netscape
      + "screeny=" + ypos + "," //仅适用于Netscape
      + "left=" + xpos + "," //IE
      + "top=" + ypos; //IE
    window.open(url,winNam,prm);
  }

function DateDiff(strInterval, dtStart, dtEnd) {
 var dtStart = new Date(dtStart);
 if (isNaN(dtStart)) dtStart = new Date();
 var dtEnd = new Date(dtEnd);
 if (isNaN(dtEnd)) dtEnd = new Date();
 switch (strInterval) {
  case "s":return parseInt((dtEnd - dtStart) / 1000);
  case "n":return parseInt((dtEnd - dtStart) / 60000);
  case "h":return parseInt((dtEnd - dtStart) / 3600000);
  case "d":return parseInt((dtEnd - dtStart) / 86400000);
  case "w":return parseInt((dtEnd - dtStart) / (86400000 * 7));
  case "m":return (dtEnd.getMonth()+1)+((dtEnd.getFullYear()-dtStart.getFullYear())*12) - (dtStart.getMonth()+1);
  case "q":
   var y =dtEnd.getFullYear() - dtStart.getFullYear();
   var _q = y*4;
   var q=getQuarter(dtEnd.getMonth())-getQuarter(dtStart.getMonth())+_q;
   return q;
  case "y":return dtEnd.getFullYear() - dtStart.getFullYear();
 }
}

function strtonumber(strtonumber_da){
    strtonumber_i=parseInt(strtonumber_da,10);
    return(isNaN(strtonumber_i)?0:strtonumber_i);
  }

function getQuarter(month){
    if(month>=1&&month<=3){
        return 1;
    }
    if(month>=4&&month<=6){
        return 2;
    }
    if(month>=7&&month<=9){
        return 3;
    }
    if(month>=10&&month<=12){
        return 4;
    }

}
function strToDate(dateStr) {
 while(dateStr.indexOf(" ")>0){dateStr=dateStr.replace(" ","");}
    for(i=0;i<dateStr.length;i++){
      if("0123456789-".indexOf(dateStr.substring(i,i+1))<0)return null;
    }

    if(dateStr.length==0){
     return null;
    }

    i=dateStr.indexOf("-");
    if(i<0)return null;
    y=strtonumber(dateStr.substring(0,i));
    dateStr=dateStr.substring(i+1);
    i=dateStr.indexOf("-");
    if(i<0)return null;
    m=strtonumber(dateStr.substring(0,i));
    d=strtonumber(dateStr.substring(i+1));
    return new Date(y,m,d);
}