// u HTML dokumentu treba definirati vanjski div kojemu će biti određena fiksna visina i dodijeljena klasa scrollbox
// unutar tog div-a treba definirati unutrašnji div sa sadržajem
// potrebno je uključiti i datoteku scrollbar.css
// skripta će dodati potrebne elemente za slider 
// potrebna mu je datoteka mousewheel.js
//šđčćž
var scrollTempX = 0;
var scrollTempY = 0;
var scrollRelX = 0;
var scrollRelY = 0;
var sliderCtrl = 0;
var scrollIE = document.all?true:false;
if (!scrollIE) document.captureEvents(Event.MOUSEMOVE);

$(document).ready(function(){
  var i;
  var bodyOnMouseMove = $("body").attr("onmousemove");
  var bodyOnMouseUp = $("body").attr("onmouseup");
  $("body").attr("onmousemove",bodyOnMouseMove +"scrollGetMouseXY(event);");
  $("body").attr("onmouseup",bodyOnMouseUp +"sliderCtrl = 0;");
  var scrollboxes = $(".scrollbox");
  for (i = 0; i < scrollboxes.length; i++) {
    var scrollboxCtrl = scrollboxes[i];
    $(scrollboxCtrl).prepend('<div class="slidebox" onmousedown="return false;"><div class="slider" onmousedown="startSliding(this);"></div></div>');
    mwHookEvent(scrollboxCtrl,'mousewheel',scrollHandleMouseWheel);
  }
});

function scrollSliderMove(sliderCtrl,pomak) {
  var sp;
  var contentCtrl = $(sliderCtrl).parents(".scrollbox").children(":not(:first-child)");
  var sliderPosition = parseInt($(sliderCtrl).css("top"));
  if (isNaN(sliderPosition)) sliderPosition = 0;
  var sliderHeight = $(sliderCtrl).outerHeight();
  var scrollboxHeight = $(sliderCtrl).parents(".scrollbox").innerHeight();
  var contentHeight = $(contentCtrl).outerHeight();
  if (contentHeight > scrollboxHeight) {
    sliderPosition += pomak;
    if (sliderPosition < 0) sliderPosition = 0;
    if (sliderPosition + sliderHeight > scrollboxHeight) sliderPosition = scrollboxHeight - sliderHeight;
    $(sliderCtrl).css("top",sliderPosition +"px");
    var contentPosition = (contentHeight - scrollboxHeight) * sliderPosition / (scrollboxHeight - sliderHeight);
    $(contentCtrl).css("top",-contentPosition +"px");
  }
}

function scrollGetMouseXY(e) {
  if (scrollIE) { // grab the x-y pos.s if browser is IE
    scrollTempX = event.clientX + document.body.scrollLeft;
    scrollTempY = event.clientY + document.body.scrollTop;
  } else {  // grab the x-y pos.s if browser is NS
    scrollTempX = e.pageX;
    scrollTempY = e.pageY;
  }  
  if (scrollTempX < 0){scrollTempX = 0}
  if (scrollTempY < 0){scrollTempY = 0}    
  if (sliderCtrl) {
    var pomak = scrollTempY - scrollRelY;
    scrollRelY = scrollTempY;
    scrollSliderMove(sliderCtrl,pomak);
  }
  return true;
}

function scrollHandleMouseWheel(e) {
  e = e ? e : window.event;
  var wheelData = e.detail ? e.detail * -1 : e.wheelDelta / 40;

  var ctrl = e.currentTarget;
  scrollSliderMove($(ctrl).find(".slider"),-parseInt(wheelData));

  return mwCancelEvent(e);
}

function initSliders() {
  var i = 0;
  var visina_okvira;
  var visina_sadrzaja;
  var visina_slidera;
  var sliders = $(".slider");
  for (i = 0; i < sliders.length; i++) {
    $(sliders[i]).css("top","0");
    $(sliders[i]).parents(".scrollbox").children(":not(:first-child)").css("top","0");
    visina_okvira = $(sliders[i]).parents(".scrollbox").innerHeight();
    visina_sadrzaja = $(sliders[i]).parents(".scrollbox").children(":not(:first-child)").outerHeight();
    if (visina_sadrzaja > visina_okvira) {
      visina_slidera = Math.round(visina_okvira * visina_okvira / visina_sadrzaja, 0);
      if (visina_slidera < 15) visina_slidera = 15;
      $(sliders[i]).css("height",visina_slidera +"px")
      $(sliders[i]).css("display","block");
    } else {
      $(sliders[i]).css("display","none");
    }
  }
}

function startSliding(ctrl) {
  sliderCtrl = ctrl;
  scrollRelY = scrollTempY;
}
