/**
 * Form Validator (Method Type), Version 0.0.2 (2009.3.21 - 2009.4.28)
 *
 * Code Generator : Maeng Joon-Young (http://www.maengis.com)
 */

// 반드시 값을 입력해야 함
String.prototype.isempty = function () {
	return (this.split(" ").join("") == "") ? true : false;
}

// 숫자만 입력 가능함
String.prototype.isnum = function () {
	return (/^[0-9]+$/.test(this)) ? true : false;
}

// 알파벳만 입력 가능함
String.prototype.isalpha = function () {
	return (/^[a-zA-Z]+$/.test(this)) ? true : false;
}

// 숫자와 알파벳 혼용만 입력 가능함
String.prototype.isalnum = function () {
	return (/^[0-9]*[0-9]$/.test(this) || /^[a-zA-Z]*[a-zA-Z]$/.test(this)) ? false : true;
}

// 한글만 입력 가능함
String.prototype.iskorean = function () {
	return (/^[가-힣]+$/.test(this)) ? true : false;
}

// 사이트 주소(http)만 입력 가능함
String.prototype.ishttp = function () {
	return (/^((http(s?))\:\/\/)([0-9a-zA-Z\-]+\.)+[a-zA-Z]{2,6}(\:[0-9]+)?(\/\S*)?$/.test(this.toLowerCase())) ? true : false;
}

// 전자우편주소만 입력 가능함
String.prototype.isemail = function () {
	return (/^[_a-z0-9-]+(\.[_a-z0-9-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)*(\.([a-z]){2,4})$/.test(this)) ? true : false;
}

// 범위내 숫자만 입력 가능함
String.prototype.numrange = function (min, max) {
	min = (!min) ? 0 : min;
	max = (!max) ? 100 : max;

	return (parseInt(this) < min || parseInt(this) > max) ? false : true;
}

// 주민등록번호 확인
String.prototype.isssn = function () {
	var ssnCheck = 0;

	for (var i = 0; i < 12; i++) {
		ssnCheck += (i % 8 + 2) * this.charAt(i);
	}

	ssnCheck = (11 - ssnCheck % 11) % 10;

	return (ssnCheck == this.charAt(12)) ? true : false;
}

// 인자로 받은 바이트만큼만 입력 가능함
String.prototype.bytes = function (value) {
	value = (!value) ? 80 : value;
	var bytes = 0;
	var cnt = this.length;

	for (var i = 0; i < cnt; i++) {
		bytes += (this.charCodeAt(i) > 128) ? 2 : 1;
	}

	return (bytes <= value) ? true : false;
}

// 인자로 받은 확장자만 허용함
String.prototype.extcheck = function (extArray) {
	var fileArray = this.split('.');
	var fileEx = fileArray[fileArray.length - 1].toLowerCase();
	
	var cnt = extArray.length;

	var result = false;

	for (i = 0; i < cnt; i++) {
		if (extArray[i] == fileEx) {
			result = true;
		}
	}
	
	return result;
}

// 법인등록 번호 확인
String.prototype.iscorpno = function () {
	var getlist  = Array(13);

	for (var i = 0; i < 13; i++) {
		getlist[i] = this.substr(i, 1);
	}

	var sum = 0;
	sum += parseInt(getlist[0]) * 1;
	sum += parseInt(getlist[1]) * 2;
	sum += parseInt(getlist[2]) * 1;
	sum += parseInt(getlist[3]) * 2;
	sum += parseInt(getlist[4]) * 1;
	sum += parseInt(getlist[5]) * 2;
	sum += parseInt(getlist[6]) * 1;
	sum += parseInt(getlist[7]) * 2;
	sum += parseInt(getlist[8]) * 1;
	sum += parseInt(getlist[9]) * 2;
	sum += parseInt(getlist[10]) * 1;
	sum += parseInt(getlist[11]) * 2;

	var chkValue = 10 - (sum % 10);

	return (chkValue == getlist[12]) ? true : false;
}

// 재외국인 번호 확인
String.prototype.isforeignnum = function () {
	var result = true;

	var sum = 0;
	var odd = 0;

	buf = new Array(13);

	for (i = 0; i < 13; i++) {
		buf[i] = parseInt(this.charAt(i));
	}

	odd = buf[7] * 10 + buf[8];

	if (odd % 2 != 0) {
		result = false;
	}

	if ((buf[11] != 6) && (buf[11] != 7)
		&& (buf[11] != 8) && (buf[11] != 9)) {
			result = false;
	}

	multipliers = [2,3,4,5,6,7,8,9,2,3,4,5];

	for (i = 0, sum = 0; i < 12; i++) {
		sum += (buf[i] *= multipliers[i]);
	}

	sum = 11 - (sum % 11);

	if (sum >= 10) {
		sum -= 10;
	}

	sum += 2;

	if(sum >= 10) {
		sum -= 10;
	}

	if (sum != buf[12]) {
		result = false;
	}

	return result;
}

// 여권 번호 확인
String.prototype.ispassportnum = function () {
	pattern = /^[a-zA-Z0-9]{6,20}$/; 

	return (!pattern.test(this)) ? false : true;
}
