/********** javascript file for the functions used by the product search in the shop **********/

/***** scroll functions *****/
var maxScrollSpeed = 10;
var accelleration = 1.03
var decelleration = 0.97;

//reduce the page number on the shop page by one
function prevPage(scrollSelected)
{
	//determine what page the scroller has moved to
	var currentClipperPage = scrollSelected + "_page";
	var currentPageDisplay = scrollSelected + "_displaypage";
	var currentPage = document.getElementById(currentClipperPage).value;
	var newPage = currentPage - 1;
	
	//if the new page is less than 1, set it to 1 (cannot be any lower)
	if(newPage < 1)
	{
		newPage = 1;
	}
	
	//write the new page number to screen
	document.getElementById(currentClipperPage).value = newPage;
	document.getElementById(currentPageDisplay).innerHTML = newPage;
}

//reduce the page number on the shop page by one
function nextPage(scrollSelected)
{
	//determine what page the scroller has moved to
	var currentClipperPage = scrollSelected + "_page";
	var currentPageDisplay = scrollSelected + "_displaypage";
	var currentPage = document.getElementById(currentClipperPage).value;
	var newPage = parseInt(currentPage) + 1;
	
	//if the new page is greater than the last page, set it to the last page (cannot be any higher)
	var clipperPageMax = scrollSelected + "_lastpage";
	var maxPage = document.getElementById(clipperPageMax).value;
	
	if(newPage > maxPage)
	{
		newPage = maxPage;
	}
	
	//write the new page number to screen
	document.getElementById(currentClipperPage).value = newPage;
	document.getElementById(currentPageDisplay).innerHTML = newPage;
}

//scroll left functions
function scrollBack(scrollSelected, distance)
{
	var currentScroll = scrollSelected + "_scrolling";
	var currentScrollDistance = scrollSelected + "_distance";
	var scrolling = true;
	document.getElementById(currentScroll).value = scrolling;
	document.getElementById(currentScrollDistance).value = distance;
	
	scrollBackCode(scrollSelected,1,0,0,0);
}
function scrollBackCode(scrollSelected, scrollRate, currentPosition, scrollbrake, braking)
{
	var currentScroll = scrollSelected + "_scrolling";
	var currentScrollDistance = scrollSelected + "_distance";
	var scrolling = document.getElementById(currentScroll).value;
	var distanceRemaining = document.getElementById(currentScrollDistance).value;
	
	//if the full distance was scrolled, stop scrolling
	if(distanceRemaining <= 0)
	{
		stopScroll(scrollSelected);
		prevPage(scrollSelected);
	}
	//else, continue scrolling
	else
	{
		//if the scroll is coming to the end, start braking
		if(distanceRemaining <= scrollbrake)
		{
			braking = 1;
		}
		
		//if the scroll hasn't started braking yet...
		if(braking == 0)
		{
			var currentRate = scrollRate * accelleration;
			if (currentRate > maxScrollSpeed)
			{
				if(scrollbrake == 0)
				{
					var scrollbrake = currentPosition;
				}
				var currentRate = maxScrollSpeed;
			}
		}
		//else, continue braking...
		else
		{
			var currentRate = scrollRate * decelleration;
		}
			
		if(scrolling == 'true')
		{
			var objDiv = document.getElementById(scrollSelected);
			objDiv.scrollLeft = objDiv.scrollLeft - currentRate;
			document.getElementById(currentScrollDistance).value = distanceRemaining - currentRate;
			var currentPosition = currentPosition + currentRate;
			var timeoutFunction = "scrollBackCode('"+ scrollSelected +"',"+ currentRate +","+ currentPosition +","+ scrollbrake +","+ braking +")";
			var scrollInterval = setTimeout(timeoutFunction,1);
		}
	}
}


//scroll right functions
function scrollForward(scrollSelected, distance)
{
	var currentScroll = scrollSelected + "_scrolling";
	var currentScrollDistance = scrollSelected + "_distance";
	var scrolling = true;
	document.getElementById(currentScroll).value = scrolling;
	document.getElementById(currentScrollDistance).value = distance;
	
	scrollForwardCode(scrollSelected,1,0,0,0);
}
function scrollForwardCode(scrollSelected, scrollRate, currentPosition, scrollbrake, braking)
{
	var currentScroll = scrollSelected + "_scrolling";
	var currentScrollDistance = scrollSelected + "_distance";
	var scrolling = document.getElementById(currentScroll).value;
	var distanceRemaining = document.getElementById(currentScrollDistance).value;
	//if the full ditance was scrolled, stop scrolling...
	if(distanceRemaining <= 0)
	{
		stopScroll(scrollSelected);
		nextPage(scrollSelected);
	}
	//else, continue scrolling
	else
	{
		//if scroll is coming to the end, start braking...
		if(distanceRemaining <= scrollbrake)
		{
			braking = 1;
		}
		
		//if the scroll hasn't started braking yet...
		if(braking == 0)
		{
			var currentRate = scrollRate * accelleration;
			
			if (currentRate > maxScrollSpeed)
			{
				if(scrollbrake == 0)
				{
					var scrollbrake = currentPosition;
				}
					
				var currentRate = maxScrollSpeed;
			}
		}
		//else, continue braking...
		else
		{
			var currentRate = scrollRate * decelleration;
		}
		
		
		if(scrolling == 'true')
		{
			var objDiv = document.getElementById(scrollSelected);
			objDiv.scrollLeft = objDiv.scrollLeft + currentRate;
			document.getElementById(currentScrollDistance).value = distanceRemaining - currentRate;
			var currentPosition = currentPosition + currentRate;
			var timeoutFunction = "scrollForwardCode('"+ scrollSelected +"',"+ currentRate +","+ currentPosition +","+ scrollbrake +","+ braking +")";
			var scrollInterval = setTimeout(timeoutFunction,1);
		}
	}
}


//function to stop scroll
function stopScroll(scrollSelected)
{
	var currentScroll = scrollSelected + "_scrolling";
	document.getElementById(currentScroll).value = 'false';
}


/***** check item function *****/
function checkThis(checkItem)
{
	//check if it's currently checked
	var currentChecked = document.getElementById(checkItem).checked;
	var currentImage = 'image_' + checkItem;
	var currentImage = document.getElementById(currentImage);		

	//if it's not currently checked, update its status and highlight the image
	if(! currentChecked)
	{
		document.getElementById(checkItem).checked = true;
		var temp = currentImage.style.borderColor = '#3d71bb';
	}
	else
	{
		document.getElementById(checkItem).checked = false;
		var temp = currentImage.style.borderColor = '#FFFFFF';
	}

}