	//<![CDATA[
	function displaySortWaitBox(state) {
		document.getElementById('sortWaitBox').style.display=state;
	}
	
	//SHOULD EVENTUALLY BE CONVERTED TO DOM MANIPULATION (WITH CSS MARKUP REPLACING TAGS IN TD'S)
	//ADD DATE SORTING
	//ADD OPTION TO AUTOMATICALLY DETECT TABLE OBJECT
	//CONSIDER ESTABLISHING BACK-TO-TOP CODE AS SEPARATE FUNCTION

	var currentSortCol = null;
	var sortCol = '';
	var sortType = '';
	var sortDir = 1;
	var firstAlphaSort = true;

	//////////SORTING FUNCTIONS ----->
	function sortFuncNum(a,b) {
		returnValue = (a[sortCol]-b[sortCol]) * sortDir;	

		return returnValue;
	}

	function sortFuncDolPerc(a,b) {
		returnValue = (a[0].toLowerCase().replace(/<\S[^><]*>/g, "").replace(/([^0-9\.])/g, "")-b[0].toLowerCase().replace(/<\S[^><]*>/g, "").replace(/([^0-9\.])/g, "")) * sortDir;

		return returnValue;
	}
	
	function sortFuncString(a,b) {
		if(a[sortCol].toLowerCase().replace(/<\S[^><]*>/g, "") < b[sortCol].toLowerCase().replace(/<\S[^><]*>/g, "")) {
			returnValue = -1 * sortDir;
		}
		else if(a[sortCol].toLowerCase().replace(/<\S[^><]*>/g, "") > b[sortCol].toLowerCase().replace(/<\S[^><]*>/g, "")) {
			returnValue = 1 * sortDir;
		}
		else {
			returnValue = 0;
		}
		
		return returnValue;
	}
	//////////<----- SORTING FUNCTIONS


	//////////CASH BACK SORT STAGING FUNCTION ----->
	function customSortFuncRebate(masterArray,target) {
		var targetTable = document.getElementById(target.id);
		dollarArray = new Array();
		percentageArray = new Array();
		textArray = new Array();
		
		for(i=0;i<masterArray.length;i++) {
			sortText = escape(masterArray[i][0].toLowerCase().replace(/<\S[^><]*>/g, "")).replace(/(%0A|%09|%20)/g, "").substr(0,1);  //masterArray[i][0].toLowerCase().replace(/<\S[^><]*>/g, "").substr(0,1).toString();
	
			if(!isNaN(sortText)) {
				//IS A PERCENTAGE
				percentageArray.push(masterArray[i]);
			}
			else {
				if(sortText == "%") {
					//IS A DOLLAR AMOUNT
					dollarArray.push(masterArray[i]);
				}
				else {
					//IS TEXT
					textArray.push(masterArray[i]);
				}
			}
		}
		
		dollarArray.sort(sortFuncDolPerc);
		percentageArray.sort(sortFuncDolPerc);
		textArray.sort(sortFuncString);
		
		var sortedTableArray = percentageArray.concat(dollarArray,textArray);

		for(r2=0;r2<targetTable.rows.length;r2++) {
			for(c2=0;c2<targetTable.rows[r2].cells.length;c2++) {
				targetTable.rows[r2].cells[c2].innerHTML = sortedTableArray[r2][c2];
			}
		}
		displaySortWaitBox('none');

	}
	//////////<----- CASH BACK SORT STAGING FUNCTION
	
	
	//////////MASTER SORT FUNCTION ----->
	//DISPLAYS/HIDES ALPHA JUMP LIST, BACK-TO-TOP LINKS
	//DETERMINES SORT DIRECTION
	//READS EXISTING TABLE CONTENT
	//CALLS SORTING FUNCTIONS
	//REBUILDS TABLE WITH SORTED CONTENT
	
	function sortTable(target,col) {
		var targetTable = document.getElementById(target);
		
		/////BACK-TO-TOP ROW REMOVAL
		var backToTopTRs = targetTable.getElementsByTagName('tr');
		for(t=0;t<backToTopTRs.length;t++) {
			if(backToTopTRs[t].className == 'backToTop') {
				var backToTopTR = backToTopTRs[t];
				var backToTopParent = backToTopTR.parentNode;
				backToTopParent.removeChild(backToTopParent.rows[t]);
			}
		}

		/////ALPHA JUMP LIST
		if(col == 1) {
			document.getElementById('alpha').style.display='block';
		}
		else {
			document.getElementById('alpha').style.display='none';
		}
		
		
		sortCol = col;

		/////SORT DIRECTION
		if(currentSortCol == sortCol) {
			if(sortCol == 1) {
				sortDir = -1;
			}
			else if(sortCol == 0) {
				sortDir = 1;
				firstAlphaSort = false;				
			}
			else {
				sortDir = 1;
			}
			currentSortCol = 'x';
		}
		else {
			if(sortCol == 1) {
				sortDir = 1;
			}
			else if(sortCol == 0) {
				sortDir = -1;
				firstAlphaSort = false;
			}
			else {
				sortDir = 1;
			}
			currentSortCol = col;
		}
		
		if(sortCol == 1 && firstAlphaSort) {
			sortDir = sortDir * -1;
		}
				
		
		testType = targetTable.rows[1].cells[sortCol].innerHTML;
		if(!isNaN(testType)) {
			sortType = 'Num';
		}
		else {
			if(col ==0) {
				sortType = "Rebate";
			}
			else {
				sortType = 'String';
			}
		}

		var tableArray = new Array(targetTable.rows.length-1);
		for(r=0;r<targetTable.rows.length;r++) {
			tableArray[r] = new Array(targetTable.rows[r].cells.length);
			for(c=0;c<targetTable.rows[r].cells.length;c++) {
				if(targetTable.rows[r].cells[c].innerHTML != null) {
					tableArray[r][c] = targetTable.rows[r].cells[c].innerHTML;
				}
			}
		}
		if(sortType == 'Rebate') {
			customSortFuncRebate(tableArray,targetTable);
		}
		else {
			tableArray.sort(eval('sortFunc'+sortType));
			for(r2=0;r2<targetTable.rows.length;r2++) {
				for(c2=0;c2<targetTable.rows[r2].cells.length;c2++) {
					targetTable.rows[r2].cells[c2].innerHTML = tableArray[r2][c2];
				}
			}
		}

		/////SORT INDICATOR ARROWS
		var hdrTable = document.getElementById('as-topTable');
		var hdrImages = hdrTable.getElementsByTagName('img');
		for(i=0;i<hdrImages.length;i++) {
			if(hdrImages[i].id.match('sortArrow')) {
				hdrImages[i].src='/images/stores/all/all_stores.hdr.arrow_none.gif';
			}
		}
		document.images['sortArrow'+sortCol].src='/images/stores/all/all_stores.hdr.arrow_'+sortDir+'.gif';		
		
		
		/////CONFIRMATION DIALOG BOX		
		displaySortWaitBox('none');
		
		
		/////BACK-TO-TOP ROW INSERTION
		var rowCount = 0;
		for(r=0;r<targetTable.rows.length;r++) {
			rowCount += 1;
			if(rowCount == 99) {
				var insertNode = targetTable.rows[r];
				var insertParent = targetTable.rows[r].parentNode;
				
				var newTR = document.createElement('tr');
				newTR.className += 'backToTop';
				var newTD = document.createElement('td');
				var newA = document.createElement('a');
				newA.setAttribute('href','#');
				var newImg = document.createElement('img');
				newImg.setAttribute('src','/images/pge-center/back_to_top.gif');
				newTD.setAttribute('colSpan','3');
				newTD.className += 'backToTop';
				newA.appendChild(newImg);
				newTD.appendChild(newA);
				newTR.appendChild(newTD);
								
				insertParent.insertBefore(newTR,insertNode);
				rowCount = 0;
			}
		}
			
	}
	//////////<----- MASTER SORT FUNCTION
	//]]>
