

function scrollElements(amtElements, amtElementsInBar, lengthElement, moveCourse, moveSpeed)
{
//correctly work only two modes, amtElements == amtElementsInBar XOR amtElements == 1
if(amtElements != amtElementsInBar && amtElements != 1)
 {
  amtElements = amtElementsInBar;
 }

if(controlIntFlag == true)
 {
  controlInt = amtElements * lengthElement;
  controlIntFlag = false;
 }

switch(moveCourse)
 {
  case    1 : course = "bottom"; move += moveSpeed; break; //Bottom to Top
  case    2 : course = "right"; move -= moveSpeed; break;  //Left to Right
  case    3 : course = "bottom"; move -= moveSpeed; break; //Top to Bottom
  default   : course = "right"; move += moveSpeed; break;  //Right to Left
 }

var prefix = moveCourse == 4 || moveCourse == 1 ? (-amtElements) : amtElements;
controlInt -= moveSpeed;

var objLink = document.getElementById("row").style;
objLink[course] = move;



if(controlInt > 0)
 {
  timeoutid = setTimeout("scrollElements("+amtElements+", "+amtElementsInBar+", "+lengthElement+", "+moveCourse+", "+moveSpeed+")", 1);
 }
else if(controlInt <= 0)
 {
  //offset firstElementPointer
  if(prefix < 0)
   {
    firstElementPointer += amtElements;
   }
  else
   {
    firstElementPointer -= amtElements;
   }


  if(firstElementPointer >= arrElements.length && prefix < 0)
   {
    firstElementPointer -= arrElements.length;
   }
  else if(firstElementPointer < 0 && prefix > 0)
   {
    firstElementPointer = arrElements.length + firstElementPointer;
   }



  //reset old move values
  controlIntFlag = true;
  move = amtElementsInBar * lengthElement;

  //define pointers for offset old elements
  var tmpPointer = prefix < 0 ? (amtElementsInBar * 2) + (amtElements + 1) : amtElementsInBar - amtElements;

  for(var i = amtElementsInBar; i != 0; i--)
   {
    if(prefix < 0)
     {
      tmpPointer--;
     }
    else
     {
      tmpPointer++;
     }

    var tmpPointerCopy = tmpPointer;

    /**************************
      tmpPointerCopy == old value
      tmpPointer == new value
      
      tmpPointer(new value) #load in# tmpPointerCopy(old value)
      tmpPointerCopy = tmpPointer (on every iteration)
    ****************************/

    tmpPointerCopy += prefix;
 
    //offset of old elements
    //if first iteration OR amtElements >= amtElementsInBar
    if(i == amtElementsInBar || amtElements >= amtElementsInBar)
     {
      //save old value
      var srcCopy = document.getElementById("img"+tmpPointerCopy).src;
      //load new value
      document.getElementById("img"+tmpPointerCopy).src = document.getElementById("img"+tmpPointer).src;

      var hrefCopy = document.getElementById("a"+tmpPointerCopy).href;
      document.getElementById("a"+tmpPointerCopy).href = document.getElementById("a"+tmpPointer).href;

      try
       {
        var info1Copy = document.getElementById("info1_"+tmpPointerCopy).innerHTML;
        document.getElementById("info1_"+tmpPointerCopy).innerHTML = document.getElementById("info1_"+tmpPointer).innerHTML;  
       } 
      catch(e) { } 

      try
       {
        var info2Copy = document.getElementById("info2_"+tmpPointerCopy).innerHTML;
        document.getElementById("info2_"+tmpPointerCopy).innerHTML = document.getElementById("info2_"+tmpPointer).innerHTML;  
       } 
      catch(e) { } 

      try
       {
        var info3Copy = document.getElementById("info3_"+tmpPointerCopy).innerHTML;
        document.getElementById("info3_"+tmpPointerCopy).innerHTML = document.getElementById("info3_"+tmpPointer).innerHTML;  
       } 
      catch(e) { } 

     }
    else
     {
      var srcCopyTmp = document.getElementById("img"+tmpPointerCopy).src;
      document.getElementById("img"+tmpPointerCopy).src = srcCopy;
      var srcCopy = srcCopyTmp;

      var hrefCopyTmp = document.getElementById("a"+tmpPointerCopy).href;
      document.getElementById("a"+tmpPointerCopy).href = hrefCopy;
      var hrefCopy = hrefCopyTmp;

      try
       {
        var info1CopyTmp = document.getElementById("info1_"+tmpPointerCopy).innerHTML;

        document.getElementById("info1_"+tmpPointerCopy).innerHTML = info1Copy;
        var info1Copy = info1CopyTmp;
       } 
      catch(e) { } 

      try
       {
        var info2CopyTmp = document.getElementById("info2_"+tmpPointerCopy).innerHTML;

        document.getElementById("info2_"+tmpPointerCopy).innerHTML = info2Copy;
        var info2Copy = info2CopyTmp;
       } 
      catch(e) { } 

      try
       {
        var info3CopyTmp = document.getElementById("info3_"+tmpPointerCopy).innerHTML;

        document.getElementById("info3_"+tmpPointerCopy).innerHTML = info3Copy;
        var info3Copy = info3CopyTmp;
       } 
      catch(e) { } 
     }
   }



  //return row to begin position
  objLink[course] = move;



  //define pointers positions of start for load new values from collection
  //next this Right OR Bottom(++), prew this Left OR Top(--)

  //pointers of elements in collection
  var nextElementPointer = firstElementPointer + amtElementsInBar;
  var prewElementPointer = firstElementPointer != 0 ? firstElementPointer - 1 : arrElements.length - 1;

  //pointers for load element in positions
  var nextLoadElementPointer = amtElementsInBar * 2;
  var prewLoadElementPointer = amtElementsInBar + 1;



  //load in positions new values from collection 
  for(var i = amtElementsInBar; i != 0; i--)
   {
    //offset pointers
    nextLoadElementPointer++;
    prewLoadElementPointer--;

    //operations with collectionPointer
    if(nextElementPointer >= arrElements.length)
     {
      nextElementPointer -= arrElements.length;
     }

    if(prewElementPointer < 0)
     {
      prewElementPointer = arrElements.length - 1;
     }


    //load new values (next)
    document.getElementById("img"+nextLoadElementPointer).src = arrElements[nextElementPointer].src;
    document.getElementById("a"+nextLoadElementPointer).href = arrElements[nextElementPointer].href;

    try
     {
      document.getElementById("info1_"+nextLoadElementPointer).innerHTML = arrElements[nextElementPointer].info1;
     } 
    catch(e) { } 

    try
     {
      document.getElementById("info2_"+nextLoadElementPointer).innerHTML = arrElements[nextElementPointer].info2;
     } 
    catch(e) { }

    try
     {
      document.getElementById("info3_"+nextLoadElementPointer).innerHTML = arrElements[nextElementPointer].info3;
     } 
    catch(e) { }

    //load new values (prew)
    document.getElementById("img"+prewLoadElementPointer).src = arrElements[prewElementPointer].src;
    document.getElementById("a"+prewLoadElementPointer).href = arrElements[prewElementPointer].href;

    try
     {
      document.getElementById("info1_"+prewLoadElementPointer).innerHTML = arrElements[prewElementPointer].info1;
     } 
    catch(e) { } 

    try
     {
      document.getElementById("info2_"+prewLoadElementPointer).innerHTML = arrElements[prewElementPointer].info2;
     } 
    catch(e) { } 

    try
     {
      document.getElementById("info3_"+prewLoadElementPointer).innerHTML = arrElements[prewElementPointer].info3;
     } 
    catch(e) { } 

    //
    nextElementPointer++;
    prewElementPointer--;
   }
 }
}



function w_scrollElements(amtElements, amtElementsInBar, lengthElement, moveCourse, moveSpeed)
{
if(isHover == false)
 {
  scrollElements(amtElements, amtElementsInBar, lengthElement, moveCourse, moveSpeed);
 }
}



function setHover(ObjElement, wrapperId, hoverColor, isFade)
{
document.getElementById(wrapperId).style.borderColor = hoverColor;
 
if(isFade == 1)
 {
  ObjElement.style.filter = "alpha(opacity:80)";
  ObjElement.style.KHTMLOpacity = "0.8";
  ObjElement.style.MozOpacity = "0.8";
  ObjElement.style.opacity = "0.8";
 }
}



function clearHover(ObjElement, wrapperId, borderColor, isFade)
{
document.getElementById(wrapperId).style.borderColor = borderColor;
 
if(isFade == 1)
 {
  ObjElement.style.filter = "alpha(opacity:100)";
  ObjElement.style.KHTMLOpacity = "1";
  ObjElement.style.MozOpacity = "1";
  ObjElement.style.opacity = "1";
 }
}

//


