// JavaScript Document
addLoadListener(loadImages);
addLoadListener(initMenuTabs);
//addLoadListener(startList);
addLoadListener(fnLoadPngs);

//FUNCTION to allow any number of load event handlers to be assigned without conflicts.
function addLoadListener(fn)
{
//debugger;
  if (typeof window.addEventListener != 'undefined')
  {
    window.addEventListener('load', fn, false);  //Firefox
  }
  else if (typeof document.addEventListener != 'undefined')
  {
    document.addEventListener('load', fn, false); //Opera
  }
  else if (typeof window.attachEvent != 'undefined')
  {
    window.attachEvent('onload', fn); //IE
  }
  else
  {
    var oldfn = window.onload;
    if (typeof window.onload != 'function')
    {
      window.onload = fn;
    }
    else
    {
      window.onload = function()
        {
          oldfn();
          fn();
        };
    }
  }
}

function loadImages()
{
  var img = new Image();
  img.src = 'images/TabBackgroundLight.jpg';
  var img1 = new Image();
  img1.src = 'images/TabBackgroundDark.jpg';
  var img2 = new Image();
  img2.src = 'images/Border.jpg';
}

function getElementsByAttribute(attribute, attributeValue)
{
  var matchedArray = new Array();
  var elementArray = new Array();
  
  if (document.all)
  {
    elementArray = document.all;
  }
  else
  {
    elementArray = document.getElementsByTagName("*");
  }
  
  
  for (var i=0; i<elementArray.length; i++)
  {
    if (attribute == "class")
    {
       var pattern = new RegExp("(^| )" +
           attributeValue + "( |$)");
           
       if (pattern.test(elementArray[i].className))
       {
          matchedArray[matchedArray.length] = elementArray[i];
       }
    }
    else if (attribute == "for")
    {
       if (elementArray[i].getAttribute("htmlFor") ||
           elementArray[i].getAttribute("for"))
       {
           if (elementArray[i].htmlFor == attributeValue)
           {
              matchedArray[matchedArray.length] = elementArray[i];
           }
       }
     }
     else if (elementArray[i].getAttribute(attribute) == attributeValue)
     {
        matchedArray[matchedArray.length] = elementArray[i];
     }
  }
  return matchedArray;
}


//FUNCTION to get all the elements of a particular class name
document.getElementsByClassName = function(clsName){
    //debugger;
    var retVal = new Array();
    var elements = document.getElementsByTagName("*");
    for(var i = 0;i < elements.length;i++){
        if(elements[i].className.indexOf(" ") >= 0){
            var classes = elements[i].className.split(" ");
            for(var j = 0;j < classes.length;j++){
                if(classes[j] == clsName)
                    retVal.push(elements[i]);
            }
        }
        else if(elements[i].className == clsName)
            retVal.push(elements[i]);
    }
    return retVal;
}

function initMenuTabs()
{
//debugger;
var mainMenu;
var menuTabs = new Array();
var sbInners = new Array();
var menuSelected = -1;
var linkSelected;
var fileNameURL;
var fileNameTab;


var fileNameURL = self.location.pathname.substring(location.pathname.lastIndexOf('/')+1);
        
    mainMenu = document.getElementById("MenuBar1");
    menuTabs = mainMenu.getElementsByTagName("li");

    //Find out which main tab has been selected
    for (var i=0;i<menuTabs.length;i++)
	    {
		    //Check the first four characters of the tab id (Home, Consultancy, Publishing etc.)
		    if (fileNameURL.indexOf(menuTabs[i].id.substr(0,4)) != -1) {
			    menuSelected = i;
				break;
		    }
		    else
		    {
				menuSelected = 0; //default to Home
			}
	    }

    //debugger;
	linkSelected=menuTabs[menuSelected].getElementsByTagName("A")[0]; // get the link within the tab
	                                                                  // 'lastChild' works for FF but not IE. getElementsByTagName should return an array with one element
	
	linkSelected.style.borderBottomColor = "#000";
	
	//sbInners = linkSelected.getElementsByAttribute("class", "sb-inner");
	
	//var bottomBorderIE = document.createElement("div");
//	bottomBorderIE.setAttribute("title", "newdiv");
//	bottomBorderIE.setAttribute("id","thisisnew");
//	bottomBorderIE.textContent = "can you see me?";
//	bottomBorderIE.style.border = "2px solid green";
//	linkSelected.appendChild(bottomBorderIE);
//	bottomBorderIE.style.visibility = "visible";
//	bottomBorderIE.style.width = "100px";
//	bottomBorderIE.style.height = "50px";
//	bottomBorderIE.style.zIndex = "1000";
//	bottomBorderIE.style.color = "green";
	
	var i = i+1;			
}

// This is the code needed for IE6 to implement 'hover' functionality for the menu
//function startList() 
//{
//var navRoot;
//var node;
////debugger;
//   if (document.all && document.getElementById) {
//       navRoot = document.getElementById("menuBar1");
//       if (navRoot != null) {
//          for (i=0; i<navRoot.childNodes.length; i++) {
//               node = navRoot.childNodes[i];
//               if (node.nodeName=="LI") {
//                  node.onmouseover=function() {
//                     //debugger;
//                     this.className+=" over";
//                     var i = i++;
//                  }
//                  node.onmouseout=function() {
//                     //debugger;
//                     this.className=this.className.replace(" over", "");
//                     var i = i++;
//                  }
//               }
//          }
//       }
//   }
//}

function fnLoadPngs() {
	//debugger;
	
	if (navigator.platform == "Win32" && navigator.appName == "Microsoft Internet Explorer" && window.attachEvent){
	
	var rslt = navigator.appVersion.match(/MSIE (\d+\.\d+)/, '');
	var itsAllGood = (rslt != null && Number(rslt[1]) >= 5.5);

    
	for (var i = document.images.length - 1, img = null; (img = document.images[i]); i--) {
		 if (itsAllGood && img.src.match(/\.png$/i) != null) {
			var src = img.src;
			var div = document.createElement("DIV");
			div.style.filter = "progid:DXImageTransform.Microsoft.AlphaImageLoader(src='" + src + "', sizing='scale')"
			div.style.width = img.width + "px";
			div.style.height = img.height + "px";
			img.replaceNode(div);
		 }
	   img.style.visibility = "visible";
	}
	}
}

/**
 * RUZEE.ShadedBorder 0.6.1
 * (c) 2006 Steffen Rusitschka
 *
 * RUZEE.ShadedBorder is freely distributable under the terms of an MIT-style license.
 * For details, see http://www.ruzee.com/
 */
 


var RUZEE = window.RUZEE || {};

