var _slidingParams = new Array();
var slidingInterval = setInterval("slideStep()", 10);

function scrollProgramsLeft(speed)
 {
  if (!slideScrollHoriz('programs_container', -128, speed))
   {
    document.getElementById('programs_scroller_left').src = '/images/programs_left_dis.jpg';
    document.getElementById('programs_scroller_left').block=true;
   }
  else
   {
    document.getElementById('programs_scroller_right').src = '/images/programs_right1.jpg';
    document.getElementById('programs_scroller_right').block=false;
   }
 }

function scrollProgramsRight(speed)
 {
  if (!slideScrollHoriz('programs_container', 128, speed))
   {
    document.getElementById('programs_scroller_right').src = '/images/programs_right_dis.jpg';
    document.getElementById('programs_scroller_right').block=true;
   } 
  else
   {
    document.getElementById('programs_scroller_left').src = '/images/programs_left1.jpg';
    document.getElementById('programs_scroller_left').block=false;
   }
 }

function slideScrollHoriz(slide_object, diff, speed)
{
	var target_object = document.getElementById(slide_object);
	var ret = true;
	if (target_object.scrollLeft + diff <= 0)
	{
		diff = - target_object.scrollLeft;
		ret = false;
	}
	if (target_object.scrollLeft + diff >= target_object.scrollWidth - target_object.clientWidth)
	{
		diff = target_object.scrollWidth - target_object.clientWidth - target_object.scrollLeft;
		ret = false;
	}
	if (target_object)
		startSliding(target_object, 'scrollLeft', target_object.scrollLeft + diff, speed);
	return ret;
}

function startSliding(target_object, target_param, target_value, speed, onframe)
{
	for (var i = 0; i < _slidingParams.length; i++)
		if ((_slidingParams[i].targetObject == target_object) && (_slidingParams[i].targetParam == target_param))
			break;
	if (i == _slidingParams.length)
	{
		_slidingParams.push({
			targetObject: target_object,
			targetParam: target_param,
			targetValue: target_value,
			speed: speed,
			onframe: (typeof onframe == 'function')?onframe:null
		});
	}
}

function slideStep()
{
	for (var i = 0; i < _slidingParams.length; i++)
	{
		target_object = _slidingParams[i].targetObject;
		if (target_object)
		{
			var current_value = parseInt(target_object[_slidingParams[i].targetParam]);
			var diff = _slidingParams[i].targetValue - current_value;
//			document.getElementById('debug').innerHTML += 'diff ' + i + ': ' + _slidingParams[i].targetValue + ' - ' + current_value + ' = ' + diff + '<br />';
			if (diff > 0)
				diff = (0.0 + _slidingParams[i].speed + diff) / _slidingParams[i].speed;
			else
				diff = (0.0 - _slidingParams[i].speed + diff) / _slidingParams[i].speed;
			if ((Math.abs(diff) <= 1) || (Math.round(0.0 + current_value + diff) == _slidingParams[i].targetValue))
			{
				target_object[_slidingParams[i].targetParam] = _slidingParams[i].targetValue + ((target_object.setProperty)?'px':0);
				if (_slidingParams[i].onframe)
					_slidingParams[i].onframe();
				_slidingParams.splice(i, 1);
				i--;
			}
			else
			{
				target_object[_slidingParams[i].targetParam] = Math.round(0.0 + current_value + diff) + ((target_object.setProperty)?'px':0);
				if (_slidingParams[i].onframe)
					_slidingParams[i].onframe();
			}
		}
	}
}

function slideUpDown(slide_element, slide_button, new_height, speed)
{
	var target_object = document.getElementById(slide_element);
	target_object.style.overflow = 'hidden';
	var target_button = document.getElementById(slide_button);
	var current_height = target_object.clientHeight;
	if (current_height)
	{
		slideUp(slide_element, new_height, speed);
		if (target_button)
			target_button.src = '/images/ico_down.gif';
	}
	else
	{
		slideDown(slide_element, speed);
		if (target_button)
			target_button.src = '/images/ico_up.gif';
	}
}

function slideUp(slide_element, new_height, speed)
{
	var target_object = document.getElementById(slide_element);
	if (target_object && !target_object._slide_up_orig_height)
	{
		target_object.style.height = target_object.clientHeight + 'px';
		target_object._slide_up_orig_height = target_object.clientHeight;
		startSliding(target_object.style, 'height', new_height, speed);
		startSliding(target_object, 'scrollTop', target_object._slide_up_orig_height, speed);
	}
}

function slideDown(slide_element, speed)
{
	var target_object = document.getElementById(slide_element);
	if (target_object && target_object._slide_up_orig_height)
	{
		startSliding(target_object, 'scrollTop', 0, speed);
		startSliding(target_object.style, 'height', target_object._slide_up_orig_height, speed);
		target_object._slide_up_orig_height = undefined;
	}
}

function expandDownShrinkUp(slide_element, slide_button, new_height, speed, onframe, invert)
{
	var target_object = document.getElementById(slide_element);
	target_object.style.overflow = 'hidden';
	var target_button = document.getElementById(slide_button);
	var current_height = target_object.clientHeight;
	if (target_object._expand_down_orig_height)
	{
		startSliding(target_object.style, 'height', target_object._expand_down_orig_height, speed, (typeof onframe == 'function')?onframe:null);
		if (target_button)
		{
			if (target_object._expand_down_orig_height < current_height)
				target_button.src = '/images/ico_'+(invert?'up':'down')+'.gif';
			else
				target_button.src = '/images/ico_'+(invert?'down':'up')+'.gif';
		}
		target_object._expand_down_orig_height = undefined;
	}
	else
	{
		target_object.style.height = target_object.clientHeight + 'px';
		target_object._expand_down_orig_height = target_object.clientHeight;
		startSliding(target_object.style, 'height', new_height, speed, (typeof onframe == 'function')?onframe:null);
		if (target_button)
		{
			if (new_height < current_height)
				target_button.src = '/images/ico_'+(invert?'up':'down')+'.gif';
			else
				target_button.src = '/images/ico_'+(invert?'down':'up')+'.gif';
		}
	}
}

