//=================== Form Validator ==================================
function chkNull(obj, strMsg, bFocus){
	var isNotNull = false;
	var objType = null;
	var mainField;

	if (typeof(obj.type) == 'undefined' && typeof(obj.length) != 'undefined')
		mainField = obj[0];
	else
		mainField = obj;
	objType = mainField.type;

	switch (objType) {
		case "text" :
		case "password" :
		case "select-one" :
		case "file" :
			isNotNull = hasValue(obj);
			break;
		case "textarea" :
			isNotNull = hasEditorValue(obj);
			break;
		case "checkbox" :
			isNotNull = fnRadioCheck(obj.name);
			break;
		case "radio" :
			isNotNull = isChecked(obj);
			break;

		case "select-multiple" :
			isNotNull = isNotSelected(obj);
			break;
	}

	if (!isNotNull)	{
		if (strMsg != '') alert(strMsg);
		if (bFocus == true)	{
			mainField.focus();
		}
	}
	return isNotNull;
}

function hasValue(obj){
	if (obj.value.replace(/(^\s*)|(\s*$)/g, "") == "")
		return false;
	else
		return true;
}

function hasEditorValue(obj){
	if (obj.value.replace(/&nbsp;/g, " ").replace(/(^\s*)|(\s*$)/g, "") == "")
		return false;
	else
		return true;
}

function isChecked(obj){
	var checked = false;

	if (typeof(obj.length) != 'undefined'){
		for (var i=0; i<obj.length; i++)
			if (obj[i].checked)
				checked = true;
	}
	else	{
		checked = obj.checked;
	}

	return checked;
}

function isNotSelected(obj){
	if (obj.selectedIndex == -1)	{
		return false;
	}
	else{
		if (obj.value == -1)
			return false;
		else
			return true;
	}
}

// validator
function chkValid(obj, vType, strMsg, MinLen, MaxLen, FocusType) {
	var isValid = false;
	switch (vType) {
		case 'email' :
			isValid = /^[A-Z0-9._%+-]+@[A-Z0-9.-]+\.[A-Z]{2,4}$/i.test(obj.value);
			break;
		case 'url' :
			isValid = /[-\w\.]+:\/\/([-\w\.]+)+(:\d+)?(:\w+)?(@\d+)?(@\w+)?([-\w\.]+)(\/([\w/_\.]*(\?\S+)?)?)?(#\S*)?/i.test(obj.value);
			break;
		case 'int' :
			isValid = ! isNaN(parseInt(obj.value));
			break;
		case 'float' :
			isValid = ! isNaN(parseFloat(obj.value));
			break;
		default :
			isValid = true;
			break;
	}
	if (MinLen > 0) {
		if (obj.value.length < MinLen) {
			isValid = false;
		}
	}
	if (MaxLen > 0) {
		if (obj.value.length > MaxLen) {
			isValid = false;
		}
	}
	if (!isValid) {
		if (strMsg != '') alert(strMsg);
		if (FocusType == 1) {
			obj.focus();
		}
		else if (FocusType == 2){
			obj.select();
		}
	}
	return isValid;
}
//=================== // Form Validator ==================================

// only lowercase alpha-num
function isLowAlphaNum(obj) {
	if (obj.value.match(/^[a-z0-9]*$/g)) return true;
	else return false;
}

// only alpha-num-basic char
function isEngNumChar(chkStr) {
    var reg = /^[a-zA-Z0-9\!\@\#\$\%\^\&\*\(\)\-\_]+$/;
    if( reg.test(chkStr) ) return true;
	else return false;
}

// only alpha-num
function isEngNum(chkStr) {
    var reg = /^[a-zA-Z0-9]+$/;
    if( reg.test(chkStr) ) return true;
	else return false;
}

// only alpah
function isEng(chkStr) {
    var reg = /^[a-zA-Z]+$/;
    if( reg.test(chkStr) ) return true;
	else return false;
}

// calc byte length
function getByteLen(strVal) {
    var byteLen = 0;
	try {
		for (var inx = 0; inx < strVal.length; inx++) {
			var oneChar = escape(strVal.charAt(inx));
			if ( oneChar.length == 1 ) {
				byteLen ++;
			} else if (oneChar.indexOf("%u") != -1) {
				byteLen += 2;
			} else if (oneChar.indexOf("%") != -1) {
				byteLen += oneChar.length/3;
			}
		}
		return byteLen;
	}
	catch (e) {return 0;}
}

// check current string length
function CheckStrLen(obj,maxLen){
	if ( getByteLen(obj.value) > maxLen ) {
//		alert('내용은 '+maxLen+' Byte까지 입력하실 수 있습니다.');
		obj.value=obj.value.substring(0,maxLen);
		obj.focus();
	}
	if ( typeof(document.getElementById('byteview')) != 'undefined' ) {
	$("#byteview").html( getByteLen(obj.value).toString() );
	}
//	if ( typeof(document.getElementById('idCurLen')) != 'undefined' ) {
//		document.getElementById('idCurLen').innerText = getByteLen(obj.value);
//	}
}
// move focus
function MoveFocus(obj,obj2,len,obj3) {
	if ( Trim(obj.value).length == len ) {
		obj2 = eval("obj.form."+obj2)
		obj3 = eval("obj.form."+obj3)
		if ( typeof(obj2) == 'object') {
			obj2.focus();
		}
		else {
			if ( typeof(obj3) == 'object') {
				obj3.focus();
			}
		}
	}
}

// validate image file
function ChkImgFile(obj,n) {
	if(obj.value.toLowerCase().match(/(.jpg|.jpeg|.gif|.png|.bmp)/)) {
		if ( typeof(obj.form.preview) == 'object' ) {
			if ( n ) {
				preview_obj = eval("obj.form.preview"+n);
			    preview_obj.src = obj.value;
			}
			else {
				obj.form.preview.src = obj.value;
			}
		}
	}
	else {
		alert('파일 형식이 잘못되었습니다.\n\n올바른 이미지 파일을 선택해 주세요.');
		obj.click();
		return false;
	}
}
// check all
function ChkAll(obj,objName) {
	var f = obj.form;
	var chkObj = eval('f.'+objName);

	//obj.checked = !obj.checked;

	if ( typeof(chkObj.length) == 'undefined' ) {
		chkObj.checked = obj.checked;
	}
	else {
	    for(k=0; k<chkObj.length; k++) {
			chkObj[k].checked = obj.checked;
		}
	}
}

// 2009-06-19 Suggy
function CheckAll(chk_all_id, chk_id) {
	var myChecked = $("[name='"+chk_all_id+"']").attr("my_checked");
	var bChecked;

	if (myChecked == '0') {
		myChecked = '1';
		bChecked = true;
	}
	else {
		myChecked = '0';
		bChecked = false;
	}
	//firelog("myChecked", myChecked)
	$("[name='"+chk_all_id+"']").attr("my_checked", myChecked);
	$("[name='"+chk_all_id+"']").attr("checked", bChecked);
	$("[name='"+chk_id+"']").attr("checked", bChecked);
}

function ObjDisable(obj,flg,isChColor) {
	if ( typeof(obj) == "object" ) {
		if( isChColor ) ChObjColor(obj,flg);
		obj.disabled = (flg) ? true : false;
	}
}
// when disabled, change input color
function ChObjColor(obj,flg) {
	obj.style.backgroundColor = (flg) ? '#CECCCE' : '';
}

function NonFormatComma(chkNum) {
	var out = chkNum.replace(/,/g,"");
	return eval(out);
}

// check html tag
function CheckTag(fm){
	var count = 0;
	for ( k = 0; k < fm.length; k++ ){
		ch = fm.charAt(k);
		if ( (ch == "<") || (ch == ">") ){
			count = count + 1;
	    }
	}
	return (count >= 2) ? false : true;
}
// check special character
function CheckChar(chkStr) {
	var specialchar = "`#$%&\|<>;' ";
	for ( k=0; k < chkStr.length; k++ )  {
		if( specialchar.indexOf(chkStr.substring(k,k+1)) != -1) {
			break;
		}
	}
	if ( k != chkStr.length )	return false;
	else	return true;
}
// check special character - use parameter
function chkDisableChar(str,spc_char) {
	var rtn = true;
	for ( k=0; k < str.length; k++ )  {
		if( spc_char.indexOf(str.substring(k,k+1)) != -1) {
			rtn = false;
			break;
		}
	}
	return rtn;
}

// validate radio check
function fnRadioCheck(obj_name) {
	try {
		//firelog("fnRadioCheck", $("input[name='"+obj_name+"']:checked").length);
		return $("input[name='"+obj_name+"']:checked").length;
	} catch (e) {
		return 0;
	}
}

function Ltrim(str) {
	var strReturn = "";
	for(k=0; k <= str.length-1 ; k++) {
		if (str.charAt(k) != ' ') {
			strReturn = str.substring(k,str.length);
			return strReturn;
		}
	}
	return strReturn;
}
function Rtrim(str) {
	var strReturn = "";
	for(k=str.length-1; k >=0  ; k--) {
		if (str.charAt(k) != ' ') {
			strReturn = str.substring(0,k+1);
			return strReturn;
		}
	}
	return strReturn;
}
function Trim(str) {
	return Rtrim(Ltrim(str));
}

function IsNumber(val) {
	for (k =0 ; k < val.length; k++) {
	  	if (val.charCodeAt(k) < 48 || val.charCodeAt(k) > 57) {
	  		return false;
	  	}
	}
	return true;
}

function CheckNumber(fl) {
	fl.value = Trim(fl.value);
	t = fl.value ;
	for(k=0;k<t.length;k++)
	if (t.charCodeAt(k) < 48 || t.charCodeAt(k) > 57) {
		fl.value="";
		fl.focus();
		return false;
	}
}

function FormatComma(strVal) {
	var Num = strVal.replace(/,/g,"")

	Num = (Num+"")
	var commaFlag = Num.length % 3;

	if(commaFlag) {
		var out = Num.substring(0, commaFlag)
		if (Num.length > 3) out += ","
	}
	else
		var out = ""

	for (var k=commaFlag; k < Num.length; k+=3) {
		out += Num.substring(k, k+3)
		if( k < Num.length-3 ) out += ","
	}
	return out;
}
/*
// get checked radio value
function getRadioValue(obj) {
	var value = null;
	if ( typeof(obj.length) != 'undefined' ) {
		for(k=0; k < obj.length; k++) {
			if(obj[k].checked) {
				value = obj[k].value;
				break;
			}
		}
	}
	else {
	    value = obj.value;
	}
	return value;
}

function getSelectValue(obj){
	var value = null;
	value = obj[obj.selectedIndex].value;
	return value;
}
*/
function fnRound(num, pos){
	if(!pos) pos=0;
	return (Math.round( num*(Math.pow(10,pos)))) / (Math.pow(10,pos) );
}

function DisableCtrlF11Key() {
	try {
		var keyCode = window.event.keyCode;
		if( (event.ctrlKey == true) && keyCode == 78) {
			return false;
		}
		//F11막기
		if( keyCode==17 || keyCode==122 ){
			event.keyCode = 0;
			event.cancelBubble = true;
			event.returnValue = false;
		}
	}
	catch(e) {}
}

var ARR_ARTI = new Array();
function RandomPrint(ARR, printnum) {
	ARR.shuffle(2);

	for( i=0; i<printnum; i++ ) {
		document.writeln(ARR[i]);
	}
}
function RandomDiv(divName, rndCount) {
	var no = parseInt(Math.random() * rndCount)+1;
	eval(divName + no).style.visibility = 'visible';
}

// when select text, check radio
function selectRadioText(objRadio, n) {
	objRadio[n].checked = true;
}
// when select text, checkbox on/off
function selectCheckText(objCheck) {
	objCheck.checked = objCheck.checked ? false : true;
}

// image border on/off
function showHideImgBorder(objImg, flg, color) {
	objImg.style.border = flg ? 'solid 1px;' : '0px;';
	if ( flg && color ) objImg.style.borderColor = color;
}

// random bold text
function fnRandomBoldText(text_id, row_cnt, cut_len) {
	var rno = parseInt(Math.random() * row_cnt)+1;
	var randomtext = document.getElementById(text_id + rno.toString());
	if ( cut_len ) {
		var str_html = randomtext.innerHTML;
		randomtext.innerHTML = str_html.substr(0, str_html.length-cut_len);
	}
	randomtext.style.fontWeight = 'bold';
}

function isContains(str, strs) {
	var rtn = false;
	if (strs.indexOf("|")!="") {
		arrStr=strs.split("|");
		for (var i=0; i<arrStr.length; i++) {
			if (str.indexOf(arrStr[i]) != -1) {
				rtn = true;
				break;
			}
		}
	}
	else {
		if (str.indexOf(strs) != -1) {
			rtn = true;
		}
	}
	return rtn;
}
// make goto email-service link
function makeEmailConfirm(email, fontsize) {
	var email_domain, sites, strLink;
	strLink = "";
	email_domain = email.split("@")[1];
	sites = "hotmail|msn|yahoo|gmail|aol|aim|comcast|live.|ymail|sbcglobal|qq.|wp.|verizon|naver|hanmail|daum|nate|roiworld";
	if (isContains(email_domain, sites)) {
		strLink += ' <a href="http://www.'+email_domain+'" target="_blank"><span style="color:blue; text-decoration:underline; font-weight:bold; font-size:'+fontsize+';">[Confirm Email]</span></a> ';
	}
	return strLink;
}
