var PRODUCTS_PER_PAGE = 25;
var MAX_PAGES = 10;
var PREV_THRESHOLD = Math.ceil((MAX_PAGES - 1) / 2);
var NEXT_THRESHOLD = Math.floor((MAX_PAGES - 1) / 2);

var productType = '';
var productFilter = '';

function getXMLHTTPObject(handler) {
	var xho = null;
	
	if (window.XMLHttpRequest) {
		xho = new XMLHttpRequest();
	} else if (window.ActiveXObject) {
		xho = new ActiveXObject('Microsoft.XMLHTTP');
	}
	
	return xho;
}

var xhr = getXMLHTTPObject();

function getContents(brand, type, limit, offset, filter) {
	if (xhr) {
		xhr.open('GET', '/Scripts/inventoryList.php?brand=' + brand + '&type=' + type + '&limit=' + limit + '&offset=' + offset + '&filter=' + filter, true);
		xhr.onreadystatechange = function() { stateChanged(brand, offset); }
		xhr.send(null);
	}
}

function stateChanged(brand, offset) {
	if (xhr.readyState == 4 || xhr.readyState == 'complete') {
		var contents = document.getElementById('brand_products_container');
		
		if (offset == null) {
			offset = 0;
		}

		contents.innerHTML = xhr.responseText;
		
		var pagination = document.getElementById('product_page_selector');
		var productCount = parseInt(document.getElementById('product_count').innerHTML);
		var pageCount =  Math.ceil(productCount / PRODUCTS_PER_PAGE);
		var currentPage = offset / PRODUCTS_PER_PAGE;

		if (pageCount > MAX_PAGES) {
			var startPage = Math.max(0, 
			                         Math.min(currentPage - PREV_THRESHOLD,
															          pageCount - MAX_PAGES));
			var endPage = Math.min(pageCount,
			                       Math.max(currentPage + NEXT_THRESHOLD + 1,
														          0 + MAX_PAGES));
		} else {
			var startPage = 0;
			var endPage = pageCount;
		}
		
		var links = '<ul>';
		if (pageCount > 1) {
			if (offset) {
				prevPage = offset - PRODUCTS_PER_PAGE;
				links += '<li><a id="prev_product_page" href="/products/' + brand + '/' + (productType ? (productType + '/') : '') + (productFilter ? ('filter' + productFilter + '/') : '') + 'offset' + prevPage +'" onclick="getContents(\'' + brand + '\', document.getElementById(\'type_value\').value, 25, ' + prevPage + ', \'' + productFilter + '\'); return false;">Prev</a></li>';
			} else {
				links += '<li><span id="prev_product_page">Prev</span></li>';
			}

			if (startPage > 0) {
				links += '<li>&hellip;</li>';
			}

			for (var i = startPage; i < endPage; i++) {
				if (i == currentPage) {
					links += '<li><span' + (i == 0 ? ' class="first"' : '') + ' id="current_product_page">' + (i + 1) + '</span></li>';
				} else {
					links += '<li><a' + (i == 0 ? ' class="first"' : '') + ' href="http://webuysupplies.com/products/' + brand + '/offset' + (i * 25) + '/"' +
						' onclick="getContents(\'' + brand + '\', \'' + productType + '\', 20, ' + (i * 25) + ', \'' + productFilter + '\'); return false;">' +
						(i + 1) + '</a></li>';
				}
			}

			if (endPage < pageCount) {
				links += '<li>&hellip;</li>';
			}
			
			if (offset != ((pageCount - 1) * PRODUCTS_PER_PAGE)) {
				nextPage = offset + PRODUCTS_PER_PAGE;
				links += '<li><a id="next_product_page" href="/products/' + brand + '/' + (productType ? (productType + '/') : '') + (productFilter ? ('filter' + productFilter + '/') : '') + 'offset' + nextPage +'" onclick="getContents(\'' + brand + '\', document.getElementById(\'type_value\').value, 25, ' + nextPage + ', \'' + productFilter + '\'); return false;">Next</a></li>';
			} else {
				links += '<li><span id="next_product_page">Next</span></li>';
			}

		}
		
		pagination.innerHTML = links + '</ul>';
	}
}

function filterProductType(type, tableId)
{
	if (!document.getElementById)
		return false;
		
	var table = document.getElementById(tableId);
	
	if (table.nodeName.toLowerCase() != 'table')
		return false;
		
	var rows = table.rows;
	var rowsLength = rows.length;
	var row;
	for (var i = 1; i < rowsLength; i++)
	{
		row = rows[i];
		if (type == '' || (row.className.indexOf(type.toLowerCase()) != -1))
		{
			row.style.display = '';
		} else {
			row.style.display = 'none';
		}
	}
}
