var chunkSize;
var startPosition;
var rowCount;
var lastRecord;
var sortType;
		
function alphaSort(a, b) {
	var x = a[8];
	var y = b[8];
	return ((x < y) ? -1 : ((x > y) ? 1 : 0));
}

function categorySort(a, b) {
	var x = a[9];
	var y = b[9];
	return ((x < y) ? -1 : ((x > y) ? 1 : 0));
}

function cuisineSort(a, b) {
	var x = a[10];
	var y = b[10];
	return ((x < y) ? -1 : ((x > y) ? 1 : 0));
}

	
	// this function finds the start position and number of rows in the array that match the item needing to be displayed
function alphaArray (selector) {
		list.sort(alphaSort); //sorts by the 8th field of the record (Alpha)
		field = 8;
	row = 0;
	currRow = list[row];
	var rowCounter = 0;
	var startPosCounter = 0;
	var positionKeeper = 0;
	for (var arrayCounter = 0; arrayCounter < list.length; arrayCounter++) {
		if(currRow[field] == selector) {
			positionKeeper = 1; // set flag for the start position
			rowCounter ++; //start counting the instances of this letter, category or area
		}else if (currRow[field] != selector && positionKeeper < 1) { 
			startPosCounter++; // count the number of rows before reaching the desired letter, category or area
		}
	row = row + 1;
	currRow = list[row];
	}
	startPosition = startPosCounter; // set global
	backPosition = startPosition;
	
	rowCount = rowCounter; // set global
	lastRecord = startPosition + rowCount; // set global 
	var madeSelection = document.getElementById('a-z').value;
	if (madeSelection != '#' && madeSelection != '') {
		document.getElementById('passedSelection').value = madeSelection;
	}
	var storedSelection = document.getElementById('passedSelection').value;
	getFirst(0,10,20,"A to Z",storedSelection);
	document.getElementById('category').selectedIndex = 'selected';
}
  

function categoryArray (selector) {
	list.sort(categorySort);
	field = 9;
	row = 0;
	currRow = list[row];
	var rowCounter = 0;
	var startPosCounter = 0;
	var positionKeeper = 0;
	for (var arrayCounter = 0; arrayCounter < list.length; arrayCounter++) {
		if(currRow[field] == selector) {
			positionKeeper = 1; // set flag for the start position
			rowCounter ++; //start counting the instances of this letter, category or area
		}else if (currRow[field] != selector && positionKeeper < 1) { 
			startPosCounter++; // count the number of rows before reaching the desired letter, category or area
		}
	row = row + 1;
	currRow = list[row];
	}
	startPosition = startPosCounter; // set global
	backPosition = startPosition;
	
	rowCount = rowCounter; // set global
	lastRecord = startPosition + rowCount; // set global
	var madeSelection = document.getElementById('category').value;
	if (madeSelection != '#') {
		document.getElementById('passedSelection').value = madeSelection;
	}
	var storedSelection = document.getElementById('passedSelection').value;
	getFirst(0,10,20,"Category",storedSelection);
	document.getElementById('a-z').selectedIndex = 'selected';
} 

function cuisineArray (selector) {
	list.sort(cuisineSort);
	field = 10;
	row = 0;
	currRow = list[row];
	if (currRow[10].length < 1) {
		var selectedValue = document.getElementById('passedSelection').value;
		categoryArray(selectedValue);
	}else{
	var rowCounter = 0;
	var startPosCounter = 0;
	var positionKeeper = 0;
	for (var arrayCounter = 0; arrayCounter < list.length; arrayCounter++) {
		if(currRow[field] == selector) {
			positionKeeper = 1; // set flag for the start position
			rowCounter ++; //start counting the instances of this letter, category or area
		}else if (currRow[field] != selector && positionKeeper < 1) { 
			startPosCounter++; // count the number of rows before reaching the desired letter, category or area
		}
	row = row + 1;
	currRow = list[row];
	}
	startPosition = startPosCounter; // set global
	backPosition = startPosition;
	
	rowCount = rowCounter; // set global
	lastRecord = startPosition + rowCount; // set global 
	var madeSelection = document.getElementById('cuisine').value;
	if (madeSelection != '#') {
		document.getElementById('passedSelection').value = madeSelection;
	}
	var storedSelection = document.getElementById('passedSelection').value;
	getFirst(0,9,20,"Cuisine",storedSelection);
	document.getElementById('a-z').selectedIndex = 'selected';
	document.getElementById('category').selectedIndex = 'selected';
	}
}


function getFirst(rowPosition,areaOrCuisine,recReqs,selector,madeSelection) {
   	var findStr = document.getElementById('SectionName').value;
	findBy = "";
	if (findStr == "Dining" && selector == "Category") {
		findBy= findStr + " by Area: " + madeSelection;
	}else{
		findBy= findStr + " by " + selector + ": " + madeSelection;
	}
	document.getElementById('rl').innerHTML = findBy;
	replaceMessage = "";
	replaceMessage+= '<ul class="listings">';
	if (recReqs < rowCount) { // compare request with number of rows available
		row = startPosition;
		currRow = list[row];
		for (var firstCounter = rowPosition; firstCounter < recReqs; firstCounter++) {
			if (row < lastRecord) {
				replaceMessage+= '<li class="' + currRow[4] + ' listing">';
				replaceMessage+= '<a href="'  + currRow[4] + '.shtml" class="list-title">';
				replaceMessage+= '<div class="enhanced-photo"></div>';
				replaceMessage+= '<h4>' + currRow[3] + '</h4>';
				replaceMessage+= '<span class="tax-label">' + currRow[areaOrCuisine] + '</span></a>';
				replaceMessage+= '<p>' + currRow[11] + '</p>';
				replaceMessage+= '</li>';
				row = row + 1;
				currRow = list[row];
			}
		}
	}else{
		row = startPosition;
		currRow = list[row];
		for (var firstCounter = rowPosition; firstCounter < rowCount; firstCounter++) {
			if (row <= lastRecord) {
				replaceMessage+= '<li class="' + currRow[4] + ' listing">';
				replaceMessage+= '<a href="'  + currRow[4] + '.shtml" class="list-title">';
				replaceMessage+= '<div class="enhanced-photo"></div>';
				replaceMessage+= '<h4>' + currRow[3] + '</h4>';
				replaceMessage+= '<span class="tax-label">' + currRow[areaOrCuisine] + '</span></a>';
				replaceMessage+= '<p>' + currRow[11] + '</p>';
				replaceMessage+= '</li>';
				row = row + 1;
				currRow = list[row];
				var nextLink = "no";
				//if ()
			}
		}
	}
	replaceMessage += '</ul>';
	rowPosition = recReqs;
	nextStartPosition = parseFloat(startPosition) + parseFloat(20);
	requestedRecords = parseFloat(startPosition) + parseFloat(recReqs) + parseFloat(20);
	prevLink = parseFloat(row) - parseFloat(20); // 45 - 6 = 39
	document.getElementById('content2').innerHTML = replaceMessage;
	if (rowCount > recReqs){
		document.getElementById('pager').innerHTML = '<a href="#list" style="cursor:pointer;" onclick="getNext(' + nextStartPosition + ','+ areaOrCuisine + ','+ requestedRecords +');">Next &raquo;</a>';
	}else{
		document.getElementById('pager').innerHTML = '';
	}
}

function getNext(rowPosition,areaOrCuisine,recReqs) {
	replaceMessage = "";
	replaceMessage+= '<ul class="listings">';
	if (recReqs < lastRecord) { // compare request with number of rows available
		row = rowPosition;
		currRow = list[row];
		for (var firstCounter = rowPosition; firstCounter < recReqs; firstCounter++) {
				replaceMessage+= '<li class="' + currRow[4] + ' listing">';
				replaceMessage+= '<a href="'  + currRow[4] + '.shtml" class="list-title">';
				replaceMessage+= '<div class="enhanced-photo"></div>';
				replaceMessage+= '<h4>' + currRow[3] + '</h4>';
				replaceMessage+= '<span class="tax-label">' + currRow[areaOrCuisine] + '</span></a>';
				replaceMessage+= '<p>' + currRow[11] + '</p>';
				replaceMessage+= '</li>';
				row = row + 1;
				currRow = list[row];
		}
	}else{
		row = rowPosition;
		currRow = list[row];
		for (var firstCounter = rowPosition; firstCounter < lastRecord; firstCounter++) {
				replaceMessage+= '<li class="' + currRow[4] + ' listing">';
				replaceMessage+= '<a href="'  + currRow[4] + '.shtml" class="list-title">';
				replaceMessage+= '<div class="enhanced-photo"></div>';
				replaceMessage+= '<h4>' + currRow[3] + '</h4>';
				replaceMessage+= '<span class="tax-label">' + currRow[areaOrCuisine] + '</span></a>';
				replaceMessage+= '<p>' + currRow[11] + '</p>';
				replaceMessage+= '</li>';
				row = row + 1;
				currRow = list[row];
				var nextLink = "no";
		}
	}
	replaceMessage += '</ul>';
	rowPosition = recReqs;
	requestedRecords = parseFloat(recReqs) + parseFloat(20);
	backPosition = parseFloat(rowPosition) - parseFloat(20) * 2;
	backRecReqs = parseFloat(rowPosition) - parseFloat(20);
	document.getElementById('content2').innerHTML = replaceMessage; 
	
	
	
	if (nextLink == "no" && rowPosition > startPosition) { // requestedRecords - 40,requestedRecords - 20
		document.getElementById('pager').innerHTML = '<a href="#list" style="cursor:pointer;" onclick="getNext(' + backPosition + ','+ areaOrCuisine + ','+ backRecReqs + ');">&laquo;Prev</a>';
		
		
	}else if (rowPosition > startPosition && backRecReqs > startPosition) {
		document.getElementById('pager').innerHTML = '<a href="#list" style="cursor:pointer;" onclick="getNext(' + backPosition + ','+ areaOrCuisine + ','+ backRecReqs + ');">&laquo;Prev</a>&nbsp;&nbsp;&nbsp;<a href="#list" style="cursor:pointer;" onclick="getNext(' + rowPosition + ','+ areaOrCuisine + ','+ requestedRecords +');">Next &raquo;</a>';
		
		
	}else{
		document.getElementById('pager').innerHTML = '<a href="#list" style="cursor:pointer;" onclick="getNext(' + rowPosition + ','+ areaOrCuisine + ','+ requestedRecords +');">Next &raquo;</a>';
	}
	returnScroll(); 
}

function returnScroll() { 
		var scrOfX = 0, scrOfY = 0;
  if( typeof( window.pageYOffset ) == 'number' ) {
    //Netscape compliant
    scrOfY = window.pageYOffset;
    scrOfX = window.pageXOffset;
  } else if( document.body && ( document.body.scrollLeft || document.body.scrollTop ) ) {
    //DOM compliant
    scrOfY = document.body.scrollTop;
    scrOfX = document.body.scrollLeft;
  } else if( document.documentElement && ( document.documentElement.scrollLeft || document.documentElement.scrollTop ) ) {
    //IE6 standards compliant mode
    scrOfY = document.documentElement.scrollTop;
    scrOfX = document.documentElement.scrollLeft;
  }
  //return [ scrOfX, scrOfY ];
	scrOfY = parseFloat(scrOfY);
	window.scroll(0, scrOfY);
}   
 
function redirect(value, id) {  
	var whichDir = document.location.href;
	var strEnd = whichDir.lastIndexOf('/');
	var newPage = whichDir.substring(0,strEnd);
	var goThere = newPage + "/lists.shtml?id=" + id + "&value=" + value;
	document.location = goThere;
} 

function selectCheck() { // checked when lists.shtml loads
	var urlCheck = document.location.href;
	var nullOrNot = urlCheck.indexOf('id');
	if(nullOrNot > 0) {
		var selectStart = urlCheck.indexOf('id=') + 3;
		var selectEnd = urlCheck.indexOf('&value=');
		var selectList = urlCheck.substring(selectStart,selectEnd);
		var valueStart = urlCheck.indexOf('&value=') + 7;
		//var backCheck = urlCheck.indexOf('#'); 
		//if (backCheck > 1) {
			//var selectedValue = urlCheck.substring(valueStart,backCheck);
			//document.getElementById('passedSelection').value = selectedValue;
		//}else{ 
			var selectedValue = urlCheck.substring(valueStart);
		//}
		if(selectList == "a-z") {
			selectedValue = unescape(selectedValue.replace(/\+/g,  " "));
			document.getElementById('passedSelection').value = selectedValue;
			alphaArray (selectedValue);
			document.getElementById('passedSelection').value = selectedValue;
		}else if(selectList == "area") {
			selectedValue = unescape(selectedValue.replace(/\+/g,  " "));
			document.getElementById('passedSelection').value = selectedValue;
			categoryArray (selectedValue);
		}else if(selectList == "cuisine") {
			selectedValue = unescape(selectedValue.replace(/\+/g,  " "));
			document.getElementById('passedSelection').value = selectedValue;
			cuisineArray (selectedValue);
		}else if(selectList == "category") {
			selectedValue = unescape(selectedValue.replace(/\+/g,  " "));
			document.getElementById('passedSelection').value = selectedValue;
			categoryArray (selectedValue);
		}
	}
}
 
function functionCheck(value, id){ 
	var urlCheck = document.location.href;
	var listPageVerify = urlCheck.indexOf('lists.shtml');
	if (listPageVerify < 1){ 
		redirect(value, id);
	}else{
		if(id == "a-z"){
			alphaArray(value);
		}else if(id == "category"){
			categoryArray(value);
		}else if(id == "cuisine"){ 
			cuisineArray(value);
		}
	}
}
