/* ////////////////////////////////////////////////////////////////////////////////////////////
 *
 * version 0.1(AUG, 2006)
 * author Lee Sun-young(hollosugy@allat.co.kr)
 *
 * //////////////////////////////////////////////////////////////////////////////////////////// */


/* ////////////////////////////////////////////////////////////////////////////////////////////
 *
 * CChecker Class
 *
 * //////////////////////////////////////////////////////////////////////////////////////////// */
 
CChecker = function() {}

CChecker.prototype.isNull = function(field)
{
	if(this.getValue(field) == "") return true;
	
	return false;
}

CChecker.prototype.isObject = function(field)
{
	// fieldÀÇ Å¸ÀÔÀ» ¾Ë¾Æ³½´Ù.
	var fieldType = typeof(field);

	if(fieldType.toUpperCase() == "OBJECT") {
		return true;
	} else {
		return false;
	}
}

CChecker.prototype.getObjValue = function(field)
{
	var objValue = "";

	// field°¡ elementÀÏ ¶§ Á¤ÀÇµÇ¾î ÀÖÁö ¾Ê°Å³ª, field°¡ valueÀÏ ¶§ °ªÀÌ ¾øÀ¸¸é "" ¹ÝÈ¯
	if(field == undefined || field == "") return objValue;

	// ¹ÝÈ¯ÇÒ °ªÀ» ±¸ÇÑ´Ù.
	if(this.isObject(field)) {
		objValue = field.value + "";
	} else {
		objValue = field + "";
	}

	return objValue;
}

CChecker.prototype.alert = function(msg)
{
	if(CTrans.trim(msg)) alert(msg);
}

CChecker.prototype.getByteLen = function(field)
{
	var realText = "";
	realText = this.getValue(field);

	var textBit = '';
	var textLen = 0;
	
	for (var i = 0 ; i < realText.length ; i++) {
		textBit = realText.charAt(i);
		
		if(escape(textBit).length > 4) {
			textLen = textLen + 2;
		} else {
			textLen = textLen + 1;
		}
	}
	
	return textLen;
}

CChecker.prototype.isFileExtention = function(field, extNmArray, msg)
{
	var realText = "";
	realText = CTrans.trim(field);
	
	if(realText == "") return false;
		
	var lastIndex = realText.lastIndexOf(".");
	if(lastIndex == -1) {
		this.alert(msg);
		return false;
	}
	
	var realExt = realText.slice(lastIndex+1).toUpperCase(); // È®ÀåÀÚ¸¦ ±¸ÇÔ

	if(this.getValue(extNmArray, Array) != "") {
		for(var i = 0; i < extNmArray.length; i++) { 
			if (extNmArray[i].toUpperCase() == realExt) return true;
		}
	} else if(this.getValue(extNmArray, String) != "") {
		if (extNmArray.toUpperCase() == realExt) return true;
	} else {
		return true;
	}
	
	this.alert(msg);
	return false; 
}

CChecker.prototype.existStr = function(field, key)
{
	var realText = "";
	realText = CTrans.trim(field);
	if(realText == "") return false;

	var realKey = "";
	realKey = CTrans.trim(key);
	if(realKey == "") return false;

    if(realText.match(realKey)) {
    	return true;
    } else {
    	return false;
    }
}

CChecker.prototype.startsWith = function(field, key, msg, index)
{
	var realText = "";
	realText = CTrans.trim(field);
	if(realText == "") return false;

	var realKey = "";
	realKey = CTrans.trim(key);
	if(realKey == "") return false;

	var realIndex = 0;
	if(this.isNum(index)) realIndex = index;

    if(realText.match("^.{" + realIndex + "}" + realKey)) {
    	return true;
    } else {
    	this.alert(msg);
    	return false;
    }
}

CChecker.prototype.endsWith = function(field, key, msg)
{
	var realText = "";
	realText = CTrans.trim(field);
	if(realText == "") return false;

	var realKey = "";
	realKey = CTrans.trim(key);
	if(realKey == "") return false;
	
    if(realText.match(realKey + "$")) {
    	return true;
    } else {
    	this.alert(msg);
    	return false;
    }
}

CChecker.prototype.existSpecial = function(field)
{
	var realText = "";
	realText = CTrans.trim(field);
	if(realText == "") return false;

    if(realText.match("(.)*[^0-9a-zA-Z\\s](.)*")) {
    	return true;
    } else {
    	return false;
    }
}

CChecker.prototype.isAlpha = function(field, msg)
{
	var realText = "";
	realText = this.getValue(field);
	if(realText == "") return false;

    if(realText.match("^[A-Za-z]+$")) {
    	return true;
    } else {
		this.alert(msg);
		return false;
    }
}

CChecker.prototype.isNum = function(field, msg)
{
	var realText = "";
	realText = this.getValue(field);
	if(realText == "") return false;

    if(realText.match("^[0-9]+$")) {
    	return true;
    } else {
    	this.alert(msg);
    	return false;
    }
}

CChecker.prototype.isAlNum = function(field, msg)
{
	var realText = "";
	realText = this.getValue(field);
	if(realText == "") return false;

    if(realText.match("^[A-Za-z0-9]+$")) {
    	return true;
    } else {
		this.alert(msg);
    	return false;
    }
}

CChecker.prototype.isNumChar = function(field, chrArray, msg)
{
	var realText = "";
	realText = this.getValue(field);
	if(realText == "") return false;

	if(realText.match("^[0-9" + this.getValue(chrArray) + "]+$")) return true;
	
	this.alert(msg);
	return false;
}

CChecker.prototype.isSpecial = function(field, msg)
{
	var realText = "";
	realText = this.getValue(field);
	if(realText == "") return false;

    if(realText.match("^[^0-9a-zA-Z\\s]+$")) {
    	return true;
    } else {
    	this.alert(msg);
    	return false;
    }
}

CChecker.prototype.isKor = function(field, msg)
{
	var realText = "";
	realText = this.getValue(field);
	if(realText == "") return false;

	var textBit = '';
	
	for(var i = 0; i < realText.length; i++) {
		textBit = realText.charAt(i);
		
		if(escape(textBit).length <= 4) {
			this.alert(msg);
			return false;
		}
	}
	
	return true;
}

CChecker.prototype.isCardNo = function(cardNo1, cardNo2, cardNo3, cardNo4)
{
	var argCnt = this.isCardNo.arguments.length;
	
	if(argCnt == 1) {
		var realNo1 = this.getValue(cardNo1);
		if(realNo1 == "") return false;

		var replaceNo = realNo1.replace(/-/g, "");
		
		// Ä«µåÀÇ ±æÀÌ(16) Ã¼Å© - ÀÏ¹ÝÄ«µåÀÇ Çü½Ä Ã¼Å©('-' Æ÷ÇÔ)
		if(realNo1.match("^[1-9][0-9]{3}(-[0-9]{4}){3}$")
			|| realNo1.match("^[1-9][0-9]{15}$")) return true;

		// Ä«µåÀÇ ±æÀÌ(15) Ã¼Å© - ¾Æ¸ß½ºÄ«µåÀÇ Çü½Ä Ã¼Å©('-' Æ÷ÇÔ)
		if(realNo1.match("^[1-9][0-9]{3}-[0-9]{6}-[0-9]{5}$")
			|| realNo1.match("^[1-9][0-9]{14}$")) return true;

		// Ä«µåÀÇ ±æÀÌ(14) Ã¼Å© - ´ÙÀÌ³Ê½ºÄ«µåÀÇ Çü½Ä Ã¼Å©('-' Æ÷ÇÔ)
		if(realNo1.match("^[1-9][0-9]{5}-[0-9]{2}-[0-9]{6}$")
			|| realNo1.match("^[1-9][0-9]{13}$")) return true;

	} else if(argCnt == 4) {
		return this.isNormalNo(cardNo1, cardNo2, cardNo3, cardNo4);
	} else if(argCnt == 3) {
		if(realNo1.length == 4) {
			return this.isAmexNo(cardNo1, cardNo2, cardNo3);
		} else if(realNo1.length == 6) {
			return this.isDinersNo(cardNo1, cardNo2, cardNo3);
		}
	}
	
	return false;
}

CChecker.prototype.isNormalNo = function(cardNo1, cardNo2, cardNo3, cardNo4)
{
    var realNo1 = "";
    realNo1 = this.getValue(cardNo1);
    if(realNo1 == "") return false;

    var argCnt = this.isNormalNo.arguments.length;

	if(argCnt == 1) {
		if(realNo1.match("^[1-9][0-9]{3}(-[0-9]{4}){3}$")
			|| realNo1.match("^[1-9][0-9]{15}$")) return true;
			
	} else {
		var realNo2 = "", realNo3 = "", realNo4 = "";

		realNo2 = this.getValue(cardNo2);
		if(realNo2 == "") return false;

		realNo3 = this.getValue(cardNo3);
		if(realNo3 == "") return false;

		realNo4 = this.getValue(cardNo4);
		if(realNo4 == "") return false;

		if(realNo1.match("^[1-9][0-9]{3}$")
			&& realNo2.match("^[0-9]{4}$")
			&& realNo3.match("^[0-9]{4}$")
			&& realNo4.match("^[0-9]{4}$") ) {

			return true;
		}
	}
    
	return false;
}

CChecker.prototype.isAmexNo = function(cardNo1, cardNo2, cardNo3)
{
    var realNo1 = "";
    realNo1 = this.getValue(cardNo1);
    if(realNo1 == "") return false;

    var argCnt = this.isAmexNo.arguments.length;

    if(argCnt == 1) {
		if(realNo1.match("^[1-9][0-9]{3}-[0-9]{6}-[0-9]{5}$")
			|| realNo1.match("^[1-9][0-9]{14}$")) return true;

    } else {
        var realNo2 = "", realNo3 = "";

        realNo2 = this.getValue(cardNo2);
        if(realNo2 == "") return false;

        realNo3 = this.getValue(cardNo3);
        if(realNo3 == "") return false;

        if(realNo1.match("^[1-9][0-9]{3}$")
            && realNo2.match("^[0-9]{6}$")
            && realNo3.match("^[0-9]{5}$") ) {

            return true;
        }
	}
	
	return false;
}

CChecker.prototype.isDinersNo = function(cardNo1, cardNo2, cardNo3)
{
    var realNo1 = "";
    realNo1 = this.getValue(cardNo1);
    if(realNo1 == "") return false;

    var argCnt = this.isDinersNo.arguments.length;

    if(argCnt == 1) {
		if(realNo1.match("^[1-9][0-9]{5}-[0-9]{2}-[0-9]{6}$")
			|| realNo1.match("^[1-9][0-9]{13}$")) return true;

    } else {
        var realNo2 = "", realNo3 = "";

        realNo2 = this.getValue(cardNo2);
        if(realNo2 == "") return false;

        realNo3 = this.getValue(cardNo3);
        if(realNo3 == "") return false;

        if(realNo1.match("^[1-9][0-9]{5}$")
            && realNo2.match("^[0-9]{2}$")
            && realNo3.match("^[0-9]{6}$") ) {

            return true;
        }
    }

	return false;
}

CChecker.prototype.isCardExpire = function(toDay, field, month)
{
	var realToDay = "";
	realToDay = this.getValue(toDay);
	if(realToDay == "") return false;
	
	var tempLen = realToDay.length;
	if(tempLen == 6) {
		if(!this.isYm(toDay)) return false;
	} else if(tempLen == 8) {
		if(!this.isYmd(toDay)) return false;
	} else {
		return false;
	}
	
	var realDate = "";
	realDate = this.getValue(field);
	if(realDate == "") return false;

	var argCnt = this.isCardExpire.arguments.length;

	if(argCnt == 3) {
		var realMonth = "";
		realMonth = this.getValue(month);
		if(realMonth == "") return false;

		if(realMonth.length == 1) realMonth = "0" + realMonth;
		realDate = realDate + realMonth;
	}

	if(realDate.length == 4) {
		realDate = 2000 + parseInt(realDate.substring(0, 2), 10) + realDate.substring(2, 4);
	}

	if(!this.isYm(realDate)) return false;
	
    if(realDate >= realToDay.substring(0, 6)) return true;
    
	return false;
}

CChecker.prototype.isYmd = function(field, month, date)
{
	var realDate = "";
	realDate = this.getValue(field);
	if(realDate == "") return false;
	
	var argCnt = this.isYmd.arguments.length;

	if(argCnt == 3) {
		var realMonth = "", realDay = "";
		
		realMonth = this.getValue(month);
		realDay = this.getValue(date);
		
		if(realMonth == "") return false;
		if(realDay == "") return false;
		
		if(realMonth.length == 1) realMonth = "0" + realMonth;
		if(realDay.length == 1) realDay = "0" + realDay;
		
		realDate = realDate + realMonth + realDay;
	}
	
	if(realDate.match("^[0-9]{8}$") == null) return false;

	var realYear = realDate.substr(0, 4);
	var realMonth = realDate.substr(4, 2) - 1;
	var realDate = realDate.substr(6, 2);
	var newDate = new Date(realYear, realMonth, realDate);
	
	if(newDate.getFullYear() == realYear 
		&& newDate.getMonth() == realMonth 
		&& newDate.getDate() == realDate) {
		
		return true;
	}

	return false;
}

