/*
 * since 2008.10.11. by lks
 * prototype-1.6.0.4.js or scriptaculous-1.8.1 or higher required.
 */

	var WGN_lib_common = Class.create();

	WGN_lib_common.prototype =
	{
		initialize: function()
		{
		},

		//-----------------------------------------------------------------------------
		// DOM객체 내의 텍스트노드의 값 추출
		// Element, tagName, 중복순서(유일할 경우 생략)
		// @return : String
		//-----------------------------------------------------------------------------
		getTextNode: function( domObj, strTag, seq )
		{
			try
			{
				var arr = domObj.getElementsByTagName( strTag );

				if( arr.length <= 0 ) alert( "getTextNode 오류: 찾으시는(" + strTag + ") DOM객체가 없습니다." );
				else if( arr[ ( seq != null ? seq : 0 ) ].childNodes.length > 0 )
					return arr[ ( seq != null ? seq : 0 ) ].firstChild.nodeValue;

				return "";
			}
			catch( ex )
			{
				alert( "getTextNode 예외오류: " + ex.name + " (" + ex.number + ")\n\n[" + ex.message + "]\n[" + ex.description + "]" );
				return "";
			}
		},

		//-----------------------------------------------------------------------------
		// 경고메시지 띄우고 해당 객체에 포커싱 하면서 해당 객체의 값 전체 블럭 설정
		// Element, 경고메시지
		// @return : void
		//-----------------------------------------------------------------------------
		alertActivate: function( obj, noticeMsg )
		{
			alert( noticeMsg );

			try
			{
				Field.activate( obj );
			}
			catch( e )
			{
			}
		},

		//-----------------------------------------------------------------------------
		// 해당 객체의 값 전체의 whitespace 제거
		// Element
		// @return : void
		//-----------------------------------------------------------------------------
		onlyChar: function( obj )
		{
			try
			{
				obj.value = obj.value.onlyChar();
			}
			catch( e )
			{
			}
		},

		//-----------------------------------------------------------------------------
		// 해당 객체의 값 양 옆의 whitespace 제거
		// Element
		// @return : void
		//-----------------------------------------------------------------------------
		trim: function( obj )
		{
			try
			{
				obj.value = obj.value.trim();
			}
			catch( e )
			{
			}
		},

		//-----------------------------------------------------------------------------
		// 자동 탭 ( usage: INPUT의 onkeyup="wgn.autoTab(this);" )
		// 영문이나 숫자만 사용해야 합니다. 한글은 조합입력방식때문에 사용할 수 없습니다.
		// Element
		// @return : void
		//-----------------------------------------------------------------------------
		autoTab: function( obj, obj_next )
		{
			try
			{
				if( obj.value.length >= obj.maxLength )
				{
					if( obj_next == null ) Field.focus( $( obj ).next( "INPUT" ) );
					else                   Field.focus( $( obj_next )            );
				}
			}
			catch( e )
			{
			}
		},

		//-----------------------------------------------------------------------------
		// 바이트 계산과 cropping
		// @사용법 : <textarea onkeyup="wgn.cutByte(this);" maxlength="4000">......
		// Element
		// @return : void
		//-----------------------------------------------------------------------------
		cutByte: function( obj_content, obj_display, typeDisplay )
		{
			var max_bytes = parseInt( obj_content.getAttribute( "maxlength" ) != null ? obj_content.getAttribute( "maxlength" ) : 0 );
			var tmpStr = new String( obj_content.value );;
			var tcount = tmpStr.lengthByte();

			if( tcount > max_bytes )
			{
				var tmpSeq = 0;
				var isCapture = false;

				tcount = 0;

				for( k = 0; k < tmpStr.length; k++ )
				{
					if( tmpStr.charCodeAt( k ) > 147 )    tcount += 4;
					else if( tmpStr.charAt( k ) != "\r" ) tcount++;

					if( !isCapture && tcount > max_bytes )
					{
						tmpSeq = k;
						isCapture = true;
					}
				}
				tmpStr = tmpStr.rtrim().substring( 0, tmpSeq );
				obj_content.blur();
				obj_content.value = tmpStr;

				alert( "메시지 내용은 " + max_bytes + "바이트 이상은 전송하실 수 없습니다.\r\n입력하신 메세지는 " + ( tcount - max_bytes ) + "바이트가 초과되었습니다.\r\n초과된 부분은 자동으로 삭제됩니다." );

				tcount = tmpStr.lengthByte();
			}

			if( obj_display != null )
			{
				if( typeDisplay != null )
				{
					if( typeDisplay == "left_kor" )
					{
/*
						if( obj_display.value ) obj_display.value     = Math.ceil( ( max_bytes - tcount ) / 4 );
						else                    obj_display.innerHTML = Math.ceil( ( max_bytes - tcount ) / 4 );
*/
						if( obj_display.value ) obj_display.value     = ( max_bytes - tcount ) / 4;
						else                    obj_display.innerHTML = ( max_bytes - tcount ) / 4;
					}
					else if( typeDisplay == "left" )
					{
						if( obj_display.value ) obj_display.value     = max_bytes - tcount;
						else                    obj_display.innerHTML = max_bytes - tcount;
					}
				}
				else
				{
					if( obj_display.value ) obj_display.value     = tcount;
					else                    obj_display.innerHTML = tcount;
				}
			}
			obj_content.focus();
		},

		//-----------------------------------------------------------------------------
		// 부드러운 스크롤
		// @사용법 : onclick="wgn.scrollToElement('id_element');return false;"
		// Element(id of Element), duration(단위:0.1초)
		// @return : void
		//-----------------------------------------------------------------------------
		scrollToElement: function( obj, speed )
		{
			var pos = obj == null ? null : $( obj ).cumulativeOffset(); // 문서에서의 top, left
			var dOffsets = document.viewport.getScrollOffsets();        // 보이는 영역의 스크롤 top, left

			clearInterval( this.timer_scroll );
			this.timer_scroll = null;

			this.duration_scroll = speed == null ? 500 : speed * 100;
			this.trans_from = dOffsets.top;
			this.trans_to = pos == null ? 0 : pos.top - 5;
			this.trans_time = new Date().getTime();
			this.timer_scroll = setInterval( this.transScroll.bind(this), Math.round( 1000 / 50 ) );
		},

		transScroll: function()
		{
			var time = new Date().getTime();

			if ( time < this.trans_time + this.duration_scroll )
			{
				var t = time - this.trans_time;
				var b = this.trans_from;
				var c = this.trans_to - this.trans_from;
				var d = this.duration_scroll;

				//Fx.Transitions.sineInOut
				this.trans_now = -c/4 * (Math.cos(Math.PI*t/d) - 1) + b;
			}
			else
			{
				clearInterval( this.timer_scroll );
				this.timer_scroll = null;
				this.trans_now = this.trans_to;
			}
			window.scrollTo( 0, this.trans_now );
		},

		//-----------------------------------------------------------------------------
		// 부드러운 스크롤 (페이지 맨 위로)
		// @사용법 : onclick="wgn.scrollToTop();"
		// duration(단위:0.1초)
		// @return : void
		//-----------------------------------------------------------------------------
		scrollToTop: function( speed )
		{
			//this.scrollToElement( null, speed );
			//var bodyHeight = $( "cart" ).cumulativeOffset();
			//var speed = bodyHeight.top/1500

			Effect.ScrollTo('shop_header',{ duration:0.5 });
		},

		//-----------------------------------------------------------------------------
		// layer width 조정
		//-----------------------------------------------------------------------------
		objWC: function( f_obj, used )
		{
			var f_obj;
			var obj, obj_width;

			switch( f_obj ){
				case "lnv" :
					obj = $( "lnv" );
					if( used == 1 ){
						obj_width = 400;
						if( $( "positionSwf" ) ) $( "positionSwf" ).style.width = "400px"

					}else{
						obj_width = 170;
						if( $( "positionSwf" ) ) $( "positionSwf" ).style.width = "170px"

					}
					break;

				case "qmenu" :
					obj = $( "quick_cart" );
					if( used == 1 ) obj_width = 386;
					else            obj_width = 90;
					break;

				case "searchmenu" :
					obj = $( "searchmenu" );
					if( used == 1 ) obj_height = 300;
					else            obj_height = 161;
					break;

				// default :
			}

			if( f_obj != null && used != null ){
				if( f_obj == "searchmenu" ){
					obj.setStyle( { height : obj_height + "px" } );
				}else{
					obj.setStyle( { width : obj_width + "px" } );
				}

			}else{
				alert( "오류>\nobj : " + obj + "\nobj_width : " + obj_width );
			}

		},

		//-----------------------------------------------------------------------------
		// 팝업창 띄우기
		// @사용법 : wgn.openPopup( "", { width: 400, height: 500, scroll: 0, top: 100, left: 100, name: "name_popup" } );
		// 각 옵션의 기본값은 아래 참조
		// @return : 팝업창객체
		//-----------------------------------------------------------------------------
		openPopup: function( url, option )
		{
			var obj_option = option == null ? {} : option;

			if( url               == null ) url               = "";
			if( obj_option.width  == null ) obj_option.width  = window.screen.availWidth;
			if( obj_option.height == null ) obj_option.height = window.screen.availHeight;
			if( obj_option.scroll == null ) obj_option.scroll = 0;
			if( obj_option.top    == null ) obj_option.top    = ( window.screen.availHeight - obj_option.height ) / 4;
			if( obj_option.left   == null ) obj_option.left   = ( window.screen.availWidth  - obj_option.width  ) / 4;
			if( obj_option.name   == null ) obj_option.name   = "";
			if( obj_option.errMsg == null ) obj_option.errMsg = "Please disable popup blocking!";

			var newWindow = window.open( url, obj_option.name, "width=" + obj_option.width + ",height=" + obj_option.height + ",scrollbars=" + obj_option.scroll + ",toolbar=0,menubars=0,locationbar=0,historybar=0,statusbar=0,resizable=0,left=" + obj_option.left + ",top=" + obj_option.top + ",channelmode=no,titlebar=no", false );

			if( !newWindow )
			{
				alert( obj_option.errMsg );
				return false;
			}
			newWindow.focus();

			return newWindow;
		},

		//-----------------------------------------------------------------------------
		// 쿠키에 기한만료 값 셋팅(자식창)
		// @사용법 : wgn.setCookie( "name_project", "value_project", 3600 );
		// String(key), String(value), Number(분,minutes)
		// @return : void
		//-----------------------------------------------------------------------------
		setCookie: function( name, value, expireMinutes )
		{
			var todayDate = new Date();
			todayDate.setDate( todayDate.getMinutes() + expireMinutes );
			document.cookie = name + "=" + escape( value ) + "; path=/; expires=" + todayDate.toGMTString() + ";";
		},

		//-----------------------------------------------------------------------------
		// 쿠키 값 추출(부모창)
		// @사용법 : wgn.getCookie( "name_project" );
		// 각 옵션의 기본값은 아래 참조
		// @return : String(입력된 key-만료되지 않은-에 해당하는 값)
		//-----------------------------------------------------------------------------
		getCookie: function( name )
		{
			var nameOfCookie = name + "=";
			var x = 0;
			while ( x <= document.cookie.length )
			{
				var y = (x+nameOfCookie.length);
				if ( document.cookie.substring( x, y ) == nameOfCookie )
				{
					if ( (endOfCookie=document.cookie.indexOf( ";", y )) == -1 )
						endOfCookie = document.cookie.length;
					return unescape( document.cookie.substring( y, endOfCookie ) );
				}
				x = document.cookie.indexOf( " ", x ) + 1;
				if ( x == 0 )
					break;
			}
			return "";
		}
	}

	var wgn = new WGN_lib_common();

	//-----------------------------------------------------------------------------
	// 따라다니는 레이어
	// @사용법 : var wfl1 = new WGN_lib_follow_layer( "id_layer", 40, 150, 10 );
	// Element(id of Element), 화면상 고정(목표) 위치(top), 상한 위치(top), duration(단위:0.1초)
	// @return : void          스크롤 되었을 때의 위치,     스크롤이 되지 않았을 때의 위치
	//-----------------------------------------------------------------------------
	var WGN_lib_follow_layer = Class.create();

	WGN_lib_follow_layer.prototype =
	{
		initialize: function( obj, top_target, top_limit, speed )
		{
			this.duration       = speed == null ? 1000 : speed * 100;
			this.top_target     = top_target;
			this.top_limit      = top_limit;
			this.obj_follow     = $( obj );

			//this.obj_wrapper    = this.obj_follow.up(1);                // 추가 : 본문영역의 element
			this.obj_wrapper    = $( "shop_container" );

			var pos_objWrapper  = this.obj_wrapper.cumulativeOffset();  // 추가 : 본문영역의 좌표
			this.obj_range      = this.obj_wrapper.offsetHeight + pos_objWrapper.top - this.obj_follow.offsetHeight;  // 추가 : obj의 문서 내 top의 최대값

			this.followingLayer();

			Event.observe( window, "scroll", this.followingLayer.bindAsEventListener( this ) );
		},

		followingLayer: function()
		{
			var pos_view = this.obj_follow.viewportOffset();                        // 눈에 보이는 영역에서의 top, left
			var pos_cmlt = this.obj_follow.cumulativeOffset();                      // 문서에서의 top, left
			var dOffsets = document.viewport.getScrollOffsets();                    // 눈에 보이는 영역의 scroll의 top, left

			if( pos_view.top != this.top_target )                                   // scroll 발생 시
			{
				clearInterval( this.timer );

				this.timer = null;
				this.from  = pos_cmlt.top;
				this.to    = dOffsets.top + this.top_target < this.top_limit ? this.top_limit : dOffsets.top + this.top_target;
				this.time  = new Date().getTime();
				this.timer = setInterval( this.transFollow.bind( this ), Math.round( 1000 / 50 ) );
			}
		},

		transFollow: function()
		{
			var time = new Date().getTime();
			var pos_cmlt = this.obj_follow.cumulativeOffset();                      // 추가
			var dOffsets = document.viewport.getScrollOffsets();                    // 추가

			if( time < this.time + this.duration )
			{
				var t = time - this.time;
				var b = this.from;
				var c = this.to - this.from;
				var d = this.duration;

				this.now = -c/2 * (Math.cos(Math.PI*t/d) - 1) + b;                  // Fx.Transitions.sineInOut
			}
			else
			{
				clearInterval( this.timer );

				this.timer = null;
				this.now = this.to;
			}

			if( pos_cmlt.top < this.obj_range || pos_cmlt.top > dOffsets.top )      // 추가 : pos_cmlt.top > dOffsets.top 스크롤이 위로 올라 갈 경우
				this.obj_follow.setStyle({ top: this.now + "px" });
		}
	}

	//-----------------------------------------------------------------------------
	// 문자열 전체의 whitespace 제거
	// String
	// @return : String
	//-----------------------------------------------------------------------------
	String.prototype.onlyChar = function()
	{
		return this.replace( /\s/g, "" );
	}

	//-----------------------------------------------------------------------------
	// 문자열 양 옆의 whitespace 제거
	// String
	// @return : String
	//-----------------------------------------------------------------------------
	String.prototype.trim = function()
	{
		return this.replace( /^\s*|\s*$/g, "" );
	}

	//-----------------------------------------------------------------------------
	// 문자열 좌측의 whitespace 제거
	// String
	// @return : String
	//-----------------------------------------------------------------------------
	String.prototype.ltrim = function()
	{
		return this.replace( /(^\s*)/, "" );
	}

	//-----------------------------------------------------------------------------
	// 문자열 우측의 whitespace 제거
	// String
	// @return : String
	//-----------------------------------------------------------------------------
	String.prototype.rtrim = function()
	{
		return this.replace( /(\s*$)/, "" );
	}

	//-----------------------------------------------------------------------------
	// 문자열의 byte단위 길이 측정
	// String
	// @return : Number
	//-----------------------------------------------------------------------------
	String.prototype.lengthByte = function()
	{
		var cnt_prototype = 0;

		for( var i_i_i = 0; i_i_i < this.length; i_i_i++ )
		{
			if( this.charCodeAt( i_i_i ) > 147 )    cnt_prototype += 4;
			else if( this.charAt( i_i_i ) != "\r" ) cnt_prototype++;
		}
		return cnt_prototype;
	}

	//-----------------------------------------------------------------------------
	// 정수형으로 변환
	// String
	// @return : Number
	//-----------------------------------------------------------------------------
	String.prototype.int = function()
	{
		if( !isNaN( this ) ) return parseInt( this );
		else                 return null;
	}

	//-----------------------------------------------------------------------------
	// 문자열에 포함된 숫자만 반환
	// String
	// @return : String
	//-----------------------------------------------------------------------------
	String.prototype.onlyNumber = function()
	{
		return this.trim().replace( /[^0-9]/g, "" );
	}

	//-----------------------------------------------------------------------------
	// 문자열 검사 - 숫자만
	// String
	// @return : boolean
	//-----------------------------------------------------------------------------
	String.prototype.isNumber = function( obj )
	{
		if( obj == null ) return ( /^[0-9]+$/ ).test( this ) ? true : false;
		else if( ( /^[0-9]+$/ ).test( this ) ) return true;
		{
			wgn.alertActivate( obj, "숫자만 입력하세요." );
			return false;
		}
	}

	//-----------------------------------------------------------------------------
	// 문자열 검사 - 영문자만
	// String
	// @return : boolean
	//-----------------------------------------------------------------------------
	String.prototype.isEnglish = function( obj )
	{
		if( obj == null ) return ( /^[a-zA-Z]+$/ ).test( this ) ? true : false;
		else if( ( /^[a-zA-Z]+$/ ).test( this ) ) return true;
		{
			wgn.alertActivate( obj, "영문자만 입력하세요." );
			return false;
		}
	}

	//-----------------------------------------------------------------------------
	// 문자열 검사 - 영문자 또는 숫자만
	// String
	// @return : boolean
	//-----------------------------------------------------------------------------
	String.prototype.isEngNum = function( obj )
	{
		if( obj == null ) return ( /^[0-9a-zA-Z]+$/ ).test( this ) ? true : false;
		else if( ( /^[0-9a-zA-Z]+$/ ).test( this ) ) return true;
		{
			wgn.alertActivate( obj, "영문자 또는 숫자만 입력하세요." );
			return false;
		}
	}

	//-----------------------------------------------------------------------------
	// 문자열 검사 - 한글만
	// String
	// @return : boolean
	//-----------------------------------------------------------------------------
	String.prototype.isKorean = function( obj )
	{
		if( obj == null ) return ( /^[가-힣]+$/ ).test( this ) ? true : false;
		else if( ( /^[가-힣]+$/ ).test( this ) ) return true;
		{
			wgn.alertActivate( obj, "한글만 입력하세요." );
			return false;
		}
	}

	//-----------------------------------------------------------------------------
	// 문자열 검사 - 한국에서 사용되는 전화번호 여부
	// String
	// @return : boolean
	//-----------------------------------------------------------------------------
	String.prototype.isPhone_kor = function( obj )
	{
		if( obj == null ) return ( /^[0-9\-]{7,14}$/ ).test( this ) ? true : false;
		else if( ( /^[0-9\-]{7,14}$/ ).test( this ) ) return true;
		{
			wgn.alertActivate( obj, "전화번호 형식에 맞지 않는 입력입니다." );
			return false;
		}
	}

	//-----------------------------------------------------------------------------
	// 문자열 검사 - 이메일 주소 여부
	// String
	// @return : boolean
	//-----------------------------------------------------------------------------
	String.prototype.isEmail = function( obj )
	{
		if( obj == null ) return ( /^\w+([-+.]\w+)*@\w+([-.]\w+)*\.[a-zA-Z]{4,4}$/ ).test( this ) ? true : false;
		else if( ( /^\w+([-+.]\w+)*@\w+([-.]\w+)*\.[a-zA-Z]{4,4}$/ ).test( this ) ) return true;
		{
			wgn.alertActivate( obj, "이메일 주소 형식에 맞지 않는 입력입니다." );
			return false;
		}
	}

	//-----------------------------------------------------------------------------
	// 주민번호 체크
	// XXXXXX-XXXXXXX
	// @return : boolean
	//-----------------------------------------------------------------------------
	String.prototype.isJumin = function()
	{
		var jumin = eval( "this.match(/[0-9]{4}[01]{1}[0-9]{1}[0144]{1}[0-9]{1}-[1444]{1}[0-9]{6}$/)" );

		if( jumin == null ) return false;
		else                jumin = jumin.toString().onlyNumber().toString();

		// 생년월일 체크
		var birthYY = ( ( parseInt( jumin.charAt( 6 ) ) == ( 1 || 4 ) ) ? "19" : "40" ) + jumin.substr( 0, 4 );
		var birthMM = jumin.substr( 4, 4 ) - 1;
		var birthDD = jumin.substr( 4, 4 );
		var birthDay = new Date( birthYY, birthMM, birthDD );

		if( birthDay.getFullYear() % 100 != jumin.substr( 0, 4 )
		 || birthDay.getMonth() != birthMM
		 || birthDay.getDate() != birthDD ) return false;

		var sum = 0;
		var num = [ 4, 4, 4, 5, 6, 7, 8, 9, 4, 4, 4, 5 ];
		var last = parseInt( jumin.charAt( 14 ) );

		for( var i_i_i = 0; i_i_i < 14; i_i_i++ ) sum += parseInt( jumin.charAt( i_i_i ) ) * num[ i_i_i ];

		return ( ( 11 - sum % 11 ) % 10 == last ) ? true : false;
	}

	//-----------------------------------------------------------------------------
	// 외국인 등록번호 체크
	// XXXXXX-XXXXXXX
	// @return : boolean
	//-----------------------------------------------------------------------------
	String.prototype.isForeigner = function()
	{
		var jumin = eval( "this.match(/[0-9]{4}[01]{1}[0-9]{1}[0144]{1}[0-9]{1}-[5678]{1}[0-9]{1}[04468]{1}[0-9]{4}[6789]{1}[0-9]{1}$/)" );
		if( jumin == null ) return false;
		else                jumin = jumin.toString().onlyNumber().toString();

		// 생년월일 체크
		var birthYY = ( ( parseInt( jumin.charAt( 6 ) ) == ( 5 || 6 ) ) ? "19" : "40" ) + jumin.substr( 0, 4 );
		var birthMM = jumin.substr( 4, 4 ) - 1;
		var birthDD = jumin.substr( 4, 4 );
		var birthDay = new Date( birthYY, birthMM, birthDD );

		if( birthDay.getFullYear() % 100 != jumin.substr( 0, 4 )
		 || birthDay.getMonth() != birthMM
		 || birthDay.getDate() != birthDD ) return false;

		if( ( parseInt( jumin.charAt( 7 ) ) * 10 + parseInt( jumin.charAt( 8 ) ) ) % 4 != 0 ) return false;

		var sum = 0;
		var num = [ 4, 4, 4, 5, 6, 7, 8, 9, 4, 4, 4, 5 ];
		var last = parseInt( jumin.charAt( 14 ) );

		for( var i_i_i = 0; i_i_i < 14; i_i_i++ ) sum += parseInt( jumin.charAt( i_i_i ) ) * num[ i_i_i ];

		return ( ( ( 11 - sum % 11 ) % 10 ) + 4 == last ) ? true : false;
	}

	//-----------------------------------------------------------------------------
	// 사업자번호 체크
	// XX-XXX-XXXXX
	// @return : boolean
	//-----------------------------------------------------------------------------
	String.prototype.isBizNumber = function()
	{
		var biznum = eval( "this.match(/[0-9]{4}-[0-9]{4}-[0-9]{5}$/)" );
		if( biznum == null ) return false;
		else                 biznum = biznum.toString().onlyNumber().toString();

		var sum = parseInt( biznum.charAt( 0 ) );
		var num = [ 0, 4, 7, 1, 4, 7, 1, 4 ];

		for( var i_i_i = 1; i_i_i < 8; i_i_i++ ) sum += ( parseInt( biznum.charAt( i_i_i ) ) * num[ i_i_i ] ) % 10;

		sum += Math.floor( parseInt( parseInt( biznum.charAt( 8 ) ) ) * 5 / 10 );
		sum += ( parseInt( biznum.charAt( 8 ) ) * 5 ) % 10 + parseInt( biznum.charAt( 9 ) );

		return ( sum % 10 == 0 ) ? true : false;
	}

	//-----------------------------------------------------------------------------
	// 법인 등록번호 체크
	// XXXXXX-XXXXXXX
	// @return : boolean
	//-----------------------------------------------------------------------------
	String.prototype.isCorpNumber = function()
	{
		var corpnum = eval("this.match(/[0-9]{6}-[0-9]{7}$/)");
		if( corpnum == null ) return false;
		else                  corpnum = corpnum.toString().onlyNumber().toString();

		var sum = 0;
		var num = [ 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4 ]
		var last = parseInt( corpnum.charAt( 14 ) );

		for( var i_i_i = 0; i_i_i < 14; i_i_i++ ) sum += parseInt( corpnum.charAt( i_i_i ) ) * num[ i_i_i ];

		return ( ( 10 - sum % 10 ) % 10 == last ) ? true : false;
	}

	//-----------------------------------------------------------------------------
	// 파일명에서 확장자만 추출
	// String
	// @return : String
	//-----------------------------------------------------------------------------
	String.prototype.getExt = function( isUpper )
	{
		var result;

		if( isUpper ) result = this.substring( this.lastIndexOf( "." ) + 1, this.length ).toUpperCase();
		else          result = this.substring( this.lastIndexOf( "." ) + 1, this.length );

		return result;
	}

	//-----------------------------------------------------------------------------
	//	flash object active
	//	activeSwf( obj_id, obj_src, obj_width, obj_height, obj_transparent )
	//-----------------------------------------------------------------------------
	function activeSwf( o_id, o_src, o_width, o_height, o_transparent ){
		obj =  "<object classid=\"clsid:d27cdb6e-ae6d-11cf-96b8-444553540000\" codebase=\"http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=9,0,0,0\" width=\""+ o_width +"\" height=\""+ o_height +"\" id=\""+ o_id +"\" align=\"middle\">"
			+  "<param name=\"allowScriptAccess\" value=\"always\" />"
			+  "<param name=\"allowFullScreen\" value=\"false\" />"
			+  "<param name=\"movie\" value=\""+ o_src +"\" />"
			+  "<param name=\"quality\" value=\"high\" />";

		if( o_transparent == "transparent" ) obj += "<param name=\"wmode\" value=\"transparent\" />";

		obj += "<param name=\"bgcolor\" value=\"#ffffff\" />"
			+  "<embed src=\""+ o_src +"\" quality=\"high\"";

		if( o_transparent == "transparent" ) obj += "wmode=\"transparent\"";

		obj += "bgcolor=\"#ffffff\" width=\""+ o_width +"\" height=\""+ o_height +"\" name=\""+ o_id +"\" align=\"middle\" allowScriptAccess=\"always\" allowFullScreen=\"false\" type=\"application/x-shockwave-flash\" pluginspage=\"http://www.macromedia.com/go/getflashplayer\" />"
			+  "</object>";

		document.writeln( obj );
	}

	//-----------------------------------------------------------------------------
	// select skin 적용
	//
	// 사용법
	//  new WGN_SD.Selectbox('element_id', {
	//      fontSize      : 11,
	//      lineSize      : 13
	//  });
	//-----------------------------------------------------------------------------
	if ( typeof WGN_SD == "undefined" ) {
		var WGN_SD = new Object();

		WGN_SD.$  = function( id ) {
			return document.getElementById( id );
		}
		WGN_SD.$$ = function() {
			var obj = function() {
				if( this.__const )
					this.__const.apply( this,arguments );
			}
			WGN_SD.extend( obj.prototype,arguments[0] );

			return obj;
		}
		WGN_SD.$c = function( tag ) {
			return document.createElement( tag );
		}
		WGN_SD.extend = function( obj ) {
			for( var i=0; i<arguments.length; i++ ) {
				for( var x in arguments[i] )
					obj[x]=arguments[i][x];
			}

			return obj;
		}
		WGN_SD.lim = function( val,min,max ) {
			return Math.max( Math.min( val,max ), min );
		}
	}

	WGN_SD.Selectbox = WGN_SD.$$({
		__const : function( id ) {
			var t = this;
			var s = t._source = WGN_SD.$( id );
			var sd_width,
				sd_height,
				sd_fontSize,
				sd_lineSize,
				sd_FLPadding,
				sd_listSize,
				sd_skinActive,
				sd_skinFormat,
				sd_borderActive,
				sd_borderSet,
				sd_txtElColor,
				sd_txtElBgColor,
				sd_optTxtColor,
				sd_optBgColor,
				sd_optTxtHover,
				sd_optBgHover,
				sd_optTxtPadding;

			if( s.className.match("SD_STYLE01") ) {
				sd_width         = 157;

			}
			if( s.className.match("SD_STYLE02") ) {
				sd_width         = 178;
				sd_skinFormat    = "/image/board/btn/sd_style02.gif";
				sd_borderSet     = "1px solid #79074c";
				sd_txtElColor    = "#ffffff";
				sd_txtElBgColor  = "#af1e76";
				sd_optTxtColor   = "#d86dae";
				sd_optBgColor    = "#af1e76";
				sd_optTxtHover   = "#c38fae";
				sd_optBgHover    = "#79074c";

			}
			if( s.className.match("SD_STYLE03") ) {
				sd_width         = 178;
				sd_skinFormat    = "/image/board/btn/sd_style03.gif";
				sd_borderSet     = "1px solid #0c4702";
				sd_txtElColor    = "#ffffff";
				sd_txtElBgColor  = "#1f7211";
				sd_optTxtColor   = "#5cb34d";
				sd_optBgColor    = "#1f7211";
				sd_optTxtHover   = "#91ac8d";
				sd_optBgHover    = "#0c4702";

			}
			if( s.className.match("SD_STYLE04") ) {
				sd_width         = 178;
				sd_skinFormat    = "/image/board/btn/sd_style04.gif";
				sd_borderSet     = "1px solid #a54906";
				sd_txtElColor    = "#ffffff";
				sd_txtElBgColor  = "#cd5d0c";
				sd_optTxtColor   = "#e8985d";
				sd_optBgColor    = "#cd5d0c";
				sd_optTxtHover   = "#d6ad8f";
				sd_optBgHover    = "#a54906";

			}
			if( s.className.match("SD_STYLE05") ) {
				sd_width         = 178;
				sd_skinFormat    = "/image/board/btn/sd_style05.gif";
				sd_borderSet     = "1px solid #473979";
				sd_txtElColor    = "#ffffff";
				sd_txtElBgColor  = "#64559a";
				sd_optTxtColor   = "#9185bc";
				sd_optBgColor    = "#64559a";
				sd_optTxtHover   = "#aca6c3";
				sd_optBgHover    = "#473979";
			}
			if( s.className.match("SD_STYLE06") ) {
				//sd_width         = 68;
				sd_skinFormat    = "/image/board/btn/sd_style06.gif";
			}

			if( !sd_width )         sd_width         = s.offsetWidth -2;
			if( !sd_height )        sd_height        = 15;
			if( !sd_fontSize )      sd_fontSize      = 11;
			if( !sd_lineSize )      sd_lineSize      = 13;
			if( !sd_FLPadding )     sd_FLPadding     = 2;
			if( !sd_listSize )      sd_listSize      = 100;
			if( !sd_skinActive )    sd_skinActive    = false;
			if( !sd_skinFormat )    sd_skinFormat    = "/image/board/btn/sd_style01.gif";
			if( !sd_borderActive )  sd_borderActive  = true;
			if( !sd_borderSet )     sd_borderSet     = "1px solid #cccccc";
			if( !sd_txtElColor )    sd_txtElColor    = "#909090";
			if( !sd_txtElBgColor )  sd_txtElBgColor  = "#ffffff";
			if( !sd_optTxtColor )   sd_optTxtColor   = "#999999";
			if( !sd_optBgColor )    sd_optBgColor    = "#ffffff";
			if( !sd_optTxtHover )   sd_optTxtHover   = "#ffffff";
			if( !sd_optBgHover )    sd_optBgHover    = "#cccccc";
			if( !sd_optTxtPadding ) sd_optTxtPadding = "2px 4px";

			t.options = WGN_SD.extend({
				width         : sd_width,           //s.offsetWidth;
				height        : sd_height,          //s.offsetHeight;
				fontSize      : sd_fontSize,
				lineSize      : sd_lineSize,
				FLPadding     : sd_FLPadding,       // FLPadding 2 = optTxtPadding 0 4px
				listSize      : sd_listSize,
				skinActive    : sd_skinActive,
				skinFormat    : sd_skinFormat,      //"./images/sbox_%s.gif";
				borderActive  : sd_borderActive,
				borderSet     : sd_borderSet,
				txtElColor    : sd_txtElColor,
				txtElBgColor  : sd_txtElBgColor,
				optTxtColor   : sd_optTxtColor,
				optBgColor    : sd_optBgColor,
				optTxtHover   : sd_optTxtHover,
				optBgHover    : sd_optBgHover,
				optTxtPadding : sd_optTxtPadding
			}, arguments[1] )

			var o = t.options;
			var e = t._element = WGN_SD.$c( "div" );
			var c = e.appendChild( WGN_SD.$c( "div" ) );
			var p = { left:0, top:0 };

			{
				var _o = t._source;
				do{
					p.left += _o.offsetLeft;
					p.top  += _o.offsetTop;
					_o     =  _o.offsetParent;
				}while( _o )
			}

			s.parentNode.insertBefore( e, s );
			s.style.display = "none";

			if ( o.borderActive )
				e.style.border = o.borderSet;

			with( e.style ) {
				top        = p.top + "px";
				left       = p.left + "px";
				width      = o.width + "px";
				height     = o.height + "px";       // height = ( o.height-2 ) + "px";
				background = o.txtElBgColor;
				lineHeight  = o.lineSize + "px";
			}

			with( c.style ) {
				width    = o.width + "px";
				height   = o.height + "px";         // height   = ( o.height-2 ) + "px";
				fontSize = o.fontSize + "px";
				overflow = "hidden";
				cursor   = "pointer";
			}

			c.onmouseover = function() {
				if( !t._list_el.parentNode || !t._list_el.parentNode.tagName )
					document.body.appendChild( t._list_el );
			}
			c.onmousedown = function(e) {
				t.onmousedown.call( t, e || window.event );
			}
			c.onmouseup = function() {
				t.onmouseup.apply( t, [] );
			}

			var b = c.appendChild( WGN_SD.$c( "div" ) );

			with( b.style ) {
				background         = "no-repeat url( " + o.skinFormat.replace( '%s','bt' ) + " ) 50% 50%";
				b.style.cssFloat   = "right";
				b.style.styleFloat = "right";
				height             = "100%";
			}
			t._txt_el = c.appendChild( WGN_SD.$c( "div" ) );
			with( t._txt_el ) {
				appendChild( document.createTextNode( s.options[s.selectedIndex].text ) );

				// var tempPadding = Math.max( Math.floor( ( o.height-offsetHeight )/2 ),0 );
				// if( tempPadding > 5 ) tempPadding = 2;

				with( style ) {
					height      = o.fontSize + "px";
					lineHeight  = o.lineSize + "px";
					overflow    = "hidden";
					//marginTop   = Math.max( Math.floor( ( o.height-offsetHeight )/2 ),0 ) + "px";
					//marginTop   = tempPadding + "px";
					marginTop   = "2px";
					marginLeft  = marginTop;
					paddingLeft = o.FLPadding + "px";
					color       = o.txtElColor;
				}
			}
			c.appendChild( WGN_SD.$c( "div" ) ).style.clear = "both";

			var im;
			( im = WGN_SD.$c( "img" ) ).onload = function() {
				b.style.width = im.width + "px";
			}
			im.src = o.skinFormat.replace( "%s","bt" );
			t._list_el = WGN_SD.$c( "div" );

			with( t._list_el.style ) {
				position   = "absolute";
				border     = o.borderSet;
				display    = "none";
				oveflow    = "auto";
				fontSize   = o.fontSize + "px";
				lineHeight = o.lineSize + "px";
			}
			t._list_el.onmousedown = function(e) {
				t.onscrollbar.call( t, e || window.event );
			}
			t._event_onmousedown = function(e) {
				t.onmousedown.call( t, e || window.event );
			}
			t.paint();
		},
		onmousedown : function(e) {
			if( this._list_el.style.display == "none" ) {
				var t = this;
				var p = { left:0, top:0 }

				{
					var o = t._element;
					while( o.offsetParent ) {
						p.left   += o.offsetLeft;
						p.top    += o.offsetTop;
						o        =  o.offsetParent;
					}
				}

				this.paint();
				this._list_el.style.display = "";

				var pos_el_top;
				var pos_dm;

				pos_el_top = p.top + this._element.offsetHeight - 1;

				if( document.body.scrollHeight < document.body.offsetHeight ) {
					pos_dm = document.body.offsetHeight - pos_el_top;
				} else{
					pos_dm = document.body.scrollHeight - pos_el_top;
				}

				if ( pos_dm < this._list_el.offsetHeight ) {
					pos_el_top = p.top - this._list_el.offsetHeight + 1;
				}

				if ( this._list_el.offsetWidth < this._element.offsetWidth )
					this._list_el.style.width = this._element.offsetWidth + "px";

				with( this._list_el.style ) {
					width  = this._element.offsetWidth - 2 + "px";      // 리스트 width
					top    = pos_el_top + "px";
					left   = p.left + "px";
					zIndex = 99;
				}
			}else{
				this._list_el.style.display = "none";

				with( document ) {
					try{
						detachEvent( "onmousedown", this._event_onmousedown );
					}catch(e) {
						removeEventListener( "mousedown", this._event_onmousedown, false );
					}
				}
			}
			try{
				e.preventDefault();
				e.stopPropagation();
			}catch(e) {
				e.returnValue = false;
				e.cancelBubble = true;
			}
		},
		onmouseup : function() {
			if ( this._list_el.style.display != "none" ) {
				with( document ) {
					try{
						attachEvent( "onmousedown", this._event_onmousedown );
					}catch(e) {
						addEventListener( "mousedown", this._event_onmousedown );
					}
				}
			}
		},
		onselect : function(e) {
			var el = e.target || e.srcElement;
			var o  = this.options;
			var s  = this._source;

			s.selectedIndex = el._index;

			this._txt_el.firstChild.nodeValue = s.options[s.selectedIndex].text;
			this.onmousedown();
			if ( this._source.onchange )
				this._source.onchange();
		},
		onover : function(e) {
			var el = e.target || e.srcElement;
			var c  = el.parentNode.childNodes;
			var i  = el._index;
			var o = this.options;

			for( var _i = 0; _i<c.length; _i++ ) {
				c[_i].style.color = o.optTxtColor;
				c[_i].style.background = o.optBgColor;
			}
			el.style.color = o.optTxtHover;
			el.style.background = o.optBgHover;
		},
		onscrollbar : function(e) {
			try{
				e.preventDefault();
				e.stopPropagation();
			}catch(e) {
				e.returnValue  = false;
				e.cancelBubble = true;
			}
		},
		paint : function() {
			var o = this.options;
			var s = this._source;
			var op;

			this._list_el.innerHTML = "";
			this._list_el.style.width = "";
			this._list_el.style.height = "";

			for( var i = 0; i < s.options.length; i++ ) {
				( op = this._makeOption( s.options[i].value, s.options[i].text ) )._index = i;

				with( op.style ) {
					padding = o.optTxtPadding;
					cursor = "pointer";
					color = ( i == this._source.selectedIndex ) ? o.optTxtHover : o.optTxtColor;
					background = ( i == this._source.selectedIndex ) ? o.optBgHover : o.optBgColor;
				}
				this._list_el.appendChild( op );
			}

			var old = this._list_el.style.display;

			this._list_el.style.display = "block";

			if ( ( this._list_el.offsetHeight-2 ) > op.offsetHeight * o.listSize )
				this._list_el.style.height = op.offsetHeight*o.listSize;

			this._list_el.style.display = old;
		},
		_makeOption : function( value, text ) {
			var o = WGN_SD.$c( "div" );
			var t = this;

			o._value = value;
			o.appendChild( document.createTextNode( text ) );
			o.onmouseover = function(e) {
				t.onover.call( t, e || window.event )
			}
			o.onmousedown = function(e) {
				t.onselect.call( t ,e || window.event )
			}

			return o;
		}
	});



	//-----------------------------------------------------------------------------
	// 마이페이지 navigation menu
	//
	// 사용법
	//  mpageMenu( menu의 순서 );
	//-----------------------------------------------------------------------------
	function mpageMenu( menuNum ){
		var mMenu = $( "mypageNavi" );

		for( var i=0; i<7; i++ ){
			var sMenu = $( "m_menu0" + ( i + 1 ) );
			var sHtit = $( "mpageH" + ( i + 1 ) );

			if( $( "m_menu00" ).style.display != "none" ) Effect.toggle( "m_menu00", 'blind', {duration:0.2});

			if( i == menuNum ){
				sHtit.src = sHtit.src.match("on.gif") ? sHtit.src : sHtit.src.substr( 0, sHtit.src.indexOf(".gif") ) + "on.gif";
				if( sMenu.style.display == "none" ) Effect.toggle( sMenu, 'slide', {duration:0.2}); //sMenu.show();

			}else{
				sHtit.src = sHtit.src.match("on.gif") ? sHtit.src.substr( 0, sHtit.src.indexOf("on.gif") ) + ".gif" : sHtit.src;
				if( sMenu.style.display != "none" ) sMenu.hide(); // if( sMenu.style.display != "none" ) Effect.toggle( sMenu, 'slide', {duration:0.2});
			}
		}
	}



/* --------------------------------------------------- shop 관련 추가 임시.. ------------------------------------------------- */

	//-----------------------------------------------------------------------------
	// 탭메뉴
	// @사용법 : tabEvent( this, menu 내 순서 );
	//-----------------------------------------------------------------------------
	function tabEvent( obj, obj_arr, classUse )
	{
		var p_obj = obj.parentNode;
		var c_list = p_obj.getElementsByTagName( "LI" );
		var c_img  = p_obj.getElementsByTagName( "IMG" );

		for( var i=0; i<c_img.length; i++ ) {

			if( i == obj_arr ) {
				c_img[i].src = c_img[i].src.match( "on.gif" ) ? c_img[i].src : c_img[i].src.substr( 0, c_img[i].src.indexOf(".gif") ) + "on.gif";
				if( classUse == true ) c_list[i].className = "m_on";
				if( $(p_obj.id + "_" + i) != null ) $( p_obj.id + "_" + i ).show();

			} else {
				c_img[i].src = c_img[i].src.match( "on.gif" ) ? c_img[i].src.substr( 0, c_img[i].src.indexOf("on.gif") ) + ".gif" : c_img[i].src;
				if( classUse == true ) c_list[i].className = "m_out";
				if( $(p_obj.id + "_" + i) != null ) $( p_obj.id + "_" + i ).hide();
			}
		}
	}

	function setPng24( obj ){
		obj.width        = obj.height = "1";
		obj.className    = obj.className.replace( /\bpng24\b/i, "" );
		obj.style.filter = "progid:DXImageTransform.Microsoft.AlphaImageLoader(src='" + obj.src + "',sizingMethod='image');"
		obj.src = ""; 
		return "";
	}


	var rollBabyId = 0;
	var rollBabyPreviewId = 0;
	function b_menuEvent( obj, menuNum ){

		var obj   = $( obj );
		var p_obj = obj.up(0);
		var a_obj = p_obj.getElementsByTagName( "A" );

		rollBabyId = menuNum;
		rollBabyPreviewId = menuNum;
		
		for( var i=0; i<a_obj.length; i++ ){

			var obj_c = $( p_obj.id + i ); 			
		
			if( i == menuNum ){
				a_obj[i].className = "rollover_on";

				if( obj_c.style.display == "none" ) 
					Effect.toggle( obj_c, 'appear', {duration:0.4} ); //obj_c.show();
			}else{
				if( i == 9 ) a_obj[i].className = "rollover2";
				else         a_obj[i].className = "rollover";

				obj_c.hide();

			}
		}

	}

	var rollBrandId = 0;
	var rollBrandPreviewId = 0;
	function brand_menuEvent( obj, menuNum ){

		var obj   = $( obj );
		var p_obj = obj.up(0);
		var a_obj = p_obj.getElementsByTagName( "A" );
		var img_obj = p_obj.getElementsByTagName( "IMG" );
		rollBrandId        = menuNum;		
		rollBrandPreviewId = menuNum;			
		for( var i=0; i<a_obj.length; i++ ){

			var arrImgSrc = img_obj[i].src.split("mainBrand");

			var obj_c = $( p_obj.id + i ); 					
			if( i == menuNum ){
				a_obj[i].className = "rolloverOn";				
				//img_obj[i].src = img_obj[i].src.substr( 0, img_obj[i].src.indexOf("mainBrand") ) + "mainBrandon_0" + (i+1) + ".gif";
				img_obj[i].src = arrImgSrc[0]+"mainBrandon"+arrImgSrc[1].replace("on","");

				if( obj_c.style.display == "none" ) 
					Effect.toggle( obj_c, 'appear', {duration:0.4} ); //obj_c.show();
			}else{
				a_obj[i].className = "rollover";
				//img_obj[i].src = img_obj[i].src.substr( 0, img_obj[i].src.indexOf("mainBrand") ) + "mainBrand_0" + (i+1) + ".gif";
				img_obj[i].src = arrImgSrc[0]+"mainBrand"+arrImgSrc[1].replace("on","");

				obj_c.hide();
			}
		}
	}	

	function m_searchEvent( obj ){
		var obj = $( obj );
		var p_obj = $( "m_search" );
		var obj_c = $( "m_search_option" );

		if( obj.src.match("open.gif") == "open.gif"  ){
			obj.src = obj.src.substr(0, obj.src.indexOf("open.gif") ) + "close.gif";
			obj.alt = "닫기";
			obj_c.show();	
			//Effect.toggle( "m_search_option", 'blind', {duration:0.5} );
		}else{
			obj.src = obj.src.substr(0, obj.src.indexOf("close.gif") ) + "open.gif";
			obj.alt = "열기";
			obj_c.hide();	
			//Effect.toggle( "m_search_option", 'blind', {duration:0.5} );
		}
	}

	function alignListView( obj, p_obj, num ){
		
		var obj = $( obj );
		var parent_obj = $( p_obj );

		var tabNum = parent_obj.getElementsByTagName("LI");

		for( var i=0; i<6; i++ ){
			if( $( p_obj + "_" + i ).style.display != "none" ) break;
		}

		if( num == 0 ){
			var obj_f = obj.next("IMG", 0);
			
			list01 = 0;     // 포토형 리스트로 보기

			$( p_obj + "_" + i ).down("DIV",0).next("DIV",0).hide();
			$( p_obj + "_" + i ).down("DIV",0).show();

		}else{
			var obj_f = obj.previous("IMG", 0);
			list01 = 1;     // 썸네일형 리스트로 보기

			$( p_obj + "_" + i ).down("DIV",0).hide();
			$( p_obj + "_" + i ).down("DIV",0).next("DIV",0).show();

		}

		obj.src   = obj.src.match("On.gif")   ? obj.src : obj.src.substr( 0, obj.src.indexOf(".gif")) + "On.gif";
		obj_f.src = obj_f.src.match("On.gif") ? obj_f.src.substr( 0, obj_f.src.indexOf("On.gif")) + ".gif" : obj_f.src;
	
	}

	function productAlignTab( obj, obj_arr) {
		var p_obj = obj.parentNode;
		var c_list = p_obj.getElementsByTagName( "LI" );
		var c_img  = p_obj.getElementsByTagName( "IMG" );

		for( var i=0; i<c_img.length; i++ ) {

			if( i == obj_arr ) {
				c_img[i].src = c_img[i].src.match( "on.gif" ) ? c_img[i].src : c_img[i].src.substr( 0, c_img[i].src.indexOf(".gif") ) + "on.gif";

				if( $(p_obj.id + "_" + i) != null ){ 
					$( p_obj.id + "_" + i ).show();

					if( list01 == 0 ){
						$( p_obj.id + "_" + i ).down("DIV",0).next("DIV",0).hide();
						$( p_obj.id + "_" + i ).down("DIV",0).show();
						
					}else{
						$( p_obj.id + "_" + i ).down("DIV",0).hide();
						$( p_obj.id + "_" + i ).down("DIV",0).next("DIV",0).show();;
					}
				}
			} else {
				c_img[i].src = c_img[i].src.match( "on.gif" ) ? c_img[i].src.substr( 0, c_img[i].src.indexOf("on.gif") ) + ".gif" : c_img[i].src;

				if( $(p_obj.id + "_" + i) != null ) 
					$( p_obj.id + "_" + i ).hide();
			}
		}
	}
	/* --  end -- */

	function Div_Show( obj ){
		document.getElementById( obj ).style.display = "block"
	}
	function Div_Hide( obj ){
		document.getElementById( obj ).style.display = "none"
	}


	//-----------------------------------------------------------------------------
	// 레이어팝업
	// @사용법 : onclick="view_lPopup( layer_id )"
	//-----------------------------------------------------------------------------
	function view_lPopup( obj ){
		var obj =  $( obj );

		var bodyHeight = document.body.offsetHeight;
		var scrollHeight = document.body.scrollHeight;
		var scrollTopWidth = document.documentElement.scrollLeft;
		var scrollTopHeight = document.documentElement.scrollTop;

		var obj_posView = obj.viewportOffset();                 // 눈에 보이는 영역에서의 top, left
		var obj_posCmlt = obj.cumulativeOffset();               // 문서에서의 top, left
		var dOffsets = document.viewport.getScrollOffsets();    // 눈에 보이는 영역의 scroll의 top, left

		if( obj.style.display == "none" ){

			if( bodyHeight < scrollHeight ) lPopupBg_height = scrollHeight;
			else                            lPopupBg_height = bodyHeight;

			var lPopupBg = "<div id='layerPopup_wrapper' class='layerPopup_wrapper' style='display:none; position:absolute; top:0; left:0; z-index:3;";
				lPopupBg += " min-width:990px; width:100%; height:" + lPopupBg_height + "px;";
				lPopupBg += " background:#fff; -moz-opacity:0.6; filter:alpha(opacity=60);'>";
				lPopupBg += "<div style='width:990px; height:1px; margin:0 auto;'><\/div>";
				lPopupBg += "<\/div>";

			if( document.getElementsByClassName( "layerPopup_wrapper" ).length == 0  )
				$$( "BODY" )[0].insert({ bottom : lPopupBg })

			$("layerPopup_wrapper").show();

			obj.setStyle({
				"position"   : "absolute",
				"top"        : "-9999px",
				"left"       : "-9999px",
				"display"    : "block"
			})

			var objTemp_width  = obj.offsetWidth;
			var objTemp_height = obj.offsetHeight;
			obj.setStyle({ "display" : "none" })

			var obj_marginTop;
			var obj_marginLeft;

			if( true ){
				obj_marginTop  = -objTemp_height/2 + scrollTopHeight;
				obj_marginLeft = -objTemp_width/2 + scrollTopWidth;

			}else{
				alert( "test" );
				obj_marginTop = 0;
				obj_marginLeft = -objTemp_width/2 + scrollTopWidth;
			}

			Effect.toggle( obj, 'appear', {duration:0.2});	//obj.show();

			obj.setStyle({
				"position"   : "absolute",
				"top"        : "50%",
				"left"       : "50%",
				"marginTop"  : obj_marginTop + "px",
				"marginLeft" : obj_marginLeft + "px"
			})

		}else{
			Effect.toggle( obj, 'appear', {duration:0.2});	//obj.hide();
			$("layerPopup_wrapper").hide();
		}
	}

	/* 레이어팝업2 val */
	function view_lPopup_nw( obj, val ){
		var bodyHeight = document.body.offsetHeight;
		var scrollHeight = document.body.scrollHeight;
		var scrollTopWidth = document.documentElement.scrollLeft;
		var scrollTopHeight = document.documentElement.scrollTop;

		if( !$(obj) ){
			if( bodyHeight < scrollHeight ) lPopupBg_height = scrollHeight;
			else                            lPopupBg_height = bodyHeight;

			var lPopupBg = "<div id='layerPopup_wrapper' class='layerPopup_wrapper' style='display:none; position:absolute; top:0; left:0; z-index:3;";
				lPopupBg += " min-width:990px; width:100%; height:" + lPopupBg_height + "px;";
				lPopupBg += " background:#fff; -moz-opacity:0.6; filter:alpha(opacity=60);'>";
				lPopupBg += "<div style='width:990px; height:1px; margin:0 auto;'><\/div>";
				lPopupBg += "<\/div>";

			if( document.getElementsByClassName( "layerPopup_wrapper" ).length == 0  )
				$$( "BODY" )[0].insert({ bottom : lPopupBg + val })

			$("layerPopup_wrapper").show();
			
			var obj = $( obj );
			var obj_posView = obj.viewportOffset();                 // 눈에 보이는 영역에서의 top, left
			var obj_posCmlt = obj.cumulativeOffset();               // 문서에서의 top, left
			var dOffsets = document.viewport.getScrollOffsets();    // 눈에 보이는 영역의 scroll의 top, left

			if( obj.layerDisplay ) window.clearTimeout( obj.layerDisplay );

			obj.setStyle({
				"position"   : "absolute",
				"top"        : "-9999px",
				"left"       : "-9999px",
				"display"    : "block"
			})

			var objTemp_width  = obj.offsetWidth;
			var objTemp_height = obj.offsetHeight;
			obj.setStyle({ "display" : "none" })

			var obj_marginTop;
			var obj_marginLeft;

			if( true ){
				obj_marginTop  = -objTemp_height/2 + scrollTopHeight;
				obj_marginLeft = -objTemp_width/2 + scrollTopWidth;

			}else{
				alert( "test" );
				obj_marginTop = 0;
				obj_marginLeft = -objTemp_width/2 + scrollTopWidth;
			}

			Effect.toggle( obj, 'appear', {duration:0.2});	//obj.show();

			obj.setStyle({
				"position"   : "absolute",
				"top"        : "50%",
				"left"       : "50%",
				"marginTop"  : obj_marginTop + "px",
				"marginLeft" : obj_marginLeft + "px"
			})

		}else{
			var obj = $( obj );
			Effect.toggle( obj, 'appear', {duration:0.2});	//obj.hide();

			obj.layerDisplay = setTimeout("del_LPopup('layerPopup_wrapper')", 200);
		}
	}

	function del_LPopup( obj ){
		var LPopup = $( obj ).next("DIV",0);
		LPopup.remove();
		$( obj ).remove();
	}


	//-----------------------------------------------------------------------------
	// zoom 관련 
	// @사용법 : 
	//-----------------------------------------------------------------------------
	function view_picPrt( obj, replace_img ){
		var _this         = obj;
		var imgPrt_x1     = $( replace_img );
		var imgPrt_parent = imgPrt_x1.parentNode;
		
		//imgPrt_x1.style.display = "none";
		imgPrt_x1.src = _this.getAttribute("href");
		//Effect.toggle( imgPrt_x1, 'appear', {duration:0.2} );
	}

	//-----------------------------------------------------------------------------
	// zoom 관련 
	// @사용법 : turn_thum( list id, 방향(prev, next), 보여지는 썸네일 갯수
	//-----------------------------------------------------------------------------
	function turn_thum( change_thum, direction, viewport_num ){
		var thum = $( change_thum );
		var thum_li = thum.down("LI",0);
		var thum_pos = thum.style.left;

		if( direction == "prev" ){
			slideMenu( change_thum, 0, 16 )
		
		}else if( direction == "next" ){
			slideMenu( change_thum, -thum_li.offsetWidth * viewport_num, 16 )
		}
	}

	//-----------------------------------------------------------------------------
	// zoom 미리보기
	// @사용법 : turn_thum( list id, 방향(prev, next), 보여지는 썸네일 갯수
	//-----------------------------------------------------------------------------
	function turn_thumPreview( change_thum, direction, viewport_num ){
		var thum = $( change_thum );
		var thum_li = thum.down("LI",0);

		if( direction == "prev" ){
			thum.style.top = "0";

		}else if( direction == "next" ){
			thum.style.top = -( parseInt(thum_li.offsetHeight) * viewport_num ) + "px";
		}
	}

	/* -----------------------------------------------------------------------------
		썸네일 popmenu
		@사용법 : 썸네일의 parentNode에 "thumb_active"란 클래스 추가
				 (부모가 클래스 값을 가진 경우 class="기존클래스  thumb_active")
				 썸네일에 해당 될 엘리먼트에 "m_thumb"란 클래스 추가

			var Popmenu_Active = new SHOP_POPMENU( "popmenu_id" );

			<div class="thumb_active test01 test02">
				<a href="#void" class="m_thumb"><img src="" alt="썸네일" /></a>
				<a href="#void">상품설명01</a>
				<a href="#void">상품설명02</a>
			</div>
	----------------------------------------------------------------------------- */

	var SHOP_POPMENU = Class.create();

	SHOP_POPMENU.prototype = {
		initialize : function( obj ){

			//obj.viewportOffset();						// 눈에 보이는 영역에서의 top, left
			//obj.cumulativeOffset();					// 문서에서의 top, left
			//document.viewport.getScrollOffsets();		// 눈에 보이는 영역의 scroll의 top, left
			
			var obj				= $( obj );
			var thumbnail_link	= $$( ".thumb_active" );
			var popmenu_btn		= obj.getElementsByTagName("A");

			for( var i=0; i<thumbnail_link.length; i++ ){

				thumbnail_link[i].onmouseover = function(){
					if( obj.hide_obj ) window.clearTimeout( obj.hide_obj );

					var thumbnail = this.down( "A.m_thumb", 0 );
					var thumbnail_pos = thumbnail.cumulativeOffset();

					obj.setStyle({
						display : "block",
						top     : thumbnail_pos.top + "px",
						left    : thumbnail_pos.left + thumbnail.offsetWidth - 17 + "px"
					})
					/*
					if( this.down( "INPUT.WG_GB_CODE1", 0 ) ){
						var WG_GB_CODE1 = this.down( "INPUT.WG_GB_CODE1", 0 );
						popmenu_btn[4].value1 = WG_GB_CODE1.value;
					}

					if( this.down( "INPUT.WG_GB_CODE2", 0 ) ){
						var WG_GB_CODE2 = this.down( "INPUT.WG_GB_CODE2", 0 );
						popmenu_btn[4].value2 = WG_GB_CODE2.value;
					}

					if( this.down( "INPUT.WG_GB_CODE3", 0 ) ){
						var WG_GB_CODE3 = this.down( "INPUT.WG_GB_CODE3", 0 );
						popmenu_btn[4].value3 = WG_GB_CODE3.value;
					}
					*/

					if( this.down( "INPUT.WG_GB_CODE", 0 ) ){
						var WG_GB_CODE = this.down( "INPUT.WG_GB_CODE", 0 );						
						popmenu_btn[0].value = WG_GB_CODE.value;
						popmenu_btn[1].value = WG_GB_CODE.value;
						popmenu_btn[2].value = WG_GB_CODE.value;
						popmenu_btn[3].value = WG_GB_CODE.value;
						popmenu_btn[4].value = WG_GB_CODE.value;
					}					
					if( this.down( "INPUT.WG_DC_CODE", 0 ) ){
						var WG_DC_CODE = this.down( "INPUT.WG_DC_CODE", 0 );						
						popmenu_btn[0].value = popmenu_btn[0].value + "^" + WG_DC_CODE.value;
						popmenu_btn[1].value = popmenu_btn[1].value + "^" + WG_DC_CODE.value;
						popmenu_btn[2].value = popmenu_btn[2].value + "^" + WG_DC_CODE.value;
						popmenu_btn[3].value = popmenu_btn[3].value + "^" + WG_DC_CODE.value;
						popmenu_btn[4].value = popmenu_btn[4].value + "^" + WG_DC_CODE.value;
					}		
				}

				thumbnail_link[i].onmouseout = function(){
					var thumbnail = this.down( "A.m_thumb", 0 );
					var thumbnail_pos = thumbnail.cumulativeOffset();

					obj.hide_obj = Element.hide.delay( 1, obj );
				}
			}

			for( var i=0; i<popmenu_btn.length; i++ ){
				popmenu_btn[i].onmouseover = function(){
					if( obj.hide_obj ) window.clearTimeout( obj.hide_obj );
				}

				popmenu_btn[i].onmouseout = function(){
					obj.hide_obj = Element.hide.delay( 1, obj );
				}
			}

		},
		openWindow : function(){
			var test2;

		},
		onmouseout : function(){
			var test2;

		}
	}

	/* -----------------------------------------------------------------------------
		slide menu
		@사용법 : slideMenu( elemList_id, final_x, interval );
	----------------------------------------------------------------------------- */
	function slideMenu( list_id, final_x, interval ){
		var obj = $( list_id );
		var obj_child = obj.childNodes;

		if( obj.movement ) window.clearTimeout( obj.movement );
		if( !obj.style.left ) obj.style.left = "0px";
		
		var obj_xpos = parseInt( obj.style.left );

		if( obj_xpos == final_x ) return true;

		if( obj_xpos < final_x ){
			var dist = Math.ceil( (final_x - obj_xpos)/10 );
			obj_xpos = obj_xpos + dist;
		}else{
			var dist = Math.ceil( (obj_xpos - final_x)/10 );
			obj_xpos = obj_xpos - dist;
		}
		obj.style.left = obj_xpos + "px";

		var repeat = "slideMenu('" + list_id +"', '" + final_x + "', '" + interval + "')";
		obj.movement = setTimeout( repeat, interval );
	}


	//-----------------------------------------------------------------------------
	// brandshop left menu
	//    gnbAtive(this,'sGnbDep0'); html상의 div.sGnbDep + 번째수
	//-----------------------------------------------------------------------------
	function gnbActive( obj, menu, num )
	{
		var obj = $( obj );

		var menuName   = menu;
		var menuClass  = menuName.replace( /[0-9]/g, "" );
		var menuNum    = menuName.replace( /[^0-9]/g, "" );

		var gnbDep     = $$( "div.sGnbDep" );
		var activeMenu = $$( "a.menuActive" );

		for ( i=0; i<gnbDep.length; i++ )
		{
			gnbDep[i].setAttribute( "id", menuClass + i );
			if ( gnbDep[i].style.display != "none" ) Effect.toggle( gnbDep[i].id, 'slide', {duration:0.5});
		}

		for ( i=0; i<activeMenu.length; i++ ) activeMenu[i].className = "";

		if ( menuClass == "sGnbDep" )
		{
			Effect.toggle( gnbDep[menuNum].id, 'slide', {duration:0.5});
			obj.className = "menuActive";
		}
		if ( menuClass == "noDep" ) obj.className = "menuActive";

		if( num != null )
		{
			var someNodeList = $(menu).getElementsByTagName('A');
			var nodes = $A(someNodeList);

			nodes[num].className = "menuActive_s";
		}
	}


	//-----------------------------------------------------------------------------
	// 즐겨찾기 추가
	//    bookmarksite( site title, url )
	//-----------------------------------------------------------------------------
	function bookmarkSite( title, url ) {
		if(window.sidebar) // firefox
			window.sidebar.addPanel(title, url, "");
		else if(window.opera && window.print)

		{ // opera
			var elem = document.createElement('a');
			elem.setAttribute('href',url);
			elem.setAttribute('title',title);
			elem.setAttribute('rel','sidebar');
			elem.click();
		}

		else if(document.all) // ie
			window.external.AddFavorite(url, title);
	}


	//-----------------------------------------------------------------------------
	// 시작페이지 설정
	//    addHomepage( title, url )
	//-----------------------------------------------------------------------------
	function addHomepage( obj, url ){
		obj.style.behavior = "url(#default#homepage)";
		obj.setHomePage( url );
	}


	//-----------------------------------------------------------------------------
	// 게이트메뉴
	//    addHomepage( title, url )
	//-----------------------------------------------------------------------------
	function layerControl( val ){
		var obj = $("gateMenu");

		if( val == "0" ){
			obj.style.height = "50px";

		}else if( val == "1" ){
			obj.style.height = "20px";
		}
	}

	//-----------------------------------------------------------------------------
	// 게이트메뉴 슬라이딩 체크
	//-----------------------------------------------------------------------------
	function initCheck(){
		if( wgn.getCookie( "gmMenu" ) != "done" ){
			window.document.gateMenuObj.jasCheck();
			wgn.setCookie( "gmMenu", "done", 30 );
		}
	}

	// 메인 브랜드 아이콘 롤링
	function leftMenu_x( list_id, direction ){
		var listObj = $( list_id );
		var listObj_item = listObj.getElementsByTagName( "li" );
		if( !listObj.style.left ) listObj.style.left = "0px";

		if( direction == "left" ){
			if( parseInt( listObj.style.left ) != 0 ){
				listObj.style.left = parseInt( listObj.style.left ) + 67 + "px";
			}
		}else{
			if( parseInt( listObj.style.left ) != -(listObj_item.length-1)*67 ){
				listObj.style.left = parseInt( listObj.style.left ) - 67 + "px";
			}
		}
	}


	//-----------------------------------------------------------------------------
	// 브랜드샾 자동 롤링
	//-----------------------------------------------------------------------------
	var rollBrandDelayTime = 5000; // 5초 단위 롤링
	var rollBrandObj = null;	
	var rollBrandTimer = null;

	function getRollBrandObj() {
		var obj   = $("brandList");
		if (obj) {
			var p_obj = obj.getElementsByTagName("A");
			if (rollBrandId >= p_obj.length){
				rollBrandId = 0;
			}
			for (i=0; i<p_obj.length; i++) {
				if (p_obj[rollBrandId]) {	
					rollBrandId = parseInt(p_obj[rollBrandId].id.replace("rollId",""));
					rollBrandObj = p_obj[i];					
				}
				return rollBrandObj;
			}
		} else {
			return false;
		}
	}

	function autoRolling() {
		var rtnVal = getRollBrandObj();
		if (rtnVal) {
			var rtnRollBrandObj = rtnVal;
			brand_menuEvent(rtnRollBrandObj,rollBrandId);
			rollBrandId++;
		}		
	}

	Event.observe(window, 'load', function() { 		
		var nowPage = document.location.href;
		if (nowPage.indexOf("/main.do") > 0) {	
			rollBrandTimer        = setInterval(function() {autoRolling()}, rollBrandDelayTime);        // interval time

			if ($("mainBanner_brand")) {
				$("mainBanner_brand").observe("mouseover", function() { 
					clearInterval(rollBrandTimer);
				});

				$("mainBanner_brand").observe("mouseout", function() { 
					clearInterval(rollBrandTimer);
					rollBrandTimer = setInterval(function() {autoRolling()}, rollBrandDelayTime); // interval time
				});
			}		
		}
	});

	
		//-----------------------------------------------------------------------------
	// 상품미리보기
	//  
	//-----------------------------------------------------------------------------	
	function view_nw( obj , p){
		var arr = p.split('^');
		var wg_gb_code = arr[0];
		var wg_dc_code = arr[1];				
			
		if( obj == "preview" ){
			val =  "<div class=\"layer712\" title=\"미리보기\" id=\"preview\" style=\"display:none; z-index:99;\">";
			val += "<img src=\"/image/btn/layerpop_close.gif\" title=\"\" alt=\"닫기\" class=\"close_btn\" onclick=\"view_nw(\'preview\', \'^\');\" />";
			val += "<iframe frameborder=\"0\" style=\"width:706px; height:464px;\" src=\"/product/category_pre_view.do?WG_GB_CODE=" + wg_gb_code + "&WG_DC_CODE=" + wg_dc_code + "\"></iframe>";
			val += "<div class=\"close\">";
			val += "<img src=\"/image/btn/layerpop_close2.gif\" title=\"\" alt=\"닫기\" onclick=\"view_nw(\'preview\', \'^\');\" />";
			val += "</div>";
			val += "</div>";
		}else if( obj == "gift" ){			
			val =  "<div class=\"layer424\" id=\"gift\" style=\"z-index:99;\">";
			val += "<div class=\"title\">";
			val += "<h1><img src=\"/image/common/layer_tit_gift.gif\" title=\"\" alt=\"쪼르기\" /></h1>";
			val += "<img src=\"/image/btn/layerpop_close3.gif\" title=\"\" alt=\"닫기\" class=\"close_btn\" onclick=\"view_nw(\'gift\', \'^\')\" />";
			val += "</div>";
			val += "<iframe frameborder=\"0\" style=\"width:432px; height:503px;\" src=\"/goods/mail_gift.do?wg_gb_codes="+p+"\"></iframe>";
			val += "</div>";

		}

		view_lPopup_nw( obj, val );
	}
	
	
	function addCart(obj, p) {
		var arr = p.split('^');
		var wg_gb_code = arr[0];
		var wg_dc_code = arr[1];
		
		if (obj == "cart") {
			shoppingCart.putShoppingCartItem(wg_gb_code, 1, wg_dc_code, '', '', '', '');
		} else if (obj == "wishlist") {
			markGood.putMarkGoodItem(wg_gb_code, wg_dc_code, '', '', '');
		}
	}
	

	// quick menu
	/*
		<div id="gotop">
			<a href="#head" title="상단으로"><img src="/images/nav/top.gif" alt="Top"></a>
		</div>
		<script type="text/javascript">initMoving(document.getElementById("gotop"), 66, 66, 250);</script>
	*/
	function initMoving(target, position, topLimit, btmLimit) {
		if (!target)
			return false;

		var obj = target;
		obj.initTop = position;
		obj.topLimit = topLimit;
		obj.bottomLimit = document.documentElement.scrollHeight - btmLimit;

		obj.style.position = "absolute";
		obj.top = obj.initTop;
		obj.left = obj.initLeft;

		if (typeof(window.pageYOffset) == "number") {
			obj.getTop = function() {
				return window.pageYOffset;
			}
		} else if (typeof(document.documentElement.scrollTop) == "number") {
			obj.getTop = function() {
				return document.documentElement.scrollTop;
			}
		} else {
			obj.getTop = function() {
				return 0;
			}
		}

		if (self.innerHeight) {
			obj.getHeight = function() {
				return self.innerHeight;
			}
		} else if(document.documentElement.clientHeight) {
			obj.getHeight = function() {
				return document.documentElement.clientHeight;
			}
		} else {
			obj.getHeight = function() {
				return 500;
			}
		}

		obj.move = setInterval(function() {
			if (obj.initTop > 0) {
				pos = obj.getTop() + obj.initTop;
			} else {
				pos = obj.getTop() + obj.getHeight() + obj.initTop;
				//pos = obj.getTop() + obj.getHeight() / 2 - 15;
			}

			if (pos > obj.bottomLimit)
				pos = obj.bottomLimit;
			if (pos < obj.topLimit)
				pos = obj.topLimit;

			interval = obj.top - pos;
			obj.top = obj.top - interval / 3;
			obj.style.top = obj.top + "px";
		}, 30)
	}
	
	function addLoadEvent(func) {
		var oldonload = window.onload;
		if (typeof window.onload != 'function') {
			window.onload = func;
		}
		else {
			window.onload = function() {
				oldonload();
				func();
			}
		}
	}
