/*--------------------------------------------------------------------------------------------------
Notice.....
¸Þ¼­µå Ãß°¡ÇÏ±â Àü¿¡ Å°¿öµå ¹Ýµå½Ã Ã£¾Æº¸°í Ãß°¡ÇÏ¼¼¿ä...
¹ÚÁ¾°ü jkpark@theuber.co.kr
--------------------------------------------------------------------------------------------------*/
////////////////////////////////////////////////////////////////////////////////////////////////////String.prototype...................
/*
 * Æ®¸²
 * keyword : ÀÚ¸£±â
 */
String.prototype.trim = function(str) { 
	str = this != window ? this : str; 
	return str.replace(/^\s+/g,'').replace(/\s+$/g,''); 
}

/*
 * ÇÑ±ÛÁö¿ø ¹ÙÀÌÆ®¼ö
 * keyword : ÇÑ±ÛÁö¿ø ¹ÙÀÌÆ® Ä«¿îÆ® ±æÀÌ ¹®ÀÚ¿­
 */
String.prototype.bytes = function(str) {
    str = this != window ? this : str;
    var len = 0; 
    for(j=0; j<str.length; j++) {
        var chr = str.charAt(j);
        len += (chr.charCodeAt() > 128) ? 2 : 1
    }
    return len;
}
/*
 * ÇÑ±Û Áö¿ø ¼­ºê½ºÆ®¸µ
 * keyword : ¼­ºê½ºÆ®¸µ substr substring
 */
String.prototype.substringKor = function(len, tail) {
	var str = this;
	var l = 0;
	for (var i=0; i<str.length; i++) {
		l += (str.charCodeAt(i) > 128) ? 2 : 1;
		if (l > len) return str.substring(0,i)+''+tail;
	}
	return str;
}

/*
 * ¹®ÀÚ¿­ ¹Ù²Ù±â
 * keyword : replace ¹Ù²Ù±â
 */
String.prototype.replaceAll = function(f, t) {
	return this.trim().replace(eval("/" + f + "/g"), t);
}

/*
 * ÀÚ¸´¼ö ¸ÂÃß±â
 * keyword : Ã¤¿ì±â
 */
String.prototype.zf = function(l) { return '0'.string(l - this.length) + this; } 

/*
 * ¼ýÀÚ¸¸ ÀÔ·Â¹Þ±â
 * keyword : ¼ýÀÚ  ÀÔ·Â Á¦ÇÑ
 */
String.prototype.allowNum = function(){
	if(	(event.keyCode >= 48 && event.keyCode <= 57) || 
		(event.keyCode >= 96 && event.keyCode <= 105) ||
		(event.keyCode == 46) ||  // DEL
		(event.keyCode == 8)  || // backspace
		(event.keyCode == 37) || // ¡ç key
		(event.keyCode == 38) ||  // ¡è key
		(event.keyCode == 39) ||  // ¡æ key
		(event.keyCode == 40) || // ¡é key
		(event.keyCode == 35) || // HOME key
		(event.keyCode == 36) ) {  // END key
		event.returnValue=true;
	} else {
		event.returnValue=false;
	}
}

/*
 * Á¶»çÀÚµ¿¼±ÅÃ µû·Î ¾µÀÏ¾øÀ½.
 * keyword : Á¶»ç.
 */
String.prototype.hasFinalConsonant = function(str) {
    str = this != window ? this : str; 
    var strTemp = str.substr(str.length-1);
    return ((strTemp.charCodeAt(0)-16)%28!=0);
}

/*
 * ´ë¹®ÀÚ·Î
 * keyword : ´ë¹®ÀÚ
 */
String.prototype.toUpperCase = function() {
	var event = window.event;
	if(event.keyCode >= 97 && event.keyCode <= 122) {
		event.keyCode = event.keyCode - 32;
	}
}

//dependent on String.prototype.zf let it be this
String.prototype.string = function(l) { var s = '', i = 0; while (i++ < l) { s += this; } return s; } 

////////////////////////////////////////////////////////////////////////////////////////////////////Date.prototype...................

