var fadecolor=Array();
var fadespeed=Array();
var fadeevent=Array();
var scores=0;
function splitRGB(str){
  str=str.replace(/[# ]/g,"");

  var res=str.match(/rgb\((\d+),(\d+),(\d+)\)/);
  if (!res){
    res=str.replace(/^(.)(.)(.)$/,'$1$1$2$2$3$3').match(/.{2}/g);

    for (var i=0;  i<3; i++){
      res[i] = parseInt(res[i], 16);
    }
    res= {'1':res[0],'2':res[1],'3':res[2]};

  }
  return res;
}
function rev(id){
  el=document.getElementById(id);
  el.onmouseout=function (){
    fade(id,'#000000',100);
  };
  el.onmouseover=function(){
    fade(id,'#ffffff',30,'rev2(id)');
  };
}
function rev2(id){
  el=document.getElementById(id);
  el.onmouseout=function (){
    fade(id,'#ffffff',100);
  };
  el.onmouseover=function(){
    fade(id,'#000000',30,'rev(id)');
  };
}


function stop(id){
  scores+=parseInt(document.getElementById(id).innerHTML);
  document.getElementById('scores').innerHTML=scores;

  el=document.getElementById(id);
  el.onmouseout=function (){};
  el.onmouseover=function (){};
  el.style.color="#c0c0c0";

}


function fadestep(id){
  to = fadecolor[id];
  el=document.getElementById(id);
  var rgbf = splitRGB(el.style.backgroundColor);
  var rgbto = splitRGB(to);
  if ((rgbf[1]!=rgbto[1])&&(rgbf[2]!=rgbto[2])&&(rgbf[3]!=rgbto[3])){
    for (i=1;i<4;i++){
      var diff=(rgbf[i]-rgbto[i])*1/20;
      if (diff>0){
        diff=Math.ceil(diff);
      }else{
        diff=Math.floor(diff);
      }
      rgbf[i]=rgbf[i]-diff;
    }
    el.style.backgroundColor="rgb("+rgbf[1]+", "+rgbf[2]+", "+rgbf[3]+")";
    setTimeout('fadestep("'+id+'")',fadespeed[id]);
  } else {

    if (fadeevent[id]){
      eval (fadeevent[id]);
    }
    delete fadeevent[id];
    delete fadecolor[id];
  }
}
function fade(id,to,speed,ev){
  fadespeed[id]=speed;
  fadeevent[id]=ev;
  if (fadecolor[id]){
    fadecolor[id]=to;
  } else {
    fadecolor[id]=to;
    fadestep(id);
  }
}
