/*
 * Copyright (c) 2002-2007 Julien WILK (http://LDDb.com/)
 * Not to be modified/reused without authorization.
 */

var buffer_cover = 0;
var buffer_user  = 0;
var buffer_wish  = 0;
var buffer_coll  = 0;
var buffer_shop  = 0;
var current      = 'shop'; // default

var in_input = false;

/*
var ListTimerRunning = false;
var ListTimerID = null;
var ListBackup = '';
*/

document.onkeydown = function (E)
{
//alert('keydown');
  var r;

  if(typeof(E)=='undefined')
  {
    E = event;
    r = event.keyCode;
  }
  else
    r = E.keyCode;

//alert(r);

  modifier = (E.shiftKey || E.altKey || E.ctrlKey);

  if(!in_input && !modifier) // Can't allow someone hitting a key in a search field to trigger shortkey!
  {
    switch(String.fromCharCode(r).toLowerCase())
    {
      case '1':
        refresh_list('shop');
      break;
  
      case '2':
        refresh_list('user');
      break;
  
      case '3':
        refresh_list('wish');
      break;
  
      case '4':
        refresh_list('coll');
      break;

      case '5':
        refresh_list('cover');
      break;
    }
  }
}


function show_controls(id,target)
{
  $(target+"_"+id).style.display = 'block';
}

function hide_controls(id,target)
{
  $(target+"_"+id).style.display = 'none';
}

function show_arrows(header,show)
{
	if(show)
	{
		$(header+'_up').style.display = '';
		$(header+'_down').style.display = '';
	}
	else
	{
		$(header+'_up').style.display = 'none';
		$(header+'_down').style.display = 'none';
	}
}

function refresh_list(mode)
{
  var list = id_list;

//  if(list=="")
//  	refresh_list_cb(mode+'|0:1');
  
  eval('var buffer = buffer_'+mode+';');
  if(buffer==0) // new buffer!
  {
    $("loading").style.display = '';
// AJAX
    $(current+"_on").style.display = 'none';
    $("cross_wait").style.display = '';
    sajax_refresh_list(list,mode,refresh_list_cb);
  }
  else
  {
// BUFFER!
		if(current!=mode)
			$(current+"_on").style.display = 'none';
		refresh_list_cb(mode+'|'+buffer);
  }
}

function refresh_list_cb(id_list)
{
  var param = id_list.split('|');
  var mode = param[0];
  var list = param[1].split(',');
  var picture = param[2];

  var new_buffer = false;

// Buffer
  eval('new_buffer = (buffer_'+mode+' == 0);');
  eval('buffer_'+mode+' = \''+param[1]+'|'+param[2]+'\';');
//  alert(new_buffer);

  $(mode+"_on").style.display = '';

  if(list!="")
  {
    for (i=0; i<list.length; i++)
    {
      elt = list[i].split(':');
      $(elt[0]).style.display = 'none';
      if ((elt[1] == '1'))
      {
      	if(mode == 'shop') // special case for direct shop link
      	  $(elt[0]).innerHTML = '<a href="http://www.lddb.com/laserdisc/shop/'+elt[0]+'/">'+picture+'</a>';
      	else
          $(elt[0]).innerHTML = picture;
      	Effect.Appear(elt[0],{duration:0.5});
      }
      else
      	$(elt[0]).innerHTML = '&nbsp;';
    }
  }

  if(new_buffer)
  {
	  $("cross_wait").style.display = 'none';
    new Effect.Fade("loading");
  }

	Effect.Fade(mode+"_off",{to:0.2,duration:0.5})
	if(mode!=current)
	{
		Effect.Appear(current+"_off",{duration:0.5});
	}
  current = mode;
}

function update_link(target,id,value)
{
  var ret=null;

  switch(target)
  {
    case 'imdb':
      ret = prompt("IMDb ref?");
    break;
    case 'moviegoods':
      ret = prompt("Moviegoods ref for IMDb #"+value+"?");
    break;
    case 'soundcollector':
      ret = prompt("Soundtrack Collector ref for IMDb #"+value+"?");
    break;
    case 'year':
      ret = prompt("Year of contents? (not release)");
    break;
    case 'intrada':
      ret = prompt("Intrada ref for IMDb #"+value+"?");
    break;
  }
  if(ret)
  {
    $("updating").style.display = '';
    sajax_update_link(target,id,ret,value,update_link_cb);
  }
}

function update_link_cb(id_td)
{
  var param = id_td.split('|');
  var id = param[0];
  var td = param[1];

  if(typeof($(id)) != 'undefined')
  {
    $(id).innerHTML = td;
    new Effect.Highlight(id,{startcolor: '#00FF00'});
    new Effect.Appear(id);
  }

  new Effect.Fade("updating");
}
