var _fadeStep = new Array( 0,  4,  8,  7,  6,  5,  4,  3,  2,  1,  0);
var _fadeWait = new Array(100,130,170,140, 110, 80, 70, 60, 50, 40);
var _fadeStartColorRed   = 255;
var _fadeStartColorGreen = 245;
var _fadeStartColorBlue  = 100;

Array.prototype.max = getMax;

function getMax(){
  var max = this[0];
  for (var i = 1; i < this.length; i++) {
    if (max < this[i]) max = this[i];
  }
  return max;
}

function oneDigitHEX2decimal(sHex) {
  if (sHex < 10) return sHex;
  if (sHex >= 'a') return sHex.charCodeAt(0) - 87;
}

function hex2bin(sHex) {
  var length = sHex.length;
  var decimal = 0;
  for (i = 0; i < length; i++) {
    decimal = decimal + oneDigitHEX2decimal(sHex.charAt(length-1-i))*Math.pow(16,i);
  }
  return decimal;
}

function isInt(str) {
  var i = parseInt (str);
  if (isNaN (i)) return false;
  i = i.toString ();
  if (i != str) return false;
  return true;
}

function fadeInWithIterator(i, objectID, finalColor) {
  if (!document.getElementById(objectID)) return false;
  endColorRed = hex2bin(finalColor.substring(1,3));
  endColorGreen = hex2bin(finalColor.substring(3,5));
  endColorBlue = hex2bin(finalColor.substring(5,7));
  if (i < _fadeStep.length) {
    r = endColorRed + (_fadeStartColorRed - endColorRed) / _fadeStep.max() * _fadeStep[i];
    g = endColorGreen + (_fadeStartColorGreen - endColorGreen) / _fadeStep.max() * _fadeStep[i];
    b = endColorBlue + (_fadeStartColorBlue - endColorBlue) / _fadeStep.max() * _fadeStep[i];
    document.getElementById(objectID).style.backgroundColor = "rgb(" + Math.round(r) + "," + Math.round(g) + "," + Math.round(b) + ")";
    //alert(document.getElementById(objectID).style.backgroundColor);
    iWait  = _fadeWait[i];
    i  = i + 1;
    setTimeout("fadeInWithIterator("+i+", '" + objectID + "','" + finalColor + "')", iWait);
  }
}

function fadeIn(objectID, finalColor) {
  if (!finalColor) finalColor = '#ffffff';
  fadeInWithIterator(0, objectID, finalColor);
}

function LTrim(str) {
  var whitespace = new String(" \t\n\r");
  var s = new String(str);
  if (whitespace.indexOf(s.charAt(0)) != -1) {
    var j=0, i = s.length;
    while (j < i && whitespace.indexOf(s.charAt(j)) != -1) j++;
    s = s.substring(j, i);
  }
  return s;
}

function RTrim(str) {
  var whitespace = new String(" \t\n\r");
  var s = new String(str);
  if (whitespace.indexOf(s.charAt(s.length-1)) != -1) {
    var i = s.length - 1;
    while (i >= 0 && whitespace.indexOf(s.charAt(i)) != -1) i--;
    s = s.substring(0, i+1);
  }
  return s;
}

function trim(str) {
  return RTrim(LTrim(str));
}

function focusTo(iElementID) {
  if (document.getElementById(iElementID)) {
    element = document.getElementById(iElementID);
    element.focus();
  }
}

function isIE() {
  return navigator.appVersion.indexOf("MSIE") != -1;
}
