if(browser.nn4){ window.captureEvents(Event.MOUSEMOVE|Event.MOUSEDOWN); window.onmousemove=doMove; window.onmousedown=doClick; }else{ document.onmousemove=doMove; document.onmousedown=doClick; } var browserWidth=0; var visibleLayer; var layer2show; var timerOff = new Array(); var timerOn = new Array(); function doMove(nn_event){ e=(document.all) ? event : nn_event; mx = (document.layers) ? e.pageX : (window.opera) ? e.clientX : e.clientX+document.body.scrollLeft; my = (document.layers) ? e.pageY : (window.opera) ? e.clientY : e.clientY+document.body.scrollTop; if(visibleLayer){ // window.status = 'mx='+mx+'; my='+my; lx = realPositionX(visibleLayer); ly = realPositionY(visibleLayer); lw = (browser.nn4) ? document.layers[visibleLayer].clip.width : document.getElementById(visibleLayer).offsetWidth; lh = (browser.nn4) ? document.layers[visibleLayer].clip.height : document.getElementById(visibleLayer).offsetHeight; // window.status = 'lx='+ lx+ '; ly='+ly+ '; lw='+lw+ '; lh='+lh; if( mx < lx || my < (ly-30) || mx > lx+lw || my > ly+lh ){ if(!timerOff[visibleLayer]){ timerOff[visibleLayer] = setTimeout('hideSubmenu()', 800); } }else{ if(timerOff[visibleLayer]){ clearTimeout(timerOff[visibleLayer]); timerOff[visibleLayer]=null; } } }else{ // проверяем не вышел ли курсор из зоны меню // если это так, то не показывем подменю if( timerOn[layer2show] && (my<193 || my>225 || mx >738) ){ // window.status='here'; clearTimeout(timerOn[layer2show]); timerOn[layer2show]=null; } } } function doClick(nn_event){ if(visibleLayer){ // если какое то подменю в данный момент показывается // И если объект по, которому кликнули (или любой из его родителей) не является подменю // то скрываем подменю немедленно e=(document.all) ? event : nn_event; elem=(document.all) ? e.srcElement : e.target; while(elem.offsetParent != null){ if(elem.id == visibleLayer)break; elem = elem.offsetParent; if(elem.tagName == 'BODY'){ hideSubmenu(); break; } } } } function realPositionX(which){ if (browser.nn4) { pos = document.layers[which].pageX } else { var elem = (browser.ie4) ? document.all[which] : document.getElementById(which); var pos = elem.offsetLeft; while (elem.offsetParent != null) { elem = elem.offsetParent; pos += elem.offsetLeft; if (elem.tagName == 'BODY') break; } } return pos; } function realPositionY(which) { if (browser.nn4) { pos = document.layers[which].pageY } else { var elem = (browser.ie4) ? document.all[which] : document.getElementById(which); var pos = (elem.offsetTop>0)?elem.offsetTop-2:0; // - эта хитрая строчка позволяет обмануть сразу оперу и мозиллу: мозилле присвоится ее собственное значение > 0, взятое с Tунv; опере присвоится 0 вместо ее собственного значени  < 0 while (elem.offsetParent != null) { elem = elem.offsetParent; pos += elem.offsetTop; if (elem.tagName == 'BODY') break; } } return pos; } function showSubmenu(name){ if(visibleLayer){ hideSubmenu(); } getLayerStyle(name).left = realPositionX(name+'Coord'); getLayerStyle(name).visibility = (browser.nn4) ? 'show' : 'visible'; visibleLayer = name; } function doShowSubmenu(name){ if(submenuLoaded){ /* if(browserWidth!=getBrowserWidth()){ browserWidth=getBrowserWidth(); setSubLayersPositions(); } */ window.status=layerExist(name); if(!timerOn[name] && layerExist(name)){ if(layer2show){ clearTimeout(timerOn[layer2show]); timerOn[layer2show]=null; } layer2show=name; timerOn[layer2show] = setTimeout('showSubmenu("' + layer2show + '")', 200); } // window.status='layer2show='+ layer2show+ 'timerOn='+ timerOn[layer2show]; } } function hideSubmenu(){ if(visibleLayer){ // window.status='0000'; getLayerStyle(visibleLayer).visibility = (browser.nn4) ? 'hide' : 'hidden'; clearTimeout(timerOff[visibleLayer]); clearTimeout(timerOn[visibleLayer]); timerOff[visibleLayer]=null; visibleLayer = null; } } function getLayerStyle(layer){ if(browser.nn4){ layerObj = document.layers[layer]; }else{ if(browser.dom){ layerObj = document.getElementById(layer).style; }else{ layerObj = document.all[layer].style; } } return layerObj; } function layerExist(layer){ var result=( (browser.dom && document.getElementById(layer)) || (browser.nn4 && document.layers[layer]) || (!browser.nn4 && document.all[layer]) ); return result; } function getBrowserWidth(){ var result=(browser.dom)?document.body.clientWidth:window.innerWidth; return result; } /* function setSubLayersPositions(){ for(var i=0; i0){ var obj=subLayers[i]; var leftDivCoordX=realPositionX('submenuDiv'+ obj.current); var rightDivCoordX=realPositionX('submenuDiv'+ (obj.current+1)); obj.layerWidth=rightDivCoordX-leftDivCoordX-1; obj.layerOffsetLeft=leftDivCoordX+1; setSubLayerParams(obj); } } } function setSubLayerParams(obj){ getLayerStyle(obj.layer).width=obj.layerWidth; getLayerStyle(obj.layer).left=obj.layerOffsetLeft; } */ function decodeMail(text) { var elements = reverseText(text).split('<~>'); document.write(buildTag(elements[0], elements[1], elements[2])); } function buildTag(email, text, title) { return '' + ((text) ? text : email) + ''; } function reverseText(text) { var str = ''; for (var i = text.length - 1; i >= 0; i--) str += text.charAt(i); return str; }