// Imagery's slideshow.
// (C) 2006 AKS <aksus-69@yandex.ru>. Some modifications by Sanyok <ms86(at)yandex.ru>
var scroll_obj;
var scroll_enabled = false;
var scroll_process = false;
var scroll_b = false;

function applyHandler(o, e, f)
{
  e = (e instanceof Array) ? (arguments.callee(o, e[1], f), e[0]) : e;
  return (o.attachEvent) ? o.attachEvent(e, f) : (o.addEventListener) ? o.addEventListener(e.substr(2), f, false) : false;
}
function initScroller()
{
  var s = document.getElementById('scroller');

  if (s == null)
    return;

  (scroll_obj = s).scroll_position = s.scroll_active = 0;
  s.scroll_range = s.offsetWidth - s.parentNode.offsetWidth;

  scroll_enabled = true;
}
function scrollControl(e)
{
  if (!scroll_enabled || scroll_obj.scroll_active)
    return false;

  scroll_obj.scroll_active = true;

  var b = (e.id == 'control_left');

  return ((scroll_process && scroll_b == b) ? false : (scroll_b = b, scrollProcess(scroll_obj)));
}
function scrollStop()
{
  if (!scroll_enabled)
    return false;

  scroll_obj.scroll_active = false;

  return false;
}
function scrollProcess(o, dx)
{
  scroll_process = true;

  if (!dx)
    dx = 0;

  if (o.scroll_active && dx < 5)
    dx += 0.25;

  if (dx == 0)
  {
    scroll_process = false;
    return false;
  }

  var p = o.scroll_position;

  o.scroll_position = (!scroll_b && p > -o.scroll_range) ? p - Math.round(dx) : (scroll_b && p < 0) ? p + Math.round(dx) : (o.scroll_active = 0, scroll_b) ? 0 : p;
  o.style.left = o.scroll_position + 'px';

  return (o.scroll_active) ? window.setTimeout(function() { return scrollProcess(o, dx); }, 18) : window.setTimeout(function() { return scrollProcess(o, dx - 0.25); }, 18);
}
applyHandler(window, 'onload', initScroller);

