/* Javascript file for international sites */

//	used to show/hide block elements on the page

function toggle_visibility(display_block)
{
	if (document.getElementById(display_block).style.display == "block") {
		document.getElementById(display_block).style.display="none";
	}
	else {
		document.getElementById(display_block).style.display = "block";
	}
}


//	used to zebra stripe table rows

var stripe = function() {
    if (!document.getElementsByTagName || !document.createTextNode) return;
    var even = true;
    var trs = document.getElementsByTagName('tr');      
    for (var i = 0; i < trs.length; i++) {
        if (trs[i].parentNode.nodeName == 'TBODY') {
            trs[i].onmouseover = function(){
                this.className += (!this.className) ? 'ruled' : ' ruled';
            }
            trs[i].onmouseout = function(){
                this.className = this.className.replace(' ruled', '').replace('ruled', '');
            }        
            if(even)
            trs[i].className += (!trs[i].className) ? 'even' : ' even';        
            even = !even;
        }
    }
}
onload = stripe;




// News ticker scripts 

// Arguments: id of content layer (inside news_container), width and height of scroller (of news_container, that is), number of items (repeat 1st one at end!), axis ("v" or "h"), set up mouse events? (boolean)
function news_scroller(id, w, h, num, axis, bMouse) {
    this.id=id; this.el = document.getElementById? document.getElementById(id): null; 
    if (!this.el) return; this.css = this.el.style; 
    this.css.left = this.x = 0; this.css.top = this.y = 0;
    this.w=w; this.h=h; this.num=num; this.axis=axis||"v"; 
    this.ctr=1; // pause onload (for large doc's, may want to set this to 1)
    this.pause=3000; this.speed=85; // defaults
    if (bMouse) news_scrollers.setMouseEvents(this.el);
    this.lastTime = new Date().getTime(); this.check = 0;
    this.index = news_scrollers.ar.length;  news_scrollers.ar[this.index] = this;
    this.active = true;
}

news_scroller.prototype.setTiming = function(speed, pause) {
    this.speed = speed; this.pause = pause;
}

news_scroller.prototype.controlScroll = function() {
    if (this.ctr > this.num-1) {
        this.shiftTo(0, 0); this.ctr = 1;
    } else {
        switch (this.axis) {
            case "v" :
                if (this.y > -this.h * this.ctr) { 
                    var ny = this.y + -1 * this.elapsed/1000 * this.speed;
                    ny = Math.max(ny, -this.h * this.ctr);
                    this.shiftTo(0, ny);	
                } else this.doPause();
                break;
            case "h" :
                if (this.x > -this.w * this.ctr) { 
                    var nx = this.x + -1 * this.elapsed/1000 * this.speed;
                    nx = Math.max(nx, -this.w * this.ctr);
                    this.shiftTo(nx, 0);	
                } else this.doPause();
            break;
        }
    }
}

news_scroller.prototype.doPause = function() {
    this.check += this.elapsed;
    if (this.check >= this.pause) { this.ctr++; this.check = 0; }
}

news_scroller.prototype.shiftTo = function(x, y) {
    this.css.left = (this.x = x) + "px";
    this.css.top = (this.y = y) + "px";
}

////////////////////////////////////////////////////////////////////////////
// common to all scrollers (pausing or continuous, vertical or horizontal)
news_scrollers = {};  
news_scrollers.ar = []; // global access to all scroller instances

news_scrollers.setMouseEvents = function(obj) {
    obj.onmouseover = news_scrollers.halt;
    obj.onmouseout = news_scrollers.resume;
}

news_scrollers.halt = function() {
    var curObj;
    for (var i=0; curObj = news_scrollers.ar[i]; i++) 
        if ( curObj.id == this.id ) { curObj.active = false; return; }
}

news_scrollers.resume = function(e) {
    var curObj;
    for (var i=0; curObj = news_scrollers.ar[i]; i++) {
        if ( curObj.id == this.id ) {
            e = e? e: window.event;
            var toEl = e.relatedTarget? e.relatedTarget: e.toElement;
            if ( this != toEl && !dw_contained(toEl, this) ) { 
                var now = new Date().getTime();
                curObj.elapsed = now - curObj.lastTime;
                curObj.lastTime = now; curObj.active = true; return; 
            }
        }
    }
}

