
//@@*******************
//@@ common scripts
//@@ JIA 22/12/07
//@@*******************


//@@*******************
//@@ onload function
//@@ detects browser type
//@@ JIA 22/12/07
//@@*******************

//@@ global broswer
var gsBrowser = "";

window.onload = function() {

   //@@ look for mozilla
   if ((typeof document.implementation != 'undefined') && (typeof document.implementation.createDocument != 'undefined') == true)
      gsBrowser = "mz";
   else
      gsBrowser = "ie";

   //@@ load menu
   mnu_load();

}

//@@*******************
//@@ displays a child window
//@@ JIA 22/12/07
//@@*******************

function com_window_open(sPage, iH, iW) {

   //@@ this displays the selected window

   //@@ work out left and top
   //@@ for centre screen
   var iL = (window.screen.availWidth/2) - (iW/2);
   var iT = (window.screen.availHeight/2) - (iH/2);
   
   //@@ build positon
   var sPos = "left=" + iL + ",top=" + iT + ",width=" + iW + ",height=" + iH;

   //@@ open window
   var oWin = window.open(sPage,"winUnknown",sPos + ",directories=no,location=no,menubar=no,resizable=yes,scrollbars=no,status=no,titlebar=no,toolbar=no");

}

//@@*******************
//@@ returns an xml root object
//@@ JIA 22/12/07
//@@*******************

function com_xml(urlPath) {

   //@@ this returns an xmlRoot element
   //@@ to the passed in file

   //@@ check browser
   if (gsBrowser == "ie")
      {
       //@@ load up the gallery xml file
       var xmlDoc = new ActiveXObject("Msxml2.DOMDocument.3.0");
       xmlDoc.async = false;
       xmlDoc.resolveExternals = false;
       xmlDoc.load(urlPath);
      }
   else
      {
       var xmlDoc = document.implementation.createDocument("","",null);
       xmlDoc.async = false;
       xmlDoc.resolveExternals = false;
       xmlDoc.load(urlPath);
      }

   //@@ set root element
   var xmlRoot = xmlDoc.documentElement;

   //@@ return the root
   return(xmlRoot);

}


//@@*******************
//@@ menu scripts
//@@ JIA 24/11/06
//@@*******************

//@@ load main menu

function mnu_load() {

   //@@ create any menu's specified

   //@@ create xml document
   var xmlRoot = com_xml("xml/menu.xml");

   //@@ check for browser type
   //@@ to set the base node value
   if (gsBrowser == "ie")
      var nodeBase = 0;
   else
      var nodeBase = 1;

   //@@ build top level menus
   for (var i=nodeBase; i < xmlRoot.childNodes.length; i++)
      {
       //@@ check for an element node (1)
       if (xmlRoot.childNodes[i].nodeType == 1)
          {
           //@@ create new row in menu shell
           var tblRow = document.getElementById("mnuShell").insertRow(-1);

           //@@ spacer cell
           var tblCell = tblRow.insertCell(-1);
           tblCell.innerHTML = "&nbsp;"

           //@@ add menu items
           for (var j=nodeBase; j < xmlRoot.childNodes[i].childNodes.length; j++)
              {
               //@@ check for an element node (1)
	       if (xmlRoot.childNodes[i].childNodes[j].nodeType == 1)
                  {
                   //@@ insert a cell
                   var tblCell = tblRow.insertCell(-1);

                   //@@ add inner html
                   tblCell.innerHTML = xmlRoot.childNodes[i].childNodes[j].getElementsByTagName("attributes")[0].getElementsByTagName("text")[0].childNodes[0].nodeValue;

                   //@@ add the style class
                   tblCell.className = "clsMenuItem";

                   //@@ add the title
                   tblCell.title = xmlRoot.childNodes[i].childNodes[j].getElementsByTagName("attributes")[0].getElementsByTagName("title")[0].childNodes[0].nodeValue;
            
                   //@@ add onclick event
                   tblCell.onclick = mnuClick;

                   //@@ add link if not a null field   
                   if (xmlRoot.childNodes[i].childNodes[j].getElementsByTagName("attributes")[0].getElementsByTagName("onclick")[0].childNodes.length == 0)
                      tblCell.tagLink = "";
                   else
                      tblCell.tagLink = xmlRoot.childNodes[i].childNodes[j].getElementsByTagName("attributes")[0].getElementsByTagName("onclick")[0].childNodes[0].nodeValue;
            
                   //@@ add the link type
                   tblCell.tagLinkType = xmlRoot.childNodes[i].childNodes[j].getElementsByTagName("attributes")[0].getElementsByTagName("onclick")[0].getAttributeNode("type").nodeValue;  //xmlRoot.childNodes[i].childNodes[j].selectSingleNode("attributes/onclick/@type").text;

                   //@@ add the mouse over and out events            
                   tblCell.onmouseover = mnuOver;
                   tblCell.onmouseout = mnuOut;

                   //@@ add the id
                   tblCell.id =  xmlRoot.childNodes[i].childNodes[j].getAttributeNode("name").nodeValue;

                   //@@ look for not being last child
                   //@@ and add a spacer cell
                   if (j < xmlRoot.childNodes[i].childNodes.length-1-nodeBase)
                      {
                       var tblCell = tblRow.insertCell(-1);
                       tblCell.innerHTML = "&nbsp;|&nbsp;";
                       tblCell.className = "clsMenuItem";
                      }

	          }

               }

          }
      }

   //@@ add end spacer cell
   //@@ AND
   //@@ add hidden link
   //@@ to show window
   //@@ without using window.open
   //@@ avoids pop-up blockers
   var tblCell = tblRow.insertCell(-1);
   tblCell.innerHTML = "<a href='index.htm' title='J. Hulse, Grocers and Bakers since 1878'><img border='0' src='image/jhulsesm.gif' align='center' /></a><a href='' id='aDummy' target='_new' style='display: none;'>dummy</a> &nbsp;";
   tblCell.width = "100%";
   tblCell.align = "right";
   tblCell.valign = "center";

   //@@ close the xml root
   var xmlRoot = null;

}