CChecker.prototype.isYm = function(field, month)
{
	var realDate = "";
	realDate = this.getValue(field);
	if(realDate == "") return false;

	var argCnt = this.isYm.arguments.length;

	if(argCnt == 2) {
		var realMonth = "";
		realMonth = this.getValue(month);
		if(realMonth == "") return false;
		
		if(realMonth.length == 1) realMonth = "0" + realMonth;
		
		realDate = realDate + realMonth;
	}
	
	if(realDate.match("^[0-9]{6}$") == null) return false;
	
	var realYear = realDate.substr(0, 4);
	var realMonth = realDate.substr(4, 2) - 1;
	var newDate = new Date(realYear, realMonth);
	
	if(newDate.getFullYear() == realYear 
		&& newDate.getMonth() == realMonth) {

		return true;
	}

	return false;
}

CChecker.prototype.isMemberId = function(field, msg, minLimitLen, maxLimitLen)
{
	var realId = "";
	realId = this.getValue(field);
	if(realId == "") return false;

	if(realId.match( "[^0-9a-zA-Z]" ) != null) {
		this.alert(msg);
		return false;
	}
	
	var realMin = this.getValue(minLimitLen);
	if(realMin != "") {
		realMin = parseInt(realMin, 10);
		
		if(realId.length < realMin) {
			this.alert(msg);
			return false;
		}
	} 

    var realMax = this.getValue(maxLimitLen);
	if(realMax != "") {
		realMax = parseInt(realMax, 10);
		
        if(realId.length > realMax) {
            this.alert(msg);
            return false;
        }
    }

	return true;
}

CChecker.prototype.isMemberPw = function(field, msg, minLimitLen, maxLimitLen)
{
	var realPwd = "";
	realPwd = this.getValue(field);
	if(realPwd == "") return false;

	if(realPwd.match( "[^0-9a-zA-Z]" ) != null 
		|| realPwd.match( "[0-9]" ) == null || realPwd.match( "[a-zA-Z]" ) == null) {
	
		this.alert(msg);
		return false;
	}

	var realMin = this.getValue(minLimitLen);
	if(realMin != "") {
		realMin = parseInt(realMin, 10);
		
		if(realPwd.length < realMin) {
			this.alert(msg);
			return false;
		}
	} 

    var realMax = this.getValue(maxLimitLen);
	if(realMax != "") {
		realMax = parseInt(realMax, 10);
		
        if(realPwd.length > realMax) {
            this.alert(msg);
            return false;
        }
    }

	return true;
}

CChecker.prototype.isBusinessNo = function(bizNo1, bizNo2, bizNo3)
{
	var realBizNo = "";
	var realBizNo1 = "", realBizNo2 = "", realBizNo3 = "";
	
	realBizNo1 = this.getValue(bizNo1);
	if(realBizNo1 == "") return false;

	realBizNo2 = this.getValue(bizNo2);
	realBizNo3 = this.getValue(bizNo3);
	
	if(realBizNo2 == "" && realBizNo3 == "") {
		realBizNo = realBizNo1;
	} else {
		if(this.getNumCnt(realBizNo1, 3) > -1 
			&& this.getNumCnt(realBizNo2, 2) > -1 
			&& this.getNumCnt(realBizNo3, 5) > -1) {
		
			realBizNo = realBizNo1 + realBizNo2 + realBizNo3;
		} else {
			return false;
		}
	}

	if(this.getNumCnt(realBizNo, 10) > -1 || realBizNo.match("^[0-9]{3}-[0-9]{2}-[0-9]{5}$") != null) {
		realBizNo = realBizNo.replace(/-/g, "");

		//»ç¾÷ÀÚ¹øÈ£ Check¸¦ À§ÇÑ Dight¼öÄ¡¸¦ ³ªÅ¸³»±â À§ÇÑ ¹è¿­
		var dightArr = new Array(1, 3, 7, 1, 3, 7, 1, 3, 5);
		var bizSum = 0;

		for(var i = 0; i < 9; i++) {
			bizSum += dightArr[i] * realBizNo.charAt(i);
		}

		bizSum += parseInt((realBizNo.charAt(8) * 5) / 10, 10);

		var dightSu = 10 - (bizSum % 10);
		if( dightSu >= 10) {
			dightSu -= 10;
		}

		// Dight¼ö¿Í »ç¾÷ÀÚ¹øÈ£ ³¡ÀÚ¸®°¡ ÀÏÄ¡ ÇÏ´ÂÁö È®ÀÎ.
		if(dightSu != realBizNo.charAt(9)) return false;  

		return true;
	} else {
		return false;
	}
}

CChecker.prototype.isRegistryNo = function(reg1, reg2)
{
	var realRegNo = "", realRegNo1 = "", realRegNo2 = "";
	
	realRegNo1 = this.getValue(reg1);
	if(realRegNo1 == "") return false;

	realRegNo2 = this.getValue(reg2);

	if(realRegNo2 == "") {
		if(this.getNumCnt(realRegNo1, 13) > -1 || realRegNo1.match("^[0-9]{6}-[0-9]{7}$") != null) {
			realRegNo1 = realRegNo1.replace(/-/g, "");
			realRegNo2 = realRegNo1.substring(6, 13);
			realRegNo1 = realRegNo1.substring(0, 6);
		} else {
			return false;
		}
	} else {
		if(this.getNumCnt(realRegNo1, 6) == -1 || this.getNumCnt(realRegNo2, 7) == -1) return false;
	}
	
	realRegNo = realRegNo1 + realRegNo2;

	// 2000³âÀÌÀü Ãâ»ýÀÚ('1'-³»±¹ÀÎ³²ÀÚ,'2'-³»±¹ÀÎ¿©ÀÚ,'5'-¿Ü±¹ÀÎ³²ÀÚ,'6'- ¿Ü±¹ÀÎ¿©ÀÚ)
	if(realRegNo2.charAt(0) == "1" || realRegNo2.charAt(0) == "2"
		|| realRegNo2.charAt(0) == "5" || realRegNo2.charAt(0) == "6") {
		
		if(!this.isYmd("19" + realRegNo1)) return false;
		
	//2000³âÀÌÈÄ Ãâ»ýÀÚ('3'-³»±¹ÀÎ³²ÀÚ,'4'-³»±¹ÀÎ¿©ÀÚ,'7'-¿Ü±¹ÀÎ³²ÀÚ,'8'-¿Ü±¹ÀÎ¿©ÀÚ)
	} else if(realRegNo2.charAt(0) == "3" || realRegNo2.charAt(0) == "4"
		|| realRegNo2.charAt(0) == "7" || realRegNo2.charAt(0) == "8") {
		
		if(!this.isYmd("20" + realRegNo1)) return false;
	} else {
		if(!this.isYmd("18" + realRegNo1)) return false;
	}

	//ÁÖ¹Î¹øÈ£ Check¸¦ À§ÇÑ Dight¼öÄ¡¸¦ ³ªÅ¸³»±â À§ÇÑ ¹è¿­
	var dightArr = new Array(2, 3, 4, 5, 6, 7, 8, 9, 2, 3, 4, 5);

	//ÁÖ¹Î¹øÈ£ CheckÀ» À§ÇØ °¢°¢ÀÇ ÀÚ¸´¼ö °è»êÀÇ ÇÕ°è
	var regSum = 0;
	
	for(var i = 0; i < 12; i++) {
		regSum += dightArr[i] * realRegNo.charAt(i);
	}
	
	//ÁÖ¹Î¹øÈ£¸¦ È®ÀÎÇÏ±â À§ÇÑ Dight¼ö
	var dightSu = 11 - (regSum % 11);
	if(dightSu >= 10) {
		dightSu -= 10;
	}
	
	//Dight¼ö¿Í ÁÖ¹Î¹øÈ£ ³¡ÀÚ¸®°¡ ÀÏÄ¡ ÇÏ´ÂÁö È®ÀÎ.
	if(dightSu != realRegNo.charAt(12)) return false;
	
	return true;
}

CChecker.prototype.isHour = function(field, min, sec)
{
	var realTime = "";
	realTime = this.getValue(field);
	if(realTime == "") return false;

	var argCnt = this.isHour.arguments.length;
	var realHour = "", realMin = "", realSec = "";

	if(argCnt == 1) {
		if(realTime.match("^([0-1][0-9]|[2][0-3])(:[0-5][0-9]){2}$") != null) {
			realTime = realTime.replace(/:/g, "");
		}
		
		if(this.getNumCnt(realTime, 6) > -1) {
			realHour = realTime.substr(0, 2);
			realMin = realTime.substr(2, 2);
			realSec = realTime.substr(4, 2);
		} else {
			return false;
		}
	} else if(argCnt == 3) {
		realHour = realTime;
		
		realMin = this.getValue(min);
		if(realMin == "") return false;
		
		realSec = this.getValue(sec);
		if(realSec == "") return false;

		if(this.getNumCnt(realHour, 2) == -1) return false;
		if(this.getNumCnt(realMin, 2) == -1) return false;
		if(this.getNumCnt(realSec, 2) == -1) return false;
	} else {
		return false;
	}

	if(!realHour.match("^[0-1][0-9]|[2][0-3]$")) return false;
	if(!realMin.match("^[0-5][0-9]$")) return false;
	if(!realSec.match("^[0-5][0-9]$")) return false;

	return true;
}

CChecker.prototype.isDateTime = function(field1, field2)
{
	var realDateTime = "";
	realDateTime = this.getValue(field1);
	
	if(realDateTime == "") return false;

	realDateTime = realDateTime.replace(/:/g, "");
	realDateTime = realDateTime.replace(/-/g, "");

	var realDateTime2 = "";
	realDateTime2 = this.getValue(field2);
	
	if(realDateTime2 != "") {
		realDateTime2 = realDateTime2.replace(/:/g, "");
		realDateTime2 = realDateTime2.replace(/-/g, "");

		if(this.getNumCnt(realDateTime, 8) == -1) return false;
		if(this.getNumCnt(realDateTime2, 6) == -1) return false;
		
		realDateTime = realDateTime + realDateTime2;
	}

	if(this.getNumCnt(realDateTime) == -1) return false;
	
	var realLen = realDateTime.length;

	if(realLen == 6) {
		return this.isHour(realDateTime);
	} else if(realLen == 8) {
		return this.isYmd(realDateTime);
	} else if(realLen == 14) {
		if(this.isYmd(realDateTime.substr(0, 8))) {
			return this.isHour(realDateTime.substr(8, 6));
		} else {
			return false;
		}
	} else {
		return false;
	}
}

CChecker.prototype.isDomain = function(field, msg)
{
	var realDomain = "";
	realDomain = this.getValue(field);
	if(realDomain == "") return false;
	
	realDomain = realDomain.toLowerCase();

	if(realDomain.match("[-a-z0-9]+(\\.[-a-z0-9]+)+$")) {
		return this.isDomainName(realDomain);
	}
	
	this.alert(msg);
	return false;
}

CChecker.prototype.isUrl = function(field, msg)
{
	var realUrl = "";
	realUrl = this.getValue(field);
	
	if(realUrl == "") return false;
	
	realUrl = realUrl.toLowerCase();

	if(realUrl.match("((.)+://)?([-a-z0-9]+(\\.[-a-z0-9]+)+(:[0-9]{1,4})?)+(/.+)?(\\?.+)?")) return true;

	this.alert(msg);	
	return false;
}

CChecker.prototype.isEmail = function(field, msg)
{
	var realEmail = "";
	realEmail = this.getValue(field);
	if(realEmail == "") return false;
	
	realEmail = realEmail.toLowerCase();

	if(realEmail.match("^[-_a-zA-Z0-9]+(\\.[-_a-zA-Z0-9]+)*@[-a-zA-Z0-9]+(\\.[-a-zA-Z0-9]+)+$")) {
		return this.isDomainName(realEmail);
	}
	
	this.alert(msg);
	return false;
}

CChecker.prototype.isPostNo = function(postNo1, postNo2)
{
	var realPostNo1 = "";
	realPostNo1 = this.getValue(postNo1);
	if(realPostNo1 == "") return false;

	var argCnt = this.isPostNo.arguments.length;

	if(argCnt == 2) {
		var realPostNo2 = this.getValue(postNo2);
		if(realPostNo2 == "") return false;
		
		realPostNo1 = realPostNo1 + "-" + realPostNo2;
	}
	
	if(this.getNumCnt(realPostNo1, 6) > -1 || realPostNo1.match("^[0-9]{3}-[0-9]{3}$")) return true;

	return false;
}

CChecker.prototype.isPhoneNo = function(phoneNo1, phoneNo2, phoneNo3)
{
	var realPhone1 = "";
	realPhone1 = this.getValue(phoneNo1);
	if(realPhone1 == "") return false;

	if(this.isPhoneNo.arguments.length > 1) {
		var realPhone2 = "", realPhone3 = "";
		
		realPhone2 = this.getValue(phoneNo2);
		realPhone3 = this.getValue(phoneNo3);
		
		if(realPhone1.match("^0(2|[3-9][0-9])$") == null) return false;
		if(realPhone2.match("^[0-9]{3,4}$") == null) return false;
		if(realPhone3.match("^[0-9]{4}$") == null) return false;
		
		return true;
	} else {
		if(realPhone1.match("^0(2|[3-9][0-9])-[0-9]{3,4}-[0-9]{4}$")
			|| realPhone1.match("^0(2|[3-9][0-9])[0-9]{7,8}$")) {
		
			return true;
		}
	}
	
	return false;
}

CChecker.prototype.isHpNo = function(hpNo1, hpNo2, hpNo3)
{
	var realHp1 = "";
	realHp1 = this.getValue(hpNo1);
	if(realHp1 == "") return false;

	if(this.isHpNo.arguments.length > 1) {
		var realHp2 = "", realHp3 = "";
		
		realHp2 = this.getValue(hpNo2);
		realHp3 = this.getValue(hpNo3);
		
		if(realHp1.match("^01([016789])$") == null) return false;
		if(realHp2.match("^[0-9]{3,4}$") == null) return false;
		if(realHp3.match("^[0-9]{4}$") == null) return false;
		
		return true;
	} else {
		if(realHp1.match("^01([016789])-[0-9]{3,4}-[0-9]{4}$")
			|| realHp1.match("^01([016789])[0-9]{7,8}$")) {
		
			return true;
		}
	}
	
	return false;
}

CChecker.prototype.isPercent = function(field, decimalPlace)
{
	var realNum = "";
	realNum = this.getValue(field);
	if(realNum == "") return false;


	var realDecimal = this.getValue(decimalPlace);
	if(realDecimal == "") realDecimal = 2;
	else realDecimal = parseInt(realDecimal, 10);

	if(realNum.match("^(100(\\.[0]{1," + realDecimal + "})?|[0-9]{1,2}(\\.[0-9]{1," + realDecimal + "})?)$")) {
		return true;
	}
	
	return false;
}

CChecker.prototype.isDomainName = function(domain)
{
	var realDomain = domain.toLowerCase();

	// Korea Domain
	var KRDOMAIN = ".kr";

	// Top Level Domain
	var topDomain = new Array (
		".ac", ".ad", ".ae", ".aero", ".af", ".ag", ".ai", ".al", ".am", ".an", 
		".ao", ".aq", ".ar", ".arpa", ".as", ".at", ".au", ".aw", ".ax", ".az",
		".ba", ".bb", ".bd", ".be", ".bf", ".bg", ".bh", ".bi", ".biz", ".bj", 
		".bm", ".bn", ".bo", ".br", ".bs", ".bt", ".bv", ".bw", ".by", ".bz", 
		".ca", ".cat", ".cc", ".cd", ".cf", ".cg", ".ch", ".ci", ".ck", ".cl", 
		".cm", ".cn", ".co", ".com", ".coop", ".cr", ".cu", ".cv", ".cx", ".cy", 
		".cz", ".de", ".dj", ".dk", ".dm", ".do", ".dz", ".ec", ".edu", ".ee", 
		".eg", ".er", ".es", ".et", ".eu", ".fi", ".fj", ".fk", ".fm", ".fo", 
		".fr", ".ga", ".gb", ".gd", ".ge", ".gf", ".gg", ".gh", ".gi", ".gl", 
		".gm", ".gn", ".gov", ".gp", ".gq", ".gr", ".gs", ".gt", ".gu", ".gw", 
		".gy", ".hk", ".hm", ".hn", ".hr", ".ht", ".hu", ".id", ".ie", ".il", 
		".im", ".in", ".info", ".int", ".io", ".iq", ".ir", ".is", ".it", ".je", 
		".jm", ".jo", ".jobs", ".jp", ".ke", ".kg", ".kh", ".ki", ".km", ".kn", 
		".kr", ".kw", ".ky", ".kz", ".la", ".lb", ".lc", ".li", ".lk", ".lr", 
		".ls", ".lt", ".lu", ".lv", ".ly", ".ma", ".mc", ".md", ".mg", ".mh", 
		".mil", ".mk", ".ml", ".mm", ".mn", ".mo", ".mobi", ".mp", ".mq", ".mr", 
		".ms", ".mt", ".mu", ".museum", ".mv", ".mw", ".mx", ".my", ".mz", ".na", 
		".name", ".nc", ".ne", ".net", ".nf", ".ng", ".ni", ".nl", ".no", ".np", 
		".nr", ".nu", ".nz", ".om", ".org", ".pa", ".pe", ".pf", ".pg", ".ph", 
		".pk", ".pl", ".pm", ".pn", ".pr", ".pro", ".ps", ".pt", ".pw", ".py", 
		".qa", ".re", ".ro", ".ru", ".rw", ".sa", ".sb", ".sc", ".sd", ".se", 
		".sg", ".sh", ".si", ".sj", ".sk", ".sl", ".sm", ".sn", ".so", ".sr", 
		".st", ".su", ".sv", ".sy", ".sz", ".tc", ".td", ".tf", ".tg", ".th", 
		".tj", ".tk", ".tl", ".tm", ".tn", ".to", ".tp", ".tr", ".tt", ".tv", 
		".tw", ".tz", ".ua", ".ug", ".uk", ".um", ".us", ".uy", ".uz", ".va", 
		".vc", ".ve", ".vg", ".vi", ".vn", ".vu", ".wf", ".ws", ".ye", ".yt", 
		".yu", ".za", ".zm", ".zw" );
	
	// Korean Sub Domain
	var krSubDomain = new Array (
		".ac", ".busan", 
		".cheju", ".chonbuk", ".chonnam", 
		".chungbuk", ".chungnam", ".co", ".es", ".go", ".hs", 
		".inchon", ".kangwon",
		".kg", 
		".kwangju", ".kyongbuk", ".kyonggi", ".kyongnam", 
		".ms", ".ne", ".or", ".pe", ".re", ".sc", ".seoul", 
		".taegu", ".taejon", ".ulsan" );
		
	// Top Level Domain Name Check
	var idx = realDomain.lastIndexOf('.');
	if(idx <= 0) return false;
	
	var bFlag = false;
	var dm = realDomain.substring(idx);
	var sdm = realDomain.substring(0, idx);
	
	for(var i = 0; i < topDomain.length; i++) { 
		if (topDomain[i].toLowerCase() == dm) {
			bFlag = true;
			break;
		}
	}

	// Korea Sub Domain Check
	if(dm == KRDOMAIN) {
		bFlag = false;
		idx = sdm.lastIndexOf('.');
		if(idx <= 0) return false;
		
		dm = sdm.substring(idx);

		for(var i = 0; i < krSubDomain.length; i++) { 
			if (krSubDomain[i].toLowerCase() == dm) {
				bFlag = true;
				break;
			}
		}
	}

	return bFlag;
}

/* private function */
CChecker.prototype.getNumCnt = function(field, len)
{
	var realText = "";
	realText = this.getValue(field);
	if(realText == "") return -1;

	if(this.isNum(len)) {
	    if(realText.match("^[0-9]{" + len + "}$")) {
    		return realText;
    	}
    } else {
	    if(realText.match("^[0-9]{1,}$")) {
    		return realText;
    	}
    }
    
    return -1;
}

/* private function */
CChecker.prototype.getValue = function(field, type)
{
	if(field == undefined) return "";

	if(type == undefined || type == "") {
		if(field.constructor == undefined) return field.value + "";
		if(field.constructor == Math || field.constructor == Error) return "";
	} else {
		if(type == Math || type == Error) return "";
		if(field.constructor != type) return "";
	}

	return field.valueOf() + "";
}

// global variable
var CChecker = new CChecker();

/* ////////////////////////////////////////////////////////////////////////////////////////////
 *
 * CDate Class
 *
 * //////////////////////////////////////////////////////////////////////////////////////////// */

CDate = function() {}

CDate.prototype.addDay = function(ymd, amount)
{
	// ymd°¡ ³¯Â¥ ¶Ç´Â ³¯Â¥ + ½Ã°£ Çü½ÄÀÌ ¾Æ´Ï¸é ¸®ÅÏ
	if(!CChecker.isDateTime(ymd)) return ymd;
	
	var realYmd = "";
	realYmd = CChecker.getValue(ymd);
	
	var realLen = realYmd.length;
	if(realYmd == "" || realLen < 8) return realYmd;
	
	var realAmount = CChecker.getValue(amount);
	if(realAmount == "") realAmount = 0;
	else realAmount = parseInt(realAmount, 10);

	var year = eval(realYmd.substr(0, 4));
	var month = eval(realYmd.substr(4, 2)) - 1;
	var day = eval(realYmd.substr(6, 2));

	var realTime = "";
	if(realLen == 14) realTime = realYmd.substr(8, 6);

	day = day * 1 + amount * 1;

	var newYmd = new Date(year, month, day);
	var newYear = newYmd.getYear() + "";
	var newMonth = (newYmd.getMonth() + 1) + "";
	var newDay = newYmd.getDate() + "";

	if(newMonth.length == 1) newMonth = "0" + newMonth;
	if(newDay.length == 1) newDay = "0" + newDay;
	
	return (newYear + newMonth + newDay + realTime);
}

CDate.prototype.addMonth = function(ymd, amount)
{
	// ymd°¡ ³¯Â¥ ¶Ç´Â ³¯Â¥ + ½Ã°£ Çü½ÄÀÌ ¾Æ´Ï¸é ¸®ÅÏ
	if(!CChecker.isDateTime(ymd)) return ymd;

	var realYmd = "";
	realYmd = CChecker.getValue(ymd);

	var realLen = realYmd.length;
	if(realYmd == "" || realLen < 8) return realYmd;

	var realAmount = CChecker.getValue(amount);
	if(realAmount == "") realAmount = 0;
	else realAmount = parseInt(realAmount, 10);

	var year = eval(realYmd.substr(0, 4));
	var month = eval(realYmd.substr(4, 2)) - 1;
	var day = eval(realYmd.substr(6, 2));

	var realTime = "";
	if(realLen == 14) realTime = realYmd.substr(8, 6);
	
	month = month * 1 + amount * 1;

	var newYmd = new Date(year, month, day);

	newYmd = (day == newYmd.getDate()) ? newYmd : new Date(newYmd.getYear(), newYmd.getMonth(), 0); 

	var newYear = newYmd.getYear() + "";
	var newMonth = (newYmd.getMonth() + 1) + "";
	var newDay = newYmd.getDate() + "";

	if(newMonth.length == 1) newMonth = "0" + newMonth;
	if(newDay.length == 1) newDay = "0" + newDay;
	
	return (newYear + newMonth + newDay + realTime);
}

CDate.prototype.addTime = function(ymdhms, amount)
{
	// ymd°¡ ³¯Â¥ + ½Ã°£ Çü½ÄÀÌ ¾Æ´Ï¸é ¸®ÅÏ
	if(!CChecker.isDateTime(ymdhms)) return ymdhms;

	var realYmdHms = "";
	realYmdHms = CChecker.getValue(ymdhms);

	var realLen = realYmdHms.length;
	if(realYmdHms == "" || realLen != 14) return realYmdHms;

	var realAmount = CChecker.getValue(amount);
	if(realAmount == "") realAmount = 0;
	else realAmount = parseInt(realAmount, 10);
	
	var year = eval(realYmdHms.substr(0, 4));
	var month = eval(realYmdHms.substr(4, 2)) - 1;
	var day = eval(realYmdHms.substr(6, 2));
	var hour = eval(realYmdHms.substr(8, 2));
	var min = eval(realYmdHms.substr(10, 2));
	var sec = eval(realYmdHms.substr(12, 2));
	
	hour = hour * 1 + amount * 1;

	var newYmdHms = new Date(year, month, day, hour, min, sec);
	var newYear = newYmdHms.getYear() + "";
	var newMonth = (newYmdHms.getMonth() + 1) + "";
	var newDay = newYmdHms.getDate() + "";
	var newHour = newYmdHms.getHours() + "";
	var newMin = newYmdHms.getMinutes() + "";
	var newSec = newYmdHms.getSeconds() + "";

	if(newMonth.length == 1) newMonth = "0" + newMonth;
	if(newDay.length == 1) newDay = "0" + newDay;
	if(newHour.length == 1) newHour = "0" + newHour;
	if(newMin.length == 1) newMin = "0" + newMin;
	if(newSec.length == 1) newSec = "0" + newSec;
	
	return (newYear + newMonth + newDay + newHour + newMin + newSec);
}

CDate.prototype.diffYmd = function(ymd1, ymd2)
{
	if(!CChecker.isYmd(ymd1)) return ymd1;
	if(!CChecker.isYmd(ymd2)) return ymd2;

	var realYmd1 = "";
	realYmd1 = CChecker.getValue(ymd1);
	if(realYmd1 == "") return "";
	
	var realYmd2 = "";
	realYmd2 = CChecker.getValue(ymd2);
	if(realYmd2 == "") return "";

	var year1 = eval(realYmd1.substr(0, 4));
	var month1 = eval(realYmd1.substr(4, 2)) - 1;
	var day1 = eval(realYmd1.substr(6, 2));

	var year2 = eval(realYmd2.substr(0, 4));
	var month2 = eval(realYmd2.substr(4, 2)) - 1;
	var day2 = eval(realYmd2.substr(6, 2));

	var time1 = new Date(year1, month1, day1).getTime();
	var time2 = new Date(year2, month2, day2).getTime();

	return (time2 - time1) / (1000 * 60 * 60 * 24);
}

CDate.prototype.diffTime = function(hms1, hms2)
{
	if(!CChecker.isHour(hms1)) return hms1;
	if(!CChecker.isHour(hms2)) return hms2;

	var realHms1 = CChecker.getValue(hms1);
	if(realHms1 == "") return "";

	realHms1 = realHms1.replace(/:/g, "");

	var realHms2 = CChecker.getValue(hms2);
	if(realHms2 == "") return "";

	realHms2 = realHms2.replace(/:/g, "");

	var hour1 = eval(realHms1.substr(0, 2));
	var min1 = eval(realHms1.substr(2, 2));
	var sec1 = eval(realHms1.substr(4, 2));

	var hour2 = eval(realHms2.substr(0, 2));
	var min2 = eval(realHms2.substr(2, 2));
	var sec2 = eval(realHms2.substr(4, 2));

	var time1 = new Date();
	var time2 = new Date();
	
	time1.setHours(hour1);
	time1.setMinutes(min1);
	time1.setSeconds(sec1);

	time2.setHours(hour2);
	time2.setMinutes(min2);
	time2.setSeconds(sec2);

	return (time2.getTime() - time1.getTime()) / 1000;
}

CDate.prototype.lastDay = function(ym)
{
	var realYm = "";
	realYm = CChecker.getValue(ym);
	if(realYm == "") return "";
	
	var realLen = realYm.length;
	
	if(realLen == 6) {
		if(!CChecker.isYm(realYm)) return realYm;
	} else if(realLen == 8) {
		if(!CChecker.isYmd(realYm)) return realYm;
	} else if(realLen == 14) {
		if(!CChecker.isDateTime(realYm)) return realYm;
	} else {
		return realYm;
	}
	
	var year = eval(realYm.substring(0,4));		// ¿¬µµ
	var month = eval(realYm.substring(4,6));	// ¿ù
	
	var newYmd = new Date(year, month, 0);
	var newYear = newYmd.getYear() + "";
	var newMonth = (newYmd.getMonth() + 1) + "";
	var newDay = newYmd.getDate() + "";

	if(newMonth.length == 1) newMonth = "0" + newMonth;
	if(newDay.length == 1) newDay = "0" + newDay;
	
	return (newYear + newMonth + newDay);
}

CDate.prototype.weekDay = function(ymd, lang)
{
	if(!CChecker.isYmd(ymd)) return ymd;

	var realYmd = CChecker.getValue(ymd);
	if(realYmd == "") return "";
	
	var realLang = CChecker.getValue(lang);
	
	var weekName = "";
	if(realLang == "Kor") {
		weekName = new Array("ÀÏ", "¿ù", "È­", "¼ö", "¸ñ", "±Ý", "Åä");
	} else if(realLang == "Korean") {
		weekName = new Array("ÀÏ¿äÀÏ", "¿ù¿äÀÏ", "È­¿äÀÏ", "¼ö¿äÀÏ", "¸ñ¿äÀÏ", "±Ý¿äÀÏ", "Åä¿äÀÏ");
	} else if(realLang == "Eng") {
		weekName = new Array("Sun", "Mon", "Tue", "Wed", "Thr", "Fri", "Sat");
	} else if(realLang == "ENG") {
		weekName = new Array("SUN", "MON", "TUE", "WED", "THR", "FRI", "SAT");
	} else if(realLang == "English") {
		weekName = new Array("Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday");
	}

	var year = eval(realYmd.substring(0,4));		// ¿¬µµ
	var month = eval(realYmd.substring(4,6) - 1);	// ¿ù
	var date = eval(realYmd.substring(6,8));	// ÀÏ
	
	var newYmd = new Date(year, month, date);
	var newWeek = newYmd.getDay();

	if(realLang == "") return newWeek;
	else return weekName[newWeek];
}

// global variable
var CDate = new CDate();


/* ////////////////////////////////////////////////////////////////////////////////////////////
 *
 * CTrans Class
 *
 * //////////////////////////////////////////////////////////////////////////////////////////// */

CTrans = function() {}

CTrans.prototype.split = function(field, token, index)
{
	var realVal = "";
	realVal = CChecker.getValue(field);
	if(realVal == "") return realVal;

	if(CChecker.isNull(token)) return realVal;
	
	var resultArr = realVal.split(token);
	var realIndex = CChecker.getValue(index);

	if(realIndex == "") {
		return resultArr;
	} else {
		realIndex = parseInt(realIndex, 10);
		
		if(realIndex > resultArr.length) return "";
		
		return resultArr[realIndex];
	}
}

CTrans.prototype.getSubstr = function(field, startKey, length)
{
	var realVal = "";
	realVal = CChecker.getValue(field);
	if(realVal == "") return realVal;

	if(CChecker.isNull(startKey)) return realVal;

	var strLen = CChecker.getValue(length);
	if(strLen == "") strLen = realVal.length;
	else strLen = parseInt(strLen, 10);
	
	var idx = realVal.indexOf(startKey) + startKey.length;
	
	return realVal.substr(idx, strLen);
}

CTrans.prototype.replaceAll = function(field, key, change, startIdx, endIdx)
{
	var realVal = "";
	realVal = CChecker.getValue(field);
	if(realVal == "") return realVal;
	
	if(CChecker.isNull(key)) return realVal;

	var realChange = CChecker.getValue(change);
	
	var realStart = CChecker.getValue(startIdx);
	if(realStart == "") realStart = 0;
	else realStart = parseInt(realStart, 10);
	
	var realEnd = CChecker.getValue(endIdx);
	if(realEnd == "") realEnd = realVal.length;
	else realEnd = parseInt(realEnd, 10);
	
	// end index°¡ start indexº¸´Ù ÀÛ°Å³ª °°À¸¸é ¹ÞÀº ¹®ÀÚ¿­ ¸®ÅÏ
	if(realStart >= realEnd) return realVal;
	
	var startStr = realVal.substr(0, realStart);
	var endStr = realVal.substring(realEnd + 1);
	var midStr = realVal.substring(realStart, realEnd + 1);

	var changeVal = midStr.replace(new RegExp(key, "g"), realChange);
	
	return (startStr + changeVal + endStr);
}

CTrans.prototype.removeStr = function(field, key)
{
	return this.replaceAll(field, key, "");
}

CTrans.prototype.outDelimeter = function(field, len, delimeter)
{
	var realVal = "";
	realVal = CChecker.getValue(field);
	if(realVal == "") return realVal;

	// ±¸ºÐÀÚ¸¦ ³ÖÀ» ÀÚ¸´¼ö
	var varLen = CChecker.getValue(len);
	if(varLen == "" || varLen == 0) varLen = 3;
	else varLen = parseInt(varLen, 10);
	
	// ±¸ºÐÀÚ
	var varDelimeter = CChecker.getValue(delimeter);
	if(varDelimeter == "") varDelimeter = ",";
	
	var realValLen = realVal.length;
	var retValue = "";

	for(var i = 0; i < realValLen; i++) {
		if((realValLen - i) % varLen == 0 && i != 0) {
			retValue += varDelimeter + realVal.charAt(i);
		} else {
			retValue += realVal.charAt(i);
		}
	}
	
	return retValue;
}

CTrans.prototype.outC = function(field, delimeter)
{
	var realVal = "";
	realVal = CChecker.getValue(field);
	if(realVal == "") return realVal;

	if(realVal.match("^(\\-|\\+)?[0-9\\.]+$") == null) return realVal;

	var varLen = 3;

	// ±¸ºÐÀÚ
	var varDelimeter = CChecker.getValue(delimeter);
	if(varDelimeter == "") varDelimeTer = ",";

	var isMinus = false;
	var realSub = "";

	//¹®ÀÚ¿­¿¡ ºÎÈ£°¡ ºÙ¾îÀÖÀ»°æ¿ì Á¦°ÅÇÑ´Ù.
	if(realVal.match("^(\\-)")) {
		isMinus = true;
		realSub = realVal.substring(1);
	} else if(realVal.match("^(\\+)")) {
		realSub = realVal.substring(1);
	} else {
		realSub = realVal;
	}

	var zeroVal = realSub.match("^0+");

	if(zeroVal != null) {
		var zeroLen = (zeroVal + "").length;
		
		if(zeroLen == realSub.length) return 0;
		else realSub = realSub.substring(zeroLen);
	}

	var num = realSub, decimal = "";
	var idxDecimal = realSub.indexOf(".");

	if(idxDecimal > 0) {
		num = realSub.substring(0, idxDecimal);
		decimal = realSub.substring(idxDecimal);
	}
	
	var retVal = CTrans.outDelimeter(num, varLen, varDelimeter);
	retVal += decimal;
	
	if(isMinus) retVal = "-" + retVal;
	
	return retVal;
}

CTrans.prototype.removeChar = function(field, chrArray)
{
	var realVal = "";
	realVal = CChecker.getValue(field);
	if(realVal == "") return realVal;

	if(CChecker.getValue(chrArray) != "") {
		return realVal.replace(new RegExp("["+chrArray+"]", "g"), "");
	} else {
		return CTrans.removeStr(field, ",");
	}
}

CTrans.prototype.calcPercent = function(tot, num, point)
{
	var realTot = "";
	realTot = CChecker.getValue(tot);
	if(realTot == "" || realTot == "0") realTot = 1;
	else realTot = parseInt(realTot, 10);

	var realNum = "";
	realNum = CChecker.getValue(num);
	if(realNum == "") realNum = 0;
	else realNum = parseInt(realNum, 10);
	
	var realPoint = "";
	realPoint = CChecker.getValue(point);
	if(realPoint == "") realPoint = 2;
	else realPoint = parseInt(realPoint, 10);

	var retNum = Math.round((realNum / realTot) * 100 * Math.pow(10, realPoint)) / Math.pow(10, realPoint) + "";
	var pointIdx = retNum.indexOf('.');
	
	if(pointIdx <= 0) {
		pointIdx = 0;
	} else {
		pointIdx = retNum.substring(pointIdx+1).length;
	}

	if(realPoint > 0) {
		if(pointIdx <=0 ) retNum += ".";
		
		for(var i = 0; i < realPoint - pointIdx; i++) {
			retNum += "0";
		}
	}
	
	return retNum;
}

CTrans.prototype.trim = function(field, str)
{
	var realVal = "";
	realVal = CChecker.getValue(field);
	realVal = realVal.replace(/(^\s*)|(\s*$)/g, "");
	
	var realStr = CChecker.getValue(str);
	
	if(realVal == "" && realStr != "") realVal = str;
	
	return realVal;
}

CTrans.prototype.trimLeft = function(field, str)
{
	var realVal = "";
	realVal = CChecker.getValue(field);
	realVal = realVal.replace(/^\s*/g, "");

	var realStr = CChecker.getValue(str);
	
	if(realVal == "" && realStr != "") realVal = str;
	
	return realVal;
}

CTrans.prototype.trimRight = function(field, str)
{
	var realVal = "";
	realVal = CChecker.getValue(field);
	realVal = realVal.replace(/\s*$/g, "");
	
	var realStr = CChecker.getValue(str);
	
	if(realVal == "" && realStr != "") realVal = str;
	
	return realVal;
}

CTrans.prototype.trimAll = function(field, str)
{
	var realVal = "";
	realVal = CChecker.getValue(field);
	realVal = realVal.replace(/\s*/g, "");
	
	var realStr = CChecker.getValue(str);
	
	if(realVal == "" && realStr != "") realVal = str;
	
	return realVal;
}

CTrans.prototype.toText = function(field)
{
	var realStr = "";
	realStr = CChecker.getValue(field);
	if(realStr == "") return realStr;

	var strip = new RegExp();
	var retString = "";

	strip = /[<][b][r][>]/gi;
	retString = realStr.replace(strip, "\\r\\n");

	strip = /[<][p][>]/gi;
	retString = retString.replace(strip, "\\r\\n");
	
	strip = /[<][/][p][>]/gi;
	retString = retString.replace(strip, "\\r\\n");
	
	strip = /[&][a][m][p][;]/gi;
	retString = retString.replace(strip, "&");
	
	strip = /[&][l][t][;]/gi;
	retString = retString.replace(strip, "<");
	
	strip = /[&][g][t][;]/gi;
	retString = retString.replace(strip, ">");
	
	strip = /[&][q][u][o][t][;]/gi;
	retString = retString.replace(strip, '"');
	
	strip = /[&][#][0][3][9][;]/gi;
	retString = retString.replace(strip, "'");
	
	strip = /[&][#][3][4][;]/gi;
	retString = retString.replace(strip, '"');
	
	strip = /[&][#][3][9][;]/gi;
	retString = retString.replace(strip, "'");    
	
	strip = /[&][n][b][s][p][;]/gi;
	retString = retString.replace(strip, " ");

	return retString;
}

CTrans.prototype.toHtml = function(field)
{
	var realStr = "";
	realStr = CChecker.getValue(field);
	if(realStr == "") return realStr;

	var strip = new RegExp();
	var retString = "";

	strip = /[&]/gi;
	retString =  realStr.replace(strip, "&amp;");
	
	strip = /[<]/gi;
	retString =  retString.replace(strip, "&lt;");
	
	strip = /[>]/gi;
	retString =  retString.replace(strip, "&gt;");

	strip = /[\\][r][\\][n]/gi;
	retString =  retString.replace(strip, "<br>");
	
	strip = /["]/gi;
	retString =  retString.replace(strip, "&quot;");
	
	strip = /[']/gi;
	retString =  retString.replace(strip, "&#39;");
	
	strip = /[ ]/gi;
	retString =  retString.replace(strip, "&nbsp;");

	return retString;
}

CTrans.prototype.toAlert = function(field)
{
	var realStr = "";
	realStr = CChecker.getValue(field);
	if(realStr == "") return realStr;

	var strip = new RegExp();
	var retString = "";
	
	//strip = /\\r\\n/gi;
	strip = /[\r][\n]/gi;
	retString =  realStr.replace(strip, "\n");

	//strip = /\\r|\\n/gi;
	//retString =  retString.replace(strip, "\n");
	
	strip = /["]/gi;
	retString =  retString.replace(strip, "\"");
	
	strip = /[']/gi;
	retString =  retString.replace(strip, "\'");
	
	return retString;
}

// global variable
var CTrans = new CTrans();
