﻿/**
    名字：Common.js
    功能：常用JavaScript脚本函数库
    作者：静海明月 
*/
/*

/*********************************************
1. LTrim(str)去除str左边的空白字符(空格，换行，回车)
2. RTrim(str)去除ste右边的空白字符(空格，换行，回车)
3. Trim(str)去除ste两边的空白字符(空格，换行，回车)
*********************************************/

function LTrim(str){
	return str.replace(/^[ \t\n\r]+/g, "");
}

function RTrim(str){
	return str.replace(/[ \t\n\r]+$/g, "");
}

function Trim(str){
	return RTrim(LTrim(str));
}

/******************** 
函数名称：StrLenthByByte 
函数功能：计算字符串的字节长度，即英文算一个，中文算两个字节 
函数参数：str,为需要计算长度的字符串 
********************/ 
function StrLenthByByte(str){
	var len;
	var i;
	len = 0;
	for (i = 0; i < str.length; i++) {
		if (str.charCodeAt(i) > 255) 
			len += 2;
		else 
			len++;
	}
	return len;
}
/******************** 
函数名称：IsEmailAddress 
函数功能：检查Email邮件地址的合法性，合法返回true,反之,返回false 
函数参数：obj,需要检查的Email邮件地址 
********************/ 
function IsEmailAddress(obj){

	var pattern = /^[a-zA-Z0-9\-]+@[a-zA-Z0-9\-\.]+\.([a-zA-Z]{2,3})$/;
	if (pattern.test(obj)) {
		return true;
	}
	else {
		return false;
	}
}
/******************** 
函数名称：PopWindow 
函数功能：弹出新窗口 
函数参数：pageUrl,新窗口地址;WinWidth,窗口的宽；WinHeight,窗口的高 
********************/ 
function PopWindow(pageUrl, WinWidth, WinHeight){
	var popwin = window.open(pageUrl, "PopWin", "top=10,left=10,scrollbars=yes,toolbar=no,location=no,directories=no,status=no,menubar=no,resizable=yes,width=" + WinWidth + ",height=" + WinHeight);
	return false;
}
/******************** 
函数名称：PopRemoteWindow 
函数功能：弹出可以控制父窗体的原程窗口 
函数参数：pageUrl,新窗口地址; 
调用方法：打开窗口：<a href="javascript:popRemoteWindow(url);">Open</a> _fcksavedurl=""javascript:popRemoteWindow(url);">Open</a>" 
          控制父窗体：opener.location=url;当然还可以有其他的控制 
********************/ 
function PopRemoteWindow(pageUrl){
	var remote = window.open(pageUrl, "RemoteWindow", "scrollbars=yes,toolbar=yes,location=yes,directories=yes,status=yes,menubar=yes,resizable=yes");
	if (remote.opener == null) {
		remote.opener = window;
	}
} 

/******************** 
函数名称：IsTelephone 
函数功能：固话，手机号码检查函数，合法返回true,反之,返回false 
函数参数：obj,待检查的号码 
检查规则： 
　　(1)电话号码由数字、"("、")"和"-"构成 
　　(2)电话号码为3到8位 
　　(3)如果电话号码中包含有区号，那么区号为三位或四位 
　　(4)区号用"("、")"或"-"和其他部分隔开 
　　(5)移动电话号码为11或12位，如果为12位,那么第一位为0 
　　(6)11位移动电话号码的第一位和第二位为"13" 
　　(7)12位移动电话号码的第二位和第三位为"13" 
********************/ 
function IsTelephone(obj){
	var pattern = /(^[0-9]{3,4}\-[0-9]{3,8}$)|(^[0-9]{3,8}$)|(^\([0-9]{3,4}\)[0-9]{3,8}$)|(^0{0,1}13[0-9]{9}$)/;
	if (pattern.test(obj)) {
		return true;
	}
	else {
		return false;
	}
} 
/******************** 
函数名称：IsLegality 
函数功能：检查字符串的合法性，即是否包含" '字符，包含则返回false;反之返回true 
函数参数：obj,需要检测的字符串 
********************/ 
function IsLegality(obj){
	var intCount1 = obj.indexOf("\"", 0);
	var intCount2 = obj.indexOf("\'", 0);
	if (intCount1 > 0 || intCount2 > 0) {
		return false;
	}
	else {
		return true;
	}
} 
/******************** 
函数名称：IsNumber 
函数功能：检测字符串是否全为数字 
函数参数：str,需要检测的字符串 
********************/ 
function IsNumber(str){
	var number_chars = "1234567890";
	var i;
	for (i = 0; i < str.length; i++) {
		if (number_chars.indexOf(str.charAt(i)) == -1) 
			return false;
	}
	return true;
} 

