var z_rcm_obj=null;
var z_rcm_id='';
var z_rcm_mi='';

var rcm_td_overClass='';
var rcm_td_outClass='';

var z_rcm_tables=new Object();
var z_rcm_timer=0;
var z_rc_menu_tags=new Object();
z_rc_menu_tags=['*'];

var z_rcm_ElementObjectsCache=new Object();

function zrcmenu_getScrollXY() {
  var scrOfX = 0, scrOfY = 0;
  if( typeof( window.pageYOffset ) == 'number' ) {//Netscape compliant
    scrOfY = window.pageYOffset;
    scrOfX = window.pageXOffset;
  } else if( document.body && ( document.body.scrollLeft || document.body.scrollTop ) ) {//DOM compliant
    scrOfY = document.body.scrollTop;
    scrOfX = document.body.scrollLeft;
  } else if( document.documentElement && ( document.documentElement.scrollLeft || document.documentElement.scrollTop ) ) {//IE6 standards compliant mode
    scrOfY = document.documentElement.scrollTop;
    scrOfX = document.documentElement.scrollLeft;
  }
  return [ scrOfX, scrOfY ];
}


var ZRCMenuObj = {

  obj   : null,
  
  init : function(o){
    o.onmouseup = ZRCMenuObj.start;
  },

  start : function(e){
    var o = ZRCMenuObj.obj = this;
    e = ZRCMenuObj.fixE(e);
    
    if(document.all){
      ev=event.button;
      if (ev!=2) return false;
      obj=event.srcElement;
    }else{
      ev=e.which;
      if (ev!=3) return false;
      obj=e.target;
    }
    
    ZRCMenuHideAllMenu();
    z_rcm_obj=obj;
    this.oncontextmenu=new Function("return false");
    
    z_rcm_id=z_rcm_obj.attributes['RCM_ID'].value;
    z_rcm_mi=z_rcm_obj.attributes['RCM_MI']?z_rcm_obj.attributes['RCM_MI'].value:'';
    
    if (z_rcm_obj.attributes['RCMHIDE']){
      var HideTds=z_rcm_obj.attributes['RCMHIDE'].value.split(',');
      if (z_rcm_tables[obj.table_id]['td']){
        for(var key in z_rcm_tables[obj.table_id]['td']){
          var kell=1;
          for(var i=0;i<HideTds.length;i++){
            if (HideTds[i]==z_rcm_tables[obj.table_id]['td'][key]['mi']){
              kell=0;
              break;
            }
          }
          z_rcm_tables[obj.table_id]['td'][key]['trobj'].style.display=(kell==1?'':'none');
        }
      }
    }else{
      if (z_rcm_tables[obj.table_id]['td']){
        for(var key in z_rcm_tables[obj.table_id]['td']){
          z_rcm_tables[obj.table_id]['td'][key]['trobj'].style.display='';
        }
      }
    }
    
    var sc  = zrcmenu_getScrollXY();
    var ex  = e.clientX+sc[0]+1;
    var ey  = e.clientY+sc[1]+1;
    z_rcm_tables[obj.table_id]['table_obj'].style.visibility='visible';
    z_rcm_tables[obj.table_id]['table_obj'].style["left"] = ex + "px";
    z_rcm_tables[obj.table_id]['table_obj'].style["top"] = ey + "px";

    ZRCMenuClearTimer();
    ZRCMenuSetTimer();
    return false;
  },
  
  drag : function(e){
    e = ZRCMenuObj.fixE(e);
    return false;
  },

  end : function(){
    zdrag_drop_div.style.visibility='hidden';
    document.onmousemove = null;
    document.onmouseup   = null;
    onDragDropAction('end',ZRCMenuObj.obj,ZRCMenuObj.overobj);
    ZRCMenuObj.obj = null;
  },

  over : function(){
    
  },

  out : function(){
  },

  fixE : function(e)
  {
    if (typeof e == 'undefined') e = window.event;
    if (typeof e.layerX == 'undefined') e.layerX = e.offsetX;
    if (typeof e.layerY == 'undefined') e.layerY = e.offsetY;
    return e;
  }
};


function ZRCMenuHideAllMenu(){
  for(var key in z_rcm_tables){
    z_rcm_tables[key]['table_obj'].style.visibility='hidden';
  }
}

function ZRCMenuClearTimer(){
  clearTimeout(z_rcm_timer);
}

function ZRCMenuSetTimer(){
  z_rcm_timer=setTimeout(ZRCMenuHideAllMenu,1500);
}

function ZRCMenuGetE(objID){
  if (!z_rcm_ElementObjectsCache[objID]) z_rcm_ElementObjectsCache[objID]=document.getElementById(objID);    
  return z_rcm_ElementObjectsCache[objID];
}

function ZRCMenuInit(){
  var objs;
  var table_obj;
  var table_id;
  var tdmi;
  var tdElement;
  var tdnr;
  
  
  for(var key in z_rc_menu_tags){
    objs=document.getElementsByTagName(z_rc_menu_tags[key]);
    for (i=0;i<objs.length;i++){
      if (objs[i].attributes['RCM_ID'] && objs[i].attributes['RCM_TID']){
        table_id=objs[i].attributes['RCM_TID'].value;
        table_obj=ZRCMenuGetE(table_id);
        if (table_obj){
          //table_obj.style.position='absolute';
          //table_obj.style.visibility='hidden';
          
          objs[i].table_id=table_id;
          ZRCMenuObj.init(objs[i]);
          
          if (!z_rcm_tables[table_id]){
            z_rcm_tables[table_id]=new Object();
            z_rcm_tables[table_id]['table_obj']=table_obj;
            tdnr=0;
            for (var r=0;r<table_obj.rows.length;r++){
              for (var c=0;c<table_obj.rows[r].cells.length;c++){
                tdElement=table_obj.rows[r].cells[c];
                if (tdElement.attributes['RCMTDMI']){
                  tdmi=tdElement.attributes['RCMTDMI'].value;
                  if (!z_rcm_tables[table_id]['td']) z_rcm_tables[table_id]['td']=new Object();
                  z_rcm_tables[table_id]['td'][tdnr]=new Object();
                  z_rcm_tables[table_id]['td'][tdnr]['mi']=tdmi;
                  z_rcm_tables[table_id]['td'][tdnr]['obj']=tdElement;
                  z_rcm_tables[table_id]['td'][tdnr]['trobj']=table_obj.rows[r];
                  tdnr++;
                }
                if (tdElement.addEventListener) { // for FF and NS and Opera
                  tdElement.addEventListener('mouseover',ZRCMenuClearTimer,false);
                  tdElement.addEventListener('mouseout',ZRCMenuSetTimer,false);
                  tdElement.addEventListener('mouseup',ZRCMenuHideAllMenu,false);
                  //if (rcm_td_overClass!=''){
                  //  tdElement.addEventListener('mouseover',function ooo(){alert('alma')},false);
                  //}
                }else if (tdElement.attachEvent){
                  tdElement.attachEvent('onmouseover',ZRCMenuClearTimer);
                  tdElement.attachEvent('onmouseout',ZRCMenuSetTimer);
                  tdElement.attachEvent('onmouseup',ZRCMenuHideAllMenu);
                }                
              }
            }
          }
        }
      }
    }
  }
}
