<!--

//===========================================================
// 도메인 검색에 멀티프로세싱 도입 관련 javascript 함수
//===========================================================

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


// 영문도메인 유효성 체크 및 검색페이지 연결
function mltDomainSearch_Eng_main(form)
{
	var eng_host = form.dom_name.value.toLowerCase();
	var strlength = eng_host.length;
	
	var str="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-";
	var j=0,a=0;

	//[1.1] 도메인명 유무
	eng_host = eng_host.trim();
	if( eng_host == null || eng_host.trim() == "" ) {
		alert("도메인명을 입력해 주세요.");
		form.hostname.focus();
		return false;
	}

	//[1.2] 도메인길이 체크
	if(eng_host.length < 2 || eng_host.length > 63)
	{
		alert("[ "+form.domain_select.value+"] \n\n도메인 이름은 최소 2자, 최대 63자까지 가능합니다.");
		form.hostname.focus();
		return false;
	}

	//[1.3] 도메인명 유효 체크
	for(i=0;i<eng_host.length;i++)
	{
		temp = eng_host.charAt(i);

		if(temp == " ") {
			alert("[ "+form.domain_select.value+"] \n\n유효하지 않은 도메인 이름입니다. \n도메인 이름은 공백을 포함할 수 없습니다. \n\n다시 입력해 주십시오!!");
			form.hostname.focus();
			return false;
		} else if(temp == ".") {
			alert("[ "+form.domain_select.value+"] \n\n유효하지 않은 도메인 이름입니다.. \n도메인 이름은 . 를 포함할 수 없습니다. \n\n다시 입력해 주십시오!!");
			form.hostname.focus();
			return false;
		}

		if(eng_host.value != "" && str.indexOf(temp) < 0)
		{
			alert("[ "+form.domain_select.value+"] \n\n도메인 이름은 특수문자를 포함할 수 없습니다. \n\n다시 입력해 주십시오!!");
			form.hostname.focus();
			return false;
		}
	}
	
	//[1.4] "-"  으로 시작하는 것 금지
	if( eng_host.indexOf("-") == 0 ) {
		alert("[ "+form.domain_select.value+"] \n\n하이픈(-)으로 시작하는 도메인명은 등록하실 수 없습니다. \n다시 입력해주십시오.");
		form.hostname.focus();
		return false;
	}

	//[1.5] "-"  으로 끝나는 것 금지
	if( eng_host.lastIndexOf("-") == (strlength-1) ) {
		alert("[ "+form.domain_select.value+"] \n\n하이픈(-)으로 끝나는 도메인명은 등록하실 수 없습니다. \n다시 입력해 주세요.");
		form.hostname.focus();
		return false;
	}

	//[1.6] "bq--"  으로 시작하는 것 금지
	if( eng_host.indexOf("bq--") == 0 ) {
		alert("[ "+form.domain_select.value+"] \n\nbq--으로 시작하는 도메인명은 예약어이므로 등록하실 수 없습니다. \n다시 입력해 주세요");
		form.hostname.focus();
		return false;
	}

	//[1.7] "xn--"  으로 시작하는 것 금지
	if( eng_host.indexOf("xn--") == 0 ) {
		alert("[ "+form.domain_select.value+"] \n\nxn--으로 시작하는 도메인명은 예약어이므로 등록하실 수 없습니다. \n다시 입력해 주세요");
		form.hostname.focus();
		return false;
	}
	return true;
}



// 한글도메인 유효성 체크 및 검색페이지 연결
function mltDomainSearch_Kor_main(form)
{
	var kor_host = form.dom_name.value;

	//[1.1] 도메인명 유무
	if( kor_host == null || kor_host.trim() == "" ) {
		alert("도메인명을 입력해 주세요.");
		form.hostname.focus();
		return false;
	}

	//[1.2] 도메인명 형식 체크
	var valid_dom = /^[가-힣a-zA-Z0-9\-]+$/;
	if(!valid_dom.test(kor_host)){
		alert("["+form.domain_select.value+"]\n\n도메인 형식이 맞지 않습니다. \n다시 입력해 주세요.");
		form.hostname.focus();
		return false;
	}
	//[1.3] 길이 검사 : 최소 2자 - 17자 까지
	// 길이검사시 한글영문의 경우 영문을 1글자로 계산하게되면 안됨.
	// 한글한글자에 대해 영문은 0.5자로 계산하여 17자를 계산하도록함.

	var strlength = kor_host.length;
	junkyAlphabet = "0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ-";
	var strlength2 = 0; //한글포함한 경우의 길이계산을 위한 별도의 변수할당.
	for ( var i = 0; i < strlength; i++ ) {
		if ( junkyAlphabet.indexOf( kor_host.charAt(i) ) >= 0 ) {
			strlength2 = strlength2 + 0.5;
		} else {
			strlength2 = strlength2 + 1;
		}
	}

	if( strlength2 < 1 || strlength2 > 17 ) {
		alert("[ "+form.domain_select.value+"] \n\n도메인명은 최소 2자에서 최대 17까지만 등록가능합니다. \n다시 입력해 주세요.");
		form.hostname.focus();
		return false;
	}

	//[1.4] "-"  으로 시작하는 것 금지
	if( kor_host.indexOf("-") == 0 ) {
		alert("[ "+form.domain_select.value+"] \n\n하이픈(-)으로 시작하는 도메인명은 등록하실 수 없습니다. \n다시 입력해 주세요.");
		form.hostname.focus();
		return false;
	}

	//[1.5] "-"  으로 끝나는 것 금지
	if( kor_host.lastIndexOf("-") == (strlength-1) ) {
		alert("[ "+form.domain_select.value+"] \n\n하이픈(-)으로 끝나는 도메인명은 등록하실 수 없습니다. \n다시 입력해 주세요.");
		form.hostname.focus();
		return false;
	}

	//[1.6]"bq--"  으로 시작하는 것 금지
	if( kor_host.indexOf("bq--") == 0 ) {
		alert("[ "+form.domain_select.value+"] \n\nbq--으로 시작하는 도메인명은 예약어이므로 등록하실 수 없습니다. \n다시 입력해 주세요");
		form.hostname.focus();
		return false;
	}

	//[1.7] "xn--"  으로 시작하는 것 금지
	if( kor_host.indexOf("xn--") == 0 ) {
		alert("[ "+form.domain_select.value+"] \n\nxn--으로 시작하는 도메인명은 예약어이므로 등록하실 수 없습니다. \n다시 입력해 주세요");
		form.hostname.focus();
		return false;
	}
	return true;

}




// 한글도메인 유효성 체크 및 검색페이지 연결
function mltDomainSearch_Cn_main(form)
{
	var cn_host = form.dom_name.value;
	var strlength = cn_host.length;
	
	var str="`!@~#$%^&*()_+=|\.,;'";
	var j=0,a=0;

	//[1.1] 도메인명 유무
	cn_host = cn_host.trim();
	if( cn_host == null || cn_host.trim() == "" ) {
		alert("도메인명을 입력해 주세요.");
		form.hostname.focus();
		return false;
	}

	//[1.2] 도메인길이 체크
	if(cn_host.length < 2 || cn_host.length > 63)
	{
		alert("[ "+form.domain_select.value+"] \n\n도메인 이름은 최소 2자, 최대 63자까지 가능합니다.");
		form.hostname.focus();
		return false;
	}

	//[1.3] 도메인명 유효성 체크
	for(i=0;i<cn_host.length;i++)
	{
		temp = cn_host.charAt(i);

		if(temp == " ") {
			alert("[ "+form.domain_select.value+"] \n\n도메인 이름은 공백을 포함할 수 없습니다. \n다시 입력해 주세요");
			form.hostname.focus();
			return false;
		} else if(temp == ".") {
			alert("[ "+form.domain_select.value+"] \n\n도메인 이름은 . 를 포함할 수 없습니다. \n다시 입력해 주세요..");
			form.hostname.focus();
			return false;
		}

		if( str.indexOf(temp) > 0)
		{
			alert("[ "+form.domain_select.value+"] \n\n도메인 이름은 [ "+temp+"] 특수문자를 포함할 수 없습니다. \n다시 입력해 주세요");
			form.hostname.focus();
			return false;
		}
	}
	
	//[1.4] "-"  으로 시작하는 것 금지
	if( cn_host.indexOf("-") == 0 ) {
		alert("[ "+form.domain_select.value+"] \n\n하이픈(-)으로 시작하는 도메인명은 등록하실 수 없습니다. \n다시 입력해 주세요.");
		form.hostname.focus();
		return false;
	}

	//[1.5] "-"  으로 끝나는 것 금지
	if( cn_host.lastIndexOf("-") == (strlength-1) ) {
		alert("[ "+form.domain_select.value+"] \n\n하이픈(-)으로 끝나는 도메인명은 등록하실 수 없습니다. \n다시 입력해 주세요.");
		form.hostname.focus();
		return false;
	}

	//[1.6] "bq--"  으로 시작하는 것 금지
	if( cn_host.indexOf("bq--") == 0 ) {
		alert("[ "+form.domain_select.value+"] \n\nbq--으로 시작하는 도메인명은 예약어이므로 등록하실 수 없습니다. \n다시 입력해 주세요");
		form.hostname.focus();
		return false;
	}

	//[1.7] "xn--"  으로 시작하는 것 금지
	/*
	if( cn_host.indexOf("xn--") == 0 ) {
		alert("[ "+form.domain_select.value+"] \n\nxn--으로 시작하는 도메인명은 예약어이므로 등록하실 수 없습니다. \n다시 입력해 주세요");
		form.hostname.focus();
		return false;
	}
	*/
	return true;
}


// 도메인 유효성 체크 및 검색페이지 연결
function mltDomainSearch_main(form)
{
	var host = form.hostname.value.toLowerCase();

	//[1.1] 도메인명 유무
	host = host.trim();
	if( host == null || host.trim() == "" ) {
		alert("도메인명을 입력해 주세요.");
		form.hostname.focus();
		return false;
	}

	var domain_list = host.split("\n");

	//[1.1] 도메인 검색갯수 제한.
	if(form.max_count.value <domain_list.length)
	{
		alert(form.max_count.value+"개까지 검색이 가능합니다. \n다시 입력해 주세요.");
		form.hostname.focus();
		return false;
	}

	for (var i = 0; i < domain_list.length; i++)
	{	
		form.dom_name.value="";
		form.domain_select.value = domain_list[i].trim();

		var domain_name = domain_list[i].split(".");
		var domain_type = "";

		//[1.2] 도메인 유효성 채크
		if(domain_name.length == 1)
		{
			domain_name[1] = "keyword";
		}
		else if(domain_name.length<2 || !domain_name[1])
		//if(domain_name.length<2 || !domain_name[1])
		{
			alert("[ "+form.domain_select.value+"] \n\n도메인이 올바르지 않습니다. \n다시 입력해 주세요.");
			form.hostname.focus();
			showWrongDomain(form, i);
			return false;
		}

		// 도메인 타입가져오기
		for (var j = 0; j < domain_name.length; j++)
		{
			if(j>0 && domain_name[j])
			{
				domain_type += "."+domain_name[j];
			}
		}

		form.dom_name.value = domain_name[0].trim();

		//[1.5] 한글, 중문, 영문 도메인 채크
		var krstr = /[가-힣]/;
		if(!krstr.test(domain_name[0])){
			//types = ".com|.net|.asia|.kr|.mobi|.eu|.in|.biz|.info|.org|.tel|.name|.ac|.tw|.tv|.cc|.cn|.jp";
			//types = ".kr|.co.kr|.com|.net|.co|.org|.tel|.asia|.cn|.me|.biz|.in|.eu|.info|.or.kr|.cc|.tv|.jp|.ac|.name|.mobi|.tw";
			types = ".kr|.co.kr|.com|.net|.org|.tel|.asia|.cn|.me|.biz|.in|.eu|.info|.xxx|.or.kr|.cc|.tv|.jp|.ac|.name|.mobi|.tw|.co|.so";

			var types_buf = types.split("|");
			var types_check = 0;

			//[1.3] 등록가능한 도메인 타입 검사
			for (var j = 0; j < types_buf.length; j++)
			{
				if("."+domain_name[domain_name.length-1].trim()==types_buf[j].trim()){
					types_check = 1;
				}
			}

			if(!types_check){
				alert("[ "+form.domain_select.value+"] \n\n도메인 타입이 맞지 않습니다. \n다시 입력해 주세요.");
				form.hostname.focus();
				showWrongDomain(form, i);
				return false;
			}

			if(domain_name[domain_name.length-1].trim()=="cn"){
				//cn 도메인 (중문.cn)
				dom_check=mltDomainSearch_Cn_main(form);
			}else{
				//영문 도메인
				dom_check=mltDomainSearch_Eng_main(form);
			}
		}else{
			//한글 도메인
			kor_types = ".한국|.com|.net|.org|.kr|.tel|.info|.biz|.name|.tv|.cc|.keyword";
			//kor_types = ".com|.net|.org|.kr|.info|.biz|.name";

			var kor_types_buf = kor_types.split("|");
			kor_types_check=0;	
			for (var j = 0; j < kor_types_buf.length; j++)
			{
				if(domain_type.trim()==kor_types_buf[j].trim()){
					kor_types_check = 1;
				}
			}
			if(kor_types_check!=1){
				alert("[ "+form.domain_select.value+"] \n\n한글도메인을 지원하지 않는 타입입니다. \n다시 입력해 주세요.");
				//alert("[ "+form.domain_select.value+"]");
				showWrongDomain(form, i);
				form.hostname.focus();
				return false;
			}

			dom_check=mltDomainSearch_Kor_main(form);
		}

		if(!dom_check){
			return false;
		}
	}

	form.action = "/regist/search_result.php";
	form.domains.value = host;
	form.gubun.value = "\n";

	form.submit();
}

function showWrongDomain(f, index)
{

	var oTxt = f.hostname;
	
	var pt = fGetXY (oTxt);

	var height = oTxt.offsetHeight;
	var left = pt.x;
	var top = pt.y + 10;
	var width = oTxt.offsetWidth - 15;

	var fontSize = 22;

	var currentTop = top + (fontSize * index);
		
	if(currentTop > (height + top - fontSize))
	{
		var diff = currentTop - (height + top - (fontSize * 2));

		oTxt.scrollTop = diff;

		idYellow.style.top = top + height - fontSize - 22;
		idYellow.style.display = "";
	}
	else
	{
		oTxt.scrollTop = 0;
		idYellow.style.top = currentTop;
		idYellow.style.display = "";
	}

	idYellow.style.height = fontSize;
	idYellow.style.left = left;
	idYellow.style.width = width;
	
}

function fGetXY (aTag){
  var oTmp = aTag;

  this.pt = new Object();
  this.pt.x = 0; this.pt.y = 0; this.pt.h = 0; this.pt.w = 0; 

  do {
  	this.pt.x += oTmp.offsetLeft;
  	this.pt.y += oTmp.offsetTop;
	this.pt.h += oTmp.offsetHeight;
  	this.pt.w = oTmp.offsetWidth;
  	oTmp = oTmp.offsetParent;
  } while(oTmp.tagName!="BODY");

  return this.pt;
}
