/*

       名字：Common.js

       功能：通用JavaScript脚本函数库

       包括：

                     1.Trim(str)－－去除字符串两边的空格

                     2.XMLEncode(str)－－对字符串进行XML编码

            3.ShowLabel(str,str)－－鼠标提示功能（显示字符，提示字符）

                     4.IsEmpty(obj)－－验证输入框是否为空

                     5.IsInt(objStr,sign,zero)－－验证是否为整数

                     6.IsFloat(objStr,sign,zero)－－验证是否为浮点数

                     7.IsEnLetter(objStr,size)－－验证是否为26个字母

 

    作者：申旺

    日期：2004/04/14

*/

 

/*

==================================================================

字符串操作

Trim(string):去除字符串两边的空格

==================================================================

*/

 

/*

==================================================================

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;

}

 

/*

==================================================================

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();

        }

    }

}

 

/*

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;     

    }

}


//函数名：chkdate
//功能介绍：检查是否为日期
//参数说明：要检查的字符串
//返回值：0：不是日期  1：是日期
function chkDate(datestr)
{
var lthdatestr
if (datestr != "")
lthdatestr= datestr.length ;
else
lthdatestr=0;

var tmpy="";
var tmpm="";
var tmpd="";
//var datestr;
var status;
status=0;
if ( lthdatestr== 0)
return 0


for (i=0;i<lthdatestr;i++)
{ if (datestr.charAt(i)== '-')
{
status++;
}
if (status>2)
{
//alert("Invalid format of date!");
return 0;
}
if ((status==0) && (datestr.charAt(i)!='-'))
{
tmpy=tmpy+datestr.charAt(i)
}
if ((status==1) && (datestr.charAt(i)!='-'))
{
tmpm=tmpm+datestr.charAt(i)
}
if ((status==2) && (datestr.charAt(i)!='-'))
{
tmpd=tmpd+datestr.charAt(i)
}

}
year=new String (tmpy);
month=new String (tmpm);
day=new String (tmpd)
//tempdate= new String (year+month+day);
//alert(tempdate);
if ((tmpy.length!=4) || (tmpm.length>2) || (tmpd.length>2))
{
//alert("Invalid format of date!");
return 0;
}
if (!((1<=month) && (12>=month) && (31>=day) && (1<=day)) )
{
//alert ("Invalid month or day!");
return 0;
}
if (!((year % 4)==0) && (month==2) && (day==29))
{
//alert ("This is not a leap year!");
return 0;
}
if ((month<=7) && ((month % 2)==0) && (day>=31))
{
//alert ("This month is a small month!");
return 0;

}
if ((month>=8) && ((month % 2)==1) && (day>=31))
{
//alert ("This month is a small month!");
return 0;
}
if ((month==2) && (day==30))
{
//alert("The Febryary never has this day!");
return 0;
}

return 1;
}


function isEmail(str){
		var Emailtest=/^\w+((-\w+)|(\.\w+))*\@[A-Za-z0-9]+((\.|-)[A-Za-z0-9]+)*\.[A-Za-z0-9]+$/;
		return Emailtest.test(Trim(str));
}


function scrollDiv()
{
		var srcDiv		=document.getElementById('div__body');
		var destDiv		=document.getElementById('div__label');
		if (srcDiv!=null && destDiv!=null)
			destDiv.scrollLeft	=srcDiv.scrollLeft;
		//document.getElementById('div__label').scrollLeft = document.getElementById('div__body').scrollLeft;
}


function getParameter( param )
{
    var re = new RegExp(".*[?&]"+param+"=([^&]*)");
    var matches = re.exec( document.location.href.toString() ) ;
    return matches != null && matches.length > 0 ? matches[1] : null;
}


function getDocumentClientHeight()
{
    return document.body.clientHeight;
}

function getDocumentClientWidth()
{
    return document.body.clientWidth;
}


// Do not use the two functions below to get width and height of document client area
// In IE, the value will not include scroll bar; In FF and Safari, the value will include scrollbar
function getDocumentHeight()
{
	if (window.innerHeight)
        return window.innerHeight;
	else 
        return document.body.clientHeight;
}
function getDocumentWidth()
{
	if (window.innerWidth)
		return window.innerWidth;
	else  
		return document.body.clientWidth;
}


function getEvent(evnt)
{
    return (typeof(evnt)!='undefined' && evnt) ? evnt : ((typeof(event)!='undefined' && event) ? event : null);
}


function getEventKeypress(evnt)
{
    evnt = getEvent(evnt);

    return (evnt.which) ? evnt.which : evnt.keyCode;

}

function encode(text)
{
    return escape(text).replace(/\+/g, '%2B');
}


function openWindow(url,width,height){
		window.open(url,"","toolbar=no,location=no,status=no,menubar=no,scrollbars=yes,resizable=yes,width="+width+",height="+height);
}



function isRadioChecked(obj){

		if(obj==null){
			return false;
		}


		//----------------------------------------------------
		if(obj.type=='radio'){
			if(!obj.checked){
				return false;
			}
		}
		
		//----------------------------------------------------
		//obj list
		else{
			
			for(var i=0;i<obj.length;i++){
				if(obj[i].checked){
					return true;
				}
			}			
			return false;
		}
		
		return true;
	}
	
	
	
	function getRadioSelectedIndex(obj){
			for(var i=0;i<obj.length;i++){
				if(obj[i].checked){
					return i;
				}
			}			

	}
		
	
	function getRadioValue(obj){

		if(obj==null){
			return "";
		}


		//----------------------------------------------------
		if(obj.type=='radio'){
			return obj.value();
		}
		
		//----------------------------------------------------
		//obj list
		else{
			for(var i=0;i<obj.length;i++){
				if(obj[i].checked){
					return obj[i].value;
				}
			}			
		}

	}	