
	var newobject; // will hold JSON object
	var filters;

	
	/**
	 * Create a filter select
	 * @param {Object} filterObj Object containing current filter and select options 
	 * @param {Number} iter number to append to filer ID
	 * @param {String} current value of currently selected item
	 */	
	function addFilterSelect(filterObj, iter, current) {
		try {
			addAnother = document.createElement('<select id="filter_'+iter+'" name="filter_'+iter+'" onchange="updateQFFilter()" class="sub-select" >');
		}catch(e){
			addAnother = document.createElement('select');
			addAnother.setAttribute('id', 'filter_'+iter);
			addAnother.setAttribute('name', 'filter_'+iter);
			addAnother.setAttribute('onchange', "updateQFFilter()");
			addAnother.className="sub-select";
		}
		
			$('quickfinderactive').appendChild(addAnother);
		if (newobject.quickfinder.glossary[iter].entry.length) {
			try {
				addLink = document.createElement('<a href="#" class="questionbutton"></a>');
			}catch(e){
				addLink = document.createElement('a');
				addLink.setAttribute('href', "#");
				addLink.className = "questionbutton";
			}
			
			try {
				addImg = document.createElement('<img src="/common/images/btn-question.gif" border="0" onclick="popuphelp('+iter+')" style="clear:right;margin: 0px 0px -5px 3px !important;border:0px" onmouseover="this.src=\'/common/images/btn-question-over.gif\'" onmouseout="this.src=\'/common/images/btn-question.gif\'" />');
			}catch(e){
				addImg = document.createElement('img');
				addImg.setAttribute('src', "/common/images/btn-question.gif");
				addImg.setAttribute('style', 'clear:right;margin: 0px 0px -5px 3px !important;border:0px');
				addImg.setAttribute('onmouseover', 'this.src="/common/images/btn-question-over.gif"');
				addImg.setAttribute('onmouseout', 'this.src="/common/images/btn-question.gif"');
				addLink.setAttribute('onclick', 'popuphelp('+iter+')');
			}
			
			addLink.appendChild(addImg);
			$('quickfinderactive').appendChild(addLink);
		}
		tempselector = $('filter_'+iter);				
		for(var j=0; j < filterObj.length; j++ ) {
			if(filterObj[j].name == 'All') {
				tempselector.options[j] = new Option(filterObj[j].name+" "+newobject.quickfinder.titles[iter].entry+" ", filterObj[j].value);				
			}else {
				tempselector.options[j] = new Option(filterObj[j].name, filterObj[j].value);
			}
			if (tempselector.options[j].value == current){ // keep selected value
				tempselector.options[j].selected=true
			}
		}	
	}
	
	function setQFClass(filters) {
		if(filters > 2) {
			$('quickfinder').className = 'quickfinder-active';			
		} else {
			$('quickfinder').className = 'quickfinder-over';
		}
	}
	
	/**
	 * Decide if go button should be displayed.  Location of form submit will
	 * differ depending on number of products.
	 * @param {Number} productcount Number of products.  If no porducts, go to category.htm
	 * @param {String} url The url parameters for this form submit
	 */
	function makeGo(productcount, url) {
        // sort by kW for asian diesel generators that don't already have an orderBy clause
        if (theme == 'asia' && url.indexOf("categoryNumber=11961") >= 0 && url.indexOf("orderBy") < 0) {
            url += "&orderBy=1";
        }
        if(productcount > 0 && $F('categoryNumber') != 'ALL') {
			$('count').innerHTML = productcount;
			$('qf-results-text').innerHTML = "items found";
			$('qf-view-button').onclick = function() {eval('submitForm("filterresults.htm","'+url+'");');};
			$('count-go').style.display = '';
			//Effect.BlindDown('count-go', {duration:0});
			setQFClass(filters);
			setFlag("quickfinder");
		}
		else if(productcount == 0 && $F('categoryNumber') != 'ALL') {
			$('count').innerHTML = "";
			$('qf-results-text').innerHTML = "";
			$('qf-view-button').onclick = function() {eval('submitForm("category.htm","'+url+'");');};
			$('quickfinder').className = 'quickfinder-active';
			//Effect.BlindDown('count-go', {duration:0});
			$('count-go').style.display = '';
			setFlag("quickfinder");
			setQFClass(filters);
		}
		else if(productcount >= 0 && $F('categoryNumber') == 'ALL') {
			Effect.BlindUp('count-go', {duration:0});
			setQFClass(filters);
		}
		else {
			$('quickfinder').className = 'quickfinder';
			$('count-go').style.display = 'none';
			//Effect.BlindUp('count-go', {duration:0});
			//removeFlag("quickfinder");
		
		}
	
	}

	/**
	 * update Quick Finder after category is changed
	 *
	 */
	function updateQFCategory() {
		var resp;
		if(arguments[0] == 'hash') { // if called by onload
			urlbase = +window.location.hash.substring(1)+"&xmlFlag=true";
		} else if($F('categoryNumber') == 'ALL') { 
			urlbase = "sectionNumber="+$F('sectionNumber')+"&xmlFlag=true";
		} else {
			// needs prototype, $F = document.getElementById('foo').value
			urlbase = "sectionNumber="+$F('sectionNumber')+"&categoryNumber="+$F('categoryNumber')+"&xmlFlag=true";
		}
		
		url = "getquickfindervalues.htm?"+urlbase;
		new Ajax.Request(
			url, { method:'get',
				onSuccess: function(transport){
					removeFilters();
					// remove bad characters from response
					resp =  transport.responseText.replace(/^("(\\.|[^"\\\n\r])*?"|[,:{}\[\]0-9.\-+Eaeflnr-u \n\r\t])+?$/, " ");
					eval(" newobject = {" +resp + "}"); //put it in object
					oldFilters = filters; //old number of filters
					try{
						filters = newobject.quickfinder.attributes.length -1 ; // set number of filters
					}catch(e) {
						filters = 0;
					}
					for(var i = 0; i<filters ;i++) {
						addFilterSelect(newobject.quickfinder.attributes[i].attributeList,i,null);
					}
					$('qf-main-question-a').onclick = function() {popuphelp(-1);}
					makeGo(newobject.quickfinder.productcount, urlbase);
				} // end onSuccess
				,
				onFailure: function() {
					removeFilters();		
					makeGo(-1);
				}
			}
		); //end new Ajax.Request
	} // end function updateQFCategory()
	
	/**
	 * update Quick Finder after filter is changed
	 *
	 */
	function updateQFFilter() {
		var resp;
		if(arguments[0] == 'hash') {
			urlbase = window.location.hash.substring(1)+"&xmlFlag=true";
		}else {
			urlbase = "sectionNumber="+$F('sectionNumber')+"&categoryNumber="+$F('categoryNumber');
			try {
				filters = $('quickfinderactive').getElementsByTagName('select').length; 
				for(iter = 0; iter < filters; iter++) {
					urlbase += "&filter_"+iter+"="+$F('filter_'+iter);
				}
			}
			catch(e) {}
			urlbase +="&xmlFlag=true"
		}
		url = "getquickfindervalues.htm?"+urlbase;
		new Ajax.Request(
			url, { method:'get',
  			onSuccess: function(transport){
				var oldValues = removeFilters();
				// remove bad characters from response
				resp =  transport.responseText.replace(/^("(\\.|[^"\\\n\r])*?"|[,:{}\[\]0-9.\-+Eaeflnr-u \n\r\t])+?$/, " ");
				eval(" newobject = {" +resp + "}"); //put it in object
				oldFilters = filters; //old number of filters
				try{
					filters = newobject.quickfinder.attributes.length -1 ; // set number of filters
				}catch(e) {
					filters = 0;
				}
				for(var i = 0; i<filters;i++) {
					addFilterSelect(newobject.quickfinder.attributes[i].attributeList,i,oldValues[i]);
				}
				
				makeGo(newobject.quickfinder.productcount, urlbase);
				
    		} // end onSuccess
    		,
				onFailure: function() {
					removeFilters();		
					makeGo(-1);				
				}
 			}
		); //end new Ajax.Request
		
	} // end function updateQFFilter()
	
	/**
	 * removes the filters.
	 * @return {Array} saveOpts Array containing the options of the previous selects
	 */
	function removeFilters() {
		var filtercounter = 0;
		var selects = document.getElementsByTagName('select');
		var buttons = document.getElementsByClassName('questionbutton');
		var selectslen = selects.length;
		var saveOpts = new Array();
		for(var iter = 0; iter < selects.length; iter++) {
			if(selects[iter].getAttribute('name').indexOf('filter_') ==0 ) {
				saveOpts[selects[iter].getAttribute('name').substring(7)] = selects[iter].value;
				while (selects[iter].childNodes[0]) {
					selects[iter].removeChild(selects[iter].childNodes[0]);
				}

			filtercounter +=1
			}
		}
		for(var iter = buttons.length-1; iter >= 0; iter--) {
			while(buttons[iter].childNodes[0]) {
					buttons[iter].removeChild(buttons[iter].childNodes[0]);
			}
			buttons[iter].parentNode.removeChild(buttons[iter]);
		}
		
		
		for (var i=selectslen;filtercounter && i > 0; filtercounter-- ) {
			i -= 1
			if(selects[i].getAttribute('name').indexOf('filter_') == 0 )
			{selects[i].parentNode.removeChild(selects[i]);}
		}
		return saveOpts;
	}
	
	/**
	 * Submits to next page.  
	 */
	function submitForm(base,newUrl){
		//window.location.hash = newUrl;
		window.location = base+"?"+newUrl;
	}
	
	function flushFilters() {
		$('categoryNumber')[0].selected = true;
		removeFilters();
		updateQFCategory();
		quickfinderFlag = "false";
		makeGo(-1);
	}
	
	function resetFilters() {
		$('categoryNumber')[0].selected = true;		
		removeFilters();
		updateQFCategory();
		makeGo(0);
		document.getElementById('quickfinder').className='quickfinder-over';
	}
	
  function popuphelp(iter) {
		categoryProductId = newobject.quickfinder.glossary[parseInt(iter)].id
		window.open("glossaryterm.htm?productCategoryId="+categoryProductId, "", "left=0,top=0,width=366,height=600,location=no,toolbar=no,menubar=no,resizable=no,scrollbars=yes");
		return false;
	}
	

