ipsmenu = new ips_menu();

function ips_menu(){
 this.menu_registered = new Array();
 this.menu_openfuncs = new Array();
 this.menu_over_css = new Array();
 this.menu_out_css = new Array();
 this.menu_open_event = new Array();
 this.dynamic_register = new Array();
 this.menu_cur_open = null;
 this.dynamic_html  =null
}

ips_menu.prototype.register = function(cid,callback,menu_over_css,menu_out_css,event_type){
 if(event_type){
  this.menu_open_event[cid]=(event_type=='onmouseover')?'onmouseover':'onclick'}
  this.menu_registered[cid]=new ips_menu_class(cid);
  
  if(callback){
   this.menu_openfuncs[cid]=callback}
   if(menu_over_css&&menu_out_css){
    this.menu_over_css[cid]=menu_over_css;
    this.menu_out_css[cid]=menu_out_css}
    return this.menu_registered[cid]
   };
   
   ips_menu.prototype.close=function(){
    if(this.menu_cur_open){
     this.menu_registered[this.menu_cur_open].close()
    }
   };
   
   function ips_menu_class(cid){
    this.cid=cid;this.initialized=false;
    this.init_control_object();
    this.init_menu()};
    
    ips_menu_class.prototype.init_control_object = function(){
    this.cid_obj=document.getElementById(this.cid);
    try{
     this.cid_obj.style.cursor="pointer"}catch(e){
     this.cid_obj.style.cursor="hand"
     }
     
     this.cid_obj.unselectable=true;
     if(ipsmenu.menu_open_event[this.cid]=='onmouseover'){
      this.cid_obj.onmouseover=ips_menu_events.prototype.event_onclick}else
      {
       this.cid_obj.onclick=ips_menu_events.prototype.event_onclick;
       this.cid_obj.onmouseover=ips_menu_events.prototype.event_onmouseover}
       this.cid_obj.onmouseout=ips_menu_events.prototype.event_onmouseout};
       ips_menu_class.prototype.init_menu=function(){this.cid_menu_obj=document.getElementById(this.cid+'_menu');
       if(this.cid_menu_obj){if(this.initialized){return}
       this.cid_menu_obj.style.display="none";this.cid_menu_obj.style.position="absolute";
       this.cid_menu_obj.style.left="0px";this.cid_menu_obj.style.top="0px";
       this.cid_menu_obj.onclick=ipsclass.cancel_bubble_low;this.cid_menu_obj.zIndex=50;
       this.initialized=true}};ips_menu_class.prototype.open=function(obj){if(!this.cid_menu_obj){
       this.initialized=false;this.init_menu()}if(ipsmenu.menu_cur_open!=null){
       ipsmenu.menu_registered[ipsmenu.menu_cur_open].close()}if(ipsmenu.menu_cur_open==obj.id){return false}ipsmenu.menu_cur_open=obj.id;
       var left_px=ipsclass.get_obj_leftpos(obj);var top_px=ipsclass.get_obj_toppos(obj)+obj.offsetHeight;
       var ifid=obj.id;
       
       this.cid_menu_obj.style.zIndex=-1;this.cid_menu_obj.style.display="";
       var width=parseInt( this.cid_menu_obj.style.width)?parseInt( 
       this.cid_menu_obj.style.width):this.cid_menu_obj.offsetWidth;
       if((left_px+width)>=document.body.clientWidth){left_px=left_px+obj.offsetWidth-width}
       if(is_moz){top_px-=1}this.cid_menu_obj.style.left=left_px+"px";
       this.cid_menu_obj.style.top=top_px+"px";this.cid_menu_obj.style.zIndex=100;if(ipsmenu.menu_openfuncs[obj.id]){
       eval(ipsmenu.menu_openfuncs[obj.id])}if(is_ie){try{if(!document.getElementById('if_'+obj.id)){
       var iframeobj=document.createElement('iframe');
       iframeobj.src='javascript:;';iframeobj.id='if_'+obj.id;document.getElementsByTagName('body').appendChild(iframeobj)}else{
       var iframeobj=document.getElementById('if_'+obj.id)}iframeobj.scrolling='no';iframeobj.frameborder='no';
       iframeobj.className='iframeshim';iframeobj.style.position='absolute';iframeobj.style.width=parseInt(
       this.cid_menu_obj.offsetWidth)+'px';iframeobj.style.height=parseInt(this.cid_menu_obj.offsetHeight)+'px';
       iframeobj.style.top=this.cid_menu_obj.style.top;iframeobj.style.left=this.cid_menu_obj.style.left;
       iframeobj.style.zIndex=99;iframeobj.style.display="block"}catch(error){}}if(is_safari){
       try{mlinks=this.cid_menu_obj.getElementsByTagName('a');for(var i=0;i<=mlinks.length;i++){
       if(mlinks[i]!=null&&mlinks[i].href!=null&&mlinks[i].href&&(mlinks[i].href.indexOf('#',0)!=(mlinks[i].href.length-1))){
       mlinks[i].onmousedown=ips_menu_events.prototype.event_safari_onclick_handler;mlinks[i].id='saf-link-'+this.cid+i}}}catch(error){}}
       if(this.cid_obj.editor_id){this.cid_obj.state=true;IPS_editor[this.cid_obj.editor_id].set_menu_context(this.cid_obj,'mousedown')}
       return false};ips_menu_class.prototype.close=function(){if(this.cid_menu_obj!=null){this.cid_menu_obj.style.display="none"}else 
       if(ipsmenu.menu_cur_open!=null){ipsmenu.menu_registered[ipsmenu.menu_cur_open].cid_menu_obj.style.display='none'}ipsmenu.menu_cur_open=null;
       if(this.cid_obj){if(ipsmenu.menu_out_css[this.cid_obj.id]){this.cid_obj.className=ipsmenu.menu_out_css[this.cid_obj.id]}}
       if(is_ie){try{document.getElementById('if_'+this.cid).style.display="none"}catch(error){}}if(this.cid_obj.editor_id){
       this.cid_obj.state=false;IPS_editor[this.cid_obj.editor_id].set_menu_context(this.cid_obj,'mouseout')}};
       ips_menu_class.prototype.hover=function(e){if(ipsmenu.menu_cur_open!=null){if(ipsmenu.menu_registered[ipsmenu.menu_cur_open].cid!=this.id){
       this.open(e)}}};function ips_menu_events(){};ips_menu_events.prototype.event_safari_onclick_handler=function(){
       if(this.id){
       window.location=document.getElementById(this.id).href}};ips_menu_events.prototype.event_onmouseover=function(e){
       e=ipsclass.cancel_bubble(e,true);ipsmenu.menu_registered[this.id].hover(this);if(ipsmenu.menu_over_css[this.id]){
       this.className=ipsmenu.menu_over_css[this.id]}};ips_menu_events.prototype.event_onmouseout=function(e){
       e=ipsclass.cancel_bubble(e,true);if(ipsmenu.menu_out_css[this.id]&&ipsmenu.menu_cur_open!=this.id){
       this.className=ipsmenu.menu_out_css[this.id]}};ips_menu_events.prototype.event_onclick=function(e){
       e=ipsclass.cancel_bubble(e,true);if(ipsmenu.menu_cur_open==null){if(ipsmenu.menu_over_css[this.id]){
       this.className=ipsmenu.menu_over_css[this.id]}ipsmenu.menu_registered[this.id].open(this)}else{
       if(ipsmenu.menu_cur_open==this.id){ipsmenu.menu_registered[this.id].close();if(ipsmenu.menu_out_css[this.id]){
       this.className=ipsmenu.menu_out_css[this.id]}}else{if(ipsmenu.menu_over_css[this.id]){this.className=ipsmenu.menu_over_css[this.id]}
       ipsmenu.menu_registered[this.id].open(this)}}};function menu_do_global_init(){document.onclick=menu_action_close;
       if(ipsmenu.dynamic_html!=null&&ipsmenu.dynamic_html!=''){}if(ipsmenu.dynamic_register.length){
       for(var i=0;i<ipsmenu.dynamic_register.length;i++){if(ipsmenu.dynamic_register[i]){ipsmenu.register(ipsmenu.dynamic_register[i])}}}};
       
       function menu_action_close(e){try{if(e.button==2||e.button==3){return}}catch(acold){};ipsmenu.close(e)};
       
       
       
       
       
