// ****************************************
// ticker.js
// Scrolling ticker-tape. To use include this file then - in your file - include
// a <div id="ticker_area">&nbsp;</div> to place the ticker. Also include a set of
// hidden anchor elements within a hidden div. Each anchor will be scrolled in turn
// across the ticker are :
// <div style="display:none" id="ticker_content">
//    <a href="...">First text string to scroll</a>
//    <a href="...">Second text string to scroll</a>
// </div>
//
// Change look & feel using CSS. Sample as follows :
//    <style type="text/css">
//      #ticket_title, #ticker_area {
//        font-size:140%;font-weight:bold;color:#9c65ff;
//      }
//      #ticket_title {text-align:right}
//      #ticker_area {
//        overflow:hidden;white-space:nowrap;position:relative
//      }
//      #ticker_area a {
//        text-decoration:none;color:#503080
//      }
//      #ticker_area a:hover {
//        text-decoration:underline
//      }
//    </style>


var Ticker = {
  cindex:-1,
  pause:0,
  pause_seconds:1,
  pause_ticks:1,

  // Control of iterations
  steps:0,
  count:0,

  start_param:0,
  param:0,
  delta:6,

  maxWidth:0,
  style:'width',
  type:'expose',
  interval:50,
  hold:false
}

Ticker.msgList = [];

Ticker.init = function(tag) {
  Ticker.pause_ticks = (Ticker.pause_seconds*1000)/Ticker.interval;
  if (Ticker.type=='scroll') {
    Ticker.style='left';

    Ticker.delta = -5;
    tag.style.left = Ticker.start_param = Ticker.maxWidth;

    Ticker.steps = Math.ceil(Ticker.maxWidth/5);
  }
  else if (Ticker.type=='expose') {
    Ticker.style='width';
    tag.style.width = '0px';
    Ticker.steps = Math.ceil(Ticker.maxWidth/Ticker.delta);
  }
}

Ticker.prepareNew = function() {
  if (Ticker.type=='scroll') {
    Ticker.maxWidth = Ticker.area.scrollWidth;
    Ticker.steps = Math.ceil(Ticker.maxWidth/5);
    Ticker.area.style.left = Ticker.start_param = Ticker.maxWidth;
  }
  else if (Ticker.type=='expose') {
    Ticker.style='width';
    Ticker.area.style.width = '0px';
    Ticker.steps = Math.ceil(Ticker.maxWidth/Ticker.delta);
  }
}

Ticker.freeze = function(freeze) {
  if (Ticker.started) {
    Ticker.hold=freeze;
    if (!Ticker.hold)
      Ticker.timerID = window.setInterval(Ticker.update,Ticker.interval);
  }
}

Ticker.update = function(area) {
  if (Ticker.hold==true) {
    window.clearInterval(Ticker.timerID);
    return;
  }
  if (Ticker.pause>0) {
    Ticker.pause--;

    if (Ticker.pause==0) {
      // Next message
      Ticker.count  = 0;
      Ticker.param  = Ticker.start_param;

      Ticker.cindex = (Ticker.cindex+1) % Ticker.msgList.length;
      Ticker.cmsg   = Ticker.msgList[Ticker.cindex];
      Ticker.click  = Ticker.msgList[Ticker.cindex].cl==null ? '' : ' onclick="'+Ticker.msgList[Ticker.cindex].cl+'"';

      Ticker.area.style[Ticker.style] = ''+Ticker.param+'px';
      Ticker.area.style.width = "auto";
      Ticker.area.innerHTML = '<a href="'+Ticker.cmsg.l+'"'+Ticker.click+'>'+Ticker.cmsg.m+'</a>';

      Ticker.prepareNew();
    }
    return;
  }
  Ticker.count ++;
  Ticker.param += Ticker.delta;

  if (Ticker.count>=Ticker.steps)
    Ticker.pause=Ticker.pause_ticks;
  else
    Ticker.area.style[Ticker.style]= ''+Ticker.param+'px';
}

Ticker.findStrings = function() {
  var tag = document.getElementById('ticker_content');
  if (tag!=null) {
    var anchors = tag.getElementsByTagName('a');
    for (var i=0;i<anchors.length;i++) {
      var text = anchors[i].innerHTML;
      if (text.indexOf('<img')!=0)
        Ticker.msgList.push({m:text,l:anchors[i].href,cl:anchors[i].onclick});
    }
  }
}

Ticker.started=false;
Ticker.start = function() {
  Ticker.findStrings();

  if (Ticker.msgList.length>0) {
    // Set parameters for requested 'type';
    var area  = document.getElementById('ticker_area');

    if (area!=null) {
      area.style.position='relative';
      area.style.display = 'block';
      Ticker.maxWidth = parseInt(area.offsetWidth,10);

      // Place a nested 'div' into the outer one that controls position.
      area.innerHTML='&nbsp;<div id="ticker_inner" style="position:absolute;top:0;left:0;overflow:hidden">&nbsp;</div>';
      Ticker.pause=1;

      Ticker.area  = document.getElementById('ticker_inner');
      if (Ticker.area!=null) {
        Ticker.init(Ticker.area);
        Ticker.timerID = window.setInterval(Ticker.update,Ticker.interval);
      }
    }
  }
  Ticker.started = true;
}

// ****************************************
// Panel
// Used to display one of 'n' panels within the page
// ****************************************
// ticker.js
var PP = {};

PP.initPage = function() {
  PP.configSummary();
}

PP.panels = [
  'pan_a',
  'pan_b',
  'pan_c',
  'pan_d',
  'pan_e',
  'pan_f'
]
PP.configSummary = function() {
  for (var i=0;i<PP.panels.length;i++) {
    var e = document.getElementById(PP.panels[i]);
    if (e!=null)
      e.style.display = (i==0 ? 'block' : 'none');
  }
  PP.changePanel(0);
}
PP.changePanel = function(p) {
  var show, showTab;
  for (var i=0;i<PP.panels.length;i++) {
    var e = document.getElementById(PP.panels[i]);
    var s = document.getElementById(PP.panels[i]+"_t");
    if (e!=null && s!=null) {
      if (i==p) {
        show=e;
        showTab=s;
      }
      else {
        e.style.display = 'none';
        s.className = 'nosel';
      }
    }
  }
  if (show!=null)
    show.style.display = 'block';
  if (showTab!=null)
    showTab.className = 'sel';

  return false;
}
PP.makePanelVisible = function(yes, whichOne) {
  var e = document.getElementById('memb-wrap');
  var s = document.getElementById('memb-shade');

  if (e!=null) {
    if (yes==true) {
      if (whichOne!=null)
        PP.changePanel(whichOne);
      s.style.display = 'block';
      e.style.top  = '150px';
      e.style.left = '300px';
      Ticker.freeze(1);
    }
    else {
      s.style.display = 'none';
      e.style.top  = '-5000px';
      e.style.left = 0;
      Ticker.freeze(0);
    }
  }
  return false;
}

