/**
* CSShiarchMenu v0.6
*	written by: me[AT]daantje[DOT]nl
*	last update: Sat Nov 26 13:08:45 CET 2005
*
*	Documentation:
*		Build this small script cause all the gpl-ed scripts I found where too big
*		and had too many options I never going to use, or the config for the menu
*		was not easy to set with a PHP routine.
*
*	License:
*		LGPL. (http://www.gnu.org/copyleft/lesser.txt)
*
*	Dontate:
*		Please, when you like my script, click a view banners on
*		http://www.dantje.nl Or use my pay-pal donation button.
*/

//declare
var submenu = new Array();
var tmr = new Array();
var adj = new Array();
var last_zIndex = 10000;
var lastOverId = '';


// EXAMPLE CONFIG
var alignSubmenu 	= 'bottom';		//bottom or right side of the main button.
var useLastItemCSS	= true;			//generate last menu item too
									//if false, it will behave as a normal item
									//and the css menuItemLast class will not be used
var adjustFirst		= false;		//overlap the first submenu too?
var adjustTop		= 0;			//move the submenu's some pixels. Positive number (10) for down, negative (-10) for up.
var adjustLeft		= 0;			//move the submenu's some pixels. Positive number (10) for right, negative (-10) for left.

//SAMPLE CONFIG

//submenu['menu19'] = new Array();													//layer1
//submenu['menu19'][0] = menuItem('my own website','http://www.daantje.nl','_top');
//submenu['menu19'][1] = menuItem('other sites');
	//submenu['menu19_1'] = new Array();											//layer2
	//submenu['menu19_1'][0] = menuItem('google','http://www.ipd.gov.hk','_self');
	//submenu['menu19_1'][1] = menuItem('/.','../cargo.htm','_self');
	//['menu19_1'][2] = menuItem('Open in _BLANK:');
		//submenu['menu19_1_2'] = new Array();										//layer3
		//submenu['menu19_1_2'][0] = menuItem('/.','../cargo/cargo.htm','_self');
		//['menu19_1_2'][1] = menuItem('test again','http://www.slashdot.org','_blank');
//submenu['menu1'][2] = menuItem('This should be the last one');

// END OF EXAMPLE CONFIG

//主頁
submenu['menu1'] = new Array();

//最新消息
submenu['menu2'] = new Array();
submenu['menu2'][0] = menuItem('最新消息','/chi/whats_new/news.htm','_self');
submenu['menu2'][1] = menuItem('最新新聞稿','/chi/whats_new/press_releases.htm','_self');
submenu['menu2'][2] = menuItem('活動預告','/chi/whats_new/up_coming.htm','_self');

//關於我們
submenu['menu3'] = new Array();
submenu['menu3'][0] = menuItem('宗旨','/chi/about_us/vision_and_mission.htm','_self');
submenu['menu3'][1] = menuItem('組織架構','/chi/about_us/organisation.htm','_self');
submenu['menu3'][2] = menuItem('外判計劃','/chi/about_us/outsourcing.htm','_self');
submenu['menu3'][3] = menuItem('審核財政年度開支預算','/chi/about_us/reply/CITB_C.pdf','_blank');
submenu['menu3'][4] = menuItem('服務目標','/chi/about_us/performance_pledge.htm','_self');
submenu['menu3'][5] = menuItem('知識產權統計數字','/chi/intellectual_property/ip_statistics.htm','_self');
submenu['menu3'][6] = menuItem('職位空缺','/chi/about_us/employment.htm','_self');
submenu['menu3'][7] = menuItem('聯絡我們','/chi/about_us/contact_us.htm','_self');
submenu['menu3'][8] = menuItem('其他資料','/chi/about_us/otherinfo.htm','_self');

//刊物及新聞公報
submenu['menu4'] = new Array();
submenu['menu4'][0] = menuItem('知識產權署刊物','/chi/pub_press/publications.htm','_self');
submenu['menu4'][1] = menuItem('諮詢文件','/chi/pub_press/consultation_papers.htm','_self');
submenu['menu4'][2] = menuItem('知識產權署通告','/chi/pub_press/ipd_circulars.htm','_self');
submenu['menu4'][3] = menuItem('新聞稿','/chi/pub_press/press_releases.htm','_self');
submenu['menu4'][4] = menuItem('講辭及講稿','/chi/pub_press/speeches.htm','_self');
submenu['menu4'][5] = menuItem('參考資料','/chi/intellectual_property/study_aids.htm','_self');

//公開資料守則
submenu['menu19'] = new Array();
submenu['menu19'][0] = menuItem('公開資料守則','/chi/access_to_information/code_on_access_to_information.htm','_self');
submenu['menu19'][1] = menuItem('索取資料','/chi/access_to_information/requests_for_information.htm','_self');
submenu['menu19'][2] = menuItem('已公布或以其他方式向公眾提供的<br>資料一覽表(不論是免費或須繳費後提供)','/chi/access_to_information/list_of_information_published.htm','_self');
submenu['menu19'][3] = menuItem('按類別劃分、可供市民查閱的部門記錄<br>一覽表','/chi/access_to_information/list_of_records.htm','_self');

//甚麼是知識產權?
submenu['menu6'] = new Array();
submenu['menu6'][0] = menuItem('知識產權概覽','/chi/intellectual_property.htm#01','_self');
submenu['menu6'][1] = menuItem('商標','/chi/intellectual_property.htm#02','_self');
submenu['menu6'][2] = menuItem('專利','/chi/intellectual_property.htm#03','_self');
submenu['menu6'][3] = menuItem('外觀設計','/chi/intellectual_property.htm#04','_self');
submenu['menu6'][4] = menuItem('版權','/chi/intellectual_property.htm#05','_self');
submenu['menu6'][5] = menuItem('商業秘密 (未披露商業資料)','/chi/intellectual_property.htm#06','_self');
submenu['menu6'][6] = menuItem('集成電路的布圖設計(拓樸圖)','/chi/intellectual_property.htm#07','_self');
submenu['menu6'][7] = menuItem('植物品種保護','/chi/intellectual_property.htm#08','_self');
submenu['menu6'][8] = menuItem('公司名稱註冊不代表擁有知識產權','/chi/intellectual_property.htm#09','_self');


//申請註冊
submenu['menu7'] = new Array();
submenu['menu7'][0] = menuItem('商標','/chi/applicants/trademarks.htm','_self');
submenu['menu7'][1] = menuItem('專利','/chi/applicants/patents.htm','_self');
submenu['menu7'][2] = menuItem('外觀設計','/chi/applicants/designs.htm','_self');

//表格及費用
submenu['menu8'] = new Array();
submenu['menu8'][0] = menuItem('商標申請表格及費用 第559章','/chi/forms_fees/trademarks_559.htm','_self');
submenu['menu8'][1] = menuItem('商標申請表格及費用 第43章','/chi/forms_fees/trademarks_43.htm','_self');
submenu['menu8'][2] = menuItem('專利申請表格及費用','/chi/forms_fees/patents.htm','_self');
submenu['menu8'][3] = menuItem('外觀設計申請表格及費用','/chi/forms_fees/design.htm','_self');
submenu['menu8'][4] = menuItem('版權特許機構申請表格及費用','/chi/forms_fees/copyright.htm','_self');

//常見問題
submenu['menu11'] = new Array();
submenu['menu11'][0] = menuItem('商標','/chi/faq/trademarks.htm','_self');
submenu['menu11'][1] = menuItem('專利','/chi/faq/patents.htm','_self');
submenu['menu11'][2] = menuItem('外觀設計','/chi/faq/designs.htm','_self');
submenu['menu11'][3] = menuItem('版權','/chi/faq/copyright.htm','_self');
submenu['menu11'][4] = menuItem('商業秘密 (未披露商業資料) ','/chi/intellectual_property/trade_secrets.htm','_self');

//知識產權業界人士
submenu['menu12'] = new Array();
submenu['menu12'][0] = menuItem('最新消息','/chi/ip_practitioners/whats_new.htm','_self');
submenu['menu12'][1] = menuItem('商標','/chi/ip_practitioners/trademarks.htm','_self');
submenu['menu12'][2] = menuItem('專利','/chi/ip_practitioners/patents.htm','_self');
submenu['menu12'][3] = menuItem('外觀設計','/chi/ip_practitioners/designs.htm','_self');
submenu['menu12'][4] = menuItem('版權','/chi/ip_practitioners/copyright.htm','_self');
submenu['menu12'][5] = menuItem('商業秘密 (未披露商業資料) ','/chi/intellectual_property/trade_secrets.htm','_self');
submenu['menu12'][6] = menuItem('諮詢文件','/chi/ip_practitioners/consultation.htm','_self');
submenu['menu12'][7] = menuItem('有關開放內地專利代理及商標代理服務','/chi/whats_new/news/Opening_up_patent_and_trade_mark_agency_services_in_the_Mainland.htm','_self');
submenu['menu12'][8] = menuItem('申報廣東省著名商標','/chi/ip_cooperation_corner/famous_tm.htm','_self');
submenu['menu12'][9] = menuItem('中國香港屬締約方的國際協議','/chi/ip_practitioners/international_agreements.htm','_self');

//粵港知識產權合作專欄 
submenu['menu14'] = new Array();
submenu['menu14'][0] = menuItem('簡介','/chi/ip_cooperation_corner/introduction.htm','_self');
submenu['menu14'][1] = menuItem('「粵港保護知識產權合作專責小組」<br>會議','/chi/ip_cooperation_corner/meeting.htm','_self');
submenu['menu14'][2] = menuItem('活動預告','/chi/ip_cooperation_corner/upcoming_events.htm','_self');
submenu['menu14'][3] = menuItem('合作項目','/chi/ip_cooperation_corner/cooperation_items.htm','_self');
submenu['menu14'][4] = menuItem('執法合作','/chi/ip_cooperation_corner/enforcement_cooperation.htm','_self');
submenu['menu14'][5] = menuItem('相關網址','/chi/ip_cooperation_corner/Link.htm','_self');

//推廣及公民教育
submenu['menu15'] = new Array();
submenu['menu15'][0] = menuItem('最新活動','/chi/promotion_edu/upcoming_events.htm','_self');
submenu['menu15'][1] = menuItem('研討會及展覽會','/chi/promotion_edu/seminars.htm','_self');
submenu['menu15'][2] = menuItem('公開講座','/chi/promotion_edu/public_lecture.htm','_self');
submenu['menu15'][3] = menuItem('知識產權意識調查','/chi/promotion_edu/survey.htm','_self');
submenu['menu15'][4] = menuItem('「我承諾」行動','/chi/promotion_edu/i_pledge.htm','_self');
submenu['menu15'][5] = menuItem('「正版正貨承諾」計劃','/chi/promotion_edu/no_fakes.htm','_self');
submenu['menu15'][6] = menuItem('公民教育活動','/chi/promotion_edu/educational_corner.htm','_self');
submenu['menu15'][7] = menuItem('宣傳短片及錄像製品','/chi/promotion_edu/promotional_educational_videos.htm','_self');
submenu['menu15'][8] = menuItem('宣傳品及學習教材','/chi/promotion_edu/materials.htm','_self');

//招標公告
//submenu['menu16'] = new Array();
//submenu['menu16'][0] = menuItem('招標公告','/chi/tender/tender_notices.htm','_self');
//submenu['menu16'][1] = menuItem('招標者簡報 (26.5.2011)','/eng/tender/Tenderers_Briefing_20110526.pdf','_self');
//submenu['menu16'][2] = menuItem('投標者查詢 (英文版)','/eng/tender/Tenderers_Enquiries.pdf','_self');


//build or unhide submenu div...
function buildSubmenu(obj,align){
	lastOverId = obj.id;

	//overrule default alignment of this submenu
	if(!align)
		align = alignSubmenu;

	//get common part of div id
	menuPath = obj.id.split('_');

	//unset mousout of parent menus and make sure they are visible...
	x = "div";
	for(i=0;i<menuPath.length;i++){
		x+= '_' + menuPath[i];
		if(document.getElementById(x)){
			if(tmr[x])
				window.clearTimeout(tmr[x]);
			document.getElementById(x).style.visibility = 'visible';
		}
	}

	//check if we have a submenu of the obj...
	if(submenu[obj.id]){
		//calc position of mouseover
		d = obj;
		if(d){
			L_pos = d.offsetLeft + d.offsetWidth;
			T_pos = d.offsetTop;
			while(d.offsetParent){
				d = d.offsetParent;
				L_pos+= d.offsetLeft;
				T_pos+= d.offsetTop;
			}
		}

		//patch first submenu to go right below the main buttons...
		if(obj.className.indexOf('menuItem') < 0 && align == 'bottom'){
			L_pos-= obj.offsetWidth;
			T_pos+= obj.offsetHeight;
		}

		//move the submenu (overlap?)
		if((adjustTop || adjustLeft) && (adjustFirst || (!adjustFirst && obj.className.indexOf('menuItem') >= 0))){
			L_pos+= adjustLeft;
			T_pos+= adjustTop;
		}

		//Only parse when position is higher than 0,0... Else we dont have the right position!
		if(L_pos > 0 && T_pos >0){
			//check if allready build...
			c = document.getElementById('div_' + obj.id);
			if(c){
				//unhide...
				c.style.visibility = 'visible';
				c.style.zIndex = last_zIndex++;

				//hard replace
				c.style.top = (T_pos - 1) + "px";
				c.style.left = (L_pos - 1) + "px";
			}else{
				//build new div
				subObj = document.createElement('div');
				subObj.id = 'div_' + obj.id;
				subObj.className = 'submenu';
				subObj.style.position = 'absolute';
				subObj.style.zIndex = last_zIndex++;
				subObj.style.top = (T_pos - 1) + "px";
				subObj.style.left = (L_pos - 1) + "px";

				//write div to the body...
				document.getElementsByTagName('body')[0].appendChild(subObj);

				//build html for submenu
				content = "";
				m = submenu[obj.id];
				for(i=0;i<m.length;i++){

					//determin target for onclick...
					//	(sorry, I should rewrite this routine...)
					if(m[i][1]){
						if(m[i][1].substring(0,11) == 'javascript:'){
							act = m[i][1].substring(11);
						}else{
							if(!m[i][2] || m[i][2] == '_self')
								act = "self.location.href='" + m[i][1] + "';";
							else if(m[i][2] == '_top')
								act = "top.location.href='" + m[i][1] + "';";
							else if(m[i][2] == '_parent')
								act = "parent.location.href='" + m[i][1] + "';";
							else if(m[i][2] == '_blank')
								act = "window.open('" + m[i][1] + "');";
							else
								act = "window.frames['"+m[i][2]+"'].location.href='" + m[i][1] + "';";
						}
					}

					//make item
					content+= "<div onmouseout=\"hideSubmenu(this)\" onmouseover=\"buildSubmenu(this)\" "+ (m[i][1] ? "onclick=\""+ act + "\" " : "") +"class=menuItem" + (i==0 ? 'First' : (i==(m.length -1) && useLastItemCSS ? 'Last' : '')) + " id=\"" + obj.id + "_" + i +"\">" + m[i][0] + "</div>";
					adj[i] = obj.id + "_" + i;
				}

				//insert new menu
				subObj.innerHTML = content;
			}
		}
	}
}

//hide a submebu div
function hideSubmenu(obj){
	//get common part of div id
	closePath = obj.id.split('_');

	//hide path
	x = "div";
	for(i=0;i<closePath.length;i++){
		x+= '_' + closePath[i];
		if(document.getElementById(x))
			tmr[x] = window.setTimeout("document.getElementById('"+x+"').style.visibility = 'hidden';",50);
		//The timeout above is needed for MSIE browsers... Or else the menu's will disapear on EVERY mousout!!!
		//Please get a normal browser like Firefox, Mozilla or Opera!!
	}
}

//add an menu item to the config array (called in the config lines)
function menuItem(txt,url,tar){
	return new Array(txt,url,tar);
}

//change div's on mouse over and out...
document.onmouseover = function(e){
	obj = document.all ? event.srcElement : e.target;
	if(obj.className == 'menuItemFirst' || obj.className == 'menuItem' || obj.className == 'menuItemLast')
		obj.className+='Over';
}
document.onmouseout = function(e){
	obj = document.all ? event.srcElement : e.target;
	if(obj.className == 'menuItemFirstOver' || obj.className == 'menuItemOver' || obj.className == 'menuItemLastOver')
		obj.className = obj.className.substring(0,(obj.className.length - 4));
}

//*** Patch for firefox bug with focus on mouseover...
//		This function should be called onMouseOver of every iFrame that's under the menu structure.
function iFramePatch(){
	if(!document.all && lastOverId)
		hideSubmenu(document.getElementById(lastOverId));
}

