/**************************************
 * ÆÄÀÏ¸í: common.js
 * ±â´É: °øÅë ¶óÀÌºê·¯¸®
 * ÀÛ¼ºÀÏ: 2002-07-04
 * ÀÛ¼ºÀÚ: °ÅÄ£¸¶·ç
 * ¼öÁ¤ : ÇÏ±ÙÈ£(hopegiver@whois.co.kr)
 ***************************************/

/*
[»ç¿ë¹æ¹ý]
<form method="post" action"xxx.php" onSubmit="return validate(this)">
<input type="text" name="email" hname="ÀÌ¸ÞÀÏ" option="email" maxlength="60" required>
<input type="submit">
</form>

¸ÕÀú form ÅÂ±×¾È¿¡ onSubmitÀ» À§¿Í °°ÀÌ ³Ö¾îÁØ´Ù.
validate ÇÔ¼ö´Â ÀÚÃ¼ÀûÀ¸·Î Á¤ÀÇÇÑ Æû¼Ó¼ºÀ» ÀÌ¿ëÇÑ´Ù. ÀÚÃ¼Á¤ÀÇÇÑ ¼Ó¼ºÀ¸·Î´Â hname, option, required µîÀÌ ÀÖ´Ù.
hnameÀº ÆûÀÇ ÇÑ±Û¸íÀÌ¸ç, optionÀº ÆÐÅÏ°Ë»öÀ» À§ÇÑ °ªÀÌ¸ç, required´Â ¹Ýµå½Ã ÀÔ·ÂÇØ¾ß ÇÏ´Â ÆûÀ» ÀÇ¹ÌÇÑ´Ù.
option À¸·Î´Â number, phone, email, domain, host, hangul, alpha, jumin, orgno, ipaddr µîÀÌ ÀÖ´Ù.
*/
		
var pattern = new Array();
pattern['number'] = /^[0-9]+$/;
pattern['email'] = /^[_a-zA-Z0-9-\.]+@[\.a-zA-Z0-9-]+\.[a-zA-Z]+$/;
pattern['host'] = /^[a-zA-Z-]+$/;
pattern['hangul'] = /[°¡-ÆR]/;
pattern['alpha'] = /^[a-zA-Z]+$/;	

function getCookie(name) { // use: getCookie("name");
	var re = new RegExp(name + "=([^;]+)");
	var value = re.exec(document.cookie);
	return (value != null) ? unescape(value[1]) : null;
}

function setCookie(name, value, expire) { // use: setCookie("name", value, 0);
	if(expire == 0 ) document.cookie=name + "=" + escape(value) + "; path=/";
	else {
		var today = new Date();
		var expiry = new Date(today.getTime() + expire * 1000); // expire is second
		document.cookie=name + "=" + escape(value) + "; expires=" + expiry.toGMTString() + "; path=/";
	}
}

function setPageName(pid) {
	var el = document.all[pid];
	if(!el) return false;
	var org = el.src;
	reg1 = /(\.gif)/;
	if(reg1.test(org)) el.src = org.replace(/(\.gif)$/, "_sw.gif");
	else {
		reg2 = /(\.jpg)/;
		if(reg1.test(org)) el.src = org.replace(/(\.jpg)$/, "_sw.jpg");
	}
}

String.prototype.trim = function(str) { 
   str = this != window? this : str; 
   return str.replace(/^\s+/g, '').replace(/\s+$/g, ''); 
}

/** 
 * boolean validate(object form)
 * ÇØ´ç ÆûÀÇ ÀÔ·Â Á¶°ÇÀÌ ¸¸Á·ÇÏ´ÂÁö¿¡ µû¶ó ¸¸Á·ÇÏÁö ¾ÊÀ»°æ¿ì 
 * °æ°íÃ¢À» º¸¿©ÁÖ°í Ä¿¼­ Æ÷Ä¿½º¸¦ ÀÌµ¿ÇÏ¸ç false ¸¦ ¸®ÅÏÇÏ¿© submit À» ¸·´Â´Ù
 */
function validate(form) {

	var max = form.elements.length;
	for (i = 0; i < max; i++ ) {
		var currEl = form.elements[i];
		currEl.value = currEl.value.trim();

		// required °¡ ÀÖÀ» °æ¿ì °ªÀ» ÀÔ·ÂÇß´ÂÁö Ã¼Å©ÇÑ´Ù.
		if (currEl.getAttribute("required") != null) {
			if (currEl.value == null || currEl.value == "") {
				return do_error(currEl);
			}
		}

		// maxlength °¡ ÀÖÀ» °æ¿ì ±æÀÌ¸¦ Ã¼Å©ÇÑ´Ù.
		if (currEl.getAttribute("maxlength") != null && currEl.value != "") {
			var len = 0;
			for(j=0; j<currEl.value.length; j++) {
				var str = currEl.value.charAt(j);
				len += (str.charCodeAt() > 128) ? 2 : 1
			}
			if (len > parseInt(currEl.getAttribute("maxlength"))) {
				return do_error(currEl, "length");
			}
		}

		// option ÀÌ ÀÖÀ» °æ¿ì ¿É¼Ç¿¡ µû¶ó Ã¼Å©ÇÑ´Ù.
		if (currEl.getAttribute("option") != null && currEl.value != "") {
			if(check_pattern(currEl) == false) return do_error(currEl, "form");
		}
	}
	return true;
}

function check_pattern(el) {
	var opt = el.option.toLowerCase();
	
	if(opt == "jumin") return is_jumin(el);
	else if(opt == "foreigner") return is_foreigner_jumin(el.value);
	else if(opt == "orgno") return is_orgno(el.value);
	else if(opt == "ipaddr") return is_ipaddr(el.value);
	else if(opt == "phone") return is_phone(el);
	else if(opt == "domain") return is_domain(el);
	else if(opt == "ftpid") return is_ftpid(el);
	else if(opt == "year") return is_year(el);
	else if(opt == "month") return is_month(el);
	else if(opt == "day") return is_day(el);

	if(reg = pattern[opt]) {
		if(!reg.test(el.value)) return false;
	} 
	return true;
}

function do_error(el,type) {
	name = (el.hname) ? el.hname : el.name;
	switch (type) {
		case "form":
			alert(name + " Ç×¸ñÀÌ ¿Ã¹Ù¸£Áö ¾Ê½À´Ï´Ù");
			break;
		case "length":
			alert(name + " Ç×¸ñÀÇ ±æÀÌ°¡ ÃÊ°úµÇ¾ú½À´Ï´Ù.");
			break;
		default:
			alert(name + " Ç×¸ñÀº ¹Ýµå½Ã ÀÔ·ÂÇØ¾ß ÇÕ´Ï´Ù");
			break;
	}
	el.focus();
	return false;
}	

function checked_it(name,value) {
	var el = document.all.tags("input");
	for (i = 0 ; i < el.length; i++) {
		if (el[i].name == name && el[i].value == value) {
			el[i].checked = true;
		}
	}
}

function selected_it(name,value) {
	var el = document.all.tags("select");
	for (i = 0; i < el.length; i++) {
		if (el[i].name == name) {
			if (el[i].size > 1 && el[i].getAttribute("MULTIPLE") != null ) {
				for (k=0; k < value.length; k++) {
					alert(value[k]);
					for (j = 0; j < el[i].options.length; j++ ) {
						if (el[i].options[j].value == value[k]) el[i].selectedIndex[++x] = j;
					}
				}
			} else {
				for (j = 0; j < el[i].options.length; j++ ) {
					if (el[i].options[j].value == value) el[i].selectedIndex = j;
				}
			}
		}
	}
}

function disabled_it(name) {
	var arr = new Array("input", "select", "textarea");
	for(k=0; k<arr.length; k++) {
		var el = document.all.tags(arr[k]);
		for (i = 0 ; i < el.length; i++) {
			if (el[i].name == name) {
				el[i].disabled = true;
			}
		}
	}
}

function is_jumin(el) {

	var regJumin = /^([0-9]{6})-?([0-9]{7})$/;
	if(!regJumin.test(el.value)) return false;
	el.value = RegExp.$1 + "-" + RegExp.$2
	var arg = RegExp.$1 + RegExp.$2;
/*
	var sum = 0;
	var last = sn.charCodeAt(12) - 0x30;
	var bases = "234567892345";
	for (i=0; i<12; i++) {
		//if (!masknum(sn.charCodeAt(i))) return false;
		sum += (sn.charCodeAt(i) - 0x30) * (bases.charCodeAt(i) - 0x30);
	}
	var mod = sum % 11;

	return ((11 - mod) % 10 == last);
*/
	a1 = arg.substring(0,1);
	a2 = arg.substring(1,2);
	a3 = arg.substring(2,3);
	a4 = arg.substring(3,4);
	a5 = arg.substring(4,5);
	a6 = arg.substring(5,6);
	a7 = arg.substring(6,7);
	a8 = arg.substring(7,8);
	a9 = arg.substring(8,9);
	a10 = arg.substring(9,10);
	a11 = arg.substring(10,11);
	a12 = arg.substring(11,12);
	a13 = arg.substring(12,13);
	var sum = a1*2 + a2*3 + a3*4 + a4*5 + a5*6 + a6*7 + a7*8 + a8*9 + a9*2 + a10*3 + a11*4 + a12*5 ;
	var nam = sum % 11;
	var CheckValue = 11-nam ;

	if (CheckValue >= 10) CheckValue = CheckValue - 10;
	if(CheckValue != a13)
	 return false;
	else
	 return true;
}

function is_foreigner_jumin(elm) {
	var sum = 0,odd = 0;
	buf = new Array(13);
	for (i = 0; i < 13; i++) buf[i] = parseInt(elm.charAt(i));
	odd = buf[7]*10 + buf[8];
	if (odd%2 != 0) {      return false;    }
	if ((buf[11] != 6)&&(buf[11] != 7)&&(buf[11] != 8)&&(buf[11] != 9)) {      return 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]) return false;
	else return true;
}

function is_orgno(elm) {
	var regOrgNo = /[0-9]{10}/;
	if( !regOrgNo.test(elm) ) return false;
	
	var str = elm;
	var mul_by = new Array(1,3,7,1,3,7,1,3,5);
	var arr_org_no = new Array(10);
	var sum = 0;

	for (i=0; i<10; i++){
	 arr_org_no[i] = str.charAt(i);
	}
	for (i=0; i<9; i++){
	 sum += arr_org_no[i] * mul_by[i];
	}
	sum += arr_org_no[8] * 5 / 10 ;
	sum = Math.floor(sum);
	var chk_flag = sum % 10 ;
	chk_flag = (chk_flag == 0) ? 0 : (10 - chk_flag) ;

	if ( arr_org_no[9] == chk_flag)  return true;
	else return false;
}

function is_ipaddr(elm) {
	var regIP =/^[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}$/;
	if(!regIP.test(elm)) return false;
	var tmp = elm.split(".");
	for(i=0; i<tmp.length; i++)
		if(parseInt(tmp[i]) > 255) return false;
	return true;
}

function is_phone(el) {
	phone = el.value;
	var pattern = /^([0]{1}[0-9]{1,2})-?([1-9]{1}[0-9]{2,3})-?([0-9]{4})$/;
	if (pattern.exec(phone)) {
		if(RegExp.$1 == "011" || RegExp.$1 == "016" || RegExp.$1 == "017" || RegExp.$1 == "018" || RegExp.$1 == "019") {
			el.value = RegExp.$1 + "-" + RegExp.$2 + "-" + RegExp.$3;
		}
		return true;
	} else {
		return false;
	}
}

function is_domain(el) {
	domain = el.value.toLowerCase();
	var pattern = /^[\.a-zA-Z0-9-]+\.[a-zA-Z]+$/;
	if(!pattern.test(domain)) return false;
	el.value = domain.replace(/^(www\.)/, "");
	return true;
}

function is_ftpid(el) {
	ftpid = el.value.toLowerCase();
	var pattern = /^[_a-z0-9-]+$/;
	if(!pattern.test(ftpid)) return false;
	el.value = ftpid;
	return true;
}

function is_year(el) {
	var year = el.value;
	var reg = /^[1-2]{1}[0-9]{3}$/
	if(!reg.test(year)) return false;
}

function is_month(el) {
	var month = el.value;
	var reg = /^[0-9]{1,2}$/
	if(!reg.test(month)) return false;
	if(parseInt(month) > 12) return false;
	if(month.length == 1) el.value = "0" + month;
}

function is_day(el) {
	var day = el.value;
	var reg = /^[0-9]{1,2}$/
	if(!reg.test(day)) return false;
	if(parseInt(day) > 31) return false;
	if(day.length == 1) el.value = "0" + day;
}
