// my attempt at abstracting out the multiple autocompletes for all the diffferent types

function attach_autocomplete(type, ajax_file, hash) {
		// huge definition, creating a function within YAHOO namespace
		// then call this huge function, attaching it to whateve input
		YAHOO.example.remote_object = function() {
				// Use an XHRDataSource
				var oDS = new YAHOO.util.XHRDataSource(MOOGI.domain+ajax_file);
				// Set the responseType
				oDS.responseType = YAHOO.util.XHRDataSource.TYPE_TEXT;
				// Define the schema of the delimited results
				oDS.responseSchema = {
						recordDelim: "\n",
						fieldDelim: "\t"
				};
				// Enable caching
				oDS.maxCacheEntries = 5;

				// Instantiate the AutoComplete
				var oAC = new YAHOO.widget.AutoComplete("ac_input_"+type+"_"+hash, "ac_output_"+type+"_"+hash, oDS);

				oAC.forceSelection = true;

				// Display up to 50 results in the container
				oAC.maxResultsDisplayed = 50;
				// needs at least this number of letters to start query
				oAC.minQueryLength = 2; 	
				
				var myHiddenField = YAHOO.util.Dom.get("ac_hidden_input_"+type+"_"+hash);
				var myHiddenField2 = YAHOO.util.Dom.get("ac_hidden_input2_"+type+"_"+hash);
				var myHiddenField3 = YAHOO.util.Dom.get("ac_hidden_input3_"+type+"_"+hash);
				var myHiddenField4 = YAHOO.util.Dom.get("ac_hidden_input4_"+type+"_"+hash);
				
				var myHandler_actor = function(sType, aArgs) {
						var myAC = aArgs[0]; // reference back to the AC instance
						var elLI = aArgs[1]; // reference to the selected LI element
						var oData = aArgs[2]; // object literal of selected item's result data
						
						// update hidden form field with the selected item's ID
						myHiddenField.value = oData[1];
						myHiddenField2.value = oData[2];
						myHiddenField3.value = oData[5];
						myHiddenField4.value = oData[4];
						
				};
				oAC.itemSelectEvent.subscribe(myHandler_actor);
				included_items = eval("included_"+type); 
				if(type == 'product_similar') {
						var find_type = 'product';
				} else {
						var find_type = type;
				}
				oAC.generateRequest = function(sQuery) {
						return "?type="+find_type+"&"+"source_show="+page_show+"&included="+included_items+"&query=" + sQuery ;
				};

				//new format code
				
				// Result data passed as object for easy access from custom formatter.
				oAC.resultTypeList = false;
				// Customize formatter to show thumbnail images
				oAC.formatResult = function(oResultData, sQuery, sResultMatch) {
						var img = "", nonimg = "";
						//var oThumbnail = oResultData.Thumbnail;
						var oThumbnail = oResultData[6];
						if(oThumbnail && (oThumbnail !== "")) {
								img = "<img width='30px' height='38px' src=\""+ oThumbnail + "\" align='top'>";
						}
						else {
								img = "<span class=\"img\"><span class=\"imgtext\"></span></span>";
						}
						return "<div><div class=\"result\" style='float: left;'>" + img + "</div><div style='display: inline;'> <span class=\"name\" style='font-size: 10px;'>&nbsp;" + sResultMatch + "<br><i>&nbsp;"+oResultData[4]+"</i></span></div><br clear='all'></div>";
						
				};


				//end new format code
				
				
				// Rather than submit the form,
				// alert the stored ID instead
				var onFormSubmit = function(e, myForm) {
						YAHOO.util.Event.preventDefault(e);
						add_object_pic(page_scene,
													 page_episode,
													 page_season,
													 page_show,
													 myHiddenField.value,
													 type,
													 page_source,
													 myHiddenField2.value,
													 document.getElementById('ac_input_'+type+"_"+hash).value,
													 myHiddenField4.value,
													 myHiddenField3.value,
													 'auto',
													 'output_'+hash
													);
						document.getElementById('ac_input_'+type+"_"+hash).value = '';
				};	
				YAHOO.util.Event.addListener(YAHOO.util.Dom.get("ac_form_"+type+"_"+hash), "submit", onFormSubmit);
				
				return {
						oDS: oDS,
						oAC: oAC
				};
		}();

}

