var facetData;

function reloadGiftFinderDetailed(searchSettings, category) {

   var bindArgs = {
	  url : contextPath + "/atgsearch/gadgets/ajaxSearch.jsp",
	  content : searchSettings,
	  error : function(response, ioArgs) {
		alert("Error: " + response);
	  },
	  load : function(response, ioArgs) {
		if (response != undefined) {
		  eval("var objStructure=" + trim(response));
		  //alert("Facet Data: " + facetData);
		  giftFinderUpdate(objStructure, category);
		  setGiftFinderState(true);
		}
	  }
	};

	dojo.xhrGet(bindArgs);
}

function giftFinderUpdate(objStructure, category) {
	  facetData = objStructure;
	  var objCats = objStructure.categories;
	  var objFacets = objStructure.facets;


		for (i=0; i<objFacets.length; i++) {
			var sel = dojo.byId("facet_select_" + objFacets[i].id);
			if (sel == null) {
				//alert("could not find facet select: facet_select_" + objFacets[i].id);
			}
			else {
				sel.options.length = 0;
				sel.options[sel.length] = new Option("All " + objFacets[i].catName, "remove");
				sel.options[sel.length] = new Option(objFacets[i].name, objFacets[i].urlFacet);
				sel.selectedIndex = 1;
			}
		}

	  
		for (i=0; i<objCats.length; i++) {
			var sel = dojo.byId("facet_select_" + objCats[i].catid);
			if (sel == null) {
				//alert("could not find cat select: facet_select_" + objCats[i].catid);
			}
			else {
				sel.options.length=0;
				sel.options[sel.length] = new Option("All " + objCats[i].name, "remove");
				for (j=0; j<objCats[i].options.length; j++) {
					sel.options[sel.length] = new Option(objCats[i].options[j].name, objCats[i].options[j].urlFacet);
				}
			}
		}
}

function reloadGiftFinder(removeFacet, trailSize, facetTrail, addFacet, categoryId, numResults, question) {
	var searchSettings = {
			removeFacet: removeFacet,
			trailSize: trailSize,
			facetTrail: facetTrail,
			addFacet: addFacet,
			categoryId: categoryId,
			numResults: numResults,
			question: question
		};
	
	 reloadGiftFinderDetailed(searchSettings, categoryId);
}

function reloadGiftFinderWithSelection(pSelect, categoryId) {
	// Disable the go button until the callback completes.
	setGiftFinderState(false);
	var urlFacet = pSelect.options[pSelect.selectedIndex].value;
	if (urlFacet == "remove") {
		for (i=0; i<facetData.facets.length; i++) {
			var idLength = pSelect.id.length;
			var facetIdLength = facetData.facets[i].id.length;
			if (pSelect.id.substr(idLength - facetIdLength, facetIdLength) ==  facetData.facets[i].id) {
				var searchSettings = {
						q_facetTrail:facetData.facets[i].urlFacet,
						categoryId: categoryId
				};
				reloadGiftFinderDetailed(searchSettings, categoryId);
				return;
			}
		}
	}
	for (i=0; i<facetData.categories.length; i++) {
		var idLength = pSelect.id.length;
		var catIdLength = facetData.categories[i].catid.length;
		if (pSelect.id.substr(idLength - catIdLength, catIdLength) ==  facetData.categories[i].catid) {
			for (j=0; j<facetData.categories[i].options.length; j++) {
				if (urlFacet == facetData.categories[i].options[j].urlFacet) {
					var searchSettings = {
							q_facetTrail:facetData.categories[i].options[j].urlFacet,
							categoryId: categoryId
					};
					reloadGiftFinderDetailed(searchSettings, categoryId);
					return;
				}
			}
		}
	}
}

function setGiftFinderState(state) {
	var button = dojo.byId("lf_hpGiftFinder_submit");
	if (state) {
		button.className="";
		button.disabled=false;
	}
	else {
		button.className="disabled";
		button.disabled=true;
	}
}

function findGifts(pForm) {
	pForm.q_facetTrail.value=facetData["FacetSearchTools.facetTrail"];
	pForm.submit();
	return false;
}