	function displaySortWaitBox(state) {
		document.getElementById('sortWaitBox').style.display=state;
	}
	
	//////////SORTING FUNCTIONS ----->
	var currentSortCol = null;
	var sortCol = '';
	var sortType = '';
	var sortDir = 1;
	var firstAlphaSort = true;
	
	function sortFuncNum(a,b) {
		returnValue = (a[sortCol]-b[sortCol]) * sortDir;	

		return returnValue;
	}

	function sortFuncDate(a,b) {	
		returnValue = (a[sortCol].replace(/[^0-9]/g, "") - b[sortCol].replace(/[^0-9]/g, "")) * sortDir;
		
		return returnValue;
	}

	function sortFuncDollar(a,b) {
		var aLocal = a[sortCol].replace(/[^0-9]/g, "");
		var bLocal = b[sortCol].replace(/[^0-9]/g, "");								   
		returnValue = (aLocal - bLocal)* sortDir;
		return returnValue;
	}

	function sortFuncTime(a,b) {

		if(a[sortCol].match("AM")) {
			var sortA = "0"+a[sortCol];
			
		}
		else {
			var sortA = "1"+a[sortCol];
			//alert("else sortA : "+sortA);
		}

		if(b[sortCol].match("AM")) {
			var sortB = "0"+b[sortCol];
		}
		else {
			var sortB = "1"+b[sortCol];
		}
				
		returnValue = (sortA.replace(/[^0-9]/g, "")-sortB.replace(/[^0-9]/g, "")) * sortDir;
		return returnValue;
	}


	function sortFuncDolPerc(a,b) {
		var aLocal = a[sortCol].toLowerCase().replace(/<\S[^><]*>/g, "").replace(/([^0-9\.])/g, "");
		var bLocal = b[sortCol].toLowerCase().replace(/<\S[^><]*>/g, "").replace(/([^0-9\.])/g, "");
		returnValue = (aLocal - bLocal)* sortDir;
		return returnValue;
	}
	
	function sortFuncString(a,b) {
		//alert("sort A "+ (a[sortCol].toLowerCase().replace(/<\S[^><]*>/g, "") < b[sortCol].toLowerCase().replace(/<\S[^><]*>/g, ""));
//		alert("sort B "+ (a[sortCol].toLowerCase().replace(/<\S[^><]*>/g, "") > b[sortCol].toLowerCase().replace(/<\S[^><]*>/g, ""));
		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


	//////////CUSTOM CASH BACK SORT STAGING FUNCTION ----->
	function customSortFuncRebate(masterArray,target) {
		targetTable = document.getElementById(target.id);
		dollarArray = new Array();
		percentageArray = new Array();
		textArray = new Array();
		
		for(i=1;i<masterArray.length;i++) {
			sortText = escape(masterArray[i][sortCol].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);
		
		//PACKAGE DATA INTO AN ARRAY AND PASS IT AS AN ARGUMENT IN A CALL TO THE TABLE POPULATION FUNCTION
		sortedTableArray = percentageArray.concat(dollarArray,textArray);
		populateTable(sortedTableArray,targetTable);

		//displaySortWaitBox('none');

	}
	//////////<----- CUSTOM CASH BACK SORT STAGING FUNCTION
	
	
	
	//////////TABLE POPULATION FUNCTION FOR CUSTOM SORT FUNCTIONS ----->
	function populateTable(dataArray,table) {
		if(typeof(dataArray) == 'object') {
			sortedTableArray = dataArray;
			
			if(typeof(table) == 'string') {
				targetTable = document.getElementById(table);
			}
			else {
				targetTable = table;
			}
			
			for(r2=1;r2<targetTable.rows.length;r2++) {
				for(c2=0;c2<targetTable.rows[r2].cells.length;c2++) {
					targetTable.rows[r2].cells[c2].innerHTML = sortedTableArray[r2-1][c2];
				}
			}
		}
	}
	//////////<----- TABLE POPULATION FUNCTION FOR CUSTOM SORT FUNCTIONS
	
	
	
	//////////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,customSortType) {
		
		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 {
//				alert("" + sortDir);
				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;
		}


		/////INDICATOR ARROW, AND COLOR
		var sortColCell = targetTable.rows[0].cells[sortCol];
		
		var sortDirArrow = document.createElement("img");
		sortDirArrow.setAttribute("src","/images/GUI/sort_arrow"+sortDir+".gif");
		sortDirArrow.setAttribute("border","0");
		sortDirArrow.id = "sortArrow";
		for(i=0;i<targetTable.rows[0].cells.length;i++) {
			var sortCell = targetTable.rows[0].cells[i];
			for(j=0;j<sortCell.childNodes.length;j++) {
				if(sortCell.childNodes[j].nodeName == "IMG") {
					sortCell.removeChild(sortCell.childNodes[j]);
					var allA = sortCell.getElementsByTagName('A');
					for(k=0;k<allA.length;k++)
						if(allA[k].id)
						{
							var currId = allA[k].id;
							document.getElementById(currId).style.color = "#686868";
						}
				}
				
			}
		}
		sortColCell.appendChild(sortDirArrow);
		for(i=0;i<sortColCell.childNodes.length;i++)
		{
		if(sortColCell.childNodes[i].nodeName == "A")
			{
				var currA = document.getElementById(sortColCell.childNodes[i].Id);
				if(currA){
					currA.style.color="#006600";
				}
			}
		
		}
		
		
		/////SORT TYPE
		testType = targetTable.rows[1].cells[sortCol].innerHTML;
		

		var testDate = new Date(testType);
		
		if(customSortType) {
			sortType = customSortType;
		}
		else {
			if(testDate == "NaN") {
				if(!isNaN(testType)) {
					sortType = 'Num';
				}
				else {
					if(testType.toString().match("PM") || testType.toString().match("AM")) {
						
						sortType = 'Time';
					}
					else if(testType.toString().match(/\$/g)) {
						sortType = 'Dollar';	
					}
					else {
						sortType = 'String';
					}
				}
			}
			else {
				sortType = 'String';
			}
		}

		var tableArray = new Array(targetTable.rows.length-1);
		for(r=1;r<targetTable.rows.length;r++) {
			tableArray[r] = new Array(targetTable.rows[r].cells.length);
			if(!targetTable.rows[r].className.match("total")) {
				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;
					}
				}
			}
			else {
				tableArray.pop();	//IF A TOTAL/SUM ROW EXISTS, TRUNCATE THE ROW ARRAY BY 1
			}
		}
		
		//ASSIGN A SORT FUNCTION: IF A CUSTOM FUNCTION IS IDENTIFIED IN THE 'customSortType' ARGUMENT, CALL THE CORRESPONDING FUNCTION AND SEND 'tableArray' DATA AS AN ARGUMENT
		if(sortType.match(/(rebate)/i)) {
			customSortFuncRebate(tableArray,targetTable);
		}
		else {
			tableArray.sort(eval('sortFunc'+sortType));
			for(r2=1;r2<targetTable.rows.length;r2++) {
				if(!targetTable.rows[r2].className.match("total")) {
					for(c2=0;c2<targetTable.rows[r2].cells.length;c2++) {
						if(tableArray[r2-1][c2] != null) {
								targetTable.rows[r2].cells[c2].innerHTML = tableArray[r2-1][c2];
						}
					}
				}
				else {

				}
			}
		}

		/////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