
/* AJAX FOR LISTING INDEX SORTING */

var xmlHttp;
var pDiv = "";

function createXMLHttpRequest() {
	if (window.ActiveXObject) {
		xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
	} else if (window.XMLHttpRequest) {
		xmlHttp = new XMLHttpRequest();
	}
}

function startRequest(bType, parentDiv, sortOrder) {
	pDiv = parentDiv;
	createXMLHttpRequest();
	var url = "/listings/sort.php";
	var queryString = "sortOrder=" + sortOrder + "&bType=" + escape(bType);
	var getUrl = url + "?" + queryString;
	xmlHttp.onreadystatechange = handleStateChange;
	xmlHttp.open("GET", getUrl, true);
	xmlHttp.setRequestHeader("Content-Type", "text/xml");
//	xmlHttp.setRequestHeader("Content-Type", "application/x-www-form-urlencoded"); // for POST only
	xmlHttp.send(null);
}

function handleStateChange() {
	if (xmlHttp.readyState == 4) {
//		alert(xmlHttp.status);
		if (xmlHttp.status == 200) {
			clearItems(pDiv);
			parseXML(pDiv);
		}
	}
}

function parseXML(pDiv) {
	var results = xmlHttp.responseXML;
	var itemCont = document.getElementById(pDiv);
	
	var item = null;
	var listId, gray, number, price, desc, loc, status = "";
	
	var items = results.getElementsByTagName("item");
	
	for (var i=0; i<items.length; i++) {
		item = items[i];
		listId = (item.getElementsByTagName("listId")[0].childNodes.length > 0) ? item.getElementsByTagName("listId")[0].firstChild.nodeValue : "";
		gray = (item.getElementsByTagName("gray")[0].childNodes.length > 0) ? item.getElementsByTagName("gray")[0].firstChild.nodeValue : "";
		number = (item.getElementsByTagName("number")[0].childNodes.length > 0) ? item.getElementsByTagName("number")[0].firstChild.nodeValue : "";
		price = (item.getElementsByTagName("price")[0].childNodes.length > 0) ? item.getElementsByTagName("price")[0].firstChild.nodeValue : "";
		desc = (item.getElementsByTagName("desc")[0].childNodes.length > 0) ? item.getElementsByTagName("desc")[0].firstChild.nodeValue : "";
		loc = (item.getElementsByTagName("loc")[0].childNodes.length > 0) ? item.getElementsByTagName("loc")[0].firstChild.nodeValue : "";
		status = (item.getElementsByTagName("status")[0].childNodes.length > 0) ? item.getElementsByTagName("status")[0].firstChild.nodeValue : "";
		
		var newItem = createCont(gray, listId);
		
		// argument array for cell creation: className, array(array(text, link), array(text, link)...) [, separator for multiline]
		var cellNumberArr = new Array();
		cellNumberArr[0] = new Array(number, number);
		var cellNumber = createCell('fNumber', cellNumberArr);
		newItem.appendChild(cellNumber);

		var cellPriceArr = new Array();
		cellPriceArr[0] = new Array(price, false);
		var cellPrice = createCell('fPrice', cellPriceArr);
		newItem.appendChild(cellPrice);

		var cellDescArr = new Array();
		cellDescArr[0] = new Array(desc, number);
		cellDescArr[1] = new Array(loc, number);
		var cellDesc = createCell('fDesc', cellDescArr, "br");
		newItem.appendChild(cellDesc);

		var cellStatusArr = new Array();
		cellStatusArr[0] = new Array(status, false);
		var cellStatus = createCell('fStatus', cellStatusArr);
		newItem.appendChild(cellStatus);

		var cellClear = createComment('clear', 'for IE');
		newItem.appendChild(cellClear);
		
		itemCont.appendChild(newItem);
	}
}

function createCont(gray, listId) {
	var cell = document.createElement("div");
	cell.className = (gray==1) ? 'listTblItem tblGray' : 'listTblItem';
	cell.id = listId;
	
	return cell;
}

function createCell(classNm, arrText, separator) {
	var tArr = arrText;
	var sep = separator && document.createElement(separator);
	var cell = document.createElement("div");
	cell.className = classNm;
	for (var i=0; i<tArr.length; i++) {
		if (tArr[i][1]) {
			var aTag = document.createElement("a");
			var aHref = "listings/" + tArr[i][1];
			var aTitle = "View listing " + tArr[i][1];
			aTag.setAttribute("href", aHref);
			aTag.setAttribute("title", aTitle);
			var textNode = document.createTextNode(tArr[i][0]);
			aTag.appendChild(textNode);
			cell.appendChild(aTag);
		} else {
			var textNode = document.createTextNode(tArr[i][0]);
			cell.appendChild(textNode);
		}
		if (sep && i<tArr.length-1) {
			cell.appendChild(sep);
		}
	}
	
	return cell;
}

function createComment(classNm, text) {
	var cell = document.createElement("div");
	cell.className = classNm;
	var textNode = document.createComment(text);
	cell.appendChild(textNode);
	
	return cell;
}

function clearItems(pDiv) {
	var itemCont = document.getElementById(pDiv);
//	alert(itemCont.childNodes.length);
	for (var i=itemCont.childNodes.length-1; i>=0; i--) {
		if (itemCont.childNodes[i].id != "itemHd") {
			itemCont.removeChild(itemCont.childNodes[i]);
		}
	}
}