// Handle all instances with one timer - idea from youngpup.net
news_scrollers.timer = window.setInterval("news_scrollers.control()", 10);
news_scrollers.control = function() {
    var curObj;
    for (var i=0; curObj = news_scrollers.ar[i]; i++) {
        if ( curObj.active ) {
            var now = new Date().getTime();
            curObj.elapsed = now - curObj.lastTime;
            curObj.lastTime = now; curObj.controlScroll();
        }
    }
}

// remove layers from table for ns6+/mozilla (needed for scrollers inside tables)
// pass id's of scrollers (i.e., div's that contain content that scrolls, usually news_container, or news_container1, ...)
news_scrollers.GeckoTableFix = function() {
    var ua = navigator.userAgent;
    if ( ua.indexOf("Gecko") > -1 && ua.indexOf("Firefox") == -1 
        && ua.toLowerCase().indexOf("like gecko") == -1 ) {
        news_scrollers.hold = []; // holds id's of news_containerdo (i.e., 'the scroller') and its container
        for (var i=0; arguments[i]; i++) {
            var news_containerdo = document.getElementById( arguments[i] );
            var holderId = news_containerdo.parentNode.id;
            var holder = document.getElementById(holderId);
            document.body.appendChild( holder.removeChild(news_containerdo) );
            news_containerdo.style.zIndex = 1000;
            var pos = getPageOffsets(holder);
            news_containerdo.style.left = pos.x + "px"; news_containerdo.style.top = pos.y + "px";
            news_scrollers.hold[i] = [ arguments[i], holderId ];
        }
        window.addEventListener("resize", news_scrollers.rePosition, true);
    }
}

// ns6+/mozilla need to reposition layers onresize when scrollers inside tables.
news_scrollers.rePosition = function() {
    if (news_scrollers.hold) {
        for (var i=0; news_scrollers.hold[i]; i++) {
            var news_containerdo = document.getElementById( news_scrollers.hold[i][0] );
            var holder = document.getElementById( news_scrollers.hold[i][1] );
            var pos = getPageOffsets(holder);
            news_containerdo.style.left = pos.x + "px"; news_containerdo.style.top = pos.y + "px";
        }
    }
}

function getPageOffsets(el) {
    var left = el.offsetLeft;
    var top = el.offsetTop;
    if ( el.offsetParent && el.offsetParent.clientLeft || el.offsetParent.clientTop ) {
        left += el.offsetParent.clientLeft;
        top += el.offsetParent.clientTop;
    }
    while ( el = el.offsetParent ) {
        left += el.offsetLeft;
        top += el.offsetTop;
    }
    return { x:left, y:top };
}

// returns true if oNode is contained by oCont (container)
function dw_contained(oNode, oCont) {
  if (!oNode) return; // in case alt-tab away while hovering (prevent error)
  while ( oNode = oNode.parentNode ) if ( oNode == oCont ) return true;
  return false;
}

// avoid memory leak in ie
news_scrollers.unHook = function() {
  var i, curObj;
  for (i=0; curObj = news_scrollers.ar[i]; i++) {
    if ( curObj.el ) { 
      curObj.el.onmouseover = null;
      curObj.el.onmouseout = null;
      curObj.el = null;
    }
  }
}

if ( window.addEventListener ) window.addEventListener( "unload", news_scrollers.unHook, true);
else if ( window.attachEvent ) window.attachEvent( "onunload", news_scrollers.unHook );

// Allows multiple functions to load

function addLoadEvent(func) {
  var oldonload = window.onload;
  if (typeof window.onload != 'function') {
    window.onload = func;
  } else {
    window.onload = function() {
      oldonload();
      func();
    }
  }
}

//	Function for adding breadcrumb divider in IE7.
function arrowAdd() {
    if (!document.getElementById("breadCrumbs")) return false;
    if (/MSIE (\d+\.\d+);/.test(navigator.userAgent)) { //test for MSIE x.x;
    var ieversion=new Number(RegExp.$1) // capture x.x portion and store as a number
        if (ieversion==7) {   
            var breadLine = document.getElementById("breadCrumbs");
            var item = breadLine.getElementsByTagName("li");
            for (i = 0; i<item.length-1; i++) {
            var pd = document.createTextNode("> ");
            item[i].appendChild(pd);        
            }  
        }
    }
} 
 
// Pre load the following functions when the page loads
addLoadEvent(arrowAdd);
