(function ($) {
	/**
	 * Builds out the select for boxes for Dealer Locator based on data passed to it
	 * @params and array of obj's where the keys are the same as the attribute 'name'
	 * of the select dom obj in the form
	 * */
	var LocationListForm = function(params) {
		/**
		 * Takes an array and romoves duplicate data, and empty strings
		 * @params an array
		 * @returns an array of unique values, with no empty strings
		 *
		 * */
		var arrayScrub = function(array) {
            var i;
            var test;
            var testArray = [];
            for (i = 0; i < array.length; i++) {
                test = 0
                for (var x = 0; x < testArray.length; x++) {
                    if (array[i] == testArray[x]) {
                        test = 1
                    }
                }
                if (test === 1) {
                    test = 0;
                } else {
//                    console.log(array)
                    if (array[i].length > 0) {
						testArray.push(array[i])
					}
				}
			}
			return testArray;
		}
		/**
		 * Takes an array of us state of canadian poviential abbvs, and
		 * Builds out a selectboxes
		 * name = region
		 * value = abbreviation
		 * key = full name of state/proveince
		 * @params an array
		 * @returns outputs select boxes to dom element with name = 'region'
		 * */
		var buildRegionList = function(array) {
            var i, id = $('#' + formId);
            for (i = 0; i < array.length; i++) {
				switch (array[i]) {
					case 'AL':
						$('select[name=region]', id)[0].options[$('select[name=region]', id)[0].options.length] = new Option("Alabama", "AL")
						break;
					case 'AK':
						$('select[name=region]', id)[0].options[$('select[name=region]', id)[0].options.length] = new Option("Alaska", "AK")
						break;
					case 'AZ':
						$('select[name=region]', id)[0].options[$('select[name=region]', id)[0].options.length] = new Option("Arizona", "AZ")
						break;
					case 'AR':
						$('select[name=region]', id)[0].options[$('select[name=region]', id)[0].options.length] = new Option("Arkansas", "AR")
						break;
					case 'CA':
						$('select[name=region]', id)[0].options[$('select[name=region]', id)[0].options.length] = new Option("California", "CA")
						break;
					case 'CO':
						$('select[name=region]', id)[0].options[$('select[name=region]', id)[0].options.length] = new Option("Colorado", "CO")
						break;
					case 'CT':
						$('select[name=region]', id)[0].options[$('select[name=region]', id)[0].options.length] = new Option("Connecticut", "CT")
						break;
					case 'DE':
						$('select[name=region]', id)[0].options[$('select[name=region]', id)[0].options.length] = new Option("Delaware", "DE")
						break;
					case 'DC':
						$('select[name=region]', id)[0].options[$('select[name=region]', id)[0].options.length] = new Option("District of Columbia", "DC")
						break;
					case 'FL':
						$('select[name=region]', id)[0].options[$('select[name=region]', id)[0].options.length] = new Option("Florida", "FL")
						break;
					case 'GA':
						$('select[name=region]', id)[0].options[$('select[name=region]', id)[0].options.length] = new Option("Georgia", "GA")
						break;
					case 'HI':
						$('select[name=region]', id)[0].options[$('select[name=region]', id)[0].options.length] = new Option("Hawaii", "HI")
						break;
					case 'ID':
						$('select[name=region]', id)[0].options[$('select[name=region]', id)[0].options.length] = new Option("Idaho", "ID")
						break;
					case 'IN':
						$('select[name=region]', id)[0].options[$('select[name=region]', id)[0].options.length] = new Option("Illinois", "IN")
						break;
					case 'IL':
						$('select[name=region]', id)[0].options[$('select[name=region]', id)[0].options.length] = new Option("Indiana", "IL")
						break;
					case 'IA':
						$('select[name=region]', id)[0].options[$('select[name=region]', id)[0].options.length] = new Option("Iowa", "IA")
						break;
					case 'KS':
						$('select[name=region]', id)[0].options[$('select[name=region]', id)[0].options.length] = new Option("Kansas", "KS")
						break;
					case 'KY':
						$('select[name=region]', id)[0].options[$('select[name=region]', id)[0].options.length] = new Option("Kentucky", "KY")
						break;
					case 'LA':
						$('select[name=region]', id)[0].options[$('select[name=region]', id)[0].options.length] = new Option("Louisiana", "LA")
						break;
					case 'ME':
						$('select[name=region]', id)[0].options[$('select[name=region]', id)[0].options.length] = new Option("Maine", "ME")
						break;
					case 'MD':
						$('select[name=region]', id)[0].options[$('select[name=region]', id)[0].options.length] = new Option("Maryland", "MD")
						break;
					case 'MA':
						$('select[name=region]', id)[0].options[$('select[name=region]', id)[0].options.length] = new Option("Massachusetts", "MA")
						break;
					case 'MI':
						$('select[name=region]', id)[0].options[$('select[name=region]', id)[0].options.length] = new Option("Michigan", "MI")
						break;
					case 'MN':
						$('select[name=region]', id)[0].options[$('select[name=region]', id)[0].options.length] = new Option("Minnesota", "MN")
						break;
					case 'MS':
						$('select[name=region]', id)[0].options[$('select[name=region]', id)[0].options.length] = new Option("Mississippi", "MS")
						break;
					case 'MO':
						$('select[name=region]', id)[0].options[$('select[name=region]', id)[0].options.length] = new Option("Missouri", "MO")
						break;
					case 'MT':
						$('select[name=region]', id)[0].options[$('select[name=region]', id)[0].options.length] = new Option("Montana", "MT")
						break;
					case 'NE':
						$('select[name=region]', id)[0].options[$('select[name=region]', id)[0].options.length] = new Option("Nebraska", "NE")
						break;
					case 'NV':
						$('select[name=region]', id)[0].options[$('select[name=region]', id)[0].options.length] = new Option("Nevada", "NV")
						break;
					case 'NH':
						$('select[name=region]', id)[0].options[$('select[name=region]', id)[0].options.length] = new Option("New Hampshire", "NH")
						break;
					case 'NJ':
						$('select[name=region]', id)[0].options[$('select[name=region]', id)[0].options.length] = new Option("New Jersey", "NJ")
						break;
					case 'NM':
						$('select[name=region]', id)[0].options[$('select[name=region]', id)[0].options.length] = new Option("New Mexico", "NM")
						break;
					case 'NY':
						$('select[name=region]', id)[0].options[$('select[name=region]', id)[0].options.length] = new Option("New York", "NY")
						break;
					case 'NC':
						$('select[name=region]', id)[0].options[$('select[name=region]', id)[0].options.length] = new Option("North Carolina", "NC")
						break;
					case 'ND':
						$('select[name=region]', id)[0].options[$('select[name=region]', id)[0].options.length] = new Option("North Dakota", "ND")
						break;
					case 'OH':
						$('select[name=region]', id)[0].options[$('select[name=region]', id)[0].options.length] = new Option("Ohio", "OH")
						break;
					case 'OK':
						$('select[name=region]', id)[0].options[$('select[name=region]', id)[0].options.length] = new Option("Oklahoma", "OK")
						break;
					case 'OR':
						$('select[name=region]', id)[0].options[$('select[name=region]', id)[0].options.length] = new Option("Oregon", "OR")
						break;
					case 'PA':
						$('select[name=region]', id)[0].options[$('select[name=region]', id)[0].options.length] = new Option("Pennsylvania", "PA")
						break;
					case 'RI':
						$('select[name=region]', id)[0].options[$('select[name=region]', id)[0].options.length] = new Option("Rhode Island", "RI")
						break;
					case 'SC':
						$('select[name=region]', id)[0].options[$('select[name=region]', id)[0].options.length] = new Option("South Carolina", "SC")
						break;
					case 'SD':
						$('select[name=region]', id)[0].options[$('select[name=region]', id)[0].options.length] = new Option("South Dakota", "SD")
						break;
					case 'TN':
						$('select[name=region]', id)[0].options[$('select[name=region]', id)[0].options.length] = new Option("Tennessee", "TN")
						break;
					case 'TX':
						$('select[name=region]', id)[0].options[$('select[name=region]', id)[0].options.length] = new Option("Texas", "TX")
						break;
					case 'UT':
						$('select[name=region]', id)[0].options[$('select[name=region]', id)[0].options.length] = new Option("Utah", "UT")
						break;
					case 'VT':
						$('select[name=region]', id)[0].options[$('select[name=region]', id)[0].options.length] = new Option("Vermont", "VT")
						break;
					case 'VA':
						$('select[name=region]', id)[0].options[$('select[name=region]', id)[0].options.length] = new Option("Virginia", " VA")
						break;
					case 'WA':
						$('select[name=region]', id)[0].options[$('select[name=region]', id)[0].options.length] = new Option("Washington", "WA")
						break;
					case 'WV':
						$('select[name=region]', id)[0].options[$('select[name=region]', id)[0].options.length] = new Option("West Virginia", "WV")
						break;
					case 'WI':
						$('select[name=region]', id)[0].options[$('select[name=region]', id)[0].options.length] = new Option("Wisconsin", "WI")
						break;
					case 'WY':
						$('select[name=region]', id)[0].options[$('select[name=region]', id)[0].options.length] = new Option("Wyoming", "WY")
						break;
					case 'AB':
						$('select[name=region]', id)[0].options[$('select[name=region]', id)[0].options.length] = new Option("Alberta", "AB")
						break;
					case 'BC':
						$('select[name=region]', id)[0].options[$('select[name=region]', id)[0].options.length] = new Option("British Columbia", "BC")
						break;
					case 'MB':
						$('select[name=region]', id)[0].options[$('select[name=region]', id)[0].options.length] = new Option("Manitoba", "MB")
						break;
					case 'NB':
						$('select[name=region]', id)[0].options[$('select[name=region]', id)[0].options.length] = new Option("New Brunswick", "NB")
						break;
					case 'NL':
						$('select[name=region]', id)[0].options[$('select[name=region]', id)[0].options.length] = new Option("Newfoundland and Labrador", "NL")
						break;
					case 'NT':
						$('select[name=region]', id)[0].options[$('select[name=region]', id)[0].options.length] = new Option("Northwest Territories", "NT")
						break;
					case 'NS ':
						$('select[name=region]', id)[0].options[$('select[name=region]', id)[0].options.length] = new Option("Nova Scotia", "NS")
						break;
					case 'NU':
						$('select[name=region]', id)[0].options[$('select[name=region]', id)[0].options.length] = new Option("Nunavut", "NU")
						break;
					case 'ON':
						$('select[name=region]', id)[0].options[$('select[name=region]', id)[0].options.length] = new Option("Ontario", "ON")
						break;
					case 'PE':
						$('select[name=region]', id)[0].options[$('select[name=region]', id)[0].options.length] = new Option("Prince Edward Island", "PE")
						break;
					case 'QC':
						$('select[name=region]', id)[0].options[$('select[name=region]', id)[0].options.length] = new Option("Quebec", "QC")
						break;
					case 'SK':
						$('select[name=region]', id)[0].options[$('select[name=region]', id)[0].options.length] = new Option("Saskatchewan", "SK")
						break;
					case 'YT':
						$('select[name=region]', id)[0].options[$('select[name=region]', id)[0].options.length] = new Option("Yukon", "YT")
						break;
					default:
						break;
				}
			}
		}
		/**
		 * Id of the Form
		 * */
		var formId = 'sbFormLocation';
		/**
		 * Builds selectboxes in the dom from a data obj
		 * e.g.
		 * obj.name = name of select
		 * obj.id = id of form
		 * obj.array = array of values to add as options, currently coded to use the array value as both
		 *           value and key in the selectbox
		 *
		 * @params data object
		 * @returns dom
		 * */
		var toSelectBox = function(obj) {
			var i;
			var id = obj.id;
			var name = obj.name
			var array = obj.array;
			/*
				  console.log('id:'+obj.id)
				  console.log('name:'+obj.name)
				  console.log('array:'+obj.array)
   */
			if (document.forms[id] && document.forms[id].elements && document.forms[id].elements[name]) {
				var selectBox = document.forms[id].elements[name]
				var data = arrayScrub(array).sort()
				if (name === 'region') {
					buildRegionList(data)
				} else {
					for (i = 0; i < data.length; i++) {
						if (data[i].length > 0) {
							selectBox.options[selectBox.options.length] = new Option(data[i], data[i]);
						}
					}
				}
			}
		}
		/**
		 * Builds the obj to be passed in to toSelectBox from the params obj passed into LocationListForm  at call
		 *
		 * */
		var init = function() {
			var obj = {}
			for (var key in params){
//				console.log(key)
				for(var val in params[key]){
					if(!obj[val]){
						obj[val] = [];
					}
//					console.log(params[key][val])
					for(var i = 0; i < params[key][val].length; i++){
//						console.log(params[key][val][i])
                        obj[val].push((params[key][val][i] !== undefined)?params[key][val][i]:'');
					}
				}
			}
//			console.log(obj)
			   for (var d in obj) {
				   var data = {}
				   data.id = formId;
				   data.name = d;
				   data.array = obj[d];
				   toSelectBox(data);
			   }

		}

		init();
	}
	window.DDC.LocationListForm = LocationListForm;

})
		(jQuery);



	
