/***
 *
 *  some common js function
 *  author: lnj
 *  created date : 2005-8-26
 *
***/



/*
==================================================================
LTrim(string):去除左边的空格
==================================================================
*/

function LTrim(str)
{
    var whitespace = new String(" \t\n\r");
    var s = new String(str);

    if (whitespace.indexOf(s.charAt(0)) != -1)
    {
        var j=0, i = s.length;
        while (j < i && whitespace.indexOf(s.charAt(j)) != -1)
        {
            j++;
        }
        s = s.substring(j, i);
    }
    return s;
}

 /*
 *验证数字浮点
 */
function checkIsFloat(strs) 
{ 
   var str = strs.value;
    if(str=='') 
         return true; 
   if(/^(-?\d+)(\.\d+)?$/.test(str)) 
   {
    	return true;
    } else{
   		strs.focus(); 
        alert("请输入数字!");
         } 
 }
 //整数
 function checkIsInteger(strs) 
{ 
   var str = strs.value;
    if(str== '') 
         return true; 
      if(/^(\-?)(\d+)$/.test(str)) 
   {
    	return true;
    } else{
   		strs.focus(); 
        alert("请输入整数!");
         } 
 }

/*
==================================================================
RTrim(string):代表去除右边的空格
==================================================================
*/

function RTrim(str)
{
    var whitespace = new String(" \t\n\r");
    var s = new String(str);
 
    if (whitespace.indexOf(s.charAt(s.length-1)) != -1)
    {
        var i = s.length - 1;
        while (i >= 0 && whitespace.indexOf(s.charAt(i)) != -1)
        {
            i--;
        }
        s = s.substring(0, i+1);
    }
    return s;
}

 

/*
==================================================================
Trim(string):去除两边的空格
==================================================================
*/

function Trim(str)
{
    return RTrim(LTrim(str));
}




/*
================================================================================
XMLEncode(string):转化为XML形式
================================================================================
*/

function XMLEncode(str)
{
       str=Trim(str);
       str=str.replace("&","&amp;");
       str=str.replace("<","&lt;");
       str=str.replace(">","&gt;");
       str=str.replace("?","&apos;");
       str=str.replace("\"","&quot;");
       return str;
}

 


/*
================================================================================
判断是否为空
================================================================================
*/
function isEmpty(obj)
{
    obj=document.getElementsByName(obj).item(0);
    if(Trim(obj.value)=="")
    {
        alert("是否要为空");        
        if(obj.disabled==false && obj.readOnly==false)
        {
            obj.focus();
            
        }
        return true;
    }
    
    return false;
}

 

/*

IsInt(string,string,int or string):(测试字符串,+ or - or empty,empty or 0)

功能：判断是否为整数、正整数、负整数、正整数+0、负整数+0

*/


function isInt(objStr,sign,zero)
{
    var reg;    
    var bolzero;    
    
    if(Trim(objStr)=="")
    {
        return false;
    }
    else
    {
        objStr=objStr.toString();
    }    

    if((sign==null)||(Trim(sign)==""))
    {
        sign="+-";
    }
    
    if((zero==null)||(Trim(zero)==""))
    {
        bolzero=false;
    }
    else
    {
        zero=zero.toString();
        if(zero=="0")
        {
            bolzero=true;
        }
        else
        {
            alert("检查是否包含0参数，只可为(空、0)");

        }
    }
    
    switch(sign)
    {
        case "+-":
            //整数
            reg=/(^-?|^\+?)\d+$/;            
            break;
            
        case "+": 
            if(!bolzero)           
            {
                //正整数
                reg=/^\+?[0-9]*[1-9][0-9]*$/;
            }
            else
            {
                //正整数+0
                //reg=/^\+?\d+$/;
                reg=/^\+?[0-9]*[0-9][0-9]*$/;
            }
            break;
            
        case "-":
            if(!bolzero)
            {
                 //负整数
                reg=/^-[0-9]*[1-9][0-9]*$/;
            }
            else
            {
                //负整数+0
                //reg=/^-\d+$/;
                reg=/^-[0-9]*[0-9][0-9]*$/;
            }            
            break;

        default:
            alert("检查符号参数，只可为(空、+、-)");
            return false;
            break;
    }
    
    var r=objStr.match(reg);
    if(r==null)
    {
        return false;
    }
    else
    {        
        return true;     
    }
}

 

/*

IsFloat(string,string,int or string):(测试字符串,+ or - or empty,empty or 0)

功能：判断是否为浮点数、正浮点数、负浮点数、正浮点数+0、负浮点数+0

*/


function isFloat(objStr,sign,zero)
{
    var reg;    
    var bolzero;    

    if(Trim(objStr)=="")
    {
        return false;
    }
    else
    {
        objStr=objStr.toString();
    }    
    
    if((sign==null)||(Trim(sign)==""))
    {
        sign="+-";
    }

    if((zero==null)||(Trim(zero)==""))
    {
        bolzero=false;
    }
    else
    {
        zero=zero.toString();
        if(zero=="0")
        {
            bolzero=true;
        }
        else
        {
            alert("检查是否包含0参数，只可为(空、0)");
        }
    }

    switch(sign)
    {
        case "+-":
            //???
            reg=/^((-?|\+?)\d+)(\.\d+)?$/;
            break;

        case "+": 
            if(!bolzero)           
            {
                //????
                reg=/^\+?(([0-9]+\.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*\.[0-9]+)|([0-9]*[1-9][0-9]*))$/;
            }
            else
            {
                //????+0
                reg=/^\+?\d+(\.\d+)?$/;
            }
            break;

        case "-":
            if(!bolzero)
            {
                //????
                reg=/^-(([0-9]+\.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*\.[0-9]+)|([0-9]*[1-9][0-9]*))$/;
            }
            else
            {
                //????+0
                reg=/^((-\d+(\.\d+)?)|(0+(\.0+)?))$/;
            }            
            break;

        default:
            alert("检查符号参数，只可为(空、+、-)");
            return false;
            break;
    }
    
    var r=objStr.match(reg);
    if(r==null)
    {
        return false;
    }
    else
    {        
        return true;     
    }
}


/*
isChinese(string)
判断是否为中文
*/
function isChinese(str)
{
	var ci=/[\u4e00-\u9fa5]/
	if(ci.test(str))
	{
		return true;
	}
	else
	{
		return false;
	}
}


/*
用途：检查输入对象的值是否符合E-Mail格式
输入：str 输入的字符串
返回：如果通过验证返回true,否则返回false
 
*/
function isEmail(str)
{
	var ma=/\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*/
	if(ma.test(str))
	{	
		return true;
	}
	else
	{
		alert("您输入的Email地址格式不正确！");
		return false;
	}
}


/*
isFile(string,string) : ?????????:?xls?jpg?
?????????
*/
function isFile(input, filter)
{
	return new RegExp("^.+\.(?=EXT)(EXT)$".replace(/EXT/g, filter.split(/\s*,\s*/).join("|")), "gi").test(input);
}



/*
isFullDateTime(string) : yyyy-mm-dd hh:mm:ss
*/
function isFullDateTime(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 false; 
	var d= new Date(r[1], r[3]-1,r[4],r[5],r[6],r[7]); 

	var year = d.getFullYear();
	var month = d.getMonth()+1;
	if (month<10) month="0" + month; 
	var date = d.getDate();
	if (date<10) date="0" + date;
	
	var hour=d.getHours();
	if (hour<10) hour="0" + hour;
	var min=d.getMinutes();
	if (min<10) min="0" + min;
	var sec=d.getSeconds();
	if (sec<10) sec="0" + sec;
		
	var newStr=year+r[2]+month+r[2]+date+" "+hour+":"+min+":"+sec;
	return newStr==str;
}

/*
isFullDate(string) : yyyy-mm-dd
*/
function isFullDate(str){
	var reg = /^(\d{1,4})(-|\/)(\d{1,2})\2(\d{1,2})$/; 
	var r = str.match(reg); 
	if(r==null)return false; 
	var d= new Date(r[1], r[3]-1,r[4]); 
	
	var year = d.getFullYear();
	var month = d.getMonth()+1;
	if (month<10) month="0" + month; 
	var date = d.getDate();
	if (date<10) date="0" + date;

	var newStr=year+r[2]+month+r[2]+date;
	return newStr==str;
}

/*
用途：检查输入手机号码是否正确
输入：
s：字符串
返回：
如果通过验证返回true,否则返回false
 
*/
function checkMobile( str ){
var regu =/^[1]{3,5}[0-9]{9}$/;
var re = new RegExp(regu);
if (re.test(str)) {
return true;
}else{
return false;
}
}
/*
用途：检查输入字符串是否只由英文字母和数字和下划线组成
输入：
s：字符串
返回：
如果通过验证返回true,否则返回false
 
*/
function isNumberOr_Letter( s ){//判断是否是数字或字母
 
var regu = "^[0-9a-zA-Z\_]+$";
var re = new RegExp(regu);
if (re.test(s)) {
return true;
}else{
return false;
}
}
/*
用途：检查输入字符串是否只由英文字母和数字组成
输入：
s：字符串
返回：
如果通过验证返回true,否则返回false
 
*/
function isNumberOrLetter( s ){//判断是否是数字或字母
 
var regu = "^[0-9a-zA-Z]+$";
var re = new RegExp(regu);
if (re.test(s)) {
return true;
}else{
return false;
}
}

/*
用途：检查输入字符串的长度
输入：
value
maxsize:整形
minsize:整形
返回：
如果通过验证返回true,否则返回false
*/
function validateSize(value,maxsize,minsize)
{
	var len ;
	if (value == null || value == "")
	{
		len = 0;
	}else{
			len = 0;
			for(var i = 0;i < value.length; i++)
			{
			if(value.charCodeAt(i)<255){
			len += 1;
			}else
				{
					len += 2;
				}							
			}
		} 
	if ( len > maxsize || len < minsize )
	{
		alert("您输入的长度不正确！");
		return false;
	}
	return true;
}
/*
limitLength(string,long) : ?????????
*/
function limitLength(id,len)
{
	var obj=eval("document."+id);
	var val=obj.value;
	if (val.length>len && len>0) obj.value=val.substring(0,len-1);
}


/*
count the interval days
*/
function CountDays(bDate,eDate) {
	var days=0; 
	for (i=0;i<eDate.getMonth();i++){
		if (i==0 || i==2 || i==4 || i==6 || i==7 || i==9 || i==11) 
			days=days+31; 
		else if (i==3 || i==5 || i==8 || i==10) 
			days=days+30; 
		else if (i==1) 
			if (eDate.getYear()%4==0) 
				days = days+29 ;
			else 
				days=days+28 ;
	}
	
	for (i=bDate.getYear();i<=eDate.getYear()-1;i++){
		if (bDate.getYear()%4==0)  
			days = days + 366;
		else 
			days = days + 365;
	}
	
	
	for (i=0;i<bDate.getMonth();i++){
		if (i==0 || i==2 || i==4 || i==6 || i==7 || i==9 || i==11) 
			days=days-31; 
		else if (i==3 || i==5 || i==8 || i==10) 
			days=days-30; 
		else if (i==1) 
			if (eDate.getYear()%4==0) 
				days = days-29 ;
			else 
				days=days-28 ;
	}
	
	days=days + eDate.getDate()-bDate.getDate()+1;
	return days;
}