//---------------------------------------------------------
// member.js written by Hong, SeokJin 
// For member input form check 
// Created : 2005-11-25, Last upadated : 2005-12-2


//----------------------------------------------------------
// duplicate check popup open functions

// open popup and check duplicate id, email, nick field (etc)
function duplicateCheck(strName)
{
	var arg = 'fname=' + strName + '&fvalue=' + eval('document.usrForm.' + strName).value;
	var win = window.open("/member/join/duplicate_check.asp?"+arg, "duplicatecheck", "width=450, height=230, scrollbar=no");
	
	if (win.focus)
		win.focus();
}

// ID duplicate check
function duplicateID()
{
	if (checkID(document.usrForm))
		duplicateCheck('id');
}

// email duplicate check
function duplicateEmail()
{
    duplicateCheck('email');
}

// nick name duplicate check 
function duplicateNick()
{
    duplicateCheck('nick');
}

//-----------------------------------------------------------
// For check password strength 

// number char [0-9]  in string
function countNumCharInStr(strInput)
{
    var nCount = 0;
    
	for (var i = 0; i < strInput.length; i++)
	{
	    var ch = strInput.charAt(i);
	    
	    if (ch >= '0' && ch <= '9')
	        nCount++;
	}
	
	return nCount;
}


// count lower char [a - z] in string 
function countLowerCharInStr(strInput)
{
    var nCount = 0;
    
	for (var i = 0; i < strInput.length; i++)
	{
	    var ch = strInput.charAt(i);
	    
	    if (ch >= 'a' && ch <= 'z')
	        nCount++;
	}
	return nCount;
}

// count upper char [A - Z] in string 
function countUpperCharInStr(strInput)
{
    var nCount = 0;
    
	for (var i = 0; i < strInput.length; i++)
	{
	    var ch = strInput.charAt(i);
	    
	    if (ch >= 'A' && ch <= 'Z')
	        nCount++;
	}
	return nCount;
}

// count alpha [a-z, A-Z] char in string
function countAlphaCharInStr(strInput)
{
    return countLowerCharInStr(strInput) + countUpperCharInStr(strInput);
}

// count symbol char in string [`~!@#$%^&*()_+-={}|[]\:";'<>?,./ etc] (not control & space)
function countSymbolCharInStr(strInput)
{
    var nCount = 0;
    
	for (var i = 0; i < strInput.length; i++)
	{
	    var ch = strInput.charAt(i);

	    if ((ch >= '!' && ch <= '/') || (ch >= ':' && ch <= '@') || (ch >= '[' && ch <= '`') || (ch >= '{' && ch <= '~'))
          nCount++;
	}
	return nCount;
}

// all char are neumber 
function isNumberOnlyStr(strInput)
{
    if (countNumCharInStr(strInput) == strInput.length)
		return true;
	else
		return false;
}

// how many char type [number, Lower, Upper, Symbol] in string ?
function countCharTypeInStr(strInput)
{
    var nCount = 0;
    
    if (countNumCharInStr(strInput) > 0)
        nCount++;

    if (countLowerCharInStr(strInput) > 0)
        nCount++;
        
    if (countUpperCharInStr(strInput) > 0)
        nCount++;
        
    if (countSymbolCharInStr(strInput) > 0)
        nCount++;
        
    return nCount;
}

// check repeated ex:)1111111 or continous  ex:)123456, abcdef
function isEasyStr(strInput)
{
    if (strInput.length < 2)
        return true;
        
    var nCount = 1;
    var nSame = 1;
    var nLen = strInput.length;
    var chOld = strInput.charCodeAt(0);
    
	for (var i = 1; i < nLen; i++)
	{
	    var ch = strInput.charCodeAt(i);
	    
	    if (Math.abs(ch - chOld) == 1)
	        nCount++;
	    
	    if (ch == chOld)
	        nSame++;

	    chOld = ch;	    
	}
	
	if (nSame == nLen || nCount == nLen)
	    return true;
	    
	return false;
}

// Get passsword strength level (0 - 5) higher is better
function getPassStrength(strInput)
{
	// dictionary check need
	
    var nStrength = 0;
    var nCountCharType = 0;
    
	if (strInput.length < 6) 
	    nCountCharType = 0;
	else
	    nCountCharType = countCharTypeInStr(strInput);

	nStrength = nCountCharType;
	        
	if (nCountCharType > 0)
	{
        if (nCountCharType == 1)
        {
            if (!isEasyStr(strInput)) // check easy string ex) 111111, 123456, ABCDEFG
            {
                if (strInput.length == countNumCharInStr(strInput))  // only number     
                {
	                if (strInput.length >= 8)
	                    nStrength++;
                }
                else
                {
                    nStrength++;

	            }
	        }
	    }
        else
        {
	        if (strInput.length >= 7)
	            nStrength++;
	            
	        if (strInput.length >= 10)
	            nStrength++;
	    }
	        
	    if (nStrength > 5)
	        nStrength = 5;
	        
	    if (nStrength < 1)
	        nStrength = 1;
	}
    return nStrength;
}

