function addWindowOnload(func) {	
	var oldonload = window.onload;
	if (typeof window.onload != 'function'){ window.onload = func } 
	else {
		window.onload = function(){
		oldonload();
		func();
		}
	}
}

function visible(node) {
  node = $(node);
  while (node.parentNode) {
    if (node.style.display != "none") { node = node.parentNode; }
    else return false;
  }
  return true
}

function validate(frm) {
  var invalid = false;
  if (!Element.visible(frm)) return true;
  var inputs = frm.getElementsByTagName('input');
  for (var i=inputs.length-1; i >= 0; i--) {
    if (visible(inputs[i])) { 
      if (inputs[i].hasClassName('required') && $F(inputs[i]) == '') {
        new Effect.Highlight(inputs[i], {duration:1.0, startcolor:'#cccc55'});
        Element.addClassName(inputs[i], 'fieldWithErrors');
        invalid = inputs[i];
      } else {
        Element.removeClassName(inputs[i].parentNode, 'fieldWithErrors')
      }
    }
  }
  if (invalid) invalid.focus();
  return !invalid;
}

var spinning;

function spin(element, callback) {
  var el = $(element).parentNode;
  el.appendChild($('spinner'));
  $('spinner').show();
  Effect.Fade(el, { duration:0.3, afterFinish: function() { 
      
    if (el.parentNode.id == "product_ul")
      $('recommendation_ul').appendChild(el);
    else
      $('product_ul').appendChild(el);
    
    Effect.Appear(el);

  }});
}

function pos() {
  return parseInt($('scroller').style.left);
}

var effect = null;

function right(x) {
  if (max > pos()) if (!effect) {
    x = x ? x : -300
    new Effect.MoveBy('scroller_preview', 0, (x/100)*10)
    effect = new Effect.MoveBy('scroller', 0, x, { afterFinish:function(){
      if (pos()-(-x) <= -max) $('scroll_right').hide();
      if (pos() < 0) $('scroll_left').show();
      effect = null;
    }});
  }
}
function left(x) {
    if (pos() < 0) if (!effect) {
    x = x ? x : 300
    new Effect.MoveBy('scroller_preview', 0, (x/100)*10);
    effect = new Effect.MoveBy('scroller', 0, x, {afterFinish:function(){
      if (pos() >= -max) $('scroll_right').show();
      if (pos() > -x) $('scroll_left').hide();
      effect = null;
    }});
  }
}

var dock_effect = null;

function dock_appear() {
  if (dock_effect) dock_effect.cancel();
  dock_effect = new Effect.Appear('scroller_preview', { duration: 0.2 });
}
function dock_fade() {
  if (dock_effect) dock_effect.cancel();
  dock_effect = new Effect.Fade('scroller_preview', { duration: 0.3, to:0.5 });
}

function check_pos(count) {
  var x=pos() - 300 + count;
  if (x>0) { right(-x) }
  else if (x<0) left(-x);
  return false;
}

addWindowOnload(function(){ 
  if (!$('scroller_preview')) return;
  new Effect.MoveBy('scroller', 0, 0);
  new Effect.Appear('scroller_preview', { to:0.5 });

  var nodes = [$('scroller_preview').childNodes, $('scroller_preview')].flatten();

  $A(nodes).each(function(i){
  //  Event.observe(i, "mouseover", dock_appear);
  //  Event.observe(i, "mouseout",  dock_fade);
  })
})

