var calendar_position = 0;
var speed = 35.5;
var current_period = "";
var next_pos;
var initial_pos;
var sp;

function animate(elementID, newLeft, newTop, newWidth, newHeight, time, callback)
{
var el = document.getElementById(elementID);
if(el == null)
return;

var cLeft = parseInt(el.style.left);
var cTop = parseInt(el.style.top);
var cWidth = parseInt(el.style.width);
var cHeight = parseInt(el.style.height);

var totalFrames = 1;
if(time> 0)
totalFrames = time/40;

var fLeft = newLeft - cLeft;
if(fLeft != 0)
fLeft /= totalFrames;

var fTop = newTop - cTop;
if(fTop != 0)
fTop /= totalFrames;

var fWidth = newWidth - cWidth;
if(fWidth != 0)
fWidth /= totalFrames;

var fHeight = newHeight - cHeight;
if(fHeight != 0)
fHeight /= totalFrames;

doFrame(elementID, cLeft, newLeft, fLeft,
cTop, newTop, fTop, cWidth, newWidth, fWidth,
cHeight, newHeight, fHeight, callback);
}

function doFrame(eID, cLeft, nLeft, fLeft, cTop, nTop, fTop, cWidth, nWidth, fWidth, cHeight, nHeight, fHeight, callback)
{
var el = document.getElementById(eID);
if(el == null)
return;

cLeft = moveSingleVal(cLeft, nLeft, fLeft);
cTop = moveSingleVal(cTop, nTop, fTop);
cWidth = moveSingleVal(cWidth, nWidth, fWidth);
cHeight = moveSingleVal(cHeight, nHeight, fHeight);

el.style.left = Math.round(cLeft) + 'px';
el.style.top = Math.round(cTop) + 'px';
el.style.width = Math.round(cWidth) + 'px';
el.style.height = Math.round(cHeight) + 'px';

if(cLeft == nLeft && cTop == nTop && cHeight == nHeight
&& cWidth == nWidth)
{
if(callback != null)
callback();
return;
}

setTimeout( 'doFrame("'+eID+'",'+cLeft+','+nLeft+','+fLeft+','+cTop+','+nTop+','+fTop+','+cWidth+','+nWidth+','+fWidth+','+cHeight+','+nHeight+','+fHeight+','+callback+')', 40);
}

function moveSingleVal(currentVal, finalVal, frameAmt)
{
if(frameAmt == 0 || currentVal == finalVal)
return finalVal;

currentVal += frameAmt;
if((frameAmt> 0 && currentVal>= finalVal)
|| (frameAmt <0 && currentVal <= finalVal))
{
return finalVal;
}
return currentVal;
}

function check_period() {
var today=new Date();
var m=today.getMonth()+1;
var y=today.getYear();
//alert("Year (y)="+y+" & "+m);
if (y >= 2007 && y < 2008){
if (m >= 7 && m <= 9) time = 'qtr_3_2008';
if (m >= 10 && m <= 12) time = 'qtr_4_2008';
} else {
if (m > 0 && m <= 3) time = 'qtr_1_2009';
if (m >= 4 && m <= 6) time = 'qtr_2_2009';
if (m >= 7 && m <= 9) time = 'qtr_3_2009';
if (m >= 10 && m <= 12) time = 'qtr_4_2009';
}
return time;
}

function set_period() {
if (current_period == 'qtr_3_2008') max_period(0);
if (current_period == 'qtr_4_2008') max_period(1);
if (current_period == 'qtr_1_2009') max_period(2);	
if (current_period == 'qtr_2_2009') max_period(3);
if (current_period == 'qtr_3_2009') max_period(4);
if (current_period == 'qtr_4_2009') max_period(5);
}


/* set times
----------- */
function prev_period() {
switch (current_period){
case "qtr_4_2008":
document.getElementById("qtr_4_2008").className = "";
document.getElementById("qtr_3_2008").className = "current";
current_period = "qtr_3_2008";
document.getElementById("time1at").innerHTML = "July";
document.getElementById("time2at").innerHTML = "August";
document.getElementById("time3at").innerHTML = "September";
break;
case "qtr_1_2009":
document.getElementById("qtr_1_2009").className = "";
document.getElementById("qtr_4_2008").className = "current";
current_period = "qtr_4_2008";
document.getElementById("time1at").innerHTML = "October";
document.getElementById("time2at").innerHTML = "November";
document.getElementById("time3at").innerHTML = "December";
break;
case "qtr_2_2009":
document.getElementById("qtr_2_2009").className = "";
document.getElementById("qtr_1_2009").className = "current";
current_period = "qtr_1_2009";
document.getElementById("time1at").innerHTML = "January";
document.getElementById("time2at").innerHTML = "February";
document.getElementById("time3at").innerHTML = "March";
break;
case "qtr_3_2009":
document.getElementById("qtr_3_2009").className = "";
document.getElementById("qtr_2_2009").className = "current";
current_period = "qtr_2_2009";
document.getElementById("time1at").innerHTML = "April";
document.getElementById("time2at").innerHTML = "May";
document.getElementById("time3at").innerHTML = "June";
break;
case "qtr_4_2009":
document.getElementById("qtr_4_2009").className = "";
document.getElementById("qtr_3_2009").className = "current";
current_period = "qtr_3_2009";
document.getElementById("time1at").innerHTML = "July";
document.getElementById("time2at").innerHTML = "August";
document.getElementById("time3at").innerHTML = "September";
break;
}
}

function next_period() {
switch (current_period){
case "qtr_3_2008":
document.getElementById("qtr_3_2008").className = "";
document.getElementById("qtr_4_2008").className = "current";
current_period = "qtr_4_2008";
document.getElementById("time1at").innerHTML = "October";
document.getElementById("time2at").innerHTML = "November";
document.getElementById("time3at").innerHTML = "December";
break;

case "qtr_4_2008":
document.getElementById("qtr_4_2008").className = "";
document.getElementById("qtr_1_2009").className = "current";
current_period = "qtr_1_2009";
document.getElementById("time1at").innerHTML = "January";
document.getElementById("time2at").innerHTML = "February";
document.getElementById("time3at").innerHTML = "March";
break;
case "qtr_1_2009":
document.getElementById("qtr_1_2009").className = "";
document.getElementById("qtr_2_2009").className = "current";
current_period = "qtr_2_2009";
document.getElementById("time1at").innerHTML = "April";
document.getElementById("time2at").innerHTML = "May";
document.getElementById("time3at").innerHTML = "June";
break;
case "qtr_2_2009":
document.getElementById("qtr_2_2009").className = "";
document.getElementById("qtr_3_2009").className = "current";
current_period = "qtr_3_2009";
document.getElementById("time1at").innerHTML = "July";
document.getElementById("time2at").innerHTML = "August";
document.getElementById("time3at").innerHTML = "September";
break;
case "qtr_3_2009":
document.getElementById("qtr_3_2009").className = "";
document.getElementById("qtr_4_2009").className = "current";
current_period = "qtr_4_2009";
document.getElementById("time1at").innerHTML = "October";
document.getElementById("time2at").innerHTML = "November";
document.getElementById("time3at").innerHTML = "December";
break;
}
}

function max_period(new_position) {
switch (new_position){
case 0:
document.getElementById(current_period).className = "";
document.getElementById("qtr_3_2008").className = "current";
current_period = "qtr_3_2008";
document.getElementById("time1at").innerHTML = "July";
document.getElementById("time2at").innerHTML = "August";
document.getElementById("time3at").innerHTML = "September";
break;
case 1:
document.getElementById(current_period).className = "";
document.getElementById("qtr_4_2008").className = "current";
current_period = "qtr_4_2008";
document.getElementById("time1at").innerHTML = "October";
document.getElementById("time2at").innerHTML = "November";
document.getElementById("time3at").innerHTML = "December";
break;
case 2:
document.getElementById(current_period).className = "";
document.getElementById("qtr_1_2009").className = "current";
current_period = "qtr_1_2009";
document.getElementById("time1at").innerHTML = "January";
document.getElementById("time2at").innerHTML = "February";
document.getElementById("time3at").innerHTML = "March";
break;
case 3:
document.getElementById(current_period).className = "";
document.getElementById("qtr_2_2009").className = "current";
current_period = "qtr_2_2009";
document.getElementById("time1at").innerHTML = "April";
document.getElementById("time2at").innerHTML = "May";
document.getElementById("time3at").innerHTML = "June";
break;
case 4:
document.getElementById(current_period).className = "";
document.getElementById("qtr_3_2009").className = "current";
current_period = "qtr_3_2009";
document.getElementById("time1at").innerHTML = "July";
document.getElementById("time2at").innerHTML = "August";
document.getElementById("time3at").innerHTML = "September";
break;
case 5:
document.getElementById(current_period).className = "";
document.getElementById("qtr_4_2009").className = "current";
current_period = "qtr_4_2009";
document.getElementById("time1at").innerHTML = "October";
document.getElementById("time2at").innerHTML = "November";
document.getElementById("time3at").innerHTML = "December";
break;
}
navRoot = document.getElementById("npi_calendar");
for (i=0; i<navRoot.childNodes.length; i++) {node = navRoot.childNodes[i];
if (node.nodeName=="SPAN") {theUL = node.childNodes[0];
if((theUL.nodeName) != "DIV") {theUL = node.childNodes[1];}
calendar_position = new_position*(-568);
theUL.style.marginLeft = new_position*(-568) + "px";
}
}	
nav_buttons();
collapseAll();
return(false);
}

function nav_buttons() {
if(current_period == "qtr_3_2008") {document.getElementById("nav-prev").className = "inactive";} else {document.getElementById("nav-prev").className = ""; collapseAll();}
if(current_period == "qtr_4_2009") {document.getElementById("nav-next").className = "inactive";} else {document.getElementById("nav-next").className = ""; collapseAll();}
}

function horizontal_scroll(start, finish, speed) {
next_pos = finish;
initial_pos = start;
sp = speed;
if (start != finish) {
if(start < finish) {initial_pos = initial_pos + speed;} else {initial_pos = initial_pos - speed;}
navRoot = document.getElementById("npi_calendar");
for (i=0; i<navRoot.childNodes.length; i++) {
node = navRoot.childNodes[i];
if (node.nodeName=="SPAN") {theUL = node.childNodes[0]; theUL.style.marginLeft = initial_pos + "px";}
}
j = setTimeout("horizontal_scroll(initial_pos, next_pos, sp)",1);
}
} 

function scroll_forward() {
if(calendar_position > -2840) {
horizontal_scroll(calendar_position, calendar_position - 568, speed);
calendar_position = calendar_position - 568;
next_period();
nav_buttons();
collapseAll();
}
return(false);
}

function scroll_back() {
if(calendar_position < 0) {
horizontal_scroll(calendar_position, calendar_position + 568, speed);
calendar_position = calendar_position + 568;
prev_period();
nav_buttons();
collapseAll();
}
return(false);
}

function cell_details() {
if (document.getElementsByTagName) {
var prod_root = document.getElementById("npi_calendar");
var prod_segments = prod_root.getElementsByTagName("dl");
for (var i=0; i<prod_segments.length; i++) {
var items = prod_segments[i].getElementsByTagName("a");
for (var j=0; j<items.length; j++) {
items[j].onmouseover = function() { this.className='highlight'; return false };
items[j].onmouseout = function() { this.className=''; return false }
}
}
}
}

function matrix_setup() { 
current_period = check_period();
set_period();
document.getElementById(current_period).className += " current"; nav_buttons(); cell_details();
}