RUZEE.ShadedBorder = {

create: function(opts) {
   var isie = /msie/i.test(navigator.userAgent) && !window.opera;
  var isie6 = isie && !window.XMLHttpRequest;
  function sty(el, h) {
    for(k in h) {
      if (/ie_/.test(k)) {
        if (isie) el.style[k.substr(3)]=h[k];
      } else el.style[k]=h[k];
    }
  }
  function crdiv(h) {
    var el=document.createElement("div");
    el.className = "sb-gen";
    sty(el, h);
    return el;
  }
  function op(v) {
    v = v<0 ? 0 : v;
    if (v>0.99999) return "";
    return isie ? " filter:alpha(opacity=" + (v*100) + ");" : " opacity:" + v + ';';
  }

  var sr = opts.shadow || 0;
  var r = opts.corner || 0;
  var bor = 0;
  var bow = opts.border || 0;
  var boo = opts.borderOpacity || 1;
  var shadow = sr != 0;
  var lw = r > sr ? r : sr;
  var rw = lw;
  var th = lw;
  var bh = lw;
  if (bow > 0) {
    bor = r;
    r = r - bow;
  }
  var cx = r != 0 && shadow ? Math.round(lw/3) : 0;
  var cy = cx;
  var cs = Math.round(cx/2);
  var iclass = r > 0 ? "sb-inner" : "sb-shadow";
  var sclass = "sb-shadow";
  var bclass = "sb-border";
  var edges = opts.edges || "trlb";
  if (!/t/i.test(edges)) th=0;
  if (!/b/i.test(edges)) bh=0;
  if (!/l/i.test(edges)) lw=0;
  if (!/r/i.test(edges)) rw=0;

  var p = { position:"absolute", left:"0", top:"0", width:lw + "px", height:th + "px", 
            ie_fontSize:"1px", overflow:"hidden", margin:"0", padding:"0" }; var tl = crdiv(p);
  delete p.left; p.right="0"; p.width=rw + "px"; var tr = crdiv(p);
  delete p.top; p.bottom="0"; p.height=bh + "px"; var br = crdiv(p);
  delete p.right; p.left="0"; p.width=lw + "px"; var bl = crdiv(p);

  var tw = crdiv({ position:"absolute", width:"100%", height:th + "px", ie_fontSize:"1px",
                   top:"0", left:"0", overflow:"hidden", margin:"0", padding:"0" });
  var t = crdiv({ position:"relative", height:th + "px", ie_fontSize:"1px",
                  margin:"0 "+ rw + "px 0 " + lw + "px", overflow:"hidden", padding:"0" });
  tw.appendChild(t);

  var bw = crdiv({ position:"absolute", left:"0", bottom:"0", width:"100%", height:bh + "px", 
                   ie_fontSize:"1px", overflow:"hidden", margin:"0", padding:"0" });
                   
  var b = crdiv({ position:"relative", height:bh + "px", ie_fontSize:"1px",
                  margin:"0 "+ rw + "px 0 " + lw + "px", overflow:"hidden", padding:"0" });
                  
  bw.appendChild(b);

  var mw = crdiv({ position:"absolute", top:(-bh)+"px", left:"0", width:"100%", height:"100%",
                   overflow:"hidden", ie_fontSize:"1px", padding:"0", margin:"0" });

  function corner(el,t,l) {
    var w = l ? lw : rw;
    var h = t ? th : bh;
    var s = t ? cs : -cs;
    var dsb = []; var dsi = []; var dss = [];
    
    var xp=0; var xd=1; if (l) { xp=w-1; xd=-1; }
    for (var x=0; x<w; ++x) {
      var yp=h-1; var yd=-1; if (t) { yp=0; yd=1; }
      var finished=false;
      for (var y=h-1; y>=0 && !finished; --y) {
        var div = '<div style="position:absolute; top:' + yp + 'px; left:' + xp + 'px; ' +
                  'width:1px; height:1px; overflow:hidden; margin:0; padding:0;';

        var xc = x - cx; var yc = y - cy - s;
        var d = Math.sqrt(xc*xc+yc*yc);
        var doShadow = false;

        if (r > 0) {
          // draw border
          if (xc < 0 && yc < bor && yc >= r || yc < 0 && xc < bor && xc >= r) {
            dsb.push(div + op(boo) + '" class="' + bclass + '"></div>');
          } else
          if (d<bor && d>=r-1 && xc>=0 && yc>=0) {
            var dd = div;
            if (d>=bor-1) {
              dd += op((bor-d)*boo);
              doShadow = true;
            } else dd += op(boo);
            dsb.push(dd + '" class="' + bclass + '"></div>');
          }
          
          // draw inner
          var dd = div + ' z-index:2;' + (t ? 'background-position:0 -' + (r-yc-1) + 'px;' : 'background-image:none;');
          var finish = function() {
            if (!t) dd = dd.replace(/top\:\d+px/, "top:0px");
            dd = dd.replace(/height\:1px/, "height:" + (y+1) + "px");
            dsi.push(dd + '" class="' + iclass + '"></div>');
            finished = true;
          };
          if (xc < 0 && yc < r || yc < 0 && xc < r) {
            finish();
          } else
          if (d<r && xc>=0 && yc>=0) {
            if (d>=r-1) {
              dd += op(r-d);
              doShadow = true;
              dsi.push(dd + '" class="' + iclass + '"></div>');
            } else {
              finish();
            }
          } else doShadow = true;
        } else doShadow = true;
        
        // draw shadow
        if (sr > 0 && doShadow) {
          d = Math.sqrt(x*x+y*y);
          if (d<sr) {
            dss.push(div + ' z-index:0; ' + op(1-(d/sr)) + '" class="' + sclass + '"></div>');
          }
        }
        yp += yd;
      }
      xp += xd;
    }
    el.innerHTML = dss.concat(dsb.concat(dsi)).join('');
  }
  
  function mid(mw) {
    var ds = [];

    ds.push('<div style="position:relative; top:' + (th+bh) + 'px; height:2048px; ' +
            ' margin:0 ' + (rw-r-cx) + 'px 0 ' + (lw-r-cx) + 'px; ' +
            ' padding:0; overflow:hidden;' +
            ' background-position:0 ' + (th > 0 ? -(r+cy+cs) : '0') + 'px;"' +
            ' class="' + iclass + '"></div>');

    var dd = '<div style="position:absolute; width:1px;' +
        ' top:' + (th+bh) + 'px; height:2048px; padding:0; margin:0;';
    if (sr>0) {
      for (var x=0; x<lw-r-cx; ++x) {
        ds.push(dd + ' left:' + x + 'px;' + op((x+1.0)/lw) + 
            '" class="' + sclass + '"></div>');
      }

      for (var x=0; x<rw-r-cx; ++x) {
        ds.push(dd + ' right:' + x + 'px;' + op((x+1.0)/rw) + 
            '" class="' + sclass + '"></div>');
      }
    }

    if (bow > 0) {
      var su = ' width:' + bow + 'px;' + op(boo) + '" class="' + bclass + '"></div>';
      ds.push(dd + ' left:' + (lw-bor-cx) + 'px;' + su);
      ds.push(dd + ' right:' + (rw-bor-cx) + 'px;' + su);
    }

    mw.innerHTML = ds.join('');
  }

  function tb(el, t) {
    var ds = [];
    var h = t ? th : bh;
    var dd = '<div style="height:1px; overflow:hidden; position:absolute; margin:0; padding:0;' +
        ' width:100%; left:0px; ';
    var s = t ? cs : -cs;
    for (var y=0; y<h-s-cy-r; ++y) {
      if (sr>0) ds.push(dd + (t ? 'top:' : 'bottom:') + y + 'px;' + op((y+1)*1.0/h) + 
          '" class="' + sclass + '"></div>');
    }
    if (y >= bow) {
      ds.push(dd + (t ? 'top:' : 'bottom:') + (y - bow) + 'px;' + op(boo) +
          ' height:' + bow + 'px;" class="' + bclass + '"></div>');
    }

    ds.push(dd + (t ? 'background-position-y:0; top:' : 
                      'background-image:none; bottom:') + y + 'px;' +
        ' height:' + (r+cy+s) + 'px;" class="' + iclass + '"></div>');

    el.innerHTML = ds.join('');
  }

  corner(tl, true, true); corner(tr, true, false);
  corner(bl, false, true); corner(br, false, false);
  mid(mw); tb(t, true); tb(b, false);
 
  return {
    render: function(el) {
		//debugger;
      if (typeof el == 'string') el = document.getElementById(el);
      if (el.length != undefined) {
        for (var i=0; i<el.length; ++i) this.render(el[i]);
        return;
      }
      el.className += " sb";
      sty(el, { position:"relative", background:"transparent" });

      // remove generated children
      var node = el.firstChild;
      while (node) {
        var nextNode = node.nextSibling;
        if (node.nodeType == 1 && node.className == 'sb-gen')
          el.removeChild(node);
        node = nextNode;
      }

      var iel = el.firstChild;

      var twc = tw.cloneNode(true);
      var mwc = mw.cloneNode(true);
      var bwc = bw.cloneNode(true);
      
      el.insertBefore(tl.cloneNode(true), iel); el.insertBefore(tr.cloneNode(true), iel);
      el.insertBefore(bl.cloneNode(true), iel); el.insertBefore(br.cloneNode(true), iel);
      el.insertBefore(twc, iel); el.insertBefore(mwc, iel);
      el.insertBefore(bwc, iel);

      if (isie6) {
        el.onmouseover=function() { this.className+=" hover"; }
        el.onmouseout=function() { this.className=this.className.replace(/ hover/,""); }
      }
      if (isie) {
        function resize() {
          twc.style.width = bwc.style.width = mwc.style.width = el.offsetWidth + "px";
          mwc.firstChild.style.height = el.offsetHeight + "px";
        }
        el.onresize=resize;
        resize();
      }
    }
  };
}
}

// add our styles to the document

document.write('\
  <style type="text/css">\
  .sb, .sbi, .sb *, .sbi * { colour:#000; position:relative; z-index:1; }\
  * html .sb, * html .sbi { height:1%; }\
  .sbi { display:inline-block; }\
  .sb-inner { background:#000; }\
  .sb-shadow { background:#000; }\
  .sb-border { background:#000; }\
  </style>\
');

// End Ruzee.shadedborder code


//This is the code for transparent PNGs for IE6
if (navigator.platform == "Win32" && navigator.appName == "Microsoft Internet Explorer" && window.attachEvent) {
document.writeln('<style type="text/css">img { visibility:hidden; } </style>');
};