//@@ build sub menu

function mnu_sub(mnuItem,iMOver) {

   //@@ create xml document
   var xmlRoot = com_xml("xml/menu.xml");

   //@@ get sub menu for parent
   var xmlNode = xmlRoot.selectSingleNode("//menuitem[@name='" + mnuItem.id + "']/menu");

   //@@ no sub menu node
   //@@ hide sub menu
   if (xmlNode == null)
      {
       //@@ hide sub menu
       document.all.mnuSub.tagID = "";
       document.all.mnuSub.style.display = "none";
       var xmlNode = null;
       return(false);
      }

   //@@ check for sub menu already open
   //@@ if so close it
   if (xmlNode.selectSingleNode("@name").text == document.all.mnuSub.tagID && iMOver == 0)
      {
        document.all.mnuSub.tagID = "";
        document.all.mnuSub.style.display = "none";
        var xmlNode = null;
        return(false);
      }

   //@@ clear submenu
   while (document.all.mnuSub.rows.length > 0)
      document.all.mnuSub.deleteRow();

   //@@ add sub menu name
   document.all.mnuSub.tagID = xmlNode.selectSingleNode("@name").text;

   //@@ build sub menu
   for (var i=0; i < xmlNode.childNodes.length; i++)
      {
        //@@ create new row in sub menu
        var tblRow = document.all.mnuSub.insertRow();
        var tblCell = tblRow.insertCell();
        tblCell.innerHTML = xmlNode.childNodes[i].selectSingleNode("attributes/text").text;
        tblCell.className = "clsMenuItem";
        tblCell.title = xmlNode.childNodes[i].selectSingleNode("attributes/title").text;
        tblCell.onclick = mnuClick;   
        tblCell.tagLink = xmlNode.childNodes[i].selectSingleNode("attributes/onclick").text;
        tblCell.tagLinkType = xmlNode.childNodes[i].selectSingleNode("attributes/onclick/@type").text;
        tblCell.onmouseover = mnuOver;
        tblCell.onmouseout = mnuOut;
        tblCell.width = "150px";
      }

   document.all.mnuSub.style.posTop = mnuItem.offsetTop + mnuItem.offsetHeight + 4;
   document.all.mnuSub.style.posLeft = mnuItem.offsetLeft - 5;
   document.all.mnuSub.style.display = "block";

   //@@ close objects
   var xmlNode = null;

   //@@ close the xml root
   var xmlRoot = null;

   return(true);

}

//@@ onclick menu function

function mnuClick() {

   //@@ change page
   //@@ check tag link type

   switch (this.tagLinkType)
      {
       case "menu" :
         {
           //@@ call sub menu
           mnu_sub(this,0);
           break;
          }
       case "link_external" :
          {
            //window.open(this.tagLink);
            document.getElementById("aDummy").href = this.tagLink;
            document.getElementById("aDummy").click();
            //window.location.href=this.tagLink;
            break;
          }
       case "email" :
          {
           window.location.href = "mailto:" + this.tagLink;
           break;
          }
       default :
          {
             window.location.href= this.tagLink;
          }
     }

}

//@@ menu over function
function mnuOver() {

   //@@ change style
   this.className = "clsMenuItemOver";

   //@@ if sub menu visible
   //@@ show next one
   if (document.all.mnuSub.style.display == "block" && this.parentElement.parentElement.parentElement.id == "mnuShell")
      mnu_sub(this,1);

}

//@@ menu out

function mnuOut() {

   //@@ change style
   this.className = "clsMenuItem";

}

//@@ hide submenu
document.onclick = function() {

   //@@ hides sub-menu on body click
   
   //@@ check for submenu click
   if (window.event.srcElement.id.substring(0,3) != "mnu")
      {
       //@@ hide sub menu
       document.all.mnuSub.tagID = "";
       document.all.mnuSub.style.display = "none";
      }

}

//@@*******************
//@@ shows a full image
//@@ JIA 25/10/08
//@@*******************

function com_img(oImg) {

   //@@ display larger image in new window
   document.getElementById("aDummy").href = oImg.src;
   document.getElementById("aDummy").click();

}