var RANKUP_MENU = Class.create({
	initialize: function() {
		this.menu_mode = "text"; // { text | image }
		this.menu_frame = null;
		this.menu_class = null; // ¸Þ´º CSS Å¬·¡½º
		this.open_menu = null; // ¿ÀÇÂµÈ ¸Þ´º
		this.hover_menu = null; // ¿À¹öµÈ ¸Þ´º
		this.browser = browser; // browser ´Â common.js ¿¡ Á¤ÀÇµÊ
		this.menu_names = new Array(); // ¸Þ´º ÀÌ¸§
		this.menu_items = new Array(); // ¸Þ´º ¾ÆÀÌÅÛ
		this.menu_infos = {}; // ¸Þ´º Á¤º¸
		this.load_menu_item();
	},
	// ¸Þ´º ¾ÆÀÌÅÛ ·Îµå
	load_menu_item: function() {
		var classObj = this;
		var url = domain+"Libs/_js/load_category_item.ajax.php?mode=load_menu_item";
		new Ajax.Request(url, {
			mthod: 'get',
			onSuccess: function(transport) {
				var sections = transport.responseXML.getElementsByTagName('section');
				for(var i=0; i<sections.length; i++) {
					var section = sections[i];
					var section_code = section.getAttribute('code');
					var section_text = section.getElementsByTagName('text')[0].firstChild.nodeValue;
					classObj.menu_names[section_code] = section_text;
					classObj.menu_items[section_code] = section_text;

					// category ³ëµå°¡ Á¸ÀçÇÏ´ÂÁö Ã¼Å©
					var section_child = new Array();
					var categories = section.getElementsByTagName('category');
					for(var j=0; j<categories.length; j++) {
						var category = categories[j];
						var category_code = category.getAttribute('code');
						var category_text = category.getElementsByTagName('text')[0].firstChild.nodeValue;
						classObj.menu_names[category_code] = category_text;
						section_child.push({'code':category_code, 'text':category_text});

						// item ³ëµå°¡ Á¸ÀçÇÏ´ÂÁö Ã¼Å©
						var category_child = new Array();
						var items = category.getElementsByTagName('item');
						for(var k=0; k<items.length; k++) {
							var item = items[k];
							var item_code = item.getAttribute('code');
							var item_text = item.firstChild.nodeValue;
							classObj.menu_names[item_code] = item_text;
							category_child.push({'code':item_code, 'text':item_text});
						}
						classObj.menu_items[category_code] = {'text':category_text, 'child': category_child};
					}
					classObj.menu_items[section_code] = {'text':section_text, 'child': section_child};
				}
				/*
				if(browser.kind=="GEKO") {
					classObj.draw_sub_menu(classObj.menu_infos.section);
					classObj.draw_left_menu('left_menu_title', 'left_menu_item');
					classObj.draw_page_locale({element: 'location', locale: 'div[class="left"]', rss: 'div[class="right"]' });
					$('photobox_title').innerHTML = $('moviebox_title').innerHTML = classObj.menu_items[classObj.menu_infos.category].text;
				}
				*/
			}
		});
	},
	// ¸¶¿ì½º ¿À¹ö½Ã ¸Þ´º½ºÅ²
	get_hover_skin: function(menu_item) {
		var menu_class = (this.menu_mode=="text") ? "br_x topmenu_tp_over" : "br_x bp_b topmenu_ip_over";
		if(this.browser.kind=="IE" && this.browser.version<7) {
			var hover_skin = "\
			<table cellpadding='0' cellspacing='0' height='35'>\
			<tr>\
				<td width='3' valign='bottom'><div style='filter:\"progid:DXImageTransform.Microsoft.AlphaImageLoader(src="+domain+"images/top_menu_over_bg1.png)\";height:1px;width:3px;'></div></td>\
				<td background='"+domain+"images/top_menu_over_bg2.gif' class='"+menu_class+"'>"+menu_item.innerHTML+"</td>\
				<td width='3' valign='bottom'><div style='filter:\"progid:DXImageTransform.Microsoft.AlphaImageLoader(src="+domain+"images/top_menu_over_bg3.png)\";height:1px;width:3px;'></div></td>\
			</tr>\
			</table>";
		}
		else {
			var hover_skin = "\
			<table cellpadding='0' cellspacing='0' height='35'>\
			<tr>\
				<td width='3' valign='bottom'><img src='"+domain+"images/top_menu_over_bg1.png'></td>\
				<td background='"+domain+"images/top_menu_over_bg2.gif' class='"+menu_class+"'>"+menu_item.innerHTML+"</td>\
				<td width='3' valign='bottom'><img src='"+domain+"images/top_menu_over_bg3.png'></td>\
			</tr>\
			</table>";
		}
 		return hover_skin;
	},
	// ¸¶¿ì½º ¿À¹ö½Ã ¸Þ´ºÈ¿°ú
	hover_item: function(event, init) {
		if(init==true) var el = event;
		else {
			var el = Event.element(event);
			while(!el.tagName.match(/th/i)) el = el.parentNode;
		}
		if(el.className=='') return false;

		// ±âÁ¸ ¿À¹öµÈ ¸Þ´º º¹±¸
		if(rankup_menu.hover_menu!=null) {
			var recover_item = rankup_menu.hover_menu;
			recover_item.className = rankup_menu.menu_class;
			var menu_item = rankup_menu.hover_menu.getElementsByTagName('a')[0];
			menu_item.className = 'topmenu';
			if(rankup_menu.menu_mode=="image") {
				var menu_img = menu_item.getElementsByTagName('img')[0];
				var normal_img = menu_img.getAttribute('default');
				if(normal_img.match(/.png/) && rankup_menu.browser.kind=="IE" && rankup_menu.browser.version<7) menu_img.style.filter = menu_img.style.filter = 'progid:DXImageTransform.Microsoft.AlphaImageLoader(src='+normal_img+')';
				else menu_img.src = normal_img;
			}
			recover_item.update(menu_item.parentNode.innerHTML);
		}
		// ¼­ºê¸Þ´º ±×¸®±â
		/<!--section:(.*)-->/.exec(el.innerHTML);
		rankup_menu.draw_sub_menu(RegExp.$1);

		// ÇöÀç ¿À¹öµÈ ¸Þ´ºÀÇ ¼­ºê¸Þ´º º¸ÀÌ±â
		var item = el.getElementsByTagName('a')[0];
		item.className = 'topmenu_over';
		if(rankup_menu.menu_mode=="image") {
			var menu_img = el.getElementsByTagName('img')[0];
			var hover_img = menu_img.getAttribute('hover');
			if(menu_img.getAttribute('default')==null) menu_img.setAttribute('default', menu_img.src);
			if(hover_img.match(/.png/) && rankup_menu.browser.kind=="IE" && rankup_menu.browser.version<7) menu_img.style.filter = 'progid:DXImageTransform.Microsoft.AlphaImageLoader(src='+hover_img+')';
			else menu_img.src = hover_img;
		}
		el.update(rankup_menu.get_hover_skin(el));
		el.removeClassName(el.className);
		rankup_menu.hover_menu = el;
	},
	// ¸¶¿ì½º ¿À¹ö½Ã ¼­ºê¸Þ´º »ý¼º
	draw_sub_menu: function(section) {
		if(section==undefined || this.menu_names=='') {
			setTimeout(function() { rankup_menu.draw_sub_menu(section) }, 0);
			return false;
		}
		var obj = $('sub_menu_item'); obj.update('');
		if(this.menu_items[section]==undefined) return;
		for(var i=0; i<this.menu_items[section].child.length; i++) {
			var category = this.menu_items[section].child[i]; // category { code | text }
			/*if(obj.innerHTML) {
				var new_binder = document.createElement('span');
				new_binder.innerHTML = "<img src='"+domain+"images/top_menu_dot.gif' hspace='8' vspace='5'>";
				obj.appendChild(new_binder);
			}*/
			var new_item = document.createElement('a');
			if(section.match(/b[0-9]{1,}/i)) new_item.href = domain+"board/index.html?id="+category.code;
			else new_item.href = domain+"news/index.html?section="+section+"&category="+category.code;
			new_item.innerHTML = "<nobr style='margin-right:3px'><img src='"+domain+"images/top_menu_dot.gif' hspace='4' vspace='5'>"+ category.text+"</nobr>";
			new_item.style.display = "inline-block";
			if(this.menu_infos.section==section && this.menu_infos.category==category.code) new_item.style.fontWeight = "bolder";
			obj.appendChild(new_item);
		}
	},
	// ÁÂÃø ¼­ºê¸Þ´º »ý¼º
	draw_left_menu: function(menu_title, menu_item) {
		var obj = $(menu_item);
		if(obj==null) return false;
		var section = this.menu_infos.section;
		if(section==undefined || this.menu_names=='') {
			setTimeout(function() { rankup_menu.draw_left_menu(menu_title, menu_item) }, 0);
			return false;
		}
		$(menu_title).innerHTML = this.menu_names[section]; // Å¸ÀÌÆ² ÁöÁ¤

		// ¸Þ´º Ç×¸ñÀÌ Á¸ÀçÇÏÁö ¾ÊÀ» °æ¿ì ¸®ÅÏ
		if(this.menu_items[section]==undefined) return;
		for(var i=0; i<this.menu_items[section].child.length; i++) {
			var category = this.menu_items[section].child[i]; // category { code | text }
			var new_category = document.createElement('li');
			if(this.menu_infos.category==category.code) {
				new_category.className = "on";
				category.text = "<font class='ontxt'>"+category.text+"</font>";
			}
			new_category.innerHTML = "<a href='"+domain+"news/index.html?section="+section+"&category="+category.code+"'>"+category.text+"</a>";
			obj.appendChild(new_category);

			// ¼±ÅÃµÈ Ä«Å×°í¸®°¡ ¾Æ´Ñ°æ¿ì ÇÏÀ§ ¼½¼ÇÀ» »ý¼ºÇÏÁö ¾ÊÀ½
			if(!['theme_movie', 'theme_photo'].include(category.code) && this.menu_infos.category!=category.code) continue;

			// ¸Þ´º ¾ÆÀÌÅÛ
			if(this.menu_items[category.code].child.length) {
				// Æ÷Åä/µ¿¿µ»ó ¼½¼ÇÀÇ 3Â÷¼½¼Ç Ãâ·Â Á¦ÇÑ
				if(in_array(this.menu_infos.section, ['photo', 'movie']) && category.code.match(/[0-9]/)) continue;

				var new_category = document.createElement('li');
				new_category.className = "sec3";
				var new_ul_item = document.createElement('ul');
				for(var j=0; j<this.menu_items[category.code].child.length; j++) {
					var item = this.menu_items[category.code].child[j]; // item { code | text }
					var new_item = document.createElement('li');
					item.text = (this.menu_infos.item==item.code) ? "<font class='sec3_ontxt'>"+item.text+"</font>" : item.text;
					new_item.innerHTML = "<a href='"+domain+"news/index.html?section="+section+"&category="+category.code+"&item="+item.code+"'>"+item.text+"</a>";
					new_ul_item.appendChild(new_item);
				}
				new_category.appendChild(new_ul_item);
				obj.appendChild(new_category);
			}
		}
	},
	// ·ÎÄÉÀÏ ¼³Á¤ - RSS ¸µÅ© ¼³Á¤
	draw_page_locale: function(locale_infos) {
		with(this.menu_infos) {
			if(section==undefined || this.menu_names=='') {
				setTimeout(function() { rankup_menu.draw_page_locale(locale_infos) }, 0);
				return false;
			}
			var el = $(locale_infos.element);
			var locale = "<a href='"+domain+"main/index.html'>È¨</a>"; // 1Â÷
			var query_string = "?section=" + section;
			if(!category) locale += " &gt; <b>"+this.menu_names[section]+"</b>"; // 2Â÷
			else {
				locale += " &gt; <a href='./index.html"+query_string+"'>"+this.menu_names[section]+"</a>";
				query_string += "&category=" + category;
				if(!item || item==0) locale += " &gt; <b>"+this.menu_names[category]+"</b>"; // 3Â÷
				else {
					locale += " &gt; <a href='./index.html"+query_string+"'>"+this.menu_names[category]+"</a>";
					locale += " &gt; <b>"+this.menu_names[item]+"</b>";
					query_string += "&item=" + item;
				}
			}
		}
		el.getElementsBySelector(locale_infos.locale)[0].update(locale);
		if(locale_infos.rss!=null) {
			var rss = el.getElementsBySelector(locale_infos.rss)[0];
			if(rss!==undefined && rss.id.match(/rss/i)) {
				var obj = rss.getElementsByTagName('a')[0];
				obj.href = domain+"rankup_module/rankup_rss/index.html"+query_string;
				Event.observe(obj, 'click', function(event) {
					var el = Event.element(event).parentNode;
					if(window.clipboardData.setData('text', el.href)) alerts('RSS ÁÖ¼Ò°¡ º¹»çµÇ¾ú½À´Ï´Ù.');
				});
			}
		}
	},
	// ¿ÀÇÂ¸Þ´º ¼³Á¤
	set_open_menu: function(obj) {
		this.open_menu = obj;
		this.hover_item(obj, true);
	},
	// ¸Þ´º ÀÌº¥Æ® ÇÒ´ç
	append_event: function(el) {
		var classObj = this;
		rankup_setPng24(el); // PNG Åõ¸íÀÌ¹ÌÁö Ã³¸® - common.js ¿¡ Á¤ÀÇ

		this.menu_frame = $(el);
		this.menu_frame.getElementsBySelector('th').each(function(menu) {
			menu.style.cursor = "pointer";
			Event.observe(menu, 'mouseover', classObj.hover_item);
			/<!--section:(.*)-->/.exec(menu.innerHTML);
			var section = RegExp.$1;
			if(section==classObj.menu_infos.section) {
				// ¿ÀÇÂ¸Þ´º ¼³Á¤
				classObj.set_open_menu(menu);
			}
		});
		// ¼­ºê¸Þ´º ±×¸®±â
		this.draw_sub_menu(this.menu_infos.section);
	},
	// ´º½º Ä«Å×°í¸® Ãâ·Â - ÀÀ¿ëÆí
	append_category: function(el) {
		var obj = $(el);
		var categories = obj.getAttribute('info').split(/\|/);
		if(this.menu_names=='') {
			setTimeout(function() { rankup_menu.append_category(el) }, 0);
			return false;
		}
		var cate_text = this.menu_names[categories[0]] +'>'+ this.menu_names[categories[1]] +'>'+ this.menu_names[categories[2]];
		new Insertion.Before(obj, cate_text);
		obj.parentNode.removeChild(obj);
	}
});

var rankup_menu = new RANKUP_MENU;
