(function ($) {
	var SmartBrowse = function(settings) {
		var defaults = {
			sbForm : 'sbForm',
			sbdata : {}
		}

		settings = $.extend(defaults, settings)

		var sbdata = settings.sbdata
		var init = function(settings) {
//			 setup pattern to remove from option values
			if (typeof removalPattern == 'undefined')
				var removalPattern = /(?:)/;	// non-matching default pattern

			function sb_load(sbdata) {
				for (var dataset in sbdata) {
					if ((dataset != 'SBdefaults') && (typeof(document.forms[settings.sbForm].elements[dataset]) != 'undefined')) {
						var optRef = document.forms[settings.sbForm].elements[dataset];
						clearoptionlist(optRef);

						var i = 1;
						for (var key in sbdata[dataset]) {
							optRef.options[i++] = new Option(sbdata[dataset][key].replace(/GMC Pontiac Buick/, 'GMC').replace(removalPattern, ''), key);
						}
						optRef.disabled = (i == 1) ? true : false;
						optRef.value = (sbdata.SBdefaults[dataset] == '') ? 'clear' : sbdata.SBdefaults[dataset];
					}
				}
			}

			function doLoad(url) {
				$.ajax({
					url:url,
					dataType:'json',
					beforeSend:function() {
						$('.sbSubmitBtn', '#' + settings.sbForm + '').hide();
						$('.sb_loading', '#' + settings.sbForm + '').show();
					},
					success:function(req) {
						sbdata = req;
						$('.sb_loading', '#' + settings.sbForm + '').hide();
						$('.sbSubmitBtn', '#' + settings.sbForm + '').show(); // inline
						sb_load(sbdata);
					}
				});
			}

			function clearoptionlist(formelm) {
				var numopt = formelm.options.length;
				for (i = (numopt - 1); i >= 1; i--) {
					formelm.options[i] = null;
				}
			}
			var sb_submit = function () {
				document.forms['' + settings.sbForm + ''].submit();
			};

			function sb_ajax(selRef) {
				var formRef = document.forms['' + settings.sbForm + ''];
				var invtype;
				if (typeof(formRef.invtype.length) == 'undefined') {
					invtype = formRef.invtype.value;
				}
				else {
					for (i = 0; i < formRef.invtype.length; i++) {
						if (formRef.invtype[i].checked) {
							invtype = formRef.invtype[i].value;
							break;
						}
					}
				}
				formRef.action = settings.invpaths[invtype];
				var url = settings.ajaxpaths[invtype] + '?' + ((selRef) ? selRef.name + '=' + escape(selRef.value) : 'reset=InventoryListing');
				for (var criteria in settings.showsettings) {
					url += '&' + criteria + '=' + settings.showsettings[criteria];
				}
				url += '&detect=false';
//				alert(url);
				doLoad(url);
			}

			$('.SBinvtypes .radio', '#' + settings.sbForm + '').change(function() {
//				console.log("radio change")
				sb_ajax(this)
			})
			$('.SBcriteria select', '#' + settings.sbForm + '').change(function() {
//				console.log("select Change")
				sb_ajax(this)
			})
			$('.submit', '#' + settings.sbForm + '').click(function() {
//				console.log("submit clicked")
				sb_submit()
				return false;
			})
			sb_ajax();

		}
		init(settings);
	}
	window.DDC.SmartBrowse = SmartBrowse;
})
		(jQuery);
