/**
 * È®Àå ¸Þ´º ¸¸µé±â.
 */
// 1Depth ¸¸µé¾î ÁØ´Ù.
;
(function($) {
	var Fn = danawaGNBmenu = function(selector, options) {
		this.menuBox	= selector;
		this.menuItems	= danawaGNBMenu.Items;
		this.menuIdText	= "menuGnbRoot";
		this.openTimer	= 0;
		this.iframe		= null;
		
		this.setIframe();
		this.setMenuData();
	};

	Fn.prototype = {
		setMenuData : function() {
			var $$ = this;
			
			$(">li[id^='"+$$.menuIdText+"']",$$.menuBox).each(function(idx){
				var parentEl 	= this;
				
				if(idx == 0) {
					// ÀüÃ¼ ¸Þ´º
					var offImg = new Image();
					var onImg = new Image();					
					offImg.src = "http://img.danawa.com/new/newmain/img/menu_all.jpg";
					onImg.src = "http://img.danawa.com/new/newmain/img/menu_all_up.jpg";
					
					var MenuWrapEl = $$.drawAllMenu();
					$(MenuWrapEl)
					.bind("mouseenter", function(){ $$.showSubMenu(parentEl); })
					.bind("mouseleave", function(){ $$.hideSubMenu(parentEl); })
					;
				} else {
					// ¼­ºê ¸Þ´º »ý¼ºÇØ ³õ´Â´Ù.
					var subMenuEl	= $$.drawSubMenu(idx);
					var aSpecialMenu= $$.drawSpecialMenu(idx);
					var adScriptEl	= $$.drawAdScript(idx);
					var MenuWrapEl 	= document.createElement("DIV");	// ¼­ºê¸Þ´º ÀüÃ¼ °¨½ÎÁÖ´Â ·¹ÀÌ¾î
					
					if(aSpecialMenu[0] != false) {
						$(".over_left",subMenuEl).eq(0).append(aSpecialMenu[0]);
					}
					if(aSpecialMenu[1] != false) {
						$(".over_left",subMenuEl).eq(1).append(aSpecialMenu[1]);
					}
					
					var offImg = new Image();
					var onImg = new Image();					
					offImg.src = $$.menuItems[idx-1].sMenuImageOff;
					onImg.src = $$.menuItems[idx-1].sMenuImageOn;
					
					$(MenuWrapEl)
					.addClass("menu_over_layer")
					.append($(subMenuEl))
					.append($(adScriptEl))
					.bind("mouseenter", function(){ $$.showSubMenu(parentEl); })
					.bind("mouseleave", function(){ $$.hideSubMenu(parentEl); })
					;
				}
				
				$(MenuWrapEl)
				.css({
					position : "absolute",
					zIndex : 1000,
					left : "0px",
					top : "0px"
				})
				.hide()
				;
				
				$.data(this, "menuData", {
					"menuView"		: false,
					"menuAppend"	: false,
					"onImg"			: onImg,
					"offImg"		: offImg,
					"leftPos"		: $(this).offset().left,
					"adChange"		: false,
					"SubMenuHTML"	: MenuWrapEl
				});
				
				$(this)
				.bind("mouseenter", function(){ $$.showSubMenu(this); })
				.bind("mouseleave", function(){ $$.hideSubMenu(this); })
				;
				
				$$.setSubMenuPosition(this,1);
			});
		},
		
		setIframe : function() {
			var iframe = document.createElement("IFRAME");
			$(iframe).css({
				position : "absolute",
				zIndex : 999,
				left : "0px",
				top : "0px",
				width : "0px",
				height : "0px",
				border : "0px"
			})
			.attr("src","about:blank")
			.attr("scrolling","no")
			.attr("frameborder","0")
			.hide();
			document.body.appendChild( iframe );
			this.iframe = iframe;
		},
		
		drawAllMenu : function() {
			var $$ = this;
			var oDiv0 = document.createElement("DIV");	// ÀüÃ¼ ¸Þ´º °¨½ÎÁÖ´Â DIV
			var oDiv1 = document.createElement("DIV");
			var oDiv2 = document.createElement("DIV");	// ¼­ºê¸Þ´º ¸®½ºÆ®¿ë DIV
			
			$(oDiv1)
			.addClass("depth1_out")
			.append($(oDiv2))
			;
			$(oDiv2)
			.addClass("depth1_in")
			.html(danawaAllMenuHtml);

			$(oDiv0)
			.append($(oDiv1))
			;
			
			// ÀüÃ¼ ¸Þ´ºÀÇ ¼­ºê¸Þ´º¿¡ ´ëÇÑ ÀÌº¥Æ® Ã³¸®
			$(oDiv2).delegate("ul.depth1>li", {
				"mouseenter": function() {
					$(">A",this).addClass("select");
					$(">DIV",this).show(0,function(){
						$($$.iframe).css({
							left 	: $(this).offset().left + "px",
							top		: $(this).offset().top + "px",
							width 	: $(this).width() + 1+ "px",
							height 	: $(this).height() + 5 + "px"
						}).attr("src","about:blank").show();
					});
				},
				"mouseleave": function() {
					$(">A",this).removeClass("select");
					$(">DIV",this).hide(0,function(){
						$($$.iframe).hide();
					});
				}
			});
			
			return oDiv0;
		},
		drawSubMenu : function(idx) {
			var idx = idx-1;
			var $$	= this;
			
			var objSubMenuItems = $$.menuItems[idx].SubMenu;
			var nCount	= objSubMenuItems.length;
			
			if(nCount <= 0) {
				return false;
			} else {
				var border_right= document.createElement("DIV");	// ¼­ºê¸Þ´º ¿ÞÂÊ/¿À¸¥ÂÊ °¨½ÎÁÖ´Â ·¹ÀÌ¾î
				var over_left1	= document.createElement("DIV");	// ¼­ºê¸Þ´º ¿ÞÂÊ 10°³ °¨½ÎÁÖ´Â ·¹ÀÌ¾î
				var over_left2	= document.createElement("DIV");	// ¼­ºê¸Þ´º ¿À¸¥ÂÊ 10°³ °¨½ÎÁÖ´Â ·¹ÀÌ¾î
				var ul_left		= document.createElement("UL");		// ¼­ºê¸Þ´º ¿ÞÂÊ 10°³ °¨½ÎÁÖ´Â UL
				var ul_right 	= document.createElement("UL");		// ¼­ºê¸Þ´º ¿À¸¥ÂÊ 10°³ °¨½ÎÁÖ´Â UL
				
				$(border_right).addClass("border_right");
				$(over_left1).addClass("over_left");
				$(over_left2).addClass("over_left");
				$(ul_left).addClass("first_menu");
				$(ul_right).addClass("first_menu");
				
				
				$.each( objSubMenuItems, function(i) {
					var menuData = objSubMenuItems[i];
					var li = document.createElement("LI");
					var title = "";
					var hitCss = (menuData.sTextMenuIcon == "ADULT") ? 'class="lock_19"' : "";

					title = $.trim( menuData.sMenuName );
					if(title == '' || title == '_blank_') {
						$(li).addClass("empty");
						$(li).html('&nbsp;');
					} else {
						title = (menuData.sTextMenuStyle == 'BOLD') ? "<strong>"+title+"</strong>" : title;
						title = (menuData.sLinkUrl == "") ? title : '<a href="'+ decodeURIComponent(menuData.sLinkUrl) +'" target="'+menuData.sLinkTarget+'" '+hitCss+'>'+title+"</a>";

						$(li).html(title);
					}
					
					if(i < 10) {
						$(ul_left).append($(li));
					} else if ( i>=10 && i < 20 ) {
						$(ul_right).append($(li));
					} else {
						//return false;
					}
				});
				
				$(over_left1).append($(ul_left));
				$(over_left2).append($(ul_right));
				
				$(border_right).append($(over_left1));
				$(border_right).append($(over_left2));
				
				return border_right;
			}
		},
		drawSpecialMenu : function(idx) {
			var idx = idx-1;
			var $$	= this;
			
			var objSpecialMenuItems = $$.menuItems[idx].aSpecialMenuList;
			var nCount	= objSpecialMenuItems.length;
			
			if(nCount <= 0) {
				return new Array(false, false);
			} else {
				var ul_left_bottom	= document.createElement("UL");		// ½ºÆä¼È¸Þ´º ¿ÞÂÊ
				var ul_right_bottom	= document.createElement("UL");		// ½ºÆä¼È¸Þ´º ¿À¸¥ÂÊ
				$(ul_left_bottom).addClass("last_menu");
				$(ul_right_bottom).addClass("last_menu");
				
				$.each( objSpecialMenuItems, function(i) {
					var specialData = objSpecialMenuItems[i];
					var title = "";					
					var hitCss = (specialData.sTextMenuIcon == "HIT") ? 'class="hit"' : "";
	
					title = "<strong>"+specialData.sMenuName+"</strong>";
					title = (specialData.sLinkUrl == "") ? title : '<a href="'+ decodeURIComponent(specialData.sLinkUrl) +'" target="'+specialData.sLinkTarget+'" '+hitCss+'>'+title+"</a>";
	
					var li = document.createElement("LI");
					$(li).html(title);
					
					if(i < 2) {
						$(ul_left_bottom).append($(li));
					} else if (i>=2 && i < 4) {
						$(ul_right_bottom).append($(li));
					} else {} 
				});
				return new Array(ul_left_bottom, ul_right_bottom);
			}
		},
		drawAdScript : function(idx) {
			var idx = idx-1;
			
			if(this.menuItems[idx].sAdScript != '') {
				var div = document.createElement("DIV");
				$(div)
				.addClass("over_right")
				.html('<iframe frameborder="0" marginwidth="0" marginheight="0" scrolling="no" width="205" height="220" src="'+decodeURIComponent( this.menuItems[idx].sAdScript )+'"></iframe>')
				;
				return div;
			} else {
				return false;
			}
		},
		showSubMenu : function(obj) {
			var menuData = $.data( obj, "menuData" );
			var $$ = this;
			
			if ( menuData.menuView === true) return;

			if(menuData.menuAppend === false) {
				$(document.body).append( $(menuData.SubMenuHTML) );
				menuData.menuAppend = true;
			}
			
			if($(obj).offset().left != menuData.leftPos) {
				this.setSubMenuPosition(obj,false);
			}
			
			// ÀÌÀü ¿­·ÁÀÖ´Â ¸Þ´º ¹Ù·Î °¨Ãã
			$(">li[id^='"+$$.menuIdText+"']",$$.menuBox).each( function(i) {
				var root = $.data(this, "menuData");
				if( root.SubMenuHTML != menuData.SubMenuHTML ) {
					$$.hideSubMenu(this, {"CloseTimeOut" :0, "CloseAnimation": 0});
				}
			});
			
			$(">DIV.gnbRootMenuStyle",obj)
			.css("background-image", "url(" + menuData.onImg.src + ")");

			this.openTimer = window.setTimeout(function() {
				$(self.iframe).css({
					left 	: $(menuData.SubMenuHTML).offset().left + "px",
					top		: $(menuData.SubMenuHTML).offset().top + "px",
					width 	: $(menuData.SubMenuHTML).width() + 0 + "px",
					height 	: $(menuData.SubMenuHTML).height() + 0 + "px"
				}).show();
				
				$(menuData.SubMenuHTML).show();
				menuData.menuView = true;
				
			},150);
		},
		hideSubMenu : function(obj,options) {
			var $$ = this;
			var menuData = $.data( obj, "menuData" );
			var opt = $.extend({"CloseTimeOut" : 300, "CloseAnimation": 0}, options||{});
			
			menuData.menuView = false;
			
			window.clearTimeout(this.openTimer);
			window.setTimeout(function(){
				if( menuData.menuView === false ) {
					$(menuData.SubMenuHTML).hide(opt.CloseAnimation, function(){
						$(">DIV.gnbRootMenuStyle",obj).css("background-image", "url(" + menuData.offImg.src + ")");
					});
				}
				$($$.iframe).hide();
			},opt.CloseTimeOut);
		},
		setSubMenuPosition : function(obj, step) {
			var menuData = $.data( obj, "menuData" );
			var childEl	 = menuData.SubMenuHTML;
			var parentEl = obj;
			
			var menuAreaObj = $(">DIV.border_right,>DIV.border_left", childEl);
			var menuLeftObj	= $(">DIV.over_left", menuAreaObj).eq(0);
			var menuRightObj= $(">DIV.over_left", menuAreaObj).eq(1);
			var adObj		= $(">DIV.over_right", childEl);

			var areaLeft	= $(menuLeftObj).width() ? $(menuLeftObj).width() : 0;
			var areaRight	= $(menuRightObj).width() ? $(menuRightObj).width() : 0;
			var areaAd		= $(adObj).width() ? $(adObj).width() : 0;
			
			$(childEl).css({
				width : (areaLeft + areaRight + areaAd + 15) + "px",
				left : $(parentEl).offset().left + "px",
				top : $(obj).offset().top + $(obj).height() + "px"
			});
			
			// ¿µ¿ª ³ÐÀÌ º¸´Ù ¼­ºê¸Þ´º ¹Ú½º³ÐÀÌ°¡ Å©¸é...
			if( ($(parentEl).offset().left + $(childEl).width()) > $(this.menuBox).offset().left+925) {
				if(menuData.adChange === false) {
					$(adObj).addClass("left_margin").clone().prependTo($(childEl));
					$(childEl).children().last().remove();
					adObj = $(childEl).children().first();
					$(menuAreaObj).removeClass("border_right").addClass("border_left");
					menuData.adChange = true;
				}

				$(childEl).css({
					left : ( $(parentEl).offset().left - ( $(childEl).width() - $(parentEl).width() ) -2)+"px"
				});
			}
			
			if(step > 0) {
				menuData.leftPos = step;
			} else {
				menuData.leftPos = $(obj).offset().left;
			}
		}
	};
	
	$.danawaGNBmenu = function (selector, options) {
		new danawaGNBmenu(selector, options);
	};
	$.fn.danawaGNBmenu = function(options) {
		return this.each(function() {
			new $.danawaGNBmenu(this, options);
		});
	};
})(jQuery);