/******************** 
函数名称：CookieEnabled 
函数功能：判断cookie是否开启 
********************/ 
function CookieEnabled(){
	return (navigator.cookieEnabled) ? true : false;
} 

/******************************************************************** 
** 
*函数功能:判断输入的字符串是否为数字* 
*输入参数:输入的对象* 
*返回值:true-数字/false-非数字* 
*调用函数:* 
** 
********************************************************************/ 
function isNumber(objName){
	var strNumber = objName.value;
	var intNumber;
	if (Trim(strNumber) == "") {
		return true;
	}
	intNumber = parseInt(strNumber, 10);
	if (isNaN(intNumber)) {
		alert("请输入数字.");
		objName.focus();
		return false;
	}
	return true;
} 
/******************************************************************** 
** 
*函数功能:判断输入的字符串是否为数字* 
*输入参数:输入的对象* 
*返回值:true-数字/false-非数字* 
*调用函数:* 
** 
********************************************************************/ 
function isFloat(objName){
	var strFloat = objName.value;
	var intFloat;
	if (Trim(strFloat) == "") {
		return true;
	}
	intFloat = parseFloat(strFloat);
	if (isNaN(intFloat)) {
		alert("Please input a number.");
		objName.focus();
		return false;
	}
	return true;
}

/******************************************************************** 
** 
*函数功能:判断输入的字符串是否为合法的时间* 
*输入参数:输入的字符串* 
*返回值:true-合法的时间/false-非法的时间* 
*调用函数:* 
** 
********************************************************************/ 
function checkDate(strDate){
	var strDateArray;
	var strDay;
	var strMonth;
	var strYear;
	var intday;
	var intMonth;
	var intYear;
	var strSeparator = "-";
	var err = 0;
	strDateArray = strDate.split(strSeparator);
	if (strDateArray.length != 3) {
		err = 1;
		return false;
	}
	else {
		strYear = strDateArray[0];
		strMonth = strDateArray[1];
		strDay = strDateArray[2];
	}
	intday = parseInt(strDay, 10);
	if (isNaN(intday)) {
		err = 2;
		return false;
	}
	intMonth = parseInt(strMonth, 10);
	if (isNaN(intMonth)) {
		err = 3;
		return false;
	}
	intYear = parseInt(strYear, 10);
	if (strYear.length != 4) {
		return false;
	}
	if (isNaN(intYear)) {
		err = 4;
		return false;
	}
	
	if (intMonth > 12 || intMonth < 1) {
		err = 5;
		return false;
	}
	if ((intMonth == 1 || intMonth == 3 || intMonth == 5 || intMonth == 7 || intMonth == 8 || intMonth == 10 || intMonth == 12) && (intday > 31 || intday < 1)) {
		err = 6;
		return false;
	}
	if ((intMonth == 4 || intMonth == 6 || intMonth == 9 || intMonth == 11) && (intday > 30 || intday < 1)) {
		err = 7;
		return false;
	}
	if (intMonth == 2) {
		if (intday < 1) {
			err = 8;
			return false;
		}
		if (LeapYear(intYear) == true) {
			if (intday > 29) {
				err = 9;
				return false;
			}
		}
		else {
			if (intday > 28) {
				err = 10;
				return false;
			}
		}
	}
	return true;
} 


/******************************************************************** 
*函数功能:计算字符串的实际长度* 
********************************************************************/ 
function strlen(str){
	var len;
	var i;
	len = 0;
	for (i = 0; i < str.length; i++) {
		if (str.charCodeAt(i) > 255) 
			len += 2;
		else 
			len++;
	}
	return len;
} 
/******************************************************************** 
*函数功能:判断输入的字符串是不是中文* 
********************************************************************/ 

function isCharsInBag(s, bag){
	var i, c;
	for (i = 0; i < s.length; i++) {
		c = s.charAt(i);//字符串s中的字符 
		if (bag.indexOf(c) > -1) 
			return c;
	}
	return "";
}

function ischinese(s){
	var errorChar;
	var badChar = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789><,[]{}?/+=|\'\":;~!#$%()`";
	errorChar = isCharsInBag(s, badChar)
	if (errorChar != "") {
		//alert("请重新输入中文\n"); 
		return false;
	}
	return true;
}
/******************************************************************** 
*函数功能:判断输入的字符串是不是英文* 
********************************************************************/ 

function isCharsInBagEn(s, bag){
	var i, c;
	for (i = 0; i < s.length; i++) {
		c = s.charAt(i);//字符串s中的字符 
		if (bag.indexOf(c) < 0) 
			return c;
	}
	return "";
}
function isenglish(s){
	var errorChar;
	var badChar = " ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz";
	errorChar = isCharsInBagEn(s, badChar)
	if (errorChar != "") {
		//alert("请重新输入英文\n"); 
		return false;
	}
	return true;
}