
nus.require("nus.ui.*");nus.menu={rootMenu:null,_parentObject:null,show:function(config){this.hide();this.rootMenu=nus.menu.PopupMenu.createInstance({isVisible:false},config);nus.dom.showPopup(this.rootMenu,"nus.menu.hidePopupMenu(true)",false,config.isLightPopup||false);},hide:function(isCancel){this.hidePopupMenu.apply(this,arguments);},showPopupMenu:function(parentObject,left,top,menuItems,isLightPopup){isLightPopup=isLightPopup||false;this.hidePopupMenu();panelAttributes=menuItems.panelAttributes||{};this._parentObject=parentObject||null;this.rootMenu=nus.menu.PopupMenu.createInstance({left:left,top:top,menuItems:menuItems},panelAttributes);nus.dom.showPopup(this.rootMenu,"nus.menu.hidePopupMenu(true)",false,isLightPopup);},hidePopupMenu:function(isCancel){if(!this.rootMenu)return;if(isCancel){if(this._parentObject&&this._parentObject.onCommand){this._parentObject.onCommand("on_cancel_menu");}}
nus.dom.hidePopup(this.rootMenu);this.rootMenu.destroy();this.rootMenu=null;},onSelect:function(item){var type=item.type||"command";switch(type){case"command":this._parentObject.onCommand(item.value,item.param);break;case"function":if(typeof item.value=="string"){eval(item.value);}
else{var param=item.param||[];if(!(param instanceof Array)){param=[param];}
item.value.apply(window,param);}
break;}}};nus.dom.css.declareCSS("\
 .n_menu_box {border:solid 1px #404040; background-Color:#ffffff;cursor:default;} \
 .n_popupmenu {padding:2px;font-size:12px;cursor:pointer;} \
 .n_iconbox   {} \
 .n_popupmenu .n_item_focus {background-color: #60BFF0; color: #ffffff; } \
 .n_popupmenu .n_item_icon {padding:2px;} \
 .n_popupmenu .n_item_icon img {} \
 .n_popupmenu .n_item_name {padding:2px;font-size:12px;} \
 .n_popupmenu .n_item_expand {padding:0px;padding-bottom:5px;} \
 .n_popupmenu .n_item_control {background-color:#ffffff;padding:4px 0px 4px 0px;} \
 .n_popupmenu .n_item_control_name {width:100%;height:100%;padding:4px 0px 4px 0px; \
  border:solid 1px #c0c0c0;background-color:#e8e8e8;} \
 .n_popupmenu .n_menu_separator {font-size:1px;} \
 .n_popupmenu .n_menu_separator .n_item_icon {padding:4px 0px 4px 0px;width:20px;} \
 .n_popupmenu .n_menu_separator .n_item_name {padding:4px 0px 4px 0px;} \
 .n_popupmenu .n_menu_separator .n_item_separator {background-color:buttonshadow;margin:4px 4px 4px 4px;height:1px;} \
 .n_popupmenu .n_menu_separator .n_separator_line {width:95%;height:0px;margin:4px 0px;border-top:solid 1px #c0c0c0;border-bottom:solid 1px #f0f0f0;} \
");nus.menu.PopupMenu=nus.ui.RoundBox.extend({overflow:"visible",zIndex:nus.dom.highestZIndex,hasShadow:false,initialStyle:"",minWidth:0,menuItems:null,hasIcon:true,hasScrollBar:false,isVisible:false,_focusItem:null,_subMenu:null,_isFocused:null,_controls:null,_submenuCache:null,onCreate:function(){nus.menu.PopupMenu.superCall(this,"onCreate",arguments);this._controls=[];this._submenuCache=[];var html=[];html[0]="<table id='"+this.ID+"_menu_table' border='0' cellpadding='0' cellspacing='0' class='n_popupmenu' style='"
+this.initialStyle+"'>";var menu_handler="onclick='"+this.ID+".onSelectItem(this)' onmouseover='"+this.ID+".onMouseOverItem(this)' onmouseout='"+this.ID+".onMouseOutItem(this)'";var menuItems=this.menuItems;for(var i=0,item;item=menuItems[i];i++){if(item.isHide){continue;}
if(item.type=="separator"){html.push("<tr class='n_menu_separator'><td colspan='3'><div class='n_separator_line'></div></td></tr>");continue;}
html.push("<tr menuindex='"+i+"' "+menu_handler+">");if(item.type!="control"){if(this.hasIcon){html.push("<td class='n_item_icon'>");if(item.icon){html.push("<img src='"+item.icon+"' class='n_item_icon_img' algin='absmiddle'/>");}
else{}
html.push("</td>");}
html.push("<td class='n_item_name' nowrap='true'>");html.push(item.name);html.push("</td>");if(item.type=="submenu"){html.push("<td align='right' style='padding-right:3px;'> <span style='font-family:arial;font-size:8px;'> ►</span></td>");}else{html.push("<td></td>");}}
else{if(item.name){html.push("<td class='n_item_control' colspan='2' align='center'><div class='n_item_control_name'>"+item.name+"</div>");}
html.push("</tr><tr menuindex='"+i+"' "+menu_handler+">");html.push("<td colspan='2' align='center' style='background-color:#ffffff;'>");var temp=["<table border='0' cellspacing='0' cellPadding='0' style='background-color:#ffffff;'><tr>"];var objectData=item.value;for(var k=0;k<objectData.length;k++){if(objectData[k].name){temp.push("<td align='right'>"+objectData[k].name+"</td>");}
temp.push("<td align='center' id='"+this.ID+"_subcontrol"+this._controls.length+"'></td>");this._controls.push({menuIndex:this._controls.length,data:objectData[k]});}
temp.push("</tr></table>");html.push(temp.join(""));html.push("</td>");}
html.push("</tr>");}
html.push("</table>");this.setContents(html.toHTML());this.$.oncontextmenu=$RETURN_FALSE;if(this.hasScrollBar){this.setStyle({overflowY:"auto"});}
if(this.hasIcon){}
for(var i=0;i<this._controls.length;i++){var span=$(this.ID+"_subcontrol"+this._controls[i].menuIndex);var data=this._controls[i].data;var obj=data.classType.createInstance(data.attributes,{parentObject:this});span.appendChild(obj._dom_element);obj.setStyle({position:"relative"});this._controls[i].object=obj;}
this.setVisible(true);this.smartPlace();return true;},onShow:function(isVisible){if(isVisible&&nus.isIE6){this._adjustHeight();}},smartPlace:function(){var x=this.left;var y=this.top;this.move(0,0);var rc=nus.dom.getObjectRect(this.$node(0));var w=rc.getWidth();var h=rc.getHeight();if(w<this.minWidth){$(this.ID+"_menu_table").style.width=this.minWidth+"px";rc=nus.dom.getObjectRect(this.$node(0));w=rc.getWidth();}
var org=nus.dom.getScrollPos();if(x+w>org.x+nus.dom.getPageWidth()){if(this.parentMenu){x=this.parentMenu.left-w;}
else{x=org.x+nus.dom.getPageWidth()-w-20;}}
if(x<org.x){x=org.x;}
if(y+h>org.y+nus.dom.getPageHeight()){y=org.y+nus.dom.getPageHeight()-h;}
if(y<org.y){y=org.y;}
this.move(x,y);},showSubMenu:function(submenuItems,x,y){this.hideSubMenu();if(!submenuItems.menuObject){panelAttributes=submenuItems.panelAttributes||{};submenuItems.menuObject=nus.menu.PopupMenu.createInstance({left:x,top:y,parentMenu:this,menuItems:submenuItems},panelAttributes);this._submenuCache.push(submenuItems);}
this._subMenu=submenuItems.menuObject;this._subMenu.setVisible(true);},hideSubMenu:function(){if(!this._subMenu)return;this._subMenu.hideSubMenu();this._subMenu.setVisible(false);this._subMenu=null;},onMouseDown:function(ev){},onSelectItem:function(item){var index=item.getAttribute("menuindex");if(this.menuItems[index].type=="submenu"||this.menuItems[index].type=="control"){return;}
nus.menu.hidePopupMenu();nus.menu.onSelect(this.menuItems[index]);},onMouseOverItem:function(item){if(this._focusItem==item){return;}
if(this._focusItem){this.hideSubMenu();this.onMouseOutItem(this._focusItem);}
this._focusItem=item;var index=item.getAttribute("menuindex");if(this.menuItems[index].type=="control"||this.menuItems[index].type=="label"){return;}
$addClassName(item,"n_item_focus");if(this.menuItems[index].type=="submenu"){var submenu=this.menuItems[index].value;if(typeof submenu=="string"){submenu=eval(submenu);}
this.showSubMenu(submenu,this.left+item.offsetLeft+item.offsetWidth,this.top+item.offsetTop);}},onMouseOutItem:function(item){if(this._subMenu){return;}
this._focusItem=null;$removeClassName(item,"n_item_focus");},onDestroy:function(){this.hideSubMenu();for(var i=0;i<this._controls.length;i++){this._controls[i].object.destroy();delete this._controls[i];}
for(var i=0;i<this._submenuCache.length;i++){this._submenuCache[i].menuObject.destroy();this._submenuCache[i].menuObject=null;}
delete this._submenuCache;nus.menu.PopupMenu.superCall(this,"onDestroy");}});