var oRequest = null;
var oSaveFavForm = null;
var oListFavSelect = null;
function ajaxSaveFavorite(formname, url, fav_select) 
{
	waitCursor(true);
	// branch for native XMLHttpRequest object
	if (window.XMLHttpRequest) {
		oRequest = new XMLHttpRequest();
	// branch for IE/Windows ActiveX version
	} else if (window.ActiveXObject) {
		oRequest = new ActiveXObject("Microsoft.XMLHTTP");
	}
	if (oRequest) {
		oSaveFavForm = document[formname];
		oListFavSelect = fav_select;
		oRequest.onreadystatechange = processSaveFavoriteReqChange;
		oRequest.open("POST", url, true);
		oRequest.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
		var post_vals = "";
		for (var i=0; i<oSaveFavForm.elements.length; i++) {
			var name = oSaveFavForm.elements[i].name;
			var val = oSaveFavForm.elements[i].value;
			if (oSaveFavForm.elements[i].name == "part_number") {
				// try to shorten to 63 -- will be name in favorite_element table
				val = val.replace(/\&middot;/gi, "*");
			}
			post_vals = post_vals + ((i==0)?'':'&') + name + '=' + escape(val);
			//alert(oSaveFavForm.elements[i].name + '=' + oSaveFavForm.elements[i].value)
		}
		oRequest.send(post_vals);
	}
}

function processSaveFavoriteReqChange() {
    // only if req shows "loaded"
	//alert("oRequest.readyState ="+oRequest.readyState);
    if (oRequest.readyState == 4) {
        // only if "OK"
		//alert("oRequest.statusText ="+oRequest.statusText);
		waitCursor(false);
        if (oRequest.status == 200) {
            // ...processing statements go here...
			//alert(oRequest.responseText);
			if (-1 != oRequest.responseText.indexOf("<META")) {
				// devnet edition
				alert("this feature will not work on CFMX DEVNET machines.");
			} else {
				// production version
				xmlDoc  = oRequest.responseXML.documentElement;
				entry_id = xmlDoc.getElementsByTagName('entry_id')[0].firstChild.data;
				loadFavoritesSelect(xmlDoc);
				if (update_favorite) {
					alert("Favorite Updated.");
				} else {
					alert("Favorite Saved.");
				}
			}			
        } else {
            alert("There was a problem saving the favorite:\n" +
                oRequest.statusText);
        }
    }
}

var oDelRequest = null;
function ajaxDeleteFavorite(formname, url, fav_select, entry_id) 
{
	waitCursor(true);
	// branch for native XMLHttpRequest object
	if (window.XMLHttpRequest) {
		oDelRequest = new XMLHttpRequest();
	// branch for IE/Windows ActiveX version
	} else if (window.ActiveXObject) {
		oDelRequest = new ActiveXObject("Microsoft.XMLHTTP");
	}
	if (oDelRequest) {
		oSaveFavForm = document[formname];
		oListFavSelect = fav_select;
		oDelRequest.onreadystatechange = processDeleteFavoriteReqChange;
		oDelRequest.open("POST", url, true);
		oDelRequest.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
		var post_vals = "entryid="+entry_id;
		for (var i=0; i<oSaveFavForm.elements.length; i++) {
			post_vals = post_vals + '&' + oSaveFavForm.elements[i].name 
				+ '=' + escape(oSaveFavForm.elements[i].value);
		}
		oDelRequest.send(post_vals);
	}
}

var words = "";
function processDeleteFavoriteReqChange() {
    // only if req shows "loaded"
	//alert("oDelRequest.readyState ="+oDelRequest.readyState);
    if (oDelRequest.readyState == 4) {
        // only if "OK"
		//alert("oDelRequest.statusText ="+oDelRequest.statusText);
		waitCursor(false);
        if (oDelRequest.status == 200) {
            // ...processing statements go here...
			//alert(oDelRequest.responseText);
			if (-1 != oDelRequest.responseText.indexOf("<META")) {
				// devnet edition
				alert("this feature will not work on CFMX DEVNET machines.");
			} else {
				// production version
				xmlDoc  = oDelRequest.responseXML.documentElement;
				loadFavoritesSelect(xmlDoc);
				
				var stat = xmlDoc.getElementsByTagName('status')[0].firstChild.nodeValue;
				if (stat == '0') {
					alert("Delete Failed!");
				} else {
					alert("Favorite Deleted.");
				}
			}
        } else {
            alert("There was a problem deleteing the favorite: " +
                oDelRequest.statusText);
        }
    }
}

function loadFavoritesSelect(xmlDoc) { 
	fav_array = xmlDoc.getElementsByTagName('favorite');
	oListFavSelect.options.length = 0;
	oListFavSelect.options[0] = new Option("Select Favorite",-1, true, true);
	for (var i=0; i<fav_array.length; i++) {
		words = "";
		traverseDOMText(fav_array[i]);
		oListFavSelect.options[i+1] = new Option(words ,fav_array[i].getAttribute("id")+","+fav_array[i].getAttribute("CC"),false,false); 
	}
}

function traverseDOMText(node) { 
	if (node.nodeType == 3) { 
		words += node.nodeValue; 
	}
	if (node.childNodes != null) { 
		for (var i=0; i < node.childNodes.length; i++) { 
			traverseDOMText(node.childNodes.item(i)); 
		} 
	} 
}
