
var scrollInfo=new Array();

function scrollPrev(sn) {
  var si=scrollInfo[sn];
  scrollSection(sn,"prev");
}

function setNextWait(sn,enableWaitMode) {
  var si=scrollInfo[sn];

  for (var i=1;i<=si["numberButtons"];i++) {
    var button=sn+'_'+i;
    if (enableWaitMode) {
      document.getElementById('next_button_'+button).style.display='none';
      document.getElementById('wait_button_'+button).style.display='block';
    } else {
      document.getElementById('next_button_'+button).style.display='block';
      document.getElementById('wait_button_'+button).style.display='none';
    }
  }
}

function scrollNext(sn) {
  var si=scrollInfo[sn];

  if (si["currentPosition"]+si["countPerPage"]>=si["alreadyLoadedCount"]) {
    var returnfunc="scrollSectionLoaded('"+sn+"',#result)";
    setNextWait(sn,true);
    ajax_get_url(si['link']+'?cnext='+(si["currentPosition"]+si["countPerPage"])+'&countperpage='+si["countPerPage"]+'&category='+sn+'&gap='+si["gap"]+'&uid='+globalScrollUID+'&folder='+globalScrollFolder+si['query'],returnfunc);
    return;
  }
  scrollSection(sn,"next");
}

function getNewScrollPosition(sn,mode) {
  var si=scrollInfo[sn];
  var p=si["currentPosition"];
  if (mode=="next") p+=si["moveCount"]; else p-=si["moveCount"];
  p=Math.min(Math.max(p,0),si["countAll"]-si["countPerPage"]);
  return p;
}

function scrollSection(sn,mode) {
  scrollInfo[sn]["currentPosition"]=getNewScrollPosition(sn,mode);
  var si=scrollInfo[sn];

  for (var i=1;i<=si["numberButtons"];i++) {
    var button=sn+'_'+i;

    if (si["currentPosition"]==si["countAll"]-si["countPerPage"]) {
      document.getElementById('next_button_'+button).style.display='none';
      document.getElementById('next_button_offline_'+button).style.display='block';
    } else {
      document.getElementById('next_button_'+button).style.display='block';
      document.getElementById('next_button_offline_'+button).style.display='none';
    }

    if (si["currentPosition"]==0) {
      document.getElementById('back_button_'+button).style.display='none';
      document.getElementById('back_button_offline_'+button).style.display='block';
    } else {
      document.getElementById('back_button_'+button).style.display='block';
      document.getElementById('back_button_offline_'+button).style.display='none';
    }

  }

  var d=document.getElementById("section_"+sn);
  JSTweener.removeTweens(d);
  if (si["direction"]=="V") {
    JSTweener.addTween(d,{time:2,transition:'easeoutexpo', scrollTop:si["currentPosition"]*(si["itemSize"]+si["gap"])});
  } else {
    JSTweener.addTween(d,{time:2,transition:'easeoutexpo', scrollLeft:si["currentPosition"]*(si["itemSize"]+si["gap"])});
  }
}

function scrollSectionLoaded(sn,result,myfunc) {
  var si=scrollInfo[sn];
  setNextWait(sn,false);
  if (result[0]==undefined || result=='#') return;

  scrollInfo[sn]["alreadyLoadedCount"]+=result.length;

  var d=document.getElementById("section_"+sn);
  var clipsRow=document.getElementById('scroll_ul_'+sn);

  if (si["direction"]=="H") {
    var spos=d.scrollLeft;
        var requiredw=(scrollInfo[sn]["alreadyLoadedCount"]*si["itemSize"]+(scrollInfo[sn]["alreadyLoadedCount"]-1)*si["gap"]);
    if (parseInt(clipsRow.style.width)<requiredw) clipsRow.style.width=requiredw+"px";
  } else {
    var spos=d.scrollTop;
        var requiredh=(scrollInfo[sn]["alreadyLoadedCount"]*si["itemSize"]+(scrollInfo[sn]["alreadyLoadedCount"]-1)*si["gap"]);
    if (parseInt(clipsRow.style.height)<requiredh) clipsRow.style.height=requiredh+"px";
  }

  var lis=clipsRow.getElementsByTagName("li");
    if (lis.length>0) lis[lis.length-1].style.width=(parseInt(lis[lis.length-1].style.width)+si["gap"])+"px";

  for (var i=0;i<result.length;i++) {
    var newElement=document.createElement("li");
    var ew=si['itemSize'];
    if (i<result.length-1) ew+=si['gap'];
    newElement.style.width=ew+"px";
    newElement.innerHTML='<div style="width:'+si['itemSize']+'px">'+result[i]['code']+'<div style="clear:both"></div>&nbsp;</div>';
    clipsRow.appendChild(newElement);
  }

  if (si["direction"]=="H") {
        d.scrollLeft=spos;
  }

  scrollSection(sn,"next");

  if (typeof(itemsLoaded)=="function") itemsLoaded(sn);
}

