// JavaScript Document

//去除字符穿两端的空格
String.prototype.trim = function() 
{ 
	var rtValue = this;
	var ch = rtValue.substring(0,1);
	//去除首部空格
	while(ch == " ")
	{
		rtValue = rtValue.substring(1,rtValue.length);
		ch = rtValue.substring(0,1);
	}
	ch = rtValue.substring(rtValue.length-1,rtValue.length);
	//去除尾部空格
	while(ch == " ")
	{
		rtValue = rtValue.substring(0,rtValue.length-1);
		ch = rtValue.substring(rtValue.length-1,rtValue.length);
	}
	return rtValue;
}


//得到id为objId的表单元素对象
function getObj(objId)
{
	return document.getElementById(objId);	
}

//判断表单元素是否为空
function isEmpty(objId)
{
	var v = getObj(objId).value;
	if( v.trim().length == 0 )
		return true;
	else
		return false;
}

//判断是否有这样的字符，其ASCII码在这样的范围内aStart至aEnd
function hasCharInRange(str,chStart,chEnd)
{
	var pattern = "["+chStart+"-"+chEnd+"]{1,}"
	var re = new RegExp(pattern) 
	return re.test(str);
		
}

//判断字符串中是否有这样的字符，在字符集CharSet中
function hasCharInSet(str,CharSet)
{
	
	
	CharSet = CharSet.replace(/([\-\]\\])/g,"\\$1");
	var pattern = "([" + CharSet + "])";
	var re = new RegExp(pattern); 
	return re.test(str);
}

//判断字符串中是否有数字
function hasNumeric(str)
{
	return hasCharInRange(str,0,9);
}

//判断字符串中是否有字母
function hasLetter(str)
{
	return (hasCharInRange(str,"a","z")|hasCharInRange(str,"A","Z"));
}

//判断字符串中是否有特殊字符`~!@#$^*()_+-=\|[]{};':",./<>?;
function hasSpecialChar(str)
{
	return hasCharInSet(str,"[](){}~`!@#$%^&*-+_=|\\;':\",./<>?");
}

//判断字符串是否为数字
function isNumeric(str)
{
	var pattern = /^\d{1,}$/;
	return pattern.test(str);
}
//判断字符串是否为数字，且(长度>min && 长度<max)
function isNumericEx(str,min,max)
{
	var sExp; 
	if(max == -1)	//至少长度为min
		sExp = "^\\d{"+min+",}$";
	else		//(长度>min && 长度>max),如果min==max则表示长度必须为min
		sExp = "^\\d{"+min+","+max+"}$";
	var pattern = new RegExp(sExp);
	return pattern.test(str);
}
//判断字符串是否为电子邮件地址
function isEmail(str)
{
	var patrn = /^([a-zA-Z0-9_])+@([a-zA-Z0-9_])+(\.([a-zA-Z0-9_])+)+$/;
	return patrn.test(str);
}
//判断字符串是否为用户名（由“字母”，“数字”和“_”组成，且第一位为字母）
function isUserName(str,min,max)
{
	var sExp = "^([a-zA-Z]){1}([a-zA-Z0-9_]){" + (min-1) + "," + (max-1) + "}$";
	
	var patrn = new RegExp(sExp);
	return patrn.test(str);
}
//判断字符串是否为组成密码的字符串（由任何字符组成），长度为min至max）
function isPwd(str,min,max)
{
	var sExp = "^.{"+min+","+max+"}$";
	var patrn = new RegExp(sExp);
	return patrn.test(str);
}

//判断字符串是否为电话号码(由区号（3~4位）+ 号码（7~8位）
//len1为区号的最大位数，len2为号码的最大位数
function isTel(str,len1,len2)
{
	var sExp = "^\\d{3,"+len1+"}-\\d{7,"+len2+"}$";	
	var patrn = new RegExp(sExp);
	return patrn.test(str);
}

//判断字符传是否为手机号码
function isMobil(str,min,max)
{
	var sExp = "^\\d{"+min+"," + max + "}$";
	var patrn = new RegExp(sExp);
	return patrn.test(str);
}

//判断密码强度,返回“强”，“中”，“弱”
//仅由字母或数字组成则强度为“弱”，由字母+数字组成则强度为“中”，由数字+字母+特殊字符(如：!@#$%^&*()_+等)组成则为“强”
function getPwdType(str)
{
	var count = 0;	

	if( hasLetter(str) )
		count++;
	
	if( hasNumeric(str) )
		count++;
	if( hasSpecialChar(str) )
		count++;
	
	switch(count)
	{
		case 1:
			return "弱";
		case 2:
			return "中";
		case 3:
			return "强";
	}

}

//使下拉列表框选中索引为index的项
function setSelByIndex(ObjId,Index)
{
	getObj(ObjId).selectedIndex = Index;
}

//使下拉列表框选中值为Value的项
function setSelByValue(ObjId,Value)
{
	var obj = getObj(ObjId);
	for(var i=0; i<	obj.options.length;i++)
	{
		if( obj.options[i].value == Value )
		{
			setSelByIndex(ObjId,i);
			break;			
		}
	}
}


//使下拉列表框选中,标题为Caption的项
function setSelByCaption(ObjId,Caption)
{
	var obj = getObj(ObjId);
	for(var i=0; i< obj.options.length;i++)
	{
		if( obj.options[i].text == Caption ) 
		{
			setSelByIndex(ObjId,i);
			break;
		}
	}
}

//全选checkbox
function selAllCbx(id)
{

	var   e=document.getElementsByTagName("input"); 
    for(var   i=0;i <e.length;i++) 
    { 
        if   (e[i].type== "checkbox") 
        { 
            if(document.getElementById(id).checked==true) 
            {
                e[i].checked=true; 
            }
            else 
            {
                e[i].checked=false; 
            }
        } 
    } 
	//alert(id);
}

//验证id为id的input的值是否为中文
function isChinese(str) { 
	


	var s; 
	var ts; 
	var tscode; 
	for (i=0;i<str.length;i++) { 
		ts=str.substring(i); 
		tscode=str.charCodeAt(i); 
		if ((tscode<19968)) {
			return false;
		}
	}
	return true;

}

//检查是否选中了一个RadioBox
function isCheckedRadio(o)
{
	checked = false;
	if(o.length == undefined ) return o.checked;
	for(var i=0;i<o.length;i++)
		if(o[i].checked == true)
			return true;
	return checked;
}

//验证身份证

function checkIdcard(idcard){ 
var Errors=new Array( 
"验证通过!", 
"身份证号码位数不对!", 
"身份证号码出生日期超出范围或含有非法字符!", 
"身份证号码校验错误!", 
"身份证地区非法!" 
); 
var area={11:"北京",12:"天津",13:"河北",14:"山西",15:"内蒙古",21:"辽宁",22:"吉林",23:"黑龙江",31:"上海",32:"江苏",33:"浙江",34:"安徽",35:"福建",36:"江西",37:"山东",41:"河南",42:"湖北",43:"湖南",44:"广东",45:"广西",46:"海南",50:"重庆",51:"四川",52:"贵州",53:"云南",54:"西藏",61:"陕西",62:"甘肃",63:"青海",64:"宁夏",65:"新疆",71:"台湾",81:"香港",82:"澳门",91:"国外"}  
var idcard,Y,JYM; 
var S,M; 
var idcard_array = new Array(); 
idcard_array = idcard.split(""); 
//地区检验 
if(area[parseInt(idcard.substr(0,2))]==null) return Errors[4]; 
//身份号码位数及格式检验 
switch(idcard.length){ 
case 15: 
if ( (parseInt(idcard.substr(6,2))+1900) % 4 == 0 || ((parseInt(idcard.substr(6,2))+1900) % 100 == 0 && (parseInt(idcard.substr(6,2))+1900) % 4 == 0 )){ 
ereg=/^[1-9][0-9]{5}[0-9]{2}((01|03|05|07|08|10|12)(0[1-9]|[1-2][0-9]|3[0-1])|(04|06|09|11)(0[1-9]|[1-2][0-9]|30)|02(0[1-9]|[1-2][0-9]))[0-9]{3}$/;//测试出生日期的合法性 
} else { 
ereg=/^[1-9][0-9]{5}[0-9]{2}((01|03|05|07|08|10|12)(0[1-9]|[1-2][0-9]|3[0-1])|(04|06|09|11)(0[1-9]|[1-2][0-9]|30)|02(0[1-9]|1[0-9]|2[0-8]))[0-9]{3}$/;//测试出生日期的合法性 
} 
if(ereg.test(idcard)) return true; 
else return Errors[2]; 
break; 
case 18: 
//18位身份号码检测 
//出生日期的合法性检查  
//闰年月日:((01|03|05|07|08|10|12)(0[1-9]|[1-2][0-9]|3[0-1])|(04|06|09|11)(0[1-9]|[1-2][0-9]|30)|02(0[1-9]|[1-2][0-9])) 
//平年月日:((01|03|05|07|08|10|12)(0[1-9]|[1-2][0-9]|3[0-1])|(04|06|09|11)(0[1-9]|[1-2][0-9]|30)|02(0[1-9]|1[0-9]|2[0-8])) 
if ( parseInt(idcard.substr(6,4)) % 4 == 0 || (parseInt(idcard.substr(6,4)) % 100 == 0 && parseInt(idcard.substr(6,4))%4 == 0 )){ 
ereg=/^[1-9][0-9]{5}19[0-9]{2}((01|03|05|07|08|10|12)(0[1-9]|[1-2][0-9]|3[0-1])|(04|06|09|11)(0[1-9]|[1-2][0-9]|30)|02(0[1-9]|[1-2][0-9]))[0-9]{3}[0-9Xx]$/;//闰年出生日期的合法性正则表达式 
} else { 
ereg=/^[1-9][0-9]{5}19[0-9]{2}((01|03|05|07|08|10|12)(0[1-9]|[1-2][0-9]|3[0-1])|(04|06|09|11)(0[1-9]|[1-2][0-9]|30)|02(0[1-9]|1[0-9]|2[0-8]))[0-9]{3}[0-9Xx]$/;//平年出生日期的合法性正则表达式 
} 
if(ereg.test(idcard)){//测试出生日期的合法性 
//计算校验位 
S = (parseInt(idcard_array[0]) + parseInt(idcard_array[10])) * 7 
+ (parseInt(idcard_array[1]) + parseInt(idcard_array[11])) * 9 
+ (parseInt(idcard_array[2]) + parseInt(idcard_array[12])) * 10 
+ (parseInt(idcard_array[3]) + parseInt(idcard_array[13])) * 5 
+ (parseInt(idcard_array[4]) + parseInt(idcard_array[14])) * 8 
+ (parseInt(idcard_array[5]) + parseInt(idcard_array[15])) * 4 
+ (parseInt(idcard_array[6]) + parseInt(idcard_array[16])) * 2 
+ parseInt(idcard_array[7]) * 1  
+ parseInt(idcard_array[8]) * 6 
+ parseInt(idcard_array[9]) * 3 ; 
Y = S % 11; 
M = "F"; 
JYM = "10X98765432"; 
M = JYM.substr(Y,1);//判断校验位 
if(M == idcard_array[17]) return true; //检测ID的校验位 
else return Errors[3]; 
} 
else return Errors[2]; 
break; 
default: 
return Errors[1]; 
break; 
} 
} 


function AddFavorite(sURL, sTitle)
{
	try
	{
		window.external.addFavorite(sURL, sTitle);
	}
	catch (e)
	{
	try
	{
		window.sidebar.addPanel(sTitle, sURL, "");
	}
	catch (e)
	{
		alert("加入收藏失败，请使用Ctrl+D进行添加");
	}
	}
}

function SetHome(obj,vrl)
{
	try
	{
		obj.style.behavior='url(#default#homepage)';obj.setHomePage(vrl);
	}
	catch(e){
	if(window.netscape) {
	try {
			netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect"); 
	} 
	catch (e) { 
			alert("此操作被浏览器拒绝！\n请在浏览器地址栏输入“about:config”并回车\n然后将[signed.applets.codebase_principal_support]设置为'true'"); 
	}
		var prefs = Components.classes['@mozilla.org/preferences-service;1'].getService(Components.interfaces.nsIPrefBranch);
		prefs.setCharPref('browser.startup.homepage',vrl);
	}
	}
}


function chmarquee (marq,derct){
	var obj=document.getElementById(marq);
	obj.direction=derct;
}

