	var num = 0;
	var lower = 0;
	var upper = 0;
	var spchr = 0;
	var inverse = "";
	var pswd = "";
	var ids1 = "";
	var size = 0;
	var serialStr = "qwertyuiop[]\\asdfghjkl;'zxcvbnm,./";
	var serialStr2 = "QWERTYUIOP{}|ASDFGHJKL:\"ZXCVBNM<>?";
	var serialStr3 = "~!@#$%^&*()_+`1234567890-=/*-";
	forbidden = ["password", "asdf" , "secret" , "ncikucom" , "123456"];
	en_words = [": too short", ": weak" , ": fair" , ": good" , ": strong"];
	cn_words = [": 太短", ": 弱" , ":較弱  " , ": 一般   " , ": 強"];
	
	function checkPassword() {
		pswd = $('password').value;
		ids1 = $('loginid').value;
		size = pswd.length;
		
		if ($('locale').value == 'en') {
			words = en_words;
		} else if ($('locale').value == 'zh') {
			words = cn_words; 
		}
		
		if (size >= 4) {
			codes = getRate();
			$('pswdcert').innerHTML = words[codes];
		} else if (size > 0) {
			$('pswdcert').innerHTML = words[0];
		} else {
			$('pswdcert').innerHTML = '';
		}
	}
	
	function beginPSWDCheck() {
		inverse='';
        num = lower = upper = spchr = 0;
        tmpPswd = String(pswd);
		for(i = 0 ; i < tmpPswd.length ; i++) {
			var tmp = tmpPswd.charAt(i);
			if (0<= tmp && tmp<=9) {
				num++;
			} else if (tmp >= 'a' && tmp <='z') {
				lower++;
			} else if (tmp >= 'A' && tmp <='Z') {
				upper++;
			} else {
				spchr++;
			}
			inverse = pswd[i] + inverse;
		}
	}
	
	function isInverse() {
		return (inverse==pswd?true:false);
	}
	
	function isMatchID() {
		if (ids1.length >= 6  && pswd.indexOf(ids1) != -1) {
			return 1;
		} else {
			return 0;
		}
	}
	
	function isRotating() {
		if ( size>= 6 && (pswd.substring(0,3))==(pswd.substring(3,6)) ) {
			return 1;
		} else if ( size >= 8 && (pswd.substring(0,4))==(pswd.substring(4,8))) {
			return 1;
		} else {
			return 0;
		}
	}
	
	function isForbidden() {
		for (i = 0 ; i < forbidden.length ; i++ ) {
			if ((this.pswd)==(forbidden[i])) {
				return 1;
			}
		}
		return 0;
	}
	
	function  isSerial() {
		if (serialStr.indexOf(pswd) != -1) {
			return 1;
		} else if (serialStr2.indexOf(pswd) != -1) {
			return 1;
		} else if (serialStr3.indexOf(pswd) != -1) {
			return 1;
		} else {
			return 0;
		}
	}
	
	function isLowerCharAndNumCase() {
		return (lower+num==size?1:0);
	}
	
	function isAllSameCase() {
		return (lower==size||upper==size||num==size?1:0);
	}
	
	function isAllDuoCase() {
		return (lower+num==size||upper+num==size?1:0);
	}
	
	function isLowerUpperCharCase() {
		if (upper > 0 && lower > 0 && lower+upper==size) {
			return 1;
		} else {
			return 0;
		}
	} 
	
	function isHasSpchar() {
		return ((spchr>0||(upper>0&&lower>0&&upper+lower==size))?1:0);
	}
	
	function getRate() {
		num = 0;
		lower = 0;
		upper = 0;
		spch = 0;
		beginPSWDCheck();
		if (size < 6) {
			return 0;
		} else if (isInverse()==1){

			return 1;
		} else if (size >= 13) {

			return 4;
		}  else {
			if ((size >= 6 && size <= 8)) {

				if ((isSerial()==1||isForbidden()==1||isMatchID()==1||isRotating()==1)) {
					return 1;
				} else if (isAllSameCase()==1||isAllDuoCase()==1){
					return 2;
				} else if (isHasSpchar()==1) {
					return 4;
				} else if (isLowerUpperCharCase()==1) {
					return 4;
				} else {
					return 3;
				}
			} else if (size >= 9 && size <= 12) {
				if (isLowerUpperCharCase()==1) {
					return 4;
				} else if (isHasSpchar()==1) {
					return 4;
				} else if (isAllSameCase()==1 || isLowerCharAndNumCase()==1) {
					return 3;
				} else {
					return 4;
				}
			} else {
				if (isAllSameCase()==1){
					return 4;
				} else {
					return 3;
				}
			}
		}
	}