// Display Password strength level meter
function setPassStrength(objInput)
{
    var arrColor = new Array ("#EDEDED", "FF4E4E", "FFAF87", "FFF285", "C6EF90", "90CAF8");	
    
	var nStrength = getPassStrength(objInput.pwd.value);
	
	for (var i = 0; i <= 5; i++)
	{
	    if (i == nStrength)
	    {
	        eval("idSPN" + i).style.display = "inline";
	    }
	    else
	        eval("idSPN" + i).style.display = "none";
	}

	for (i = 1; i <= 5; i++)
	{
	    if (i <= nStrength)
	        eval("idTD" + i).style.backgroundColor = arrColor[nStrength];
	    else
	        eval("idTD" + i).style.backgroundColor = arrColor[0];
    }
}


//---------------------------------------------------------------
// Input Validatation functions check input char type  
// Check Number [0~9], UpperAlpha [A~Z], LowerAlpha [a~z], Symbol [!$%&...]
// not include space & control chars

// InputValidation main function
function inputValidation(objInput, bNum, bUpperAlpha, bLowerAlpha, bSymbol, strError)
{
	var strInput = objInput.value;
	var arrayStr = new Array();
	var bShowAlert = false;
	var nPos = 0;	
	
	for (var i = 0; i < strInput.length; i++) 
	{
	    var ch = strInput.charAt(i);
	    var bProcess = false;
	    
	    if (bNum && ch >= '0' && ch <= '9')
	        bProcess = true;
	    
	    if (bUpperAlpha && ch >= 'A' && ch <= 'Z')
	        bProcess = true;
	        
	    if (bLowerAlpha && ch >= 'a' && ch <= 'z')
	        bProcess = true;
	    
	    if (bSymbol && (ch >= '!' && ch <= '/') || (ch >= ':' && ch <= '@') || (ch >= '[' && ch <= '`') || (ch >= '{' && ch <= '~'))
	        bProcess = true;
	    
	    if (bProcess)
	    {
	    	arrayStr[nPos++] = ch;
	    }
	    else if (!bShowAlert) // show alert only one time
	    {
	        if (!strError && ch > '~')   // show message is not present and char code > '~' (may be korean or unicode)
	            alert('ÇÑ±Û ÀÔ·Â ÇÏÁö ¸¶¼¼¿ä.'); // unicode Á¶ÇÕÁß ¹®Á¦·Î alert À» ½áÁÖ¾î¾ß ÇÔ
	        else if (strError)
	            alert(strError);
	            
	        bShowAlert = true;   
	    }
	}
	
	if (strInput.length != arrayStr.length)
	{
	    objInput.value = arrayStr.join('');
	    return false;
	}
	else
	    return true;
}

// Input number only 
function checkNum(obj)
{
    return inputValidation(obj, true, false, false, false, "¼ýÀÚ¸¸ ÀÔ·ÂÇØ ÁÖ¼¼¿ä");
}

// Input number & english (upper, lower)
function checkEngNum(obj)
{
    return inputValidation(obj, true, true, true, false, "¿µ¾î, ¼ýÀÚ¸¸ ÀÔ·ÂÇØ ÁÖ¼¼¿ä");
}

// Input number, english & symbol (!"#$... not include space & control chars)
function checkEngNumSymbol(obj)
{
    return inputValidation(obj, true, true, true, true, "¿µ¾î, ¼ýÀÚ, Æ¯¼ö±âÈ£¸¸ ÀÔ·ÂÇØ ÁÖ¼¼¿ä");
}

//-------------------------------------------------
// Simple input form check functions

// empty(all space) string check
function isBlankStr(strData)
{
	for (var i = 0 ; i < strData.length ; i++ )
	{
	    var ch = strData.charAt(i);
	    
		if (ch != ' ')
		    return false;
	}
	return true;
}

// e-mail style check
function isEmailStr(strEmail)
{
    if (typeof(strEmail) == 'string' && strEmail != '')
	{
        var nPos = strEmail.indexOf('@', 0);
                
        if ((nPos > 0) && (strEmail.indexOf('.', nPos) > nPos + 1))
            return true;
        else
            return false;
    }
    else
	    return false;
}


//-------------------------------------------------------
// Join Input form check 

// check ID 
function checkID(objForm)
{
    var f = objForm;

	if (isBlankStr(f.id.value)) 
	{
		alert('¾ÆÀÌµð´Â ¿µ¹®ÀÚ¸¦ Æ÷ÇÔÇÏ¿© 5ÀÚ ÀÌ»ó ÀÔ·ÂÇÏ¼¼¿ä');
		f.id.focus();
		return false;
	}
	else 
	{
	    if (f.id.value.length < 5) 
	    {
	    	alert('¾ÆÀÌµð´Â ¿µ¹®ÀÚ¸¦ Æ÷ÇÔÇÏ¿© 5ÀÚ ÀÌ»ó ÀÔ·ÂÇÏ¼¼¿ä');
	    	f.id.focus();
	    	return false;
	    }
		    
	    if (countAlphaCharInStr(f.id.value) < 1)
	    {
	    	alert('¾ÆÀÌµð¿¡ ¿µ¹®ÀÚ¸¦ 1ÀÚ ÀÌ»ó »ç¿ëÇÏ¼¼¿ä.');		    
	    	f.id.focus();
	    	return false;
	    }

	}
	return true;
}

// check password
function checkPass(objForm)
{
    var f = objForm;
    
	if (isBlankStr(f.pwd.value)) 
	{
		alert('¾ÏÈ£´Â 6ÀÚÀÌ»ó ¿µ¹®(´ë¼Ò¹®ÀÚ±¸ºÐ)+¼ýÀÚ(±âÈ£)¸¦ ¼¯¾î¼­ ÀÔ·ÂÇÏ¼¼¿ä.');
		f.pwd.focus();
		return false;
	}
	else 
	{
		if (f.pwd.value == f.id.value) 
		{
		    alert('¾ÏÈ£´Â ¾ÆÀÌµð¿Í ´Þ¶ó¾ßÇÕ´Ï´Ù.');
	    	f.pwd.focus();
	    	return false;
		}
		
	    if (f.pwd.value.length < 6) 
	    {
		    alert('¾ÏÈ£´Â 6ÀÚ ÀÌ»ó ÀÌ¾î¾ßÇÕ´Ï´Ù.');
	    	f.pwd.focus();
	    	return false;
	    }
	    
	    if (isNumberOnlyStr(f.pwd.value))
	    {
	    	alert('¾ÏÈ£¿¡ ¿µ¹®ÀÌ³ª ±âÈ£¸¦ ¼¯¾î¼­ ÀÔ·ÂÇÏ¼¼¿ä.');
	    	f.pwd.focus();
	    	return false;
	    }
	    
	    if (countCharTypeInStr(f.pwd.value) < 2) 
	    {
	    	alert('¾ÏÈ£´Â ¿µ¹®(´ë¼Ò¹®ÀÚ±¸ºÐ)+¼ýÀÚ(±âÈ£)¸¦ ¼¯¾î¼­ ÀÔ·ÂÇÏ¼¼¿ä.');
	    	f.pwd.focus();
	    	return false;
	    }
		    
	    if (isBlankStr(f.pwd_chk.value)) 
	    {
	    	alert('¾ÏÈ£ È®ÀÎÀ» ÀÔ·ÂÇÏ½Ã±â ¹Ù¶ø´Ï´Ù.');
	    	f.pwd_chk.focus();
	    	return false;
	    }
	
	    if (f.pwd.value != f.pwd_chk.value) 
	    {
	    	alert('¾ÏÈ£¿Í ¾ÏÈ£ È®ÀÎÀÌ ÀÏÄ¡ÇÏÁö ¾Ê½À´Ï´Ù.');
	    	f.pwd_chk.focus();
	    	return false;
	    }
	}
	return true;
}


// check input forms
function checkJoinForm(objForm)
{
    var f = objForm;
    
    // ID value check fail
    if (!checkID(objForm))
        return false;

	if (f.id_chk.value != 1) 
	{
		alert('¾ÆÀÌµð Áßº¹À» È®ÀÎÇØ ÁÖ¼¼¿ä.');
		f.id.focus();
		return false;
	}
        

	//  password check
	if (!checkPass(objForm))
        return false;

	// name check
	if (isBlankStr(f.name.value)) 
	{
		alert('ÀÌ¸§À» ÀÔ·ÂÇÏ½Ã±â ¹Ù¶ø´Ï´Ù.');
		f.name.focus();
		return false;
	}

    // nick name check
	if (isBlankStr(f.nick.value)) 
	{
		alert('´Ð³×ÀÓÀ» ÀÔ·ÂÇÏ½Ã±â ¹Ù¶ø´Ï´Ù.');
		f.nick.focus();
		return false;
	} 
	/*
	else if (f.nick_chk.value != 1) 
	{
		alert('´Ð³×ÀÓ Áßº¹À» È®ÀÎÇØ ÁÖ¼¼¿ä.');
		f.nick.focus();
		return false;
	}
	*/
	
	// email check
	if (isBlankStr(f.email.value)) 
	{
		alert('E-mail ÁÖ¼Ò¸¦ ÀÔ·ÂÇØ ÁÖ½Ã±â ¹Ù¶ø´Ï´Ù.');
		f.email.focus();
		return false;
	}

	if (!isEmailStr(f.email.value)) 
	{
		alert('Àß¸øµÈ E-mail Çü½ÄÀÔ´Ï´Ù.');
		f.email.focus();
		return false;
	}
	
	/*
	if (f.email_chk.value != 1) 
	{
		alert('E-mail Áßº¹À» È®ÀÎÇØ ÁÖ¼¼¿ä.');
		f.email.focus();
		return false;
	}
	*/

	/*
    // telephone number check
	if (isBlankStr(f.tel1.value) || isBlankStr(f.tel2.value) || isBlankStr(f.tel3.value)) 
	{
		alert('¿¬¶ôÃ³¸¦ ÀÔ·ÂÇØ ÁÖ½Ã±â ¹Ù¶ø´Ï´Ù.');
		f.tel1.focus();
		return false;
	}
	*/
	
	return true;	
}

function submitJoinForm(objForm)
{
	if (!checkJoinForm(objForm))
		return;
		
	objForm.submit();
}

//------------------------------------------------------
// Password Change

function submitChangePass(objForm)
{
	// old password check
	
	if (isBlankStr(objForm.oldpwd.value)) 
	{
		alert('ÀÌÀü ¾ÏÈ£¸¦ ÀÔ·ÂÇÏ¼¼¿ä.');
		objForm.oldpwd.focus();
	
		return;
	}
	
	// Same password check
	if (objForm.oldpwd.value == objForm.pwd.value)
	{
		alert('ÀÌÀü ¾ÏÈ£¿Í °°½À´Ï´Ù.');
		objForm.pwd.focus();
	
		return;
	}

	// change password check
	if (!checkPass(objForm))
        return;

	objForm.submit();
}

//------------------------------------------------------
// Password search


function submitSearchPass(objForm)
{
    var f = objForm;
    

	if (isBlankStr(f.id.value)) 
	{
		alert('¾ÆÀÌµð¸¦ ÀÔ·ÂÇÏ¼¼¿ä.');
		f.id.focus();
	
		return;
	}

	if (isBlankStr(f.name.value)) 
	{
		alert('ÀÌ¸§À» ÀÔ·ÂÇÏ¼¼¿ä.');
		f.name.focus();
	
		return;
	}
	
	if (isBlankStr(f.email.value)) 
	{
		alert('ÀÌ¸ÞÀÏÀ» ÀÔ·ÂÇÏ¼¼¿ä.');
		f.email.focus();
	
		return;
	}

	if (confirm("»õ·Î¿î ¾ÏÈ£°¡ ¸¸µé¾î Áý´Ï´Ù. °è¼Ó ÇÏ½Ã°Ú½À´Ï±î?"))
		objForm.submit();
	else
		return;
}


//-------------------------------------------------------
// Login & Logout


function submitLoginForm(objForm)
{
    var f = objForm;
    
	if (isBlankStr(f.id.value)) 
	{
		alert('¾ÆÀÌµð¸¦ ÀÔ·ÂÇÏ¼¼¿ä.');
		f.id.focus();
		return;
	}
	
	if (isBlankStr(f.pwd.value)) 
	{
		alert('¾ÏÈ£¸¦ ÀÔ·ÂÇÏ¼¼¿ä.');
		f.pwd.focus();
		return;
	}
	objForm.submit();
}

function Join()
{
	document.location="/member/join.asp"; 
}

function Login()
{
	document.location="/member/login.asp"; 
}

function Logout()
{
	document.location="/member/logout.asp"; 
}

function LoginFocus()
{
	var f = document.loginForm;
	
	if (typeof(f) == 'undefined')
		return;
	
	if (f.id.value.length == 0)
		f.id.focus();
	else
		f.pwd.focus();
}

