/**
 * Comparison Hover
 *
 *
 * @author     Takashi Mizohata <takashi@firstbornmultimedia.com>
 * @copyright  2008 firstborn
 * @license    firstborn internal (pending)
 */

var ComparisonHover = function (parent, str)
{
  this.parent = parent;
  this.path = str;
}


// MEMBER METHODS _________________________________________________________

ComparisonHover.prototype.selected = function (target)
{
  throw new Error("should not happen this.");
}

ComparisonHover.prototype.out = function (target)
{
  var jq = $('td', target);
  var len = jq.size();
  for (var i = 0; i < len; ++i)
  {
    var elm = jq.get(i);
    elm.style.background = 'transparent';
  }
  var imgs = $('img', jq);
  var c = Controller.getInstance();
  imgs.each(
    function (n, obj)
    {
      var my = c.dictionary.get(obj);
      my.out(obj);
    }
  )
}


ComparisonHover.prototype.hover = function (target)
{
  var jq = $('td', target);
  var len = jq.size();
  for (var i = 0; i < len; ++i)
  {
    var elm = jq.get(i);
    switch (true)
    {
      case (i == 0):
        elm.style.backgroundImage = "url(" + this.path + ")";
        elm.style.backgroundPosition = "left top";
        elm.style.backgroundRepeat = 'no-repeat';
      break;

      case (i == (len - 1)):
        elm.style.backgroundImage = "url(" + this.path + ")";
        elm.style.backgroundPosition = "right top";
        elm.style.backgroundRepeat = 'no-repeat';
      break;

      default:
        elm.style.backgroundColor = "#D7D7D7";
      break;
    }
  }
  var imgs = $('img', jq);
  var c = Controller.getInstance();
  imgs.each(
    function (n, obj)
    {
      var my = c.dictionary.get(obj);
      my.hover(obj);
    }
  )
}


// STATIC METHODS _________________________________________________________

ComparisonHover.pathinfo = function (str)
{
  var result = {};
  var arr_dirs = str.split('/');
  result.filename = arr_dirs.pop();
  if (result.filename.match(ComparisonHover.regexp) != null)
  {
    var arr_file = (result.filename.replace(ComparisonHover.regexp, '')).split('.');
  }
  else
  {
    var arr_file = result.filename.split('.');
  }
  result.dirname = arr_dirs.join('/');
  result.ext = arr_file.pop();
  result.basename = arr_file.join('.');
  return result;
}


ComparisonHover.compileRegexp = function (obj)
{
  var str = '';
  for (var i in obj)
  {
    str += obj[i] + '|';
  }
  str = str.substring(0, (str.length - 1));
  return new RegExp(str);
}


