/*
 ************************************************************************************
 * $Id: PasswordStrength.js 523 2008-02-01 01:50:06Z lavnrose $:
 ************************************************************************************
 * $Rev: 523 $:
 * $Version: 0.0 $:
 * $Author: lavnrose $:
 ************************************************************************************
 * $Date: 2008-02-01 10:50:06 +0900 (Fri, 01 Feb 2008) $:
 * $LastChangedDate: 2008-02-01 10:50:06 +0900 (Fri, 01 Feb 2008) $
 ************************************************************************************
 * Description: 
 * 
 */

/*
// regular expressions
			
checkStrength = function (fob) {
	var pwd = fob.password.value;
	var fnm = new RegExp(fob.first_name.value,'gi');
	var lnm = new RegExp(fob.last_name.value,'gi');
	var eml = new RegExp(fob.email.value,'gi');
	var score = 0;
	if (pwd.length < 6) return score;

	score += pwd.length - 6;
	if (pwd.match(lc) && pwd.match(uc)) score++;
	if (pwd.match(nm) && (pwd.match(lc) || pwd.match(uc))) score++;
	if (pwd.match(un)) score++;
	if (pwd.match(fnm)) score = 0;
	if (pwd.match(lnm)) score = 0;
	if (pwd.match(eml)) score = 0;
	return score;
}

showScore = function (fob) {
	var score =  checkStrength(fob);
	// fob.pwdval.value = score;
}
// onkeyup="showScore(this.form);"
*/

function PasswordStrength(passwd,pass_length,data)
{
	pass_length = (pass_length) ? pass_length : 4;
	var fnm = new RegExp(data,'gi');
	var lnm = new RegExp(data,'gi');
	var eml = new RegExp(data,'gi');
	var lc = /[a-z]{1}/; // lowercase letters
	var uc = /[A-Z]{1}/; // uppercase letters
	var nm = /[0-9]{1}/; // numbers
	var un = /[^A-Za-z0-9]{1}/; // upper- and lower-case letters and numbers

	var score = 0;
	if (passwd.length < pass_length) return score;

	score += passwd.length - 6;
	if (passwd.match(lc) && passwd.match(uc)) score++;
	if (passwd.match(nm) && (passwd.match(lc) || passwd.match(uc))) score++;
	if (passwd.match(un)) score++;
	if (passwd.match(fnm)) score = 0;
	if (passwd.match(lnm)) score = 0;
	if (passwd.match(eml)) score = 0;
	return score;
}

function PasswordStrengthCheck(pass,area,data, plegnth)
{
	if( ! pass ) return;
	var pwd_area	= document.getElementById('pwd_area');
	var score_area	= (area) ? area : document.getElementById('pwd_info');
	var score_data	= (data) ? data : pass;
	var pass_length	= (plegnth) ? plegnth : 5;
	var strength_data = PasswordStrength(pass, pass_length, data);
	var tmpImg = new Image();

//	alert(strength_data);

	if(navigator.appName == 'Netscape')
	{
		if(strength_data < 1)
		{
			if(pass.length > 0)
			{
				tmpImg.src	= score_area.src.replace(/_.*\.gif/,'_exclamation.gif');
				tmpImg.alt	= '('+ strength_data +') 현재 암호는 사용하기 적합하지 않습니다.\n반드시 변경하십시오.';
			} else {
				tmpImg.src	= score_area.src.replace(/_.*\.gif/,'_help.gif');
				tmpImg.alt	= '사용자의 암호가 적합한지 표시 합니다.';
			}
		} else {
			if(strength_data >= 2)
			{
				tmpImg.src = score_area.src.replace(/_.*\.gif/,'_accept.gif');
				tmpImg.alt	= '('+ strength_data +') 암호가 사용하기 적합합니다.' ;
			} else {
				tmpImg.src = score_area.src.replace(/_.*\.gif/,'_error.gif');
				tmpImg.alt	= '('+ strength_data +') 암호로 사용하기 적합하지 않습니다.\n가능하면 변경 하십시오.\n';
			}
		}
		score_area = tmpImg;
		pwd_area.innerHTML = '<img id="pwd_info" name="pwd_info" src="'+ tmpImg.src +'" width="16" height="16" border="0" alt="'+ tmpImg.alt +'">';
	} else {
		if(score_area)
		{
			switch(score_area.tagName)
			{
				case 'IMG':
					if(strength_data < 1)
					{
						if(pass.length > 0)
						{
							tmpImg.src	= score_area.src.replace(/_.*\.gif/,'_exclamation.gif');
							tmpImg.alt	= '('+ strength_data +') 현재 암호는 사용하기 적합하지 않습니다.\n반드시 변경하십시오.';
						} else {
							tmpImg.src	= score_area.src.replace(/_.*\.gif/,'_help.gif');
							tmpImg.alt	= '사용자의 암호가 적합한지 표시 합니다.';
						}
					} else {
						if(strength_data >= 2)
						{
							tmpImg.src = score_area.src.replace(/_.*\.gif/,'_accept.gif');
							tmpImg.alt	= '('+ strength_data +') 암호가 사용하기 적합합니다.' ;
						} else {
							tmpImg.src = score_area.src.replace(/_.*\.gif/,'_error.gif');
							tmpImg.alt	= '('+ strength_data +') 암호로 사용하기 적합하지 않습니다.\n가능하면 변경 하십시오.\n';
						}
					}
					score_area.src = tmpImg.src;
					score_area.alt = tmpImg.alt;
					break;
				case 'DIV':
				case 'TD':
				case 'PRE':
					score_area.innerHTML = PasswordStrength(pass, 5, data);
					break;
			}
		}
	}
}
