	//兼容各主流浏览器/////////////////////////////
	var userAgent = navigator.userAgent.toLowerCase();
	var is_webtv = userAgent.indexOf('webtv') != -1;
	var is_kon = userAgent.indexOf('konqueror') != -1;
	var is_mac = userAgent.indexOf('mac') != -1;
	var is_saf = userAgent.indexOf('applewebkit') != -1 || navigator.vendor == 'Apple Computer, Inc.';
	var is_opera = userAgent.indexOf('opera') != -1 && opera.version();
	var is_moz = (navigator.product == 'Gecko' && !is_saf) && userAgent.substr(userAgent.indexOf('firefox') + 8, 3);
	var is_ns = userAgent.indexOf('compatible') == -1 && userAgent.indexOf('mozilla') != -1 && !is_opera && !is_webtv && !is_saf;
	var is_ie = (userAgent.indexOf('msie') != -1 && !is_opera && !is_saf && !is_webtv) && userAgent.substr(userAgent.indexOf('msie') + 5, 3);
	//基数/////////////////////////////////////////
	function findtags(parentobj, tag) {
		if(!isUndefined(parentobj.getElementsByTagName)) {
			return parentobj.getElementsByTagName(tag);
		} else if(parentobj.all && parentobj.all.tags) {
			return parentobj.all.tags(tag);
		} else {
			return null;
		}
	}
	function $(id) {return document.getElementById(id);}
	function isUndefined(variable) {return typeof variable == 'undefined' ? true : false;}
	function doane(event) {
		e = event ? event : window.event ;
		if(is_ie) {
			e.returnValue = false;
			e.cancelBubble = true;
		} else {
			e.stopPropagation();
			e.preventDefault();
		}
	}
	//基数/////////////////////////////////////////
	
	var jsmenu = new Array();
	jsmenu['active'] = new Array();
	jsmenu['timer'] = new Array();
	jsmenu['iframe'] = new Array();
	
	function initCtrl(ctrlobj, click, duration, timeout, layer) {
		if(ctrlobj && !ctrlobj.initialized) {
			ctrlobj.initialized = true;
			ctrlobj.unselectable = true;
	
			ctrlobj.outfunc = typeof ctrlobj.onmouseout == 'function' ? ctrlobj.onmouseout : null;
			ctrlobj.onmouseout = function() {
				if(this.outfunc) this.outfunc();
				if(duration < 3) jsmenu['timer'][ctrlobj.id] = setTimeout('hideMenu(' + layer + ')', timeout);
			}
	
			if(click && duration) {
				ctrlobj.clickfunc = typeof ctrlobj.onclick == 'function' ? ctrlobj.onclick : null;
				ctrlobj.onclick = function (e) {
					doane(e);
					if(jsmenu['active'][layer] == null || jsmenu['active'][layer].ctrlkey != this.id) {
						if(this.clickfunc) this.clickfunc();
						else showMenu(this.id, true);
					} else {
						hideMenu(layer);
					}
				}
			}
	
			ctrlobj.overfunc = typeof ctrlobj.onmouseover == 'function' ? ctrlobj.onmouseover : null;
			ctrlobj.onmouseover = function(e) {
				doane(e);
				if(this.overfunc) this.overfunc();
				if(click) {
					clearTimeout(jsmenu['timer'][this.id]);
				} else {
					for(var id in jsmenu['timer']) {
						if(jsmenu['timer'][id]) clearTimeout(jsmenu['timer'][id]);
					}
				}
			}
		}
	}
	
	function initMenu(ctrlid, menuobj, duration, timeout, layer) {
		if(menuobj && !menuobj.initialized) {
			menuobj.initialized = true;
			menuobj.ctrlkey = ctrlid;
			menuobj.onclick = ebygum;
			menuobj.style.position = 'absolute';
			if(duration < 3) {
				if(duration > 1) {
					menuobj.onmouseover = function() {
						clearTimeout(jsmenu['timer'][ctrlid]);
					}
				}
				if(duration != 1) {
					menuobj.onmouseout = function() {
						jsmenu['timer'][ctrlid] = setTimeout('hideMenu(' + layer + ')', timeout);
					}
				}
			}
			menuobj.style.zIndex = 50;
			if(is_ie && !is_mac) {
				menuobj.style.filter += "progid:DXImageTransform.Microsoft.shadow(direction=135,color=#CCCCCC,strength=3)";
			}
			initMenuContents(menuobj);
		}
	}
	
	function initMenuContents(menuobj) {
		if(menuobj.title == 'menu') {
			menuobj.style.filter += "progid:DXImageTransform.Microsoft.Alpha(opacity=90,finishOpacity=100,style=0)";
			menuobj.style.opacity = 0.9;
			menuobj.title = '';
		} else {
			var tds = findtags(menuobj, 'td');
			for(var i = 0; i < tds.length; i++) {
				if(tds[i].className == 'popupmenu_option' || tds[i].className == 'editor_colornormal') {
					if(is_ie && !is_mac) {
						tds[i].style.filter += "progid:DXImageTransform.Microsoft.Alpha(opacity=90,finishOpacity=100,style=0)";
					}
					tds[i].style.opacity = 0.9;
					if(tds[i].title && tds[i].title == 'nohighlight') {
						tds[i].title = '';
					} else {
						tds[i].ctrlkey = this.ctrlkey;
						if(tds[i].className != 'editor_colornormal') {
							tds[i].onmouseover = menuoption_onmouseover;
							tds[i].onmouseout = menuoption_onmouseout;
						}
						if(typeof tds[i].onclick == 'function') {
							tds[i].clickfunc = tds[i].onclick;
							tds[i].onclick = menuoption_onclick_function;
						} else {
							tds[i].onclick = menuoption_onclick_link;
						}
						if(!is_saf && !is_kon)	{
							try {
								links = findtags(tds[i], 'a');
								for(var j = 0; j < links.length; j++) {
									if(isUndefined(links[j].onclick)) {
										links[j].onclick = ebygum;
									}
								}
							}
							catch(e) {}
						}
					}
				}
			}
		}
	}
	
	function showMenu(ctrlid, click, offset, duration, timeout, layer, showid, maxh) {
		var ctrlobj = $(ctrlid);
		if(!ctrlobj) return;
		if(isUndefined(click)) click = false;
		if(isUndefined(offset)) offset = 0;
		if(isUndefined(duration)) duration = 2;
		if(isUndefined(timeout)) timeout = 100;
		if(isUndefined(layer)) layer = 0;
		if(isUndefined(showid)) showid = ctrlid;
		var showobj = $(showid);
		var menuobj = $(showid + '_menu');
		if(!showobj|| !menuobj) return;
		if(isUndefined(maxh)) maxh = 400;
	
		hideMenu(layer);
	
		for(var id in jsmenu['timer']) {
			if(jsmenu['timer'][id]) clearTimeout(jsmenu['timer'][id]);
		}
	
		initCtrl(ctrlobj, click, duration, timeout, layer);
		initMenu(ctrlid, menuobj, duration, timeout, layer);
	
		menuobj.style.display = '';
		if(!is_opera) {
			menuobj.style.clip = 'rect(auto, auto, auto, auto)';
		}
	
		var showobj_pos = fetchOffset(showobj);
		var showobj_x = showobj_pos['left'];
		var showobj_y = showobj_pos['top'];
		var showobj_w = showobj.offsetWidth;
		var showobj_h = showobj.offsetHeight;
		var menuobj_w = menuobj.offsetWidth;
		var menuobj_h = menuobj.offsetHeight;
	
		menuobj.style.left = (showobj_x + menuobj_w > document.body.clientWidth) && (showobj_x + showobj_w - menuobj_w >= 0) ? showobj_x + showobj_w - menuobj_w + 'px' : showobj_x + 'px';
		menuobj.style.top = offset == 1 ? showobj_y + 'px' : (offset == 2 || ((showobj_y + showobj_h + menuobj_h > document.body.scrollTop + document.body.clientHeight) && (showobj_y - menuobj_h >= 0)) ? (showobj_y - menuobj_h) + 'px' : showobj_y + showobj_h + 'px');
	
		if(menuobj.style.clip && !is_opera) {
			menuobj.style.clip = 'rect(auto, auto, auto, auto)';
		}
	
		if(is_ie && is_ie < 7) {
			if(!jsmenu['iframe'][layer]) {
				var iframe = document.createElement('iframe');
				iframe.style.display = 'none';
				iframe.style.position = 'absolute';
				iframe.style.filter = 'progid:DXImageTransform.Microsoft.Alpha(style=0,opacity=0)';
				$('jsmenu_parent') ? $('jsmenu_parent').appendChild(iframe) : menuobj.parentNode.appendChild(iframe);
				jsmenu['iframe'][layer] = iframe;
			}
			jsmenu['iframe'][layer].style.top = menuobj.style.top;
			jsmenu['iframe'][layer].style.left = menuobj.style.left;
			jsmenu['iframe'][layer].style.width = menuobj_w;
			jsmenu['iframe'][layer].style.height = menuobj_h;
			jsmenu['iframe'][layer].style.display = 'block';
		}
	
		if(maxh && menuobj.scrollHeight > maxh) {
			menuobj.style.height = maxh + 'px';
			if(is_opera) {
				menuobj.style.overflow = 'auto';
			} else {
				menuobj.style.overflowY = 'auto';
			}
			menuobj.style.width='20px';
		}
	
		if(!duration) {
			setTimeout('hideMenu(' + layer + ')', timeout);
		}
	
		jsmenu['active'][layer] = menuobj;
	}
	
	function hideMenu(layer) {
		if(isUndefined(layer)) layer = 0;
		if(jsmenu['active'][layer]) {
			clearTimeout(jsmenu['timer'][jsmenu['active'][layer].ctrlkey]);
			jsmenu['active'][layer].style.display = 'none';
			if(is_ie && is_ie < 7 && jsmenu['iframe'][layer]) {
				jsmenu['iframe'][layer].style.display = 'none';
			}
			jsmenu['active'][layer] = null;
		}
	}
	
	function fetchOffset(obj) {
		var left_offset = obj.offsetLeft;
		var top_offset = obj.offsetTop;
		while((obj = obj.offsetParent) != null) {
			left_offset += obj.offsetLeft;
			top_offset += obj.offsetTop;
		}
		return { 'left' : left_offset, 'top' : top_offset };
	}
	
	function ebygum(eventobj) {
		if(!eventobj || is_ie) {
			window.event.cancelBubble = true;
			return window.event;
		} else {
			if(eventobj.target.type == 'submit') {
				eventobj.target.form.submit();
			}
			eventobj.stopPropagation();
			return eventobj;
		}
	}
	
	function menuoption_onclick_function(e) {
		this.clickfunc();
		hideMenu();
	}
	
	function menuoption_onclick_link(e) {
		choose(e, this);
	}
	
	function menuoption_onmouseover(e) {
		this.className = 'popupmenu_highlight';
	}
	
	function menuoption_onmouseout(e) {
		this.className = 'popupmenu_option';
	}
	
	function choose(e, obj) {
		var links = findtags(obj, 'a');
		if(links[0]) {
			if(is_ie) {
				links[0].click();
				window.event.cancelBubble = true;
			} else {
				if(e.shiftKey) {
					window.open(links[0].href);
					e.stopPropagation();
					e.preventDefault();
				} else {
					window.location = links[0].href;
					e.stopPropagation();
					e.preventDefault();
				}
			}
			hideMenu();
		}
	}

