﻿// global menu statevar menuReady = false;// pre-cache menubar image pairsif (document.images) {    var imagesNormal = new Array();    imagesNormal["about"] = new Image();    imagesNormal["about"].src = "common/images/header_menu_images/about.gif";    imagesNormal["products"] = new Image();    imagesNormal["products"].src  = "common/images/header_menu_images/products.gif";    imagesNormal["support"] = new Image();    imagesNormal["support"].src  = "common/images/header_menu_images/support.gif";    imagesNormal["service"] = new Image();    imagesNormal["service"].src  = "common/images/header_menu_images/service.gif";    imagesNormal["download"] = new Image();    imagesNormal["download"].src  = "common/images/header_menu_images/download.gif";    imagesNormal["contact"] = new Image();    imagesNormal["contact"].src  = "common/images/header_menu_images/contact.gif";    var imagesHilite = new Array();    imagesHilite["about"] = new Image();    imagesHilite["about"].src = "common/images/header_menu_images/about_.gif";    imagesHilite["products"] = new Image();    imagesHilite["products"].src  = "common/images/header_menu_images/products_.gif";    imagesHilite["support"] = new Image();    imagesHilite["support"].src  = "common/images/header_menu_images/support_.gif";    imagesHilite["service"] = new Image();    imagesHilite["service"].src  = "common/images/header_menu_images/service_.gif";    imagesHilite["download"] = new Image();    imagesHilite["download"].src  = "common/images/header_menu_images/download_.gif";    imagesHilite["contact"] = new Image();    imagesHilite["contact"].src  = "common/images/header_menu_images/contact_.gif";}function getElementStyle(elem, IEStyleProp, CSSStyleProp) {    if (elem.currentStyle) {        return elem.currentStyle[IEStyleProp];    } else if (window.getComputedStyle) {        var compStyle = window.getComputedStyle(elem, "");        return compStyle.getPropertyValue(CSSStyleProp);    }    return "";}// carry over some critical menu style sheet attribute valuesvar CSSRuleValues = {menuItemHeight:"18px",                     menuItemLineHeight:"1.4em",                     menuWrapperBorderWidth:"2px",                     menuWrapperPadding:"3px",                     defaultBodyFontSize:"12px"                    };// specifications for menu contents and menubar image associationsvar menus = new Array();menus[0] = {mBarImgId:"menuImg_1",            mBarImgNormal:imagesNormal["about"],            mBarImgHilite:imagesHilite["about"],            menuItems:[],            elemId:""           };menus[1] = {mBarImgId:"menuImg_2",            mBarImgNormal:imagesNormal["products"],            mBarImgHilite:imagesHilite["products"],            menuItems:[ {text:"زیر ساخت سکو", href:"products/sakko.html"},                         {text:"خط تولید نرم افزار", href:"products/spl.html"},                         {text:"میز کار الکترونیک", href:"products/electronic_workbench.html"},                        {text:"سیستم مکاتبات (دبیرخانه)", href:"products/mokatebat.html"},                        {text:"سیستم نمابر", href:"products/fax.html"},                        {text:"سیستم آرشیو", href:"products/archive.html"},                        {text:"راهكار پيامك رسان", href:"products/sms.html"},                        {text:"نرم افزار کارا", href:"products/kara.html"},                        {text:"جدولساز برسا", href:"products/crossword.html"}                                              ],            elemId:""           };menus[2] = {mBarImgId:"menuImg_3",             mBarImgNormal:imagesNormal["support"],            mBarImgHilite:imagesHilite["support"],            menuItems:[ {text:"استقرار و پشتیبانی", href:"support.html"},                         {text:"نمایندگی فروش", href:"sale.html"},                        {text:"پشتیبانی پروژه ها", href:"login.aspx"}                      ],            elemId:""           };           menus[3] = {mBarImgId:"menuImg_4",            mBarImgNormal:imagesNormal["service"],            mBarImgHilite:imagesHilite["service"],            menuItems:[],            elemId:""           };           menus[4] = {mBarImgId:"menuImg_5",            mBarImgNormal:imagesNormal["download"],            mBarImgHilite:imagesHilite["download"],            menuItems:[],            elemId:""           };           menus[5] = {mBarImgId:"menuImg_6",            mBarImgNormal:imagesNormal["contact"],            mBarImgHilite:imagesHilite["contact"],            menuItems:[ {text:"تماس با ما", href:"contact_us.html"},                         {text:"درخواست همكاري", href:"jobs/jobs.html"}                      ],             elemId:""           };
           //menus[5] = {mBarImgId:"menuImg_6",//            mBarImgNormal:imagesNormal["contact"],//            mBarImgHilite:imagesHilite["contact"],//            menuItems:[],//            elemId:""//           };// create hash table-like lookup for menu objects with id string indexesfunction makeHashes() {    for (var i = 0; i < menus.length; i++) {        menus[menus[i].elemId] = menus[i];        menus[menus[i].mBarImgId] = menus[i];    }}// assign menu label image event handlersfunction assignLabelEvents() {    var elem;    for (var i = 0; i < menus.length; i++) {        elem = document.getElementById(menus[i].mBarImgId);        elem.onmouseover = swap;        elem.onmouseout = swap;    }}// invoked from init(), generates the menu div elements and their contents.// all this action is invisible to user during constructionfunction makeMenus() {    var menuDiv, menuItem, itemLink, mbarImg, textNode, offsetLeft, offsetTop;    // determine key adjustment factors for the total height of menu divs        var menuItemH = 0;    var bodyFontSize = parseInt(getElementStyle(document.body, "fontSize", "font-size"));    if( isNaN( bodyFontSize )   )    {        var compStyle = window.getComputedStyle(document.body, "");        bodyFontSize = parseInt(compStyle.getPropertyValue("font-size"));    }    // test to see if browser's font size has been adjusted by the user    // and that the new size registers as an applied style property    if (bodyFontSize == parseInt(CSSRuleValues.defaultBodyFontSize)) {        menuItemH = (parseFloat(CSSRuleValues.menuItemHeight));    } else {        // works nicely in Netscape 7        menuItemH = parseInt(parseFloat(CSSRuleValues.menuItemLineHeight) * bodyFontSize);    }    var heightAdjust = parseInt(CSSRuleValues.menuWrapperPadding) +         parseInt(CSSRuleValues.menuWrapperBorderWidth);    if (navigator.appName == "Microsoft Internet Explorer" &&         navigator.userAgent.indexOf("Win") != -1 &&         (typeof document.compatMode == "undefined" ||         document.compatMode == "BackCompat")) {        heightAdjust = -heightAdjust;    }        // use menus array to drive div creation loop    for (var i = 0; i < menus.length; i++) {        menuDiv = document.createElement("div");        menuDiv.id = "popupmenu" + i;        // preserve menu's ID as property of the menus array item        menus[i].elemId = "popupmenu" + i;        menuDiv.className = "menuWrapper";        if (menus[i].menuItems.length > 0) {            menuDiv.style.height = (menuItemH * menus[i].menuItems.length) -             heightAdjust +1 + "px";        } else {            // don't display any menu div lacking menu items            menuDiv.style.display = "none";        }        // define event handlers        menuDiv.onmouseover = keepMenu;        menuDiv.onmouseout = requestHide;        // set stacking order in case other layers are around the page        menuDiv.style.zIndex = 1000;                // assemble menu item elements for inside menu div        for (var j = 0; j < menus[i].menuItems.length; j++) {            menuItem = document.createElement("div");            menuItem.id = "popupmenuItem_" + i + "_" + j;            menuItem.className = "menuItem";            menuItem.onmouseover = toggleHighlight;            menuItem.onmouseout = toggleHighlight;            menuItem.onclick = hideMenus;            menuItem.style.top = menuItemH * j + "px";            itemLink = document.createElement("a");            itemLink.href = menus[i].menuItems[j].href;            itemLink.target="body_frame";            itemLink.className = "menuItem";            itemLink.onmouseover = toggleHighlight;            itemLink.onmouseout = toggleHighlight;            textNode = document.createTextNode(menus[i].menuItems[j].text);            itemLink.appendChild(textNode);           // itemLink.innerHTML = "<div style=\"width:2px; height:15px; border-width:0px; background-color:Red; background-position:right\"/></div>"+ itemLink.innerHTML;            menuItem.appendChild(itemLink);            menuDiv.appendChild(menuItem);        }        // append each menu div to the body        document.body.appendChild(menuDiv);    }                makeHashes();    assignLabelEvents();    // pre-position menu    for (i = 0; i < menus.length; i++) {        positionMenu(menus[i].elemId);    }    menuReady = true;}// initialize global that helps manage menu hidingvar timer;// invoked from mouseovers inside menus to cancel hide// request from mouseout of menu bar image et al.function keepMenu() {    clearTimeout(timer);}function cancelAll() {    keepMenu();    menuReady = false;}// invoked from mouseouts to request hiding all menus// in 1/4 second, unless cancelledfunction requestHide() {    timer = setTimeout("hideMenus()", 250);}// "brute force" hiding of all menus and restoration// of normal menu bar imagesfunction hideMenus() {    for (var i = 0; i < menus.length; i++) {       document.getElementById(menus[i].mBarImgId).src = menus[i].mBarImgNormal.src;       var menu = document.getElementById(menus[i].elemId)       menu.style.visibility = "hidden";    }}// set menu position just before displaying itfunction positionMenu(menuId){    // use the menu bar image for position reference of related div    var mBarImg = document.getElementById(menus[menuId].mBarImgId);    var menuDiv = document.getElementById(menuId);    var offsetTrail = mBarImg;    var offsetLeft = -88;//??size of menuDive?    var offsetTop = 4;    while (offsetTrail) {        offsetLeft += offsetTrail.offsetLeft;        offsetTop += offsetTrail.offsetTop;        offsetTrail = offsetTrail.offsetParent;    }    if (navigator.userAgent.indexOf("Mac") != -1 && typeof document.body.leftMargin != "undefined") {        offsetLeft += document.body.leftMargin;        offsetTop += document.body.topMargin;    }    menuDiv.style.left = offsetLeft + "px";    menuDiv.style.top = offsetTop + mBarImg.height + "px";}// display a particular menu divfunction showMenu(menuId) {    if (menuReady) {        keepMenu();        hideMenus();        positionMenu(menuId);        var menu = document.getElementById(menuId);        menu.style.visibility = "visible";    }}// menu bar image swapping, invoked from mouse events in menu bar// swap style sheets for menu items during rolloversfunction toggleHighlight(evt) {    evt = (evt) ? evt : ((event) ? event : null);    if (typeof menuReady != "undefined") {        if (menuReady && evt) {            var elem = (evt.target) ? evt.target : evt.srcElement;            if (elem.nodeType == 3) {                elem = elem.parentNode;            }            if (evt.type == "mouseover") {                keepMenu();                elem.className ="menuItemOn";            } else {                elem.className ="menuItem";                requestHide();            }            evt.cancelBubble = true;        }    }}function swap(evt) {    evt = (evt) ? evt : ((event) ? event : null);    if (typeof menuReady != "undefined") {        if (evt && (document.getElementById && document.styleSheets) && menuReady) {            var elem = (evt.target) ? evt.target : evt.srcElement;            if (elem.className == "menuImg") {                if (evt.type == "mouseover") {                    showMenu(menus[elem.id].elemId);                    elem.src = menus[elem.id].mBarImgHilite.src;                } else if (evt.type == "mouseout") {                    requestHide();                }                evt.cancelBubble = true;            }        }    }}// create menus only if key items are supportedfunction initMenus() {    if (document.getElementById && document.styleSheets) {        setTimeout("makeMenus()", 5);        window.onunload=cancelAll;    }}