/**
 * <pre>
 * script Æ¯¼ö ¹®ÀÚ Ä¡È¯
 * ", ', \n, \r
 * </pre>
 * @param str ¹®ÀÚ¿­
 * @return º¯È¯µÈ ¹®ÀÚ¿­
 */
function toValidStr(str){
	re1 = /\'/gi;
	re2 = /\"/gi;
	re3 = /\n/gi;
	re4 = /\r/gi;
	str = str.replace(re1, "\'");
	str = str.replace(re2, "\"");
	str = str.replace(re3, "");
	str = str.replace(re4, "");

	return str;
}

/**
 * ¾ÕµÚ ºó°ø°£ »èÁ¦
 * @param str stirng
 * @return string
 */
String.prototype.trim = function(str) { 
	str = this != window ? this : str; 
	return str.replace(/^\s+/g,'').replace(/\s+$/g,''); 
}
 
function trim(str) {
	if(typeof(str) == "undefined") return "";
	return str.replace(/(^\s*)|(\s*$)/gi, "");
}

/**
 * ½ºÆ®¸µ º¯È¯
 * @param originStr º¯È¯ ´ë»ó ½ºÆ®¸µ
 * @param from ¹Ù²Ü ´ë»ó ½ºÆ®¸µ
 * ¹Ù²Ü ´ë»ó ½ºÆ®¸µ Áß¿¡ Á¤±Ô½Ä Ç¥Çö ¹®ÀÚ ¡º  . ¶Ç´Â / ¶Ç´Â (  ¶Ç´Â )   ¡»
 * °¡ µé¾î ÀÖÀ» °æ¿ì \\ (¿ª½½·¡½Ã µÎ°³) ¸¦ ¾Õ¿¡ ºÙ¿©¼­ Ç¥ÇöÇÑ´Ù.
 * ¿¹) var str = "12.34"; ¿¡¼­ . À» "" ·Î replace ÇÒ °æ¿ì  replaceStr(str, "\\.","");
 * @param to ¸ñÀû ½ºÆ®¸µ
 * @return string
 */
function replaceStr(originStr, from, to) {
	if(typeof(originStr) == "undefined") return "";
    if(typeof(originStr) != "string") originStr = String(originStr);
    return originStr.replaceAll(from, to);
}

/**
 * ½ºÆ®¸µ º¯È¯
 * var str = "abc"; a ¸¦ f ·Î ¹Ù²Ü¶§   str.replaceAll("a","f")  ÇüÅÂ·Î »ç¿ëÇÑ´Ù.
 * ¹Ù²Ü ´ë»ó ½ºÆ®¸µ Áß¿¡ Á¤±Ô½Ä Ç¥Çö ¹®ÀÚ ¡º  . ¶Ç´Â / ¶Ç´Â (  ¶Ç´Â )   ¡»
 * °¡ µé¾î ÀÖÀ» °æ¿ì \\ (¿ª½½·¡½Ã µÎ°³) ¸¦ ¾Õ¿¡ ºÙ¿©¼­ Ç¥ÇöÇÑ´Ù.
 * ¿¹) var str = "12.34"; ¿¡¼­ . À» "" ·Î replace ÇÒ °æ¿ì  replaceStr(str, "\\.","");
 * @param from ¹Ù²Ü ´ë»ó ½ºÆ®¸µ
 * @param to ¸ñÀû ½ºÆ®¸µ
 * @return string
 */
String.prototype.replaceAll = function(from, to) {
    return this.replace(new RegExp(from, "g"), to);
}


/**
 * ¹®ÀÚ¿­À» Æ¯Á¤ ±¸ºÐÀÚ·Î ³ª´« ´ÙÀ½ n¹øÂ° ¹®ÀÚ¿­À» ¹ÝÈ¯ÇÑ´Ù.
 * @param tokenValue ³ª´­ ¹®ÀÚ¿­
 * @param delimiter ±¸ºÐÀÚ
 * @param number ¸®ÅÏÇÒ n¹øÂ° ¹®ÀÚ¿­
 * @return string
 */
function getSplitValue(tokenValue, delimiter, number){
    returnValue = '';
    var tokens = tokenValue.split(delimiter);
    for(i=0;i<tokens.length;i++){
        if(i==eval(number)){
            returnValue = tokens[i];
            break;
        }
    }
    return returnValue;
}

/**
 * <pre>
 * ¹®ÀÚ¿­ÀÌ ÁÖ¾îÁø ¹üÀ§ ¹Û¿¡ ÀÖ´ÂÁö °Ë»çÇÑ´Ù
 *
 * ÃÖ´ë±æÀÌ º¸´Ù Å©°Å³ª, ÃÖ¼Ò±æÀÌº¸´Ù ÀÛÀ¸¸é ¿¡·¯¸Þ¼¼Áö¸¦ º¸¿©ÁÖ°í,
 * true¸¦ ¸®ÅÏÇÑ´Ù.
 * </pre>
 * @param field form.element
 * @param min int ÃÖ¼Ò±æÀÌ
 * @param max int ÃÖ´ë±æÀÌ
 * @param error_msg string ¿¡·¯ Message
 * @return boolean
 */
function isOutOfRange(field, min, max, error_msg){
	var len = getByteLength(field);
	if( len < min || len > max)
	{
		alert(error_msg);
		field.focus();
		field.select();
		return true;
	}
	return false;
}

/**
 * <pre>
 * Á¤È®ÇÑ ±æÀÌ°¡  ¾Æ´ÑÁö °Ë»ç
 * Á¤È®ÇÑ ±æÀÌ¸é false, Á¤È®ÇÑ ±æÀÌ°¡ ¾Æ´Ñ¸é true
 * </pre>
 * @param field ±æÀÌ¸¦ °Ë»çÇÒ element form.element
 * @param len ºñ±³ÇÒ ±æÀÌ
 * @param error_msg ¿¡·¯ Message
 * @return boolean
 */
function isNotExactLength(field, len, error_msg) {

	if(field.value.length != len) {
		alert(error_msg);
		field.focus();
		field.select();
		return true;
	}
	return false;
}

/**
 * JAVA ¿¡¼­ÀÇ LastOfIndex ¿Í °°Àº ¿ªÇÒ
 */
function getLastOfIndex(str, searchStr) {
    myRexp = new RegExp(searchStr);
    myRexp.exec(str) ;
    return myRexp.lastIndex;
}

/**
 * author : leeman93
 * <pre>
 *  ÀÚ¸´¼ö ´ÜÀ§ input, textarea¿¡ »ç¿ëµÇ´Â ÇÊµå Ä«¿îÅÍ
 *  (byte¿¬»ê¾Æ´Ô)
 *
 *  »ç¿ë¹ý :
 *     1. element ´ÜÀÏÀÏ¶§.
 *     <input type="text" name="gift_msg_guide" value="" style="width:60%" onblur=textCounter(this,25) onKeyUp=textCounter(this,25) >
 *      gift_msg_guide ÀÇ Ä«¿îÅÍ¸¦ º¸¿©ÁÖ´Â ÇÊµå´Â
 *      "_cnt" ¸¦ ºÙ¿©¼­ ¸¸µé¾îÁØ´Ù.
 *      <input type="text" name="gift_msg_guide_cnt" value="(0/25)" size="7">
 *
 * </pre>
 * @param field : ÇØ´çÇÊµå
 * @param maxlimit : ±ÛÀÚÁ¦ÇÑ¼ö
 * @return  field_cnt.value
 */


function textCounter(field, maxlimit) {
	var charcnt = field.value.length;
	var temp ="";
	var enter_cnt = 0;
	for(i=0;i<charcnt;i++){
   		temp = field.value.charAt(i);
	   	if(temp == '\n'){
	    		enter_cnt++; // ¿£ÅÍÅ°
	   	}
   	}
	if((charcnt - enter_cnt*2) <= maxlimit){
		setCharProc( field.name+"_cnt", (charcnt - (enter_cnt*2)), maxlimit);
	} else {
		alert("ÃÖ´ë "+maxlimit+"ÀÚ ÀÌ³»·Î ÀÔ·ÂÇØÁÖ¼¼¿ä");
		field.value = field.value.substring(0, (maxlimit+(enter_cnt*2)));
	}
}


function setCharProc(vfield, charcnt, maxlimit){
	ofield = eval("document.getElementById('"+vfield+"')");
	if(ofield !=null){
		ofield.value = "("+charcnt+"/"+maxlimit+")";
	}
}

/**
 * author : leeman93
 * <pre>
 *  ÀÚ¸´¼ö ´ÜÀ§ input, textarea¿¡ »ç¿ëµÇ´Â ÇÊµå Ä«¿îÅÍ
 *  (byte¿¬»ê¾Æ´Ô)
 *
 *  »ç¿ë¹ý :
 *     1. element º¹¼öÀÏ¶§.
 *        : 3¹øÂ° ÀÎÀÚ¿¡ ´ëÇØ index[] °ªÀ» ¼¼ÆÃ.
  *     <input type="text" name="gift_msg_guide" value="" style="width:60%" onblur=textCounterArray(this,25, 3) onKeyUp=textCounterArray(this,25, 3) >
 *      gift_msg_guide ÀÇ Ä«¿îÅÍ¸¦ º¸¿©ÁÖ´Â ÇÊµå´Â
 *      "_cnt" ¸¦ ºÙ¿©¼­ ¸¸µé¾îÁØ´Ù.
 *      <input type="text" name="gift_msg_guide_cnt" value="(0/25)" size="7">
 *
 * </pre>
 * @param field : ÇØ´çÇÊµå
 * @param maxlimit : ±ÛÀÚÁ¦ÇÑ¼ö
 * @return  field_cnt.value
 */

function textCounterArray(field, maxlimit, idx) {
	var obj = E(field.name);
	if(typeof(obj.length) == 'undefined' ){
		textCounter(field, maxlimit);
	}else{
		if(idx !=null && idx >= 0 ){
			var charcnt = obj[idx].value.length;
			var temp ="";
			var enter_cnt = 0;
			for(i=0;i<charcnt;i++){
		   		temp = obj[idx].value.charAt(i);
			   	if(temp == '\n'){
			    		enter_cnt++; // ¿£ÅÍÅ°
			   	}
		   	}
			if((charcnt - enter_cnt*2) <= maxlimit){
				setCharProcArray( obj[idx].name+"_cnt", (charcnt - (enter_cnt*2)), maxlimit, idx);
			} else {
				alert("ÃÖ´ë "+maxlimit+"ÀÚ ÀÌ³»·Î ÀÔ·ÂÇØÁÖ¼¼¿ä");
				obj[idx].value = obj[idx].value.substring(0, (maxlimit+(enter_cnt*2)));
			}

		}

	}


}


function setCharProcArray(vfield, charcnt, maxlimit, idx){
	ofield = eval("document.getElementsByName('"+vfield+"')");
	if(ofield !=null){
		ofield[idx].value = "("+charcnt+"/"+maxlimit+")";
	}
}



/**
 * author : leeman93
 * <pre>
 *  DWRUtil¿¡ µé¾î°¡´Â À§Çè¿ä¼Ò°¡ µÇ´Â Æ¯¼ö¹®ÀÚ¸¦ ¸®ÅÍ·²ÇüÀ¸·Î Ä¡È¯
 * </pre>
 * @param pVal : value
 * @return value
 */
function convStr(pVal) {
	var retStr = '';
	var ch = '';
	pVal = ''+pVal;
	for (i = 0; i < pVal.length; i++) {
		ch = pVal.charAt(i);
		if (ch == "<") {
			retStr += "&lt;";
		}else if(ch == "'"){
			retStr += "&quot;";
		}else if(ch == "\""){
			retStr += "&quot;";
		} else {
			retStr += ch;
		}
	}
	return retStr;
}

/**
 * ±ÛÀÚ¼ö Ã¼Å©
 * ex) onFocus=textCount(this,50) onKeyUp=textCount(this,50)
 */
function textCount(field, maxlimit) {
	var charcnt = field.value.length;
	var temp ="";
	var enter_cnt = 0;
	for(i=0;i<charcnt;i++){
		temp = field.value.charAt(i);
		if(temp == '\n'){
				enter_cnt++; // ¿£ÅÍÅ°
		}
	}
	if((charcnt - enter_cnt*2) <= maxlimit){
	} else {
		alert("ÃÖ´ë "+maxlimit+"ÀÚ ÀÌ³»·Î ÀÔ·ÂÇØÁÖ¼¼¿ä");
		field.value = field.value.substring(0, (maxlimit+(enter_cnt*2)));
	}
}



/**
 * author : leeman93
 * <pre>
 *  ³¯Â¥ °ü·Ã ÀÚµ¿ÀÔ·Â
 *
 *  »ç¿ë¹ý :
 *     1. <input name="make_date" type="text" class="form_box1" size="10" value="" maxlength=10  OnKeyUp="javascript:getDateCheckFormat(this);" >
 * </pre>
 * @param source : obj
 * @return  obj.value
 */

var local_daytab1 = new Array("31","28","31","30","31","30","31","31","30","31","30","31")
var local_daytab2 = new Array("31","29","31","30","31","30","31","31","30","31","30","31")
function getDateCheckFormat(source)
{
	if(window.event.keyCode == 8) return ;
	if(window.event.keyCode == 37) return ;
	if(window.event.keyCode == 39) return ;

    // ¼ýÀÚ¸¸ ÀÔ·Â°¡´ÉÇÏ°Ô Ã³¸®
    for(var i=0; i < source.value.length; i++)
        if(!chekingIsDecimal(source.value.charAt(i)))
           source.value = source.value.substring(0,i) + source.value.substring(i+1,source.value.length);
    if (source.value.length > 11) source.value = source.value.substring(0,11);
    	if(source.maxLength==13){
		switch(source.value.length)
		{
			case 1: break;
			case 2: break;
			case 3: break;
			case 4: source.value = source.value + "-"; break;
			case 5: source.value = source.value.substring(0,4)+"-"+source.value.substring(4,5);break;
			case 6: source.value = source.value.substring(0,4)+"-"+source.value.substring(4,6)+"-";break;
			case 7: source.value = source.value.substring(0,4)+"-"+source.value.substring(4,6)+"-"+source.value.substring(6,7);break;
			case 8: source.value = source.value.substring(0,4)+"-"+source.value.substring(4,6)+"-"+source.value.substring(6,8)+" ";break;
			case 9: source.value = source.value.substring(0,4)+"-"+source.value.substring(4,6)+"-"+source.value.substring(6,8)+""+source.value.substring(8,9);break;
			case 10: source.value = source.value.substring(0,4)+"-"+source.value.substring(4,6)+"-"+source.value.substring(6,8)+""+source.value.substring(8,10);break;
			case 11: source.value = source.value.substring(0,4)+"-"+source.value.substring(4,6)+"-"+source.value.substring(6,8)+""+source.value.substring(8,11);break;
		}
		if (source.value.length < 13) return;
	}else if(source.maxLength==7){
		switch(source.value.length)
		{
			case 1: break;
			case 2: break;
			case 3: break;
			case 4: source.value = source.value + "-"; break;
			case 5: source.value = source.value.substring(0,4)+"-"+source.value.substring(4,5);break;
			case 6: source.value = source.value.substring(0,4)+"-"+source.value.substring(4,6);break;
		}
		if (source.value.length < 7) return;
	}else{
		switch(source.value.length)
		{
			case 1: break;
			case 2: break;
			case 3: break;
			case 4: source.value = source.value + "-"; break;
			case 5: source.value = source.value.substring(0,4)+"-"+source.value.substring(4,5);break;
			case 6: source.value = source.value.substring(0,4)+"-"+source.value.substring(4,6)+"-";break;
			case 7: source.value = source.value.substring(0,4)+"-"+source.value.substring(4,6)+"-"+source.value.substring(6,7);break;
			case 8: source.value = source.value.substring(0,4)+"-"+source.value.substring(4,6)+"-"+source.value.substring(6,8);break;
		}
		if (source.value.length < 10) return;
	}

    var year  = source.value.substring(0,4);
    var month = source.value.substring(5,7);

    if ((month < 1 || month > 12) || (month.indexOf("-") > -1)){
        alert("ÀÏÀÚ(¿ù) Çü½ÄÀÌ Æ²¸³´Ï´Ù.");
        source.value = "";
        source.focus();
        return false;
    }

    if(source.maxLength!=7){
    	var day   = source.value.substring(8,10);
	    if (get2LeapYear(year) == 1){
	        if (local_daytab1[month-1] < day){
	            alert("ÀÏÀÚ(ÀÏ) Çü½ÄÀÌ Æ²¸³´Ï´Ù.");
	            source.value = "";
	            source.focus();
	            return;
	        }
	    }else{
	        if (local_daytab2[month-1] < day){
	            alert("ÀÏÀÚ(ÀÏ) Çü½ÄÀÌ Æ²¸³´Ï´Ù.");
	            source.value = "";
	            source.focus();
	            return;
	        }
	    }

	    if ((day < 1 || day > 31) || (day.indexOf("-") > -1))
	    {
	        alert("ÀÏÀÚ Çü½ÄÀÌ Æ²¸³´Ï´Ù.");
	        source.value = "";
	        source.focus();
	        return false;
	    }
    }

    if(source.maxLength==13)
    {
	    var hour   = source.value.substring(11,13);

	    if (hour < 0 || hour > 24)
	    {
	        alert("½Ã°£ Çü½ÄÀÌ Æ²¸³´Ï´Ù.");
	        source.value = "";
	        source.focus();
	        return false;
	    }
     }

     return 1;
}

function chekingIsDecimal(number){
	if(number >= 0 && number <= 9) return true;
	else return false;
}

function get2LeapYear(year)
{
	if (year % 4 == 0)
		if  (year % 100 == 0)
			 if  (year % 400 == 0)
                  return 2;
			 else return 1;
		else return 2;
	return 1;
}




/**
 * author : leeman93
 * <pre>
 *  ³¯Â¥ Á¶°Çº°ÀÏÀÚ ÆíÁý
 *
 *  »ç¿ë¹ý :
 *     1. setAddDateTime( "20060202", "MM", -1 ) // 1´ÞÀü
 * </pre>
 * @param astrSource : obj
 * @param astrGubun : ±¸ºÐ (MM DD HH MI SS)
 * @param aintTerm : Â÷°¨ ¼ö
 * @return  obj.value
 */
function setAddDateTime(astrSource, astrGubun, aintTerm)
{
	var intLen = astrSource.length;
	if ( !(intLen == 6 || intLen == 8 || intLen  == 10 || intLen ==12 || intLen ==14) ) return "";

	var lngPer = 0. ;
	if (astrGubun == 'MM')
	{
		var intYYYY ;
		if ( aintTerm > 0 )
			intYYYY = astrSource.substring(0,4)*1 + Math.floor(aintTerm/12);
		else	//À½¼öÀÌ¸é
			intYYYY = astrSource.substring(0,4)*1 + Math.ceil(aintTerm/12);

		var intMM = astrSource.substring(4,6)*1 + (aintTerm % 12) ;

		if (intMM == 0){
		    intYYYY --;
		    intMM = 12;
		}

		if (intMM > 12)
		{
			intYYYY ++;
			intMM = intMM - 12;
		}
		var strAddDay = intYYYY;

		if (intMM < 10)	strAddDay += "0"+intMM;
		else		strAddDay += "" +intMM;
		if (intLen > 6)
		{
			// ¸»ÀÏ°è»êÇÏ¿© ÀÏÀÚ°¡ ÃÊ°úµÇ¸é ¸»ÀÏÀÚ·Î Ã³¸®
			if ( strAddDay + astrSource.substring(6,8) > getLastDateStr(strAddDay.substring(0,6)) )
				strAddDay = getLastDateStr(strAddDay.substring(0,6)) ;
			else
				strAddDay += astrSource.substring(6,8);

			if (intLen >= 8) strAddDay += astrSource.substring(8);
		}
		return strAddDay;
	}
	else if (astrGubun == 'DD')
		lngPer = 24 * 60 * 60 * 1000.;
	else if (astrGubun == 'HH')
		lngPer = 60 * 60 * 1000;
	else if (astrGubun == 'MI')
		lngPer = 60 * 1000;
	else if (astrGubun == 'SS')
		lngPer = 1000;
	else
		return "";

	if (intLen == 6) return "";
	var strHH = "00";
	var strMI = "00";
	var strSS = "00";
	if (intLen == 10) strHH = astrSource.substring(8,10);
	if (intLen == 12) strMI = astrSource.substring(10,12);
	if (intLen == 14) strSS = astrSource.substring(12,14);

	var newdate = new Date	(
				astrSource.substring(0,4)+"-"+ astrSource.substring(4,6) +"-"+ astrSource.substring(6,8)+" "+
				strHH +":"+ strMI +":"+ strSS
				);
	var newtimems = newdate.getTime() + (aintTerm * lngPer); 			// 944751600000 + 7 * 86400000
	newdate.setTime(newtimems);

	var strAddDay = newdate.getYear();

	if(strAddDay < 100) strAddDay = "19" + strAddDay;

	if (newdate.getMonth()+1 < 10)
		strAddDay += "0"+(newdate.getMonth()+1);
	else
		strAddDay += "" +(newdate.getMonth()+1);
	if (newdate.getDate() < 10)
		strAddDay += "0"+newdate.getDate();
	else
		strAddDay += newdate.getDate();
	if (newdate.getHours() < 10)
		strAddDay += "0"+ newdate.getHours();
	else
		strAddDay += "" +newdate.getHours();
	if (newdate.getMinutes() < 10)
		strAddDay += "0"+ newdate.getMinutes();
	else
		strAddDay += "" + newdate.getMinutes();
	if (newdate.getSeconds() < 10)
		strAddDay += "0"+ newdate.getSeconds();
	else
		strAddDay += "" + newdate.getSeconds();

	return strAddDay.substring(0, intLen);
}

function getLastDateStr(astrSource)
{
	if (astrSource.length != 6) return "";
	var monarr = new Array(31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31);
	var year = astrSource.substring(0,4);
	// check for leap year
	if (((year % 4 == 0) && (year % 100 != 0)) || (year % 400 == 0)) monarr[1] = "29";
	return astrSource + monarr[ astrSource.substring(4,6) - 1 ];
}

function makeFormatDate(astrValue)
{
	var astrDate = astrValue;
	if (astrValue.length != 8) return 1;
	astrDate = astrValue.substring(0,4) + "-" + astrValue.substring(4,6) + "-" +astrValue.substring(6,8);
	return astrDate;
}


/**
 * <pre>
 * ÇÊµå(String) ±æÀÌ¸¦ °¡Á®¿Â´Ù
 * ÇÑ±Û ÇÑ±ÛÀÚ¸¦ 2byte·Î ÀÎ½ÄÇÏ¿©, IEµç Netscapeµç Á¦´ë·Î byte±æÀÌ¸¦ ±¸ÇØ ÁÝ´Ï´Ù.
 * </pre>
 * @param field form.element
 * @return int elementÀÇ  value byte Å©±â
 */
function getByteLength(field){
   var len = 0;
   var s = field.value;
   if ( s == null ) return 0;
   for(var i=0;i<s.length;i++){
      var c = escape(s.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;
}

/**
 * author : ÀÌÁ¤ÈÆ
 * @param field : ÇØ´çÇÊµå
 * @param maxlimit : ±ÛÀÚÁ¦ÇÑ¼ö
 * @return  field_cnt.value
 */
function cutStr(str,limit) {
	var tmpStr = str;
	var byte_count = 0;
	var len = str.length;
	var dot = "";

	for(i=0; i<len; i++) {
		byte_count += chr_byte(str.charAt(i)); 
		if(byte_count == limit-1) {
			if(chr_byte(str.charAt(i+1)) == 2) {
				tmpStr = str.substring(0,i+1);
				dot = "...";
			} else {
				if(i+2 != len) dot = "...";
					tmpStr = str.substring(0,i+2);
			}
			break;
		} else if (byte_count == limit) {
			if(i+1 != len) dot = "...";
				tmpStr = str.substring(0,i+1);
				break;
		}
	}
	return tmpStr+dot;
}
function chr_byte(chr) {
	if(escape(chr).length > 4)
		return 2;
	else
		return 1;
}

/** "<br>"À» "¿£ÅÍ"·Î Ä¡È¯
 * ÀåÁø¼º
 * @param {Object} txtMemo
 */
function replaceBR(txtMemo, str){
 var obj = "";
 for (var i=0; i<txtMemo.length; i++) {
  if ( escape(txtMemo.substring(i, i + 4)) != "%3Cbr%3E" ) {  	
   obj = obj + txtMemo.charAt(i);
  }
  else{
   obj = obj + str;
   i = i+3;
  }
 }
 return obj;
}