function CBool(bool) 
{
 if (bool) return true;
 else return false;
}

// Boolean browser names
var isOpera     = CBool(navigator.appName.indexOf("Opera") != -1);
var isNetscape  = CBool(navigator.appName.indexOf("Netscape") != -1);
var isExplorer  = CBool(navigator.appName.indexOf("Explorer") != -1);
var isMozilla   = CBool(navigator.appName.indexOf("Mozilla") != -1);
var isKonqueror = CBool(navigator.appName.indexOf("Konqueror") != -1);
// Browser name
var browserName = navigator.appName;
if (isOpera)     {browserName = "Opera";}
if (isNetscape)  {browserName = "Netscape";}
if (isExplorer)  {browserName = "Explorer";}
if (isMozilla)   {browserName = "Mozilla";}
if (isKonqueror) {browserName = "Konqueror";}

// Browser version
var browserVersion = "";
if (isExplorer) 
{
 var i = navigator.appVersion.indexOf("MSIE") + 5;
 browserVersion = parseFloat(navigator.appVersion.substring(i,i+5)).toString();
} 
else
{
 browserVersion = parseFloat(navigator.appVersion).toString();
}

//browserVersion = browserVersion.substring(0,1);

// Boolean browser versions
var isVersion1 = CBool(browserVersion == "1");
var isVersion2 = CBool(browserVersion == "2");
var isVersion3 = CBool(browserVersion == "3");
var isVersion4 = CBool(browserVersion == "4");
var isVersion5 = CBool(browserVersion == "5");
var isVersion6 = CBool(browserVersion == "6");
var isVersion7 = CBool(browserVersion == "7");
var isVersion8 = CBool(browserVersion == "8");
var isVersion9 = CBool(browserVersion == "9");

// Browsers
var browserIs = browserName + browserVersion;

/* Make the document.all problem disappear by creating getElement,
   based on document.all and document.getElementById, respectively. */
var bAllElement = false;
var bElementBrowser = false;
if (document.all && !document.getElementById) 
{
 bAllElement = true;
 bElementBrowser = true;
} 
else if (!document.all && document.getElementById) 
{
 bAllElement = false;
 bElementBrowser = true;
}
if (bElementBrowser == false) 
{
 // Kick user away. Not implemented yet for debuging.
 //document.location = "http://www.w3.org/";
}
function getElement(item) 
{
 if (bAllElement) return getElement(item);
 else return document.getElementById(item);
}


var lnkCount = 0;

var stateMax = 10;

var speed = new Array();
speed[0] = 70;
speed[1] = 30;

var color_bg = new Array();
color_bg[0] = new Array(); 
color_bg[1] = new Array();
color_bg[0][0] = 255; // \    Off
color_bg[0][1] = 255; //  |-> #F7FBFD
color_bg[0][2] = 255; // /
color_bg[1][0] =  20; // \    On
color_bg[1][1] =  139; //  |-> #4D5577
color_bg[1][2] = 212; // /
var color_fg_off = '#018BD4';
var color_fg_on = '#FFFFFF';



var iTimerIDs = new Array();
var iLinkStates = new Array();
var lnkName = new Array();
var lnkUrl = new Array();
var bIsColorizing = new Array();

function DecToHex(dec)
{
 dec = Math.floor(Math.abs(dec));
 var hex = "";
 var a = "" + dec;
 a = a.length;
 var h = "0123456789ABCDEF";
 for (n=0; n<a; n++)
 {
  he = h.charAt(dec-Math.floor(dec/16)*16);
  dec = (dec - h.indexOf(he)) / 16;
  hex = he + hex;
 }
 if (hex.charAt(0) == "0") hex = hex.substring(1,hex.length);
 return hex;
}

function toColorHex(color) 
{
 var s = "#";
 for (var i = 0; i < 3; i++) 
 {
  s += DecToHex(color[i]);
 }
 return s;
}

function doColorize(onoff, index) 
{
 clearTimeout(iTimerIDs[index]);
 if (iLinkStates[index] > 10) 
 {
  iLinkStates[index] = 10;
 } 
 else if (iLinkStates[index] < 0) 
 {
  iLinkStates[index] = 0;
 } 
 else 
 {
  var diff = iLinkStates[index] / stateMax;
  var color = new Array();
  if (onoff == 1) 
  {
   for (var i = 0; i < 3; i++) 
   {
    var colorDiff = diff * (color_bg[0][i]-color_bg[1][i]);
  color[i] = color_bg[0][i] - colorDiff;
   }
   iLinkStates[index]++;
  } 
  else 
  {
   for (var i = 0; i < 3; i++) 
   {
    var colorDiff = diff * (color_bg[0][i]-color_bg[1][i]);
    color[i] = color_bg[0][i] - colorDiff; 
   }
   iLinkStates[index]--;
  }
  if (iLinkStates[index] < 8) 
  {
   getElement('link' + index).style.color = color_fg_off;
  } 
  else 
  {
   getElement('link' + index).style.color = color_fg_on;
  }
  getElement('link' + index).style.backgroundColor = toColorHex(color);
  if (iLinkStates[index] <= 10 && iLinkStates[index] >= 0) 
  {
   iTimerIDs[index] = setTimeout('doColorize(' + onoff + ', ' + index + ')', speed[onoff]);
  } 
  else 
  {
   if (iLinkStates[index] > 10) 
   {
    iLinkStates[index] = 10;
   } 
   else if (iLinkStates[index] < 0) 
   {
    iLinkStates[index] = 0;
   }
  }
 }
}

function linkOn(numbah) 
{
 getElement('link' + numbah).style.backgroundColor = '#4D5577';
 getElement('link' + numbah).style.color = '#F7FBFD';
 //doColorize(1, numbah);
}

function linkOff(numbah) 
{
 getElement('link' + numbah).style.backgroundColor = '#F7FBFD';
 getElement('link' + numbah).style.color = '#4D5577';
 //doColorize(0, numbah);
}

function linkGo(numbah) 
{
 document.location = lnkUrl[numbah];
}

function addLink(name, url) 
{
 lnkName[lnkCount] = name;
 lnkUrl[lnkCount] = url;
 iTimerIDs[lnkCount] = 0;
 iLinkStates[lnkCount] = 0;
 bIsColorizing[lnkCount] = false;
 lnkCount++;
}

function writeLinks() 
{
 document.write("<table cellpadding=\"1\" cellspacing=\"1\" border=\"0\" width=\"100%\" align=\"center\">\n");
 for (var i = 0; i < lnkCount; i++) 
 {
  document.write("<tr><td class=\"linkcell\" id=\"link" + i + "\" onmouseover=\"linkOn('" + i + "');\" onmouseout=\"linkOff('" + i + "');\" onmousedown=\"linkGo('" + i + "')\" width=\"" + (100/lnkCount) + "%\">" + lnkName[i] + "</td></tr>\n");
 }
 document.write("</table>\n");
}