//a global month names array
var gsMonthNames = new Array('January','February','March','April','May','June','July','August','September','October','November','December');

// a global day names array
var gsDayNames = new Array('Sunday','Monday','Tuesday','Wednesday','Thursday','Friday','Saturday');

/*
 * ¿øÇÏ´Â ³¯Â¥Æ÷¸ËÀ¸·Î
 * keyword : ³¯Â¥ Æ÷¸Ë Å¸ÀÔ
 * useage  : new Date().format('yyyymmddhhnnss'); -> '20071206134200'
 */
Date.prototype.format = function(f) {
	if (!this.valueOf()) return '';
	var d = this;
	return f.replace(/(yyyy|mmmm|mmm|mm|dddd|ddd|dd|hhh|hh|nn|ss|a\/p)/gi,
		function($1) {
			switch ($1.toLowerCase()) {
				case 'yyyy': return d.getFullYear();
				case 'mmmm': return gsMonthNames[d.getMonth()];
				case 'mmm':  return gsMonthNames[d.getMonth()].substr(0, 3);
				case 'mm':   return (d.getMonth() + 1).zf(2);
				case 'dddd': return gsDayNames[d.getDay()];
				case 'ddd':  return gsDayNames[d.getDay()].substr(0, 3);
				case 'dd':   return d.getDate().zf(2);
				case 'hhh':  return d.getHours().zf(2);
				case 'hh':   return ((h = d.getHours() % 12) ? h : 12).zf(2);
				case 'nn':   return d.getMinutes().zf(2);
				case 'ss':   return d.getSeconds().zf(2);
				case 'a/p':  return d.getHours() < 12 ? 'a' : 'p';
			}
		}    
	);
}


////////////////////////////////////////////////////////////////////////////////////////////////////Date.prototype...................

/*
 * ÀÚ¸´¼ö ¸ÂÃß±â ¾Õ¿¡ 0Ãß°¡ ¿¹)00004
 * keyword : Ã¤¿ì±â
 */
Number.prototype.zf = function(l) { return this.toString().zf(l); } 

/*
 * ¼ýÀÚ¸¸ ÀÔ·Â¹Þ±â
 * keyword : ¼ýÀÚ  ÀÔ·Â Á¦ÇÑ
 */
Number.prototype.allowNum = function() { return this.toString().allowNum(); }





//ÀÌÇÏ Æã¼Ç.
//701 : Á¤ÇØÁø ±ÛÀÚ¼ö ¸¸Å­¸¸ ÀÔ·Â¹Þ±â(Object:target, int:byte, boolean:¹ÙÀÌÆ®Ä«¿îÆ®¿©ºÎ, Object:¹ÙÀÌÆ®Ä«¿îÆ® trueÀÎ °æ¿ì »Ñ·ÁÁÙ ´ë»ó)
//use :  onchange && onkeyup="limitText(this, 500, true, $('opn_byte'));"
function limitText(limitField, limitNum, bcTf, disObj) {
    if (limitField.value.bytes() > limitNum) {
	    alert(limitNum+'±ÛÀÚ ±îÁö¸¸ ÀÔ·ÂÇÏ¿© ÁÖ½Ê½Ã¿ä.');
        limitField.value = limitField.value.substringKor(limitNum, '');
    } 
    if(bcTf) {
	    disObj.innerHTML = limitField.value.bytes();
    }
}
//702 : ÇØ´çÁÖ¼Ò¸¦ Å¬¸³º¸µå¿¡ º¹»ç
function setClipBoard ( url ) {

	window.clipboardData.setData('Text', url);
	var msg = "ÇöÀç ÆäÀÌÁöÀÇ ±Û ÁÖ¼Ò°¡ º¹»çµÇ¾ú½À´Ï´Ù.";
	alert(url+'\n¿î¿µ½Ã¿¡´Â ¾È³»¸àÆ® º¸¿©ÁÙ°ÍÀÓ.');
}

//703 : È­¸é¿¡ ¿øÇÏ´Â ÇÁ¸°Æ® ¿µ¿ªÀ» ¸¸Å­ Ãâ·ÂÇÑ´Ù. ÇÊ¼ö-¿øÇÏ´Â ¿µ¿ªÀº <div id=print_area></div> ¼³Á¤ÇØ¾ß ÇÑ´Ù.
var initBody = '';      

function beforePrint(){
	initBody = document.body.innerHTML;
    document.body.innerHTML = print_area.innerHTML;
} 

function afterPrint(){  
	document.body.innerHTML = initBody;                   
} 

function printArea(){
	window.print();       
}  
   
window.onbeforeprint = beforePrint;
window.onafterprint  = afterPrint;


//704 : ÁÖ¹Î ¹øÈ£ Ã¼Å©·çÆ¾
function isValidJumin(num) {
    var pattern = /^([0-9]{6})-?([0-9]{7})$/; 
    if (!pattern.test(num)) return false;
    num = RegExp.$1 + RegExp.$2;

    var sum = 0;
    var last = num.charCodeAt(12) - 0x30;
    var bases = "234567892345";
    for (var i=0; i<12; i++) {
        if (isNaN(num.substring(i,i+1))) return false;
        sum += (num.charCodeAt(i) - 0x30) * (bases.charCodeAt(i) - 0x30);
    }
    var mod = sum % 11;
    return ((11 - mod) % 10 == last) ? true : false;
}

//705 : ÀüÈ­¹øÈ£ Ã¼Å©·çÆ¾
function isValidPhone(num) {
    var pattern = /^([0]{1}[0-9]{1,2})-?([1-9]{1}[0-9]{2,3})-?([0-9]{4})$/;
    return (pattern.exec(num))? true : false;
}


//705 : ÆÐÅÏ °Ë»ç ÇÔ¼öµé
/// ÆÐÅÏ °Ë»ç ÇÔ¼öµé ///
function josa(str,tail) {
    return (str.hasFinalConsonant()) ? tail.substring(0,1) : tail.substring(1,2);
}

function doError(el,type,action) {
    var pattern = /{([a-zA-Z0-9_]+)\+?([°¡-ÆR]{2})?}/;
    var name = (hname = el.getAttribute("TITLE")) ? hname : el.getAttribute("NAME");
    pattern.exec(type);
    var tail = (RegExp.$2) ? josa(eval(RegExp.$1),RegExp.$2) : "";
    alert(type.replace(pattern,eval(RegExp.$1) + tail));
    if (action == "sel") {
        el.select();
    } else {
        el.value = "";
    }
    el.focus();
    return false;
}  

function onlyId(el) {
    var pattern = /^[a-zA-Z]{1}[a-zA-Z0-9_]+$/;
    return (pattern.test(el.value)) ? true : doError(el,"{name+Àº´Â} Ã¹±ÛÀÚ¸¦ ¿µ¹®À¸·Î ½ÃÀÛÇØ¾ßÇÏ°í,\n ±× ÀÌÈÄ¿¡´Â ¿µ¹®,¼ýÀÚ, _ ¹®ÀÚ¸¸ »ç¿ëÇÒ ¼ö ÀÖ½À´Ï´Ù");
}

function onlyNum(el) {
    var pattern = /^[0-9]+$/;
    return (pattern.test(el.value)) ? true : doError(el,"{name+Àº´Â} ¹Ýµå½Ã ¼ýÀÚ·Î¸¸ ÀÔ·ÂÇØ¾ß ÇÕ´Ï´Ù");
}

function onlyEng(el) {
    var pattern = /^[a-zA-Z]+$/;
    return (pattern.test(el.value)) ? true : doError(el,"{name+Àº´Â} ¹Ýµå½Ã ¿µ¹®ÀÚ·Î¸¸ ÀÔ·ÂÇØ¾ß ÇÕ´Ï´Ù");
}

function onlyEngNum(el) {
    var pattern = /^[a-zA-Z0-9]+$/;
    return (pattern.test(el.value)) ? true : doError(el,"{name+Àº´Â} ¹Ýµå½Ã ¿µ¹®ÀÚ,¼ýÀÚ·Î¸¸ ÀÔ·ÂÇØ¾ß ÇÕ´Ï´Ù");
}

function onlyHan(el) {
    var pattern = /^[°¡-ÆR]+$/;
    return (pattern.test(el.value)) ? true : doError(el,"{name+Àº´Â} ¹Ýµå½Ã ÇÑ±Û·Î¸¸ ÀÔ·ÂÇØ¾ß ÇÕ´Ï´Ù");
}

function onlyHanEng(el) {
    var pattern = /^[°¡-ÆRa-zA-Z]+$/;
    return (pattern.test(el.value)) ? true : doError(el,"{name+Àº´Â} ¹Ýµå½Ã ÇÑ±Û,¿µ¹®ÀÚ·Î¸¸ ÀÔ·ÂÇØ¾ß ÇÕ´Ï´Ù");
}

function onlyHanEngNum(el) {
    var pattern = /^[°¡-ÆRa-zA-Z0-9]+$/;
    return (pattern.test(el.value)) ? true : doError(el,"{name+Àº´Â} ¹Ýµå½Ã ÇÑ±Û,¿µ¹®ÀÚ,¼ýÀÚ·Î¸¸ ÀÔ·ÂÇØ¾ß ÇÕ´Ï´Ù");
}

function onlyHanNum(el) {
    var pattern = /^[°¡-ÆR0-9]+$/;
    return (pattern.test(el.value)) ? true : doError(el,"{name+Àº´Â} ¹Ýµå½Ã ÇÑ±Û,¼ýÀÚ·Î¸¸ ÀÔ·ÂÇØ¾ß ÇÕ´Ï´Ù");
}

function onlyHan1(el) {
    var pattern = /[°¡-ÆR]/;
    return (pattern.test(el.value)) ? true : doError(el,"{name+Àº´Â} ¹Ýµå½Ã ÇÑ±ÛÀ» Æ÷ÇÔÇØ¾ß ÇÕ´Ï´Ù");
}

function isHPHead(el) {
    return (el.value == "010" || el.value == "011" || el.value == "016" || el.value == "017" || el.value == "018" || el.value == "019" )? true : doError(el,"{name+À»¸¦} Á¤È®È÷ ÀÔ·ÂÇÏ¼¼¿ä.");	
}

function isReq(el) {
    return (el.value != null && el.value != "")? true : doError(el,"{name+À»¸¦} ÀÔ·ÂÇÏ¼¼¿ä");	
}

function isEnough(el,num) {
    return (el.value.length >= num)? true : doError(el,"{name+Àº´Â} "+num+"ÀÚ ÀÌ»óÀÔ·ÂÇÏ¼¼¿ä");	
}

function isOver(el,num) {
    return (el.value.length <= num)? true : doError(el,"{name+Àº´Â} "+num+"ÀÚ±îÁö¸¸ ÀÔ·ÂÇÏ¼¼¿ä");	
}


function isExact(el,num) {
    return (el.value.length == num)? true : doError(el,"{name+Àº´Â} "+num+"ÀÚ¸® ÀÔ´Ï´Ù");	
}

function isEmail(el,value) {
    var value = value ? value : el.value;
    var pattern = /^[_a-zA-Z0-9-\.]+@[\.a-zA-Z0-9-]+\.[a-zA-Z]+$/;
    return (pattern.test(value)) ? true : doError(el,"{name+À»¸¦} ¹Ù¸£°Ô ÀÔ·ÂÇØÁÖ¼¼¿ä");
}

//±Û¾²°í ±×³É ÆäÀÌÁö¸¦ ºüÁ® ³ª°¥°æ¿ì ¾È³»Ã¢.
letmego = false;
hasWriteCont = false;
function exitOk() {
	if(!letmego) { 
		if (hasWriteCont) {
			return "ÀÌ ÆäÀÌÁö¸¦ ¹þ¾î³ª¸é ÀÛ¼ºµÈ ³»¿ëÀº ÀúÀåµÇÁö ¾Ê½À´Ï´Ù.";
		}		
	}
}