var SLIDETIMER = 3;
var SLIDESPEED = 0.3;
var SCROLLTIMER = 3; 
var SCROLLSPEED = 300;
var STARTINGOPACITY = 100;

// handles section to section scrolling of the content //
function slideContent(id,prefix,timer) {
  var div = document.getElementById(id);
  var slider = div.parentNode;
  clearInterval(slider.timer);
  slider.section = parseInt(id.replace(/\D/g,''));
  slider.target = div.offsetTop;
  slider.style.top = slider.style.top || '0px';
  slider.current = slider.style.top.replace('px','');
  slider.direction = (Math.abs(slider.current) > slider.target) ? 1 : -1;
  slider.style.opacity = STARTINGOPACITY * .01;
  slider.style.filter = 'alpha(opacity=' + STARTINGOPACITY + ')';

  slider.timer = setInterval( function() {slideAnimate(slider,prefix,timer,id)}, SLIDETIMER);
}

function slideAnimate(slider,prefix,timer,section_id) {
    var curr = Math.abs(slider.current);
    var tar = Math.abs(slider.target);
    var dir = slider.direction;
    if((tar - curr <= SLIDESPEED && dir == -1) || (curr - tar <= SLIDESPEED && dir == 1)) {
        
        slider.style.top = (slider.target * -1) + 'px';
        slider.style.opacity = 1;
        slider.style.filter = 'alpha(opacity=100)';
        clearInterval(slider.timer);
        if(slider.autoscroll) {
            setTimeout( function() {autoScroll(slider.id,prefix,timer)}, timer * 1000);

            // Nimrod Yonatan Ben-Nes messing the code ;)
            var sections_parent = document.getElementById("newsslider");

            var section_id_number   = section_id.split('-')[1];
            
            //var first_section_id    = sections_parent.childNodes[1].id;
            var first_section_id    = sections_parent.getElementsByTagName('div')[0].id;
            //alert (section_id_number+' = '+first_section_id);
            var first_section_id_number = first_section_id.split('-')[1];

            // Only first iteration shouldn't move the first section to be last'
            if (!(section_id_number == 1 && first_section_id_number == 1)) {
               // alert(section_id_number);
                if (section_id_number > 1) {
                    var remove_section_id_number = section_id_number - 1;
                    var section_to_move = document.getElementById('newssection-'+(remove_section_id_number));
                } else {
                    var sections = sections_parent.getElementsByTagName('div');
                    var length = sections.length;

                    var section_to_move = document.getElementById('newssection-'+length);
                }

                sections_parent.removeChild(section_to_move);
                sections_parent.appendChild(section_to_move);

                sections_parent.style.top   = '0px';
                //alert('yup');
            }
        }
    } else {
        var pos = (dir == 1) ? parseInt(slider.current) + SLIDESPEED : slider.current - SLIDESPEED;
        slider.current = pos;
        slider.style.top = pos + 'px';
    }
}

// handles manual scrolling of the content //
function scrollContent(id,dir) {
  var div = document.getElementById(id);
  clearInterval(div.timer);
  var sections = div.getElementsByTagName('div');
  var length = sections.length;
  var limit;
  if(dir == -1) {
    limit = 0;
  } else {
    if(length > 1) {
      limit = sections[length-1].offsetTop;
    } else {
      limit = sections[length-1].offsetHeight - div.parentNode.offsetHeight + 20;
    }
  }
  div.style.opacity = STARTINGOPACITY * .01;
  div.style.filter = 'alpha(opacity=' + STARTINGOPACITY + ')';
  div.timer = setInterval( function() {scrollAnimate(div,dir,limit)}, SCROLLTIMER);
}

function scrollAnimate(div,dir,limit) {
  div.style.top = div.style.top || '0px';
  var top = div.style.top.replace('px','');
  if(dir == 1) {
	if(limit - Math.abs(top) <= SCROLLSPEED) {
	  cancelScroll(div.id);
	  div.style.top = '-' + limit + 'px';
	} else {
	  div.style.top = top - SCROLLSPEED + 'px';
	}
  } else {
	if(Math.abs(top) - limit <= SCROLLSPEED) {
	  cancelScroll(div.id);
	  div.style.top = limit + 'px';
	} else {
	  div.style.top = parseInt(top) + SCROLLSPEED + 'px';
	}
  }
}

// cancel the scrolling on mouseout //
function cancelScroll(id) {
  var div = document.getElementById(id);
  div.style.opacity = 1;
  div.style.filter = 'alpha(opacity=100)';
  clearTimeout(div.timer);
}

// initiate auto scrolling //
function autoScroll(id,prefix,timer,restart) {
    var div = document.getElementById(id);
    div.autoscroll = (!div.autoscroll && !restart) ? false : true;

    if(div.autoscroll) {
        var sections = div.getElementsByTagName('div');
        var length = sections.length;
        div.section = (div.section && div.section < length) ? div.section + 1 : 1;
        slideContent(prefix + '-' + div.section,prefix,timer);
    }
}

// cancel automatic scrolling //
function cancelAutoScroll(id) {
  var div = document.getElementById(id);
  div.autoscroll = false;
}