var stateCodeList = new Array(); 
var stateNameList = new Array();
stateCodeList = ['AL','AK','AZ','AR','CA','CO','CT','DE','DC','FL','GA','HI','ID','IL','IN','IA','KS','KY','LA','ME','MD','MA','MI','MN','MS','MO','MT','NE','NV','NH','NJ','NM','NY','NC','ND','OH','OK','OR','PA','RI','SC','SD','TN','TX','UT','VT','VA','WA','WV','WI','WY']
stateNameList = ['Alabama','Alaska','Arizona','Arkansas','California','Colorado','Connecticut','Delaware','District of Columbia','Florida','Georgia','Hawaii','Idaho','Illinois','Indiana','Iowa','Kansas','Kentucky','Louisiana','Maine','Maryland','Massachusetts','Michigan','Minnesota','Mississippi','Missouri','Montana','Nebraska','Nevada','New Hampshire','New Jersey','New Mexico','New York','North Carolina','North Dakota','Ohio','Oklahoma','Oregon','Pennsylvania','Rhode Island','South Carolina','South Dakota','Tennessee','Texas','Utah','Vermont','Virginia','Washington','West Virginia','Wisconsin','Wyoming'];

function setStateList(objID,selValue){
	for(i=0;i<stateCodeList.length;i++){
		AddOption(objID,stateCodeList[i],stateNameList[i]);
	}
	SetSelectOption(objID,selValue);
}



// ============================ Cookie 관련 함수 =============================0
function delCookie(name,value,expires,path,domain,secure) {
  document.cookie = name + "=" + escape (value) +
	((expires) ? "; expires=" + expires : "") +
	((path) ? "; path=" + path : "") +
	((domain) ? "; domain=" + domain : "") +
	((secure) ? "; secure" : "");
}

function setCookie (name,value,expires,path,domain,secure) {
  document.cookie = name + "=" + escape (value) +
	((expires) ? "; expires=" + expires.toGMTString() : "") +
	((path) ? "; path=" + path : "") +
	((domain) ? "; domain=" + domain : "") +
	((secure) ? "; secure" : "");
}

function getCookieVal (offset) {
	var endstr = document.cookie.indexOf (";", offset);
	if (endstr == -1)
		endstr = document.cookie.length;
	return unescape(document.cookie.substring(offset, endstr));
}
function getCookie(name) {
	var arg = name + "=";
	var alen = arg.length;
	var clen = document.cookie.length;
	var i = 0;
	while (i < clen) {
		var j = i + alen;
		if (document.cookie.substring(i, j) == arg)
			return getCookieVal (j);
		i = document.cookie.indexOf(" ", i) + 1;
		if (i == 0) break;
	}
	return "";
}


function setCookieA(name,name2,value,expire,domain){
	var string=getCookie(name);

	var newStr = "";
	if(string=="" || string==null){
		newStr = name + "=" + name2 + "="+ escape(value);
	}else{
		if (string.indexOf(name2 + '=') == -1){
			newStr = string + "&" + name2 + "=" + escape(value);
		}else{
			var cookieArr = string.split("&");
			for(i=0;i<cookieArr.length;i++){
				if(newStr!="") newStr += "&";
				if(cookieArr[i].split("=")[0]==name2)
					newStr += name2 + "=" + escape(value);
				else{
					newStr += cookieArr[i].split("=")[0] + "=" + escape(cookieArr[i].split("=")[1]);
				}
			}
		}
	}
	document.cookie = name + "=" + newStr  //쿠키저장
		+ ((expire) ? ";expires=" + expire.toGMTString() : "")
		+ ((domain) ? "; domain=" + domain : "");
}


function getCookieA(uName,uName2){		//쿠키열 중에 uName2의 값을 구한다
	var string = getCookie(uName);

	var cookieArr = string.split("&");
	for(i=0;i<cookieArr.length;i++){
		if(cookieArr[i].split("=")[0]==uName2)
			return unescape(cookieArr[i].split("=")[1]);
	}
	return "";
}
// ============================ Cookie 관련 함수 =============================0


// Hashtable
function Hashtable(){
	this.i = 0;
	this.itemName  = new Array();
	this.itemValue = new Array();
	this.count = 0;

	this.add = function () {
		var txtName = arguments[0];
		var txtValue = arguments[1];
		this.itemName[this.count]  = txtName;
		this.itemValue[this.count] = txtValue;
		this.count++;
	};

	this.get = function () {
		var txtName = arguments[0];
		var i;
		for(i=0;i<this.count;i++){
			if(this.itemName[i]==txtName){
				return this.itemValue[i];
			}
		}
		return null;
	};

	this.clear = function () {
		this.itemName = new Array();
		this.itemValue = new Array();
		this.count = 0;
	};
}





// Replace함수
function replace(str,otxt,rtxt){
	if(otxt==rtxt) return str;
	while(str.indexOf(otxt)>0){
		str = str.replace(otxt,rtxt);
	}
	return str;
}

String.prototype.trim = function(){
	return this.replace(/(^\s*)|(\s*$)/gi, "");
}
String.prototype.replaceAll = function(str1, str2){
	var temp_str = "";

	if(this.trim() != "" && str1 != str2){
		temp_str = this.trim();
		while (temp_str.indexOf(str1) > -1){
			temp_str = temp_str.replace(str1, str2);
		}
	}
	return temp_str;
}

String.prototype.append = function(str,delimeter){
	if(this=="") 
		return str;
	else
		return this + delimeter + str;
}



// select box의 옵션들 없애기
function DelOption(objname){
	var obj = document.getElementById(objname);
	while (obj.length>=1)
		obj.options[0]=null;
}

// select box에 option 추가
function AddOption(objname,value,strtext){
	var obj = document.getElementById(objname);
	var optobj = new Option(strtext,value,true);
	obj.options[obj.length]=optobj;
}

// select box의 특정 option 선택
function SetSelectOption(objname,selectvalue){
	var obj = document.getElementById(objname);
	var i;

	for(i=0;i<obj.length;i++){
		if(obj.options[i].value==selectvalue){
			obj.options[i].selected = true;
			return;
		}
	}
}




// 팝업창 띄우기
function popupWindow(Url,windowName,Width,Height,scroll){
   if((scroll==null) || (scroll=="")){
	   scroll = "no";
   }
   var win = window.open(Url,windowName,"toolbar=no,location=no,directory=no,status=no,menubar=no,scrollbars="+ scroll +",resizable=no,top=50,left=50,width="+ Width +",height="+ Height);
   if(win!=null) win.focus();
}

// 팝업창 띄우기(top, left 추가)
function popupWindow2(Url,windowName,Top,Left,Width,Height,scroll){
   if((scroll==null) || (scroll=="")){
	   scroll = "no";
   }
   var win = window.open(Url,windowName,"toolbar=no,location=no,directory=no,status=no,menubar=no,scrollbars="+ scroll +",resizable=no,top="+Top+",left="+Left+",width="+ Width +",height="+ Height);
   if(win!=null) win.focus();
}


// 원본문자열에서 지정한 문자열의 갯수
function StringCount(sourceStr,findstr){
	var result = 0;
	var tmp = "";
	tmp = sourceStr;
	while(tmp.indexOf(findstr)>=0){
		result++;
		tmp = tmp.substring(tmp.indexOf(findstr)+1,tmp.length);
	}
	return result;
}


// 바이트 수
function getByte(strtext){
	var str = new String(strtext);
	var len = str.length;
	var k,temp,count=0;

	for (k=0 ; k<len ; k++){
		temp = str.charAt(k);
		if (escape(temp).length > 4){
			count += 2;
		}else if (temp == 'r' && str.charAt(k+1) == 'n') { // rn일 경우
			count += 2;
		}else if (temp != 'n') {
			count++;
		}
	}
	return count;
}


function CheckEssential(formobj, obj){
	var i;
	var tmpcnt;
	
	if((obj.type=="text") || (obj.type=="file") || (obj.type=="hidden") || (obj.type=="textarea") || (obj.type=="password")){
		if(obj.value.trim()=='')
			return false;
		else
			return true;
	}else if(obj.type=="select-one"){
		if(obj.value=='')
			return false;
		else
			return true;

	}else if(obj.type=="radio"){
		tmpcnt = getObjCnt(formobj, obj.name);
		if(tmpcnt==1){
			return obj.checked;
		}else if(tmpcnt>1){
			for(i=0;i<tmpcnt;i++){
				if(eval("document." + formobj.name + "." + obj.name + "[" + i + "]").checked){
					return true;
				}
			}
			return false;
		}
		return true;
	}
}

function CheckMaxLen(obj,maxlen){
	if(getByte(obj.value)>maxlen)
		return false;
	else
		return true;
}

function CheckNumeric(obj){
	if(isNaN(obj.value))
		return false;
	else
		return true;
}

function CheckValid(formobj,obj){
	var tmpstr = '';
	var r_objname = '';
	var r_maxlen  = 0;
	var r_essent  = false;
	var r_numeric = false;

	var txtvalid = obj.getAttribute("valid");
	for(var i=0;i<txtvalid.split("|").length;i++){
		tmpstr = txtvalid.split("|")[i];
		if(tmpstr.substring(0,1)=="T"){        // 입력값 명
			r_objname = tmpstr.split("=")[1];
		}else if(tmpstr.substring(0,1)=="M"){  // 최대길이
			r_maxlen = tmpstr.split("=")[1];
		}else if(tmpstr.substring(0,1)=="E"){  // 필수항목임
			r_essent = true;
		}else if(tmpstr.substring(0,1)=="N"){  // 숫자만 입력가능
			r_numeric = true;
		}
	}
	if(r_essent){
		if(!CheckEssential(formobj,obj)){
			alert( '"' + r_objname + '" is required ');
			if(obj.type!="hidden") obj.focus();
			return false;
		}
	}
	if(parseInt(r_maxlen)>0){
		if(!CheckMaxLen(obj,r_maxlen)){
			alert('Maximum length for "' + r_objname + '" is '+ r_maxlen +' bytes.\n\nCurrent: ' + getByte(obj.value) + ' bytes');
			if(obj.type!="hidden") obj.focus();
			return false;
		}
	}
	if(r_numeric){
		if(!CheckNumeric(obj)){
			alert('"' + r_objname + '" is numeric only');
			if(obj.type!="hidden") obj.focus();
			return false;
		}
	}
	return true;
}


// 입력값들 체크후에 true,false 리턴
function CheckForm(frmobj){
	with(frmobj){
		for(var i=0; i<elements.length; i++) {
			var valid = elements[i].getAttribute("valid");
			if(valid!=null){
				var ret = CheckValid(frmobj,elements[i]);
				if(ret==false) return ret;
			}
		}
		return true;
	}
}


function ReplaceString(sTxt,sFindTxt1,sFindTxt2,sReplaceStr){
	var iLoc1 = sTxt.indexOf(sFindTxt1);
	if(iLoc1 < 0){
		return sTxt;
	}
	var	sTmp1 = sTxt.substring( 0,iLoc1 + sFindTxt1.length);
	var	sTmp2 = sTxt.substring(iLoc1+sFindTxt1.length );

	var	iCnt = sTmp2.indexOf(sFindTxt2);
	if(iCnt < 0 ){
		return sTxt;
	}

	var	sTmp3 = sTmp2.substring(iCnt);
	var	sTmp2 = sTmp2.substring(0,iCnt);
	return sTmp1 + sReplaceStr + sTmp3;
}

function getStrBetween(sTxt,sStartTag,sEndTag){
	var iLoc1 = sTxt.indexOf(sStartTag);
	var iLoc2 = sTxt.indexOf(sEndTag);

	return sTxt.substring(iLoc1,iLoc2-iLoc1+1);
}


function flash(url, width, height){
	document.write("<object classid='clsid:d27cdb6e-ae6d-11cf-96b8-444553540000' codebase='http://fpdownload.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=9,0,0,0' width='"+ width +"' height='"+ height +"' align='middle'>");
	document.write("<param name='allowScriptAccess' value='always' />");
	document.write("<param name='movie' value='"+ url +"' />");
	document.write("<param name='quality' value='high' />");
	document.write("<param name='wmode' value='transparent' />");
	document.write("<param name='bgcolor' value='#ffffff' />");
	document.write("<embed src='"+ url +"' quality='high' wmode='transparent' bgcolor='#ffffff' width='"+ width +"' height='"+ height +"' name='' allowScriptAccess='always' align='middle' type='application/x-shockwave-flash' pluginspage='http://www.macromedia.com/go/getflashplayer' />");
	document.write("</object>");
}


function mediaPlayer(url,width,height){
	document.write("<object id='objMediaPlayer1' classid='CLSID:22D6f312-B0F6-11D0-94AB-0080C74C7E95' style='FILTER:blue;LEFT:0px; WIDTH:"+ width +"px; TOP:0px; HEIGHT: "+ height +"px'>");
	document.write("<param name='AutoStart' value='false'>");
	document.write("<param name='TransparentAtStart' value='True'>");
	document.write("<param name='ShowControls' value='1'>");
	document.write("<param name='ShowStatusBar' value='1'>");
	document.write("<param name='FileName' value='"+ url +"'>");
	document.write("</object>");
}


function fGetXY(aTag){
	var oTmp = aTag;
	var pt = new Point(0,0);
	do{
		pt.x += oTmp.offsetLeft;
		pt.y += oTmp.offsetTop;
		oTmp = oTmp.offsetParent;
	}while(oTmp.tagName!="BODY");
	return pt;
}


function Point(iX, iY){
	this.x = iX;
	this.y = iY;
}


function displayLayer(id, pCtrlID, leftmargin, topmargin){
	if(typeof pCtrlID == "string")
		var pCtrlObj = document.getElementById(pCtrlID);
	else
		var pCtrlObj = pCtrlID;

	var layerPoint = this.fGetXY(pCtrlObj);

	with (document.getElementById(id).style) {
		left = layerPoint.x + leftmargin + 'px';
		top  = layerPoint.y + pCtrlObj.offsetHeight + topmargin + 'px';
		display = 'block';
	}
}


//#############################################################
// ajax관련 모듈
//#############################################################
function getAjaxPage(url, targetDiv, callBackFuc, execScript){	
	if(execScript==null) execScript = true;
	var myAjax = new Ajax.Updater(
		{success: targetDiv},
		url, {
			method: 'get',
			evalScripts: execScript,
			onComplete: callBackFuc
		}
	);
}



function getAjaxResponse(url, callBackFuc){
	new Ajax.Request(
			url, 
			{
				onSuccess: callBackFuc
			}
		); 
}

function getAjaxResponseSync(url, callBackFuc){
	new Ajax.Request(
			url, 
			{
				asynchronous: false,
				onSuccess: callBackFuc
			}
		); 		
}

function getXMLDOM(httpObj) {
	var xmlDoc;
	if(window.ActiveXObject) {
		xmlDoc = httpObj.responseXML;
	} else {
		var parser = new DOMParser();
		xmlDoc = parser.parseFromString(httpObj.responseText, "text/xml");
	}
	return xmlDoc;
}

var xmlHttpObj = null;
function loadXml(url, funcObj){
	xmlHttpObj = createHttpRequest();
	if(!xmlHttpObj) return "Your browser is not supported";

	xmlHttpObj.onreadystatechange = function(){
		if(xmlHttpObj.readyState == 4) {
			if(xmlHttpObj.status == 200) {
				eval(funcObj);
			}
		}
	}
	xmlHttpObj.open("GET", url);  // 비동기모드
	xmlHttpObj.send(null);
}

//#############################################################


// the date format prototype
Date.prototype.format = function(f){
	if (!this.valueOf())
		return ' ';

	var d = this;

	return f.replace(/(yyyy|mmmm|mmm|mm|dddd|ddd|dd|hh|nn|ss|a\/p)/gi,
		function($1){
			switch ($1.toLowerCase()){
				case 'yyyy': return d.getFullYear();
				case 'mm':   return ((d.getMonth() + 1)<10 ? '0'+ (d.getMonth() + 1) : (d.getMonth() + 1));
				case 'dd':   return (d.getDate()<10 ? '0'+ d.getDate() : d.getDate());
				case 'hh':   return ((h = d.getHours() % 12) ? h : 12);
				case 'nn':   return d.getMinutes();
				case 'ss':   return d.getSeconds();
			}
		}
	);
}





function showTab(groupid, idx){
//	if(tabTimer>0) clearTimeout(tabTimer);

	var tabImg = $(groupid).select("img[cls=tabImg]");
	var tabContent = $(groupid).select("[cls=tabContent]");	

	for(i=0;i<tabImg.length;i++){
		if(tabImg[i].src.indexOf("_on")>0){ 
			tabImg[i].setAttribute("src",tabImg[i].getAttribute("src").replaceAll("_on","_off"));
			if(tabContent.length>i) tabContent[i].style.display = "none";
		}
	}
	for(i=0;i<tabContent.length;i++){
		tabContent[i].style.display = "none";
	}

	if(tabContent.length>=idx){ tabContent[idx-1].style.display = "block"; }
	if(idx>0){ tabImg[idx-1].setAttribute("src",tabImg[idx-1].getAttribute("src").replaceAll("_off","_on")); }
}


//var tabTimer = -1;
function initTab(groupid, idx){
	if(idx>0){
		var tabImg = $(groupid).select("img[cls=tabImg]");
		for(i=0;i<tabImg.length;i++){
			if(i==idx-1){ 
				tabImg[i].setAttribute("init","on");
			}else{
				tabImg[i].setAttribute("init","off");
			}
		}
		showTab(groupid, idx);
	}
}

function restoreTab(groupid){
	var tabImg = $(groupid).select("img[cls=tabImg]");
	for(i=0;i<tabImg.length;i++){
		if(tabImg[i].getAttribute("init")=="on"){
			//tabTimer = setTimeout("showTab('"+ groupid +"',"+ (i+1) +");",200);
			showTab(groupid,i+1);
			return;
		}
	}
	//tabTimer = setTimeout("showTab('"+ groupid +"', 0);",200); // 선택된게 없을 경우 처리
	showTab(groupid, 0); // 선택된게 없을 경우 처리
}



Number.prototype.toFixed = function(precision){
	var num = (Math.round(this * Math.pow(10,precision))).toString();
    return num.substring(0,num.length-precision) + "." + 
    num.substring(num.length-precision, num.length);
}



function add_commas(nStr){
	nStr += '';
	x = nStr.split('.');
	x1 = x[0];
	x2 = x.length > 1 ? '.' + x[1] : '';
	var rgx = /(\d+)(\d{3})/;
	while (rgx.test(x1)) {
		x1 = x1.replace(rgx, '$1' + ',' + '$2');
	}
	return x1 + x2;
}


function roundNum(num, dec) {
	var result = Math.round(num*Math.pow(10,dec))/Math.pow(10,dec);
	return result;
}


function Register(){
	location = "/member/register.asp"; 
}

function Login(BackURL){
	if(BackURL==null || BackURL==""){
		BackURL = location.href;
		BackURL = BackURL.replace('http://'+ document.domain, "");
		BackURL = encodeURIComponent(BackURL);
	}
	location = "/member/login.asp?BackURL="+ BackURL; 	
}

function Logout(BackURL){
	if(BackURL==null || BackURL==""){
		BackURL = location.href;
		BackURL = BackURL.replace('http://'+ document.domain, "");
		BackURL = encodeURIComponent(BackURL);
	}
	location = "/member/logout.asp?BackURL="+ BackURL; 
}


function MyAccount(BackURL){
	if(BackURL==null || BackURL==""){
		BackURL = location.href;
		BackURL = BackURL.replace('http://'+ document.domain, "");
		BackURL = encodeURIComponent(BackURL);
	}
	location = "/member/modify.asp?BackURL="+ BackURL; 
}


