// NULL Check(True : NULL)
function isBlank(str) 
{ 
	var chkstr = str + ""; 
	var is_Space = true ; 

	if((chkstr == "") || (chkstr == null))
	{
		return (true);
	}

	for(j=0 ;is_Space&&(j<chkstr.length) ; j++) 
	{ 
		if(chkstr.substring(j , j+1) != " ") 
		{ 
			is_Space = false ; 
		} 
	}

	return (is_Space); 
}

// return bytes
function getBytes(str)
{ 
	var len = 0;

	if(str == null)
	{
		return 0;
	}

	for(var i=0; i<str.length; i++)
	{ 
		var c = escape(str.charAt(i));
		
		if(c.length == 1) {
			len ++; 
		} else if(c.indexOf("%u") != -1) {
			len += 2; 
		} else if(c.indexOf("%") != -1) {
			len += c.length/3;
		}
	}

	return len; 
} 

//SELECT OPTION BOX's Value
function CheckSelectBox(sb) 
{ 
	var temp = sb.options[sb.selectedIndex].value ; 
	return (temp); 
} 

function SelectBoxText(sb) 
{ 
	var temp = sb.options[sb.selectedIndex].text ; 
	return (temp); 
} 

// check alpha and number
function isAlphaNum(input)
{ 
	var chars = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789";

	return isChars(input,chars); 
}

// only number
function isNum(input)
{ 
	var chars = "0123456789";

	return isChars(input,chars); 
} 

// check input value of chars
function isChars(input,chars)
{ 
	for(var inx=0; inx < input.length; inx++)
	{ 
		if(chars.indexOf(input.charAt(inx)) == -1)
		{
			return false;
		}
	}

	return true; 
}

// check character in string
function checkChar(string, char)
{
	var length = string.length;
	if(length <= 0) { return false; }

	for(var i=0; i<length; i++)
	{
		if(string.charAt(i) == char)
		{
			return (i);
		}
	}

	return (-1);
}

// ony input number
function NumOnly()
{
	if(event != null)
	{ 
		if(event.keyCode < 48 || event.keyCode > 57)
		{ 
			event.returnValue = false;
		} 
	}	
} 

function Trim(str)
{ 
	if(str == "")
	{ 
		return str; 
	} 

	var len = str.length; 
	var st = 0; 

	while((st < len) && (str.charAt(st) <= ' '))
	{ 
		st++; 
	} 

	while((st < len) && (str.charAt(len - 1) <= ' '))
	{ 
		len--; 
	} 

	return ((st > 0) || (len < str.length)) ? str.substring(st, len) : str; 
} 

//make select box
function MakeSelectBox(selObj, varText, varValue)
{ 
	varObj = eval(selObj); 

	var empOption = null ;

	empOption = document.createElement("OPTION"); 
	empOption.text = varText ; 
	empOption.value = varValue ; 
	varObj.options.add(empOption);
} 

function CheckMail(email)
{ 
	var pattern = /^(.+)@(.+)$/; 
	var atom = "\[^\\s\\(\\)<>#@,;:!\\\\\\\"\\.\\[\\]\]+"; 
	var word="(" + atom + "|(\"[^\"]*\"))"; 
	var user_pattern = new RegExp("^" + word + "(\\." + word + ")*$"); 
	var ip_pattern = /^\[(\d{1,3})\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})\]$/; 
	var domain_pattern = new RegExp("^" + atom + "(\\." + atom +")*$"); 

	var arr = email.match(pattern); 

	if(!arr)
	{
		return false;
	}

	if(!arr[1].match(user_pattern))
	{
		return false;
	}

	var ip = arr[2].match(ip_pattern);

	if(ip) { 
		for(var i=1; i<5; i++)
		{
			if(ip[i] > 255)
			{
				return false;
			}
		}
	} else { 
		if(!arr[2].match(domain_pattern))
		{
			return false;
		}

		var domain = arr[2].match(new RegExp(atom,"g"));
		
		if(domain.length<2)
		{
			return false;
		}

		if(domain[domain.length-1].length<2 || domain[domain.length-1].length>3)
		{
			return false;
		}
	}

	return true; 
}

function Hangul_Alpha_NumOnly()
{
	var chars = "`~!@#$%^&*()-_=+\\|[{]};:\'\",<.>/?";

	if(event != null)
	{
		for(var i=0; i<chars.length; i++)
		{
			if(event.keyCode == chars.charCodeAt(i))
			{
				event.returnValue = false;
				return;
			}
		}
	}
}

function Alpha_NumOnly(str)
{
	var chars = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890";

	if(arguments.length >= 1)
	{
		if(str.length == 1 && str == " ") {
			var str1 = str;
		} else {
			var str1 = Trim(str);
		}
		if(!isBlank(str1)) { chars += str1; }
	}

	if(event != null)
	{
		for(var i=0; i<chars.length; i++)
		{
			if(event.keyCode == chars.charCodeAt(i))
			{
				event.returnValue = true;
				return;
			}
		}

		event.returnValue = false;
	}
}

function input_check(check_string)
{
	var char_ASCII = check_string.charCodeAt(check_string.length-1);

	// number
	if(char_ASCII >= 48 && char_ASCII <= 57)
		return 1;
	// alphabet
	else if((char_ASCII >= 65 && char_ASCII <= 90) || (char_ASCII >= 97 && char_ASCII <= 122))
		return 2;
	// special chars
	else if((char_ASCII >= 33 && char_ASCII <= 47) || (char_ASCII >= 58 && char_ASCII <= 64) || (char_ASCII >= 91 && char_ASCII <= 96) || (char_ASCII >= 123 && char_ASCII <= 126))
		return 4;
	// hangul
	else if((char_ASCII >= 12592) || (char_ASCII <= 12687))
		return 3;
	else return 0;
}

// retrieve sizes of files
function getFileSize(filePath)
{

	var len = 0;
	
	if(navigator.appName.indexOf("Netscape") != -1) {
		try {
			netscape.security.PrivilegeManager.enablePrivilege('UniversalXPConnect');
		} catch(e) {
			alert(e);
			return -1;
		}
		try {
			var file = Components.classes["@mozilla.org/file/local;1"].createInstance(Components.interfaces.nsILocalFile);
			file.initWithPath(filePath);
			
			len = file.fileSize;
		} catch(e) {
			alert("에러 발생가 발생했습니다.:"+e);
		}
	} else if (navigator.appName.indexOf('Microsoft') != -1) {


		if(navigator.userAgent.indexOf('MSIE') > 0 && navigator.appVersion.indexOf('MSIE 7.') > 0) {
/*
// IE7 disable for securities

			// MSIE 7
		    var fso = new ActiveXObject("Scripting.FileSystemObject"); // error
			var f = fso.GetFile(filePath);
			len = f.size;
			f = null;
			fso = null;
*/
	return;
		} else {
			// MSIE 7 below
			var img = new Image();
			img.dynsrc = filePath;
			len = img.fileSize;
		}
	}
	return len;

}

// retrieve width and height of image
function getImageSize(path)
{
	var size = new Array(2);

	var img = new Image();
	img.src = path;

	size[0] = img.width;
	size[1] = img.height;

	return (size);
}

// retrieve ext of file
function getFileType(file)
{
	var fileType = "";
	var lastidx = -1;

	lastidx = file.lastIndexOf('.');
	var extension = file.substring(lastidx+1, file.length);

	if(lastidx != -1)
	{	
		fileType = extension.toLowerCase();
		return fileType;
	}

	return fileType;
}

// commert insert each 3 digit
function commaInsert(val)
{
	//if(!isNum(val) { return false; }

	val = val.toString();

	if(val.length <= 3) { return val; }

	var reg = /(^[+-]?\d+)(\d{3})/;
	val += '';

	while (reg.test(val))
	val = val.replace(reg, '$1' + ',' + '$2');

	return val;
}

// jumin Check(OK : True)
function isJumin(strJumin)
{ 
	var isJumin = true;

	if(isBlank(strJumin)) { 
		return false; 
	} else if(strJumin.length < 13 || strJumin.length > 13) { 
		return false; 
	} else if (strJumin.substring(2,3) > "1" || strJumin.substring(6,7) > "2" || strJumin.substring(6,7) == "0") { 
		return false; 
	} else if (strJumin.substring(2,3) == "1" && strJumin.substring(3,4) > "2"){ 
		return false; 
	} else if (!(strJumin.substring(4,6) >= "01" && strJumin.substring(4,6) <= "31")){ 
		return false; 
	}

	for(var j=0; isJumin && (j < strJumin.length); j++)
	{ 
		if(((strJumin.substring(j,j+1) < "0") || (strJumin.substring(j,j+1) > "9")))
		{ 
			isJumin = false; 
		} 
	}

	var a1=strJumin.substring(0,1) 
	var a2=strJumin.substring(1,2) 
	var a3=strJumin.substring(2,3) 
	var a4=strJumin.substring(3,4) 
	var a5=strJumin.substring(4,5) 
	var a6=strJumin.substring(5,6) 
	var check_digit=a1*2+a2*3+a3*4+a4*5+a5*6+a6*7 
	var b1=strJumin.substring(6,7) 
	var b2=strJumin.substring(7,8) 
	var b3=strJumin.substring(8,9) 
	var b4=strJumin.substring(9,10) 
	var b5=strJumin.substring(10,11) 
	var b6=strJumin.substring(11,12) 
	var b7=strJumin.substring(12,13) 

	var check_digit=check_digit+b1*8+b2*9+b3*2+b4*3+b5*4+b6*5 
	check_digit = check_digit%11 
	check_digit = 11 - check_digit 
	check_digit = check_digit%10

	if(check_digit != b7)
	{ 
		isJumin = false; 
	} 

	return isJumin; 
}

// retrieve position of object
function getPosition(obj) 
{ 
    var ret = new Object();

    if(document.all) { 
        var rect = obj.getBoundingClientRect(); //객체의 offset의 left,top,width,height를 반환

        ret.left = rect.left + (document.documentElement.scrollLeft || document.body.scrollLeft);
        ret.top  = rect.top  + (document.documentElement.scrollTop  || document.body.scrollTop);

        ret.width  = rect.right  - rect.left; 
        ret.height = rect.bottom - rect.top; 
    } else { 
        var box = document.getBoxObjectFor(obj);

        ret.left = box.x; 
        ret.top  = box.y; 

        ret.width  = box.width; 
        ret.height = box.height; 
    }

    return ret; 
}

// retrieve position of object
function getBoundsObject(objId)
{
	var techbug = new Object();
	var tag = document.getElementById(objId);

	if(tag == null || tag == undefined) { return; }

	if(tag.getBoundingClientRect) { //IE, FF3
		var rect = tag.getBoundingClientRect();

		techbug.left = rect.left + (document.documentElement.scrollLeft || document.body.scrollLeft);
		techbug.top  = rect.top  + (document.documentElement.scrollTop  || document.body.scrollTop);

		techbug.width  = rect.right - rect.left;
		techbug.height = rect.bottom - rect.top + 1;
	} else if(document.getBoxObjectFor) {
		var box = document.getBoxObjectFor(tag);

		techbug.left = box.x;
		techbug.top  = box.y;

		techbug.width = box.width;
		techbug.height = box.height;
	} else {
		techbug.left = tag.offsetLeft;
		techbug.top  = tag.offsetTop;

		techbug.width = tag.offsetWidth;
		techbug.height = tag.offsetHeight + 3;

		var parent = tag.offsetParent;
		if(parent != tag)
		{
			while(parent)
			{
				techbug.left = parent.offsetLeft;
				techbug.top  = parent.offsetTop;
				parent = parent.offsetParent;
			}
		}

		var ua = navigator.userAgent.toLowerCase();
		if(ua.indexOf('opera') != -1 || (ua.indexOf('safari') != -1 && getStyle(tag, 'position') == 'absolute'))
		{
			techbug.top -= document.body.offsetTop;
		}
	}

	return techbug;
}

function trim(str)
{
	return str.replace(/(^\s+)|(\s+$)/g,"");
}

function Replace_Str(ss)
{
   var r, re;													
   re			=/<[Bb][Rr]>/g;
   //re			=/<(.*)>.*<\/\1>/			//HTML tag pattern
   r			=ss.replace(re, "<BR>\n");	
   return(r);									
}

function clipboard(str)
{
	try {
		window.clipboardData.setData("Text", str);
    }catch(e){}
}

// wait mili-seconds
function sleep(numberMillis)
{
	var now = new Date();
	var exitTime = now.getTime() + numberMillis;

	while(true)
	{
		now = new Date();
		if(now.getTime() > exitTime) { return; }
	}
}

// change size of iframe
function resizeFrame(id,init,widthDiff,heightDiff)
{
	var iframeObj = document.getElementById(id);
	var innerBody = iframeObj.contentWindow.document.body;
	oldEvent = innerBody.onclick;
	innerBody.onclick = function(){ resizeFrame(id,1,widthDiff,heightDiff);oldEvent; };
	var innerHeight = innerBody.scrollHeight + (innerBody.offsetHeight - innerBody.clientHeight);
	iframeObj.style.height = innerHeight - heightDiff;
	//var innerWidth = innerBody.scrollWidth + (innerBody.offsetWidth - innerBody.clientWidth);
	//iframeObj.style.width = innerWidth; 
	iframeObj.style.width = widthDiff;
	//if(!arguments[1]) { this.scrollTo(1,1); }
}

function setCookie(name, value, expires)
{
   document.cookie = name + "=" + escape(value) + "; path=/; expires=" + expires.toGMTString();
}

function getCookie(Name)
{
   var search = Name + "=";

   if(document.cookie.length > 0) // if setting cookie
   {
      offset = document.cookie.indexOf(search)

      if(offset != -1) // if exist cookie
	  {
         offset += search.length
         // set index of beginning of value
         end = document.cookie.indexOf(";", offset)
         
         if(end == -1)
		 {
            end = document.cookie.length
		 }

         return unescape(document.cookie.substring(offset, end))
      }
   }
   return "";
}

function saveLoginID(check, id)
{
	var check_obj = document.getElementById(check);
	var id_obj    = document.getElementById(id);
	if(check_obj == null || id_obj == null) { return; }

   var expdate = new Date();

   if(check_obj.checked == true) {
      expdate.setTime(expdate.getTime() + 1000 * 3600 * 24 * 30); // 30 days
   } else {
      expdate.setTime(expdate.getTime() - 100); // condition of deletion of cookie
   }

   setCookie("save_id", id_obj.value, expdate);
}

function init()
{
	document.oncontextmenu = new Function ("return false");
	document.ondragstart   = new Function ("return false");
	document.onselectstart = new Function ("return false");	
}

// round table
function roundTable(objID,radius,wthick,hthick,rbordercolor,rbgcolor)
{
	var obj = document.getElementById(objID);
	var Parent, objTmp, Table, TBody, TR, TD;
	var bdcolor, bgcolor, Space;
	var trIDX, tdIDX, MAX;
	var styleWidth, styleHeight;

	// get parent node
	Parent = obj.parentNode;
	objTmp = document.createElement('SPAN');
	Parent.insertBefore(objTmp, obj);
	Parent.removeChild(obj);

	// get attribute
	bdcolor = rbordercolor;
	bgcolor = rbgcolor;
	radius = parseInt(radius);
	if(radius == null || radius < 1) radius = 1;
	else if (radius > 6) radius = 6;

	MAX = radius * 2 + 1;

	//create table 시작
	Table = document.createElement('TABLE');
	TBody = document.createElement('TBODY');

	Table.cellSpacing = 0;
	Table.cellPadding = 0;

	for(trIDX=0; trIDX < MAX; trIDX++)
	{
		TR = document.createElement('TR');
		Space = Math.abs(trIDX - parseInt(radius));

		for(tdIDX=0; tdIDX < MAX; tdIDX++)
		{
			TD = document.createElement('TD');

			styleWidth  = wthick+'px';
			styleHeight = hthick+'px';

			if(tdIDX == 0 || tdIDX == MAX - 1) {
				styleHeight = null;
			} else if(trIDX == 0 || trIDX == MAX - 1) {
				styleWidth = null;
			} else if (radius > 2) {
				if(Math.abs(tdIDX - radius) == 1) styleWidth = '2px';
				if(Math.abs(trIDX - radius) == 1) styleHeight = '2px';
			}

			if(styleWidth != null) TD.style.width = styleWidth;
			if(styleHeight != null) TD.style.height = styleHeight;

			if(Space == tdIDX || Space == MAX - tdIDX - 1) TD.style.backgroundColor = bdcolor;
			else if(tdIDX > Space && Space < MAX - tdIDX - 1) TD.style.backgroundColor = bgcolor;

			if (Space == 0 && tdIDX == radius) TD.appendChild(obj);
			TR.appendChild(TD);
		}
		TBody.appendChild(TR);
	}
	//create table

	Table.appendChild(TBody);

	// insert table and remove original table
	Parent.insertBefore(Table, objTmp);
}

function colorCheck(color)
{
	color = Trim(color);

	if(isBlank(color) || color.length > 7) { return false; }
	if(color.charAt(0) != '#') { return false; }

	var check = false;
	var str = "ABCDEFabcdef0123456789";

	for(var i=1; i<color.length; i++)
	{
		check = false;
		for(var j=0; j<str.length; j++)
		{
			if(color.charAt(i) == str.charAt(j))
			{
				check = true;
				break;
			}
		}

		if(check != true) { return false; }
	}

	return check;
}

function checkStrLength(maxlen,field,id,type)
{
	var temp;
	var msglen = maxlen*2;
	var value = field.value;

	var l =  field.value.length; 
	var tmpstr = "" ;

	var obj = document.getElementById(id);

	if(l == 0) {
		value = maxlen*2;
	} else {
		for(k=0;k<l;k++)
		{
			temp = value.charAt(k);

			if(escape(temp).length > 4) {
				msglen -= 2;
			} else {
				msglen--;
			}

			if(msglen < 0) {
				alert("입력한 글자수가 "+maxlen+"를 초과하였습니다.");
				field.value= tmpstr;
				break;
			} else {
				tmpstr += temp;
				if(type == 1) {
					obj.innerHTML = tmpstr.length;
				} else {
					obj.value = tmpstr.length;
				}
			}
		}
	}
}
