documentLoaded = false;
/*
 Tip-Pan for cal. RB/RL
*/
var panSetXOff = 5
var panSetYOff = 5
function ge(id){
 return document.getElementById(id)
}
/* mouse pos handling */
var mouseX = 0; //do not change
var mouseY = 0; //do not change
function getMousePos(e){
if (!documentLoaded) return;
 if (typeof event != 'undefined'){
 
  var scrTop = document.body.scrollTop //default
  if (typeof document.documentElement != "undefined"){
   scrTop = document.documentElement.scrollTop
  }
  var scrLeft = document.body.scrollLeft //default
  if (typeof document.documentElement != "undefined"){
   scrLeft = document.documentElement.scrollLeft
  }
  mouseX = event.clientX + scrLeft;
  mouseY = event.clientY + scrTop;
 }else{
  mouseX = e.pageX;
  mouseY = e.pageY;
 }
 //bolt on :)
 setTipPos() //dont pass xy as they are globally defined
}
function setTipPos(){
 if (panSetOn == false){
  //hide so we never get scroll bars by a hidden element
  ge('calpan').style.left = 0+"px"
  ge('calpan').style.top = 0+"px"
 }else{
  ge('calpan').style.left = (mouseX+panSetXOff)+"px"
  ge('calpan').style.top = (mouseY+panSetYOff)+"px"
 }
}
document.onmousemove = getMousePos; //this will be running constantly!
/* option for array based:::
var arPanText = new Array()
 arPanText[0] = new Array(2006,10,17,'text here')
*/
/*
 showPanal: Displays "tip" until 
  txt = 'text to show on floating panal'
*/
//var panSet = new Object();
// panSet.
panSetOn = false
function hidePan(){
 ge('calpan').style.visibility = 'hidden'
 panSetOn = false
}
function showPan(){ //text, y/m/d.
 if (!documentLoaded){
  return;
 }
 var mode = arguments.length;
 var argText = arguments[0].split("::");
 if (mode == 1){ //simple text mode, just display text supplied
  /* NOTE: !!! if number instead can use div.innerHTML content allowing for CR's */
  //ge('calpan').innerHTML = argText;
  ge('calpanhead').innerHTML = argText[0];
  ge('calpantext').innerHTML = argText[1];
 }else{ //2. date based array
  //ref array
  /* CAN DO EASILY (search array match then show) */
 }
 //RUN SOMETHING HERE?!getMousePos(e)
 panSetOn = true
 ge('calpan').style.visibility = 'visible'
 setTipPos()
}




//non-OO version. Ticker. RB/RL
//may presently only work with 3+ items.
var pageWidth = 770; //width of page.
var tickerSetPosX = 0;
var tickerSetPosY = 10;
var tickerSetHeight = 20;
var tickerSetDisY = 0;//-15;
var tickerSetShowY = 0;//-5;
var tickerSetStepBy = 1;
var tickerSetWidth = 600;
var tickerSetPauseOnItem = 4000 //4000; //ms
var tickerSetStepInteval = 20; //ms
var tickerLength = -1; //<do not change (unless you want to handle lenght manually e.g.cms)
var activeItem = 0;
var tickerCurOffsetY = 0;
var tickerLockedOnItem = activeItem;
function getTickLeft(){ //returns the left position of the document based on the centered content
 var sw = document.documentElement.clientWidth; //may need document.body.clientWidth IE5?
 //set to doc width if it is less. Add offset
 sw = (sw < pageWidth) ? tickerSetPosX : (sw/2)-(pageWidth/2)+tickerSetPosX;
 return sw;
}
function getTickerLength(){ //not using array, everything stored in divs (tick(n))
 //tickerLength = 3;return;
 if (tickerLength == -1){
  var i = 0;
  while (ge('tick'+i)){ //<Warning GEBid didn't work, may have to force tickerLength manual
   i = i + 1
   if (i == 50){ //safety
    break;
   }
  }
  tickerLength = i-1;
 }
 return tickerLength;
}
function prepareTicker(){ //displays first element AND startsTicker
 //activeElement = 0
 posTicks(false);
 
 getTickerLength();
}
function getCurrentTickName(){
 return 'tick'+activeItem;
}
function getNextTickName(){
 if (activeItem == tickerLength){
  return 'tick0';
 }else{
  var tmp = activeItem+1
  return 'tick'+tmp;
 }
}
var tickTimmy; // :)
function posTicks(staticOnly){
 hideOldTicks();
 
 //current item
 ge(getCurrentTickName()).style.left = getTickLeft()+'px';
 ge(getCurrentTickName()).style.top = (tickerSetPosY-tickerCurOffsetY)+'px';
 ge(getCurrentTickName()).style.visibility = 'visible';
 ge(getCurrentTickName()).style.clip = "rect("+(tickerCurOffsetY+tickerSetDisY)+"px, "+tickerSetWidth+"px, "+(tickerSetHeight)+"px, 0px)";
 //next item
 ge(getNextTickName()).style.left = getTickLeft()+'px';
 ge(getNextTickName()).style.top = (tickerSetPosY-tickerCurOffsetY+tickerSetHeight)+'px';
 ge(getNextTickName()).style.visibility = 'visible';
 ge(getNextTickName()).style.clip = "rect(0px, "+tickerSetWidth+"px, "+(tickerCurOffsetY-tickerSetShowY)+"px, 0px)";
 
 if (!staticOnly){
  if (tickerCurOffsetY >= tickerSetHeight){
   activeItem = getNextActiveItem();
   tickerCurOffsetY = 0;
   tickerLockedOnItem = activeItem;
   tickTimmy = setTimeout("moveTicker()",tickerSetPauseOnItem);
  }else{
   tickerLockedOnItem = -1;
   tickTimmy = setTimeout("moveTicker()",tickerSetStepInteval);
  }
 }
}
function hideOldTicks(){
 for (var i=0;i<tickerLength+1;i++){
  if ((i != activeItem)&&(i != getNextActiveItem())){
   ge('tick'+i).style.visibility = 'hidden';
  }
 }
}
function moveTicker(){
 tickerCurOffsetY += tickerSetStepBy;
 posTicks(false);
}
function getNextActiveItem(){ //NTS:rewrite
 if (activeItem == tickerLength){
  return 0
 }else{
  return activeItem+1;
 }
}
function tickOver(item){
 /*if (tickerLockedOnItem != -1){
  clearTimeout(tickTimmy)
 }*/
 clearTimeout(tickTimmy)
 tickerCurOffsetY = 0
 activeItem = item;
 posTicks(true);
 
}
function tickOut(){
 clearTimeout(tickTimmy); //ensure clear
 tickTimmy = setTimeout("moveTicker()",1000);
}