/* =================================================================================================
 * FlatMenu 
 *
 * Simple customizable single-level animated DHTML menus.
 *
 * Copyright 2008, Yuri Petrenko
 * =================================================================================================
 * updates:
 * 0x.xx.xx fixed 
 * ============================================================================================== */

//==================================================================================================
// Configuration properties
//==================================================================================================
//FlatMenu.itemPadding = 3;                             // additional padding around each item

//==================================================================================================
// Internal use properties
//==================================================================================================
//FlatMenu.registry = [];


//==================================================================================================
// Static methods
//==================================================================================================
// supporting win ie5+, mac ie5.1+ and gecko >= mozilla 1.0
FlatMenu.isSupported = function(){
	var ua=navigator.userAgent.toLowerCase();
	var pf=navigator.platform.toLowerCase();
	var an=navigator.appName;
	var r=false;
	if(ua.indexOf("gecko")>-1&&navigator.productSub>=20020605)r=true;
	else if(an=="Microsoft Internet Explorer"){
		if(document.getElementById){
			if(pf.indexOf("mac")==0){
				r=/msie (\d(.\d*)?)/.test(ua)&&Number(RegExp.$1)>=5.1;
			}
			else r=true;
		}
	}
	if( ua.indexOf("opera/")>-1) {
		var opera_ver = ua.substring(ua.indexOf("opera/")+6, ua.indexOf(" "));
		if (opera_ver >= 9) r=true;//alert(opera_ver);			
	}
	 // ua.indexOf("opera/8")>-1 || 
//	alert(ua);	r=true;
	return r;
}

//==================================================================================================
// FlatMenu constructor (only called internally)
//==================================================================================================
// iTop                 : Top pixel offset of menu from actuator
//==================================================================================================

function FlatMenu() {
	
        var ready = false;
        var _this = this;
//        var a = null;
        var items;
//        var strings;
		var displayContainerPrefix = "div_";

		// public methods
//        this.addItem = addItem;
//        this.toString = toString;
        this.initialize = initialize;
        this.initEvents = initEvents;
        this.show = show;
        this.hideAll = hideAll;
        this.renderAll = renderAll;
//        this.items = [];

        // events
        this.onmouseover = new Function();      // when the menu has been moused over



        function initialize(menu_tree) {
			if (!empty(menu_tree)) items = menu_tree;
                initEvents();
                ready = true;
				
        }
		
        function initEvents() {
			var curr_item, tmp_el;
                // hook item mouseover
			for (var k in items) {
				tmp_el = getElement(k);
				if (!empty(tmp_el)) tmp_el.onmouseover = item_mouseover; 
			}
			hideAll();	
        }
		
		
		
        function item_mouseover() {
			show(this.id);
        }

        function hideAll() {
			var tmp_el;
			for (var k in items) {
				tmp_el = getElement(displayContainerPrefix + k);
				if (!empty(tmp_el)) tmp_el.style.display = 'none' 
				tmp_el = getElement(k);
				tmp_el.className = "tmi";
			}
			
		}

        function show(id) {
			hideAll();
			var tmp_el = getElement(displayContainerPrefix + id);
//			alert(displayContainerPrefix + id);
			if (!empty(tmp_el)) tmp_el.style.display = '';
			var tmp_el = getElement(id);
			tmp_el.className = "tmi_sel";
			
        }

        function renderAll() {
			if (empty(menu_container.innerHTML)) {
				throw new Error("Cannot write to menu Container");
				return false;
			} else menu_container.innerHTML = '';
			var tplArray, tpl_name, tpl_content; // Template vars
			var tmp_el;//, dcs, dcss; // dcs - displayContainerStr
			var curr_item, sis, id; 
			var str = '';
			for (var k in items) {
				tpl_content = '';
				tmp_el = getElement(k);
				curr_item = items[k];
				sis = curr_item.subitems;
				if (!empty(sis)) {
					if (!empty(curr_item.page)) if (curr_item.page == p) id = k;
					for (var kk in sis) if (!empty(sis[kk].page) && !empty(sis[kk].title)) {
//						str += sis[kk].page + ' ' + kk + ' ';
						tplArray = new Array();
						tplArray['title'] = sis[kk].title;
//						alert(sis[kk].page);
						if (p == sis[kk].page) {
							tpl_name = "tpl_submi_sel";
//							alert(k);
							id = k;
						} else {
							tpl_name = "tpl_submi";
							tplArray["href"] = "index.php?p=" + sis[kk].page;
						}
//						tplArray.show();
						te.unsetAll();
						te.assign(tplArray);
//						te.show();
						tpl_content += te.fetch(tpl_name)+"</td><td>";
//						alert(te.fetch(tpl_name));
					}
				}
				te.unsetAll();				
				tplArray = new Array();
				tplArray['tbl_id'] = displayContainerPrefix + k;
				tplArray['tbl_content'] = tpl_content;				
				te.assign(tplArray);
				str = te.fetch("tpl_submenu_container");
				menu_container.innerHTML += str;
//				alert(str);
			}

//			alert(id);
//			alert(menu_container.innerHTML);
			if (!empty(id)) show(id);			
        }
		
}
