var S_LIST = '.auto-complete';
var S_CURRENT_LI = '.current';
var S_LOAD = '.loading';

var C_LIST = S_LIST.substr(1);
var C_CURRENT_LI = S_CURRENT_LI.substr(1);
var C_LOAD = S_LOAD.substr(1);
	
var KEYWORD_MIN_LENGHT = 3;

var currentKeyword = {};

var timeOut = setTimeout('', 1000);
var blurTimer = setTimeout('', 1000);

var LIST_MAX_ITEMS = 6;
var LIST_ITEM_HEIGHT = 23;

function addSelect(input, list, listAction, params) {
	
	var input = $(input);
	
	if(list == null || list.length == 0) return false;
	
	var listObj = $('<ul class="'+C_LIST+'"></ul>');	
		
	var i = 0;
	while(list[i] != null) { 
		var liHTML = '<li val="' + list[i]['value'] + '"';
		if(i == 0) liHTML += ' class="'+C_CURRENT_LI+'"';
		liHTML += '>' + list[i]['text'] + '</li>';		
		
		var liObj = $(liHTML);

		liObj.data('data', list[i].data);
		listObj.append(liObj);
		i++;
	}
		
	input.next('ul').remove();
	input.after(listObj);
	if(listObj.children().length > 4) {
		listObj.height(LIST_MAX_ITEMS * LIST_ITEM_HEIGHT).addClass('overflown');
	}
	
	listObj.parent().addClass('with-auto-complete');
	listObj.show();									 
	
	$('li', listObj)
	.click(function() {
		clearTimeout(blurTimer);
		input.val($(this).text());
		listObj.hide();
		if (listAction != null && $.isFunction(listAction)) {
			listAction(input, $(this), params);
		}
		listObj.parent().removeClass('with-auto-complete');
	})
	.hover(function() {if(!$(this).hasClass(C_CURRENT_LI)) $(this).addClass('hover')}, function() {$(this).removeClass('hover')});
	return true;	
}

function bindAutoComplete(input, ajaxOptions, listGenerator, listAction, params) {
	input = $(input);
	
	input.keypress(disableKeys);
	input.keydown(disableKeys);
	
	input.focus(function() {showAutoComplete(input);});
	
	input.keyup(function(k) {
		var kc = k.keyCode;
								
		hideLoadError(input); 
		
		var list = input.next(S_LIST);
		
		var LIs = list.children();
		var listLen = LIs.length;
		
		var LI = LIs.filter(S_CURRENT_LI);
		var LIindex = LIs.index(LI);
		var lastIndex = listLen - 1;
		var nextIndex = null;
		var overflown = (listLen > LIST_MAX_ITEMS)
		
		var act = '';

		switch(kc) {
			case 38: // 'Up'
				
				if(LIindex <= 0) nextIndex = lastIndex;
				else nextIndex = LIindex - 1;					
				
			break;
			case 40: // 'Down'
				
				if(LIindex >= lastIndex) nextIndex = 0;
				else nextIndex = LIindex + 1;
				
			break;
			case 33: // 'PgUp'
			
				if(LIindex <= 0) nextIndex = lastIndex;
				
				else if(!overflown || LIindex - LIST_MAX_ITEMS < 0) nextIndex = 0;
				else nextIndex = LIindex - LIST_MAX_ITEMS;
				
				act = 'pgup';
				
			break;
			case 34: // 'PgDown'
			
				if(!overflown) nextIndex = lastIndex;
				else if(LIindex >= lastIndex || LIindex + LIST_MAX_ITEMS >= lastIndex) nextIndex = 0;
				else nextIndex = LIindex + LIST_MAX_ITEMS;
				
				act = 'pgdown';
				
			break;
			case 27: // 'Esc'
								
				hideLoading(input);
				input.next(S_LIST).hide();
			
			break;
			case 13: // 'Enter'				
				
				input.val(LI.text());
				currentKeyword[input.attr('id')] = LI.text();
				list.remove();
				if (listAction != null && $.isFunction(listAction)) {
					return listAction(input, LI, params);
				}
				else{
					return true;
				}
			
			break;
			default:
			
				var val = input.val();
				
				if(currentKeyword[input.attr('id')] == input.val()) {
					return;
				}else{
					currentKeyword[input.attr('id')] = val;
				}
				
				var valLen = val.length;
				
				clearTimeout(timeOut);
				
				if(valLen < KEYWORD_MIN_LENGHT) {
					
					list.remove();
					
				}else{
					
					timeOut = setTimeout(function() {
						
						list.remove();
						showLoading(input);
												
						var fullAjaxOptions = {
							type: "GET",
							dataType: 'json',
							success: function(data) {
								
								hideLoading(input);
								
								list = listGenerator(data);
								
								if ($.isArray(list)){
									if (listAction != null && $.isFunction(listAction)) {
										if(params != null){
											params.data = data;
											addSelect(input, list, listAction, params);
										}else{
											addSelect(input, list, listAction);
										}
									}else{
										addSelect(input, list);
									}	
								}
								else{
									showLoadError(input, list);
								}
							},
							error: function() {
								hideLoading(input);
								showLoadError(input, 'List could not be loaded');
							}
						};
						
						$.extend(fullAjaxOptions, ajaxOptions);
						
						if(fullAjaxOptions.url != null)
						{
							fullAjaxOptions.url = ajaxOptions.url + '/' + encodeURI(input.val()) + '.json';
						}						
						
						$.ajax(fullAjaxOptions);
						
					}, 1000);
				}
				return;
			break;
		}
		
		if(listLen && nextIndex != null) {
			LI.removeClass(C_CURRENT_LI);
			LIs.eq(nextIndex).addClass(C_CURRENT_LI);
		}
		
		/* Scrolling */			
		if(list.hasClass('overflown')) {						
			var LI = LIs.filter(S_CURRENT_LI);
		
			var listScrollTop = list.scrollTop();
			var listHeight = list.height();
			var LIpos = LI.position();
			var LIheight = LI.outerHeight();

			var prevHeight = 0;
			
			$.each(list.children(':lt('+nextIndex+')'), function() {prevHeight += $(this).outerHeight()});
			 
			if(nextIndex <= 0) {
				list.scrollTop('0');
			} else if (LIpos.top < 0) {
				if(act == 'pgup') {						 
					list.scrollTop(prevHeight);
				} else {
					list.scrollTop(listScrollTop - LIheight);
				}
			} else if (LIpos.top >= list.height()) {	
				if(act == 'pgdown' || act == 'pgup') {						 
					list.scrollTop(prevHeight);
				} else {
					list.scrollTop(listScrollTop + LIheight);
				}					
			}				
		}		
	});	
}

function showAutoComplete(input) {
	input.next(S_LIST).show();
	$('body').click(function() {
		blurTimer = setTimeout(function(){				
			/* hideLoadError(input); */ // Removed as we do not want the error disappearing when the user clicks away from the field 
			hideLoading(input);
			input.next(S_LIST).hide();
			$('body').unbind('click');
			}, 150);
	});
}

function disableKeys(k) {
	var kc = k.keyCode;
	switch(kc) {
		case 13: // 'Enter'
			return false;
		break;
	}
}

function showLoadError(obj, msg) {
	$(obj).parent().children('.server-message').html(msg).show();
	forms.trackFieldError($(obj).attr('rel'));
}

function hideLoadError(obj) {
	$(obj).parent().children('.server-message').hide();
}

function showLoading(obj) {
	hideLoading(obj);
	$(obj).after('<div class="' + C_LOAD + '">Loading...</div>');
	$(obj).next(S_LOAD).show();
}

function hideLoading(obj) {
	$(obj).next(S_LOAD).remove();
}	

function dealerListGenerator(response){
	if(response.valid == true){
		data = response.data;
		var i = 0;
		var list = [];
		while(data[i] != null) {
			list[i] = [];
			list[i]['value'] = data[i].name;
			list[i]['text'] = data[i].name + ', ' + data[i].suburb + ' ' + data[i].state;
			list[i]['data'] = data[i];
			i++;
		};
		return list;
	}else if(response.error.message != null){
		return response.error.message;
	}
	else{
		return 'List could not be loaded, please try again';
	}
}

function dealerOnClickAction(input, li, params) {
	
	var liData = li.data('data');
	
	if(params == null) var params = {};
	if(params.listOutput == null) params.listOutput = ['.dealers-list', '.forms-main'];
	if(params.radioName == null) params.radioName = 'preferredDealer';
	if(params.radioID == null) params.radioID = 'PurchaseIntentionDealer';

	var arr = [];
	arr[0] = [];
	arr[0]['value'] = liData.name;
	arr[0]['text'] = liData.name + ', ' + liData.suburb + ' ' + liData.state;
	arr[0]['data'] = liData;
	
	if(input.parents('.forms-main').length > 0) {
		forms.trackFieldComplete(input.attr('rel'));
	}
	showRadioList(arr, params);
}

function centreOnClickAction(input, li, params) {
	
	var liData = li.data('data');
	
	if(params == null) var params = {};
	if(params.listOutput == null) params.listOutput = ['.dealers-list', '.forms-main'];
	if(params.radioName == null) params.radioName = 'preferredDealer';
	if(params.radioID == null) params.radioID = 'PurchaseIntentionDealer';

	var arr = [];
	arr[0] = [];
	arr[0]['value'] = liData.name;
	arr[0]['text'] = liData.name + ', ' + liData.suburb + ' ' + liData.state;
	arr[0]['data'] = liData;
	
	if(input.parents('.forms-main').length > 0) {
		forms.trackFieldComplete(input.attr('rel'));
	}
	showRadioList(arr, params);
}
	
function postcodeListGenerator(response){
	if(response.valid == true){
		data = response.data;
		var i = 0;
		var list = [];
		while(data[i] != null) {
			list[i] = [];
			list[i]['value'] = data[i].postcode + '/' + encodeURI(data[i].suburb);
			list[i]['text'] = data[i].suburb + ', ' + data[i].postcode + ' ' + data[i].state;		
			list[i]['data'] = data[i];
			i++;
		};
		return list;
	}else if(response.error.message != null){
		return response.error.message;
	}
	else{
		return 'List could not be loaded, please try again';
	}
}

function simplePostcodeOnClickAction(input, li) {

	var liData = li.data('data');
	
	var suburb = $(':hidden[name="suburb"]', input.parent());
	if(!suburb.length)
	{
		suburb = $('<input type="hidden" name="suburb">');
		input.before(suburb);
	}
	suburb.val(liData.suburb);

	var postcode = $(':hidden[name="postcode"]', input.parent());
	if(!postcode.length)
	{
		postcode = $('<input type="hidden" name="postcode">');
		input.before(postcode);
	}
	postcode.val(liData.postcode);

	var state = $(':hidden[name="state"]', input.parent());
	if(!state.length)
	{
		state = $('<input type="hidden" name="state">');
		input.before(state);
	}
	state.val(liData.state);
	if(input.parents('.forms-main').length > 0) {
		forms.trackFieldComplete(input.attr('rel'));
	}
}

function postcodeOnClickAction(input, li, params) {

	var liData = li.data('data');
	
	if(params == null) var params = {};
	if(params.listOutput == null) params.listOutput = ['.dealers-list', '.forms-main'];
	if(params.radioName == null) params.radioName = 'preferredDealer';
	if(params.radioID == null) params.radioID = 'PurchaseIntentionDealer';
	
	showRadioList('<div class="loading-list">Loading list for ' + liData.suburb +', '+ liData.postcode +' '+liData.state+'</div>', params);
		
    var fullAjaxOptions = {
		type: "GET",
		dataType: 'json',
		url: '/service/autocomplete/dealer/' + encodeURI(liData.postcode) + '/' + encodeURI(liData.suburb) + '.json',
		success: function(response) {
			
			hideRadioList(params.listOutput);
			
			if(response.valid == true){
				var i = 0;
				var list = [];
				while(response.data[i] != null) {
					list[i] = [];
					list[i]['value'] = response.data[i].name;
					list[i]['text'] = response.data[i].name + ', ' + response.data[i].suburb + ' ' + response.data[i].state;	
					list[i]['data'] = response.data[i];				
					i++;
				};				
				showRadioList(list, params);
			}else if(response.error.message != null){
				showLoadError(input, response.error.message);
			}
			else{
				showLoadError(input, 'List could not be loaded, please try again');
			}		
		},
		error: function() {
			hideRadioList(params.listOutput);
			showLoadError(input, 'List could not be loaded');
		}
	};   
	$.ajax(fullAjaxOptions);
	
	if(input.parents('.forms-main').length > 0) {
		forms.trackFieldComplete(input.attr('rel'));
	}
}

function postcodeCentreOnClickAction(input, li, params) {

	var liData = li.data('data');
	
	if(params == null) var params = {};
	if(params.listOutput == null) params.listOutput = ['.dealers-list', '.forms-main'];
	if(params.radioName == null) params.radioName = 'preferredDealer';
	if(params.radioID == null) params.radioID = 'PurchaseIntentionDealer';
	
	showRadioList('<div class="loading-list">Loading list for ' + liData.suburb +', '+ liData.postcode +' '+liData.state+'</div>', params);
		
    var fullAjaxOptions = {
		type: "GET",
		dataType: 'json',
		url: '/service/servicecentre/x/' + encodeURI(liData.xcoord) + '/y/' + encodeURI(liData.ycoord)+'.json',
		success: function(response) {
			
			hideRadioList(params.listOutput);
			$('.contact-service-centre').hide();
			
			if(response.valid == true){
				var i = 0;
				var list = [];
				while(response.data[i] != null) {
					list[i] = [];
					list[i]['value'] = response.data[i].name;
					list[i]['text'] = response.data[i].name + ', ' + response.data[i].suburb + ' ' + response.data[i].state;	
					list[i]['data'] = response.data[i];		
					i++;
				};				
				showRadioList(list, params);
				
			}else if(response.error.message != null){
				showLoadError(input, response.error.message);
			}
			else{
				showLoadError(input, 'List could not be loaded, please try again');
			}		
		},
		error: function() {
			hideRadioList(params.listOutput);
			$('.contact-service-centre').hide();
			showLoadError(input, 'List could not be loaded');
		}
	};   
	$.ajax(fullAjaxOptions);
	
	if(input.parents('.forms-main').length > 0) {
		forms.trackFieldComplete(input.attr('rel'));
	}
}

function showRadioList(list, params) {

	if(params == null) var params = {};
	
	if(params.listOutput == null) params.listOutput = '.dealers-list';
	if(params.radioName == null) params.radioName = 'preferredDealer';
	if(params.radioID == null) params.radioID = 'PurchaseIntentionDealer';

	
	
	if($.isArray(params.listOutput)){
		var listBlock = $(params.listOutput[1], params.listOutput[0]);
		var listParent = $(params.listOutput[0]);
	}else{
		var listBlock = $(params.listOutput).html(html);
		var listParent = $(params.listOutput);
	}
	
	listBlock.html('');
	
	if($.isArray(list))
	{	

		var i = 0;
		while(list[i] != null) {
						
			var html = '<div class="line">';
			html += '<input class="item inline tracking';
			if(list.length == 1){
				html += ' dn';
			}
			html += '" type="radio" name="' +params.radioName+ '" id="' +params.radioID+ '-Dealer'+i+'" value="'+list[i]['value']+'"';
			 
			html += '/>';
			html += '<label for="' +params.radioID+ '-Dealer'+i+'">'+list[i]['text']+'</label>';
			html += '</div>';
			
			listBlock.append(html);
			
			if ($('body').hasClass('service-centre')) {
				$(':radio[name="' + params.radioName + '"]:last', listBlock).click(function(){
					serviceRadioOnClickAction(this, $(this).parent().parent())
				}).data('data', list[i]['data']);
			}
			if ($('body').hasClass('request-a-service')) {
				$(':radio[name="' + params.radioName + '"]:last', listBlock).click(function(){
					requestserviceRadioOnClickAction(this, $(this).parent().parent())
				}).data('data', list[i]['data']);
			}
			else {
				$(':radio[name="' + params.radioName + '"]:last', listBlock).click(function(){
					dealerRadioOnClickAction(this, $(this).parent().parent())
				}).data('data', list[i]['data']);
			}
			i++;				
		}			

		$(':radio[name="' + params.radioName + '"]:first', listBlock).click();
		
	}else{
		listBlock.html(list);
	}
	
	listParent.show();
	
	
}

function dealerRadioOnClickAction(radio, parent)
{
	
	if($('.dealerRadioHiddenParams', parent).length == 0){
		$(parent).append('<div class="dealerRadioHiddenParams"></div>');
	}

	var rParam = $(radio).data('data');
	var html = '';
	
	if(rParam.name != null){
		html += '<input type="hidden" name="dealerName" value="'+rParam.name+'" />\n';
	}
	if(rParam.address != null){
		html += '<input type="hidden" name="dealerAddress" value="'+rParam.address+'" />\n';
	}	
	if(rParam.id != null){
		html += '<input type="hidden" name="dealerId" value="'+rParam.id+'" />\n';
	}
	if(rParam.state != null){
		html += '<input type="hidden" name="dealerState" value="'+rParam.state+'" />\n';
	}
	if(rParam.email != null){
		html += '<input type="hidden" name="dealerEmail" value="'+rParam.email+'" />\n';
	}
	if(rParam.telephone != null){
		html += '<input type="hidden" name="dealerTelephone" value="'+rParam.telephone+'" />\n';
	}
	if(rParam.suburb != null){
		html += '<input type="hidden" name="dealerSuburb" value="'+rParam.suburb+'" />\n';
	}	
	if(rParam.postcode != null){
		html += '<input type="hidden" name="dealerPostcode" value="'+rParam.postcode+'" />\n';
	}
	if(rParam.fax != null){
		html += '<input type="hidden" name="dealerFax" value="'+rParam.fax+'" />\n';
	}
		
	$('.dealerRadioHiddenParams', parent).html(html);
}

function hideAllServiceOptions() {
	$('.case-form').hide();
	$('#submit').parents('.row').hide();
	$('.case-link').hide();
	$('.case-address').hide();
}	

function showServiceError() {
	$('.case-form').hide();
	$('#submit').parents('.row').hide();
	$('.case-link').hide();
	$('.case-address').hide();
	
	alert('Error');		
	//$('.case-error').show();
}

function requestserviceRadioOnClickAction(radio, parent){
	forms.trackFormSubmit();
	var rParam = $(radio).data('data');
	
	hideAllServiceOptions();
	
	switch(rParam.action){
		case 'LINK':
			if (rParam.telephone != null) {
				$('.case-link').find('.service-link').find('a').attr('href','#');
				$('.case-link').find('.service-centre-details').find('.service-address').html(rParam.address+' '+rParam.suburb+', '+rParam.state+', '+rParam.postcode);				
				$('.case-link').show();
				if(caseInfo['case-link-load'] == null){
					hh_WT.trackEvent({'WT.ac':'RequestAService_RAS_DealerLink_Load'}, true);
					caseInfo['case-link-load'] = true;
				}
				$('.case-link').find('.service-link').find('a').unbind('click').click(function() {
					if(caseInfo['case-link-submit'] == null){
						hh_WT.trackEvent({'WT.ac':'RequestAService_RAS_DealerLink_Submit'});
						caseInfo['case-link-submit'] = true;
					} 
					window.open(rParam.linkToForm, '_blank');
					return false;
				});
			} else {
				showServiceError();
			}
		break;
		case 'FORM':
			$('.case-form').find('.service-centre-details').find('.service-address').html(rParam.address+' '+rParam.suburb+', '+rParam.state+', '+rParam.postcode);	
			$('.case-form').show();
			$('#submit').show();
			$('#submit').parents('.row').show();
			
			if(caseInfo['case-form-load'] == null){
				hh_WT.trackEvent({'WT.ac':'RequestAService_RAS_Form_Load'}, true);
				caseInfo['case-form-load'] = true;
			}
		break;
		case 'ADDRESS':
			if ((rParam.id != null) && (rParam.name != null) && (rParam.postcode != null) && (rParam.suburb != null) && (rParam.state != null) && (rParam.address != null)) {
				if(caseInfo['case-address'] == null){
					hh_WT.trackEvent({'WT.ac':'RequestAService_RAS_Map_Load'}, true);
					caseInfo['case-address'] = true;
				}
								
				var oServiceCentre = $('.contact-service-centre');
				var oServiceCentreInfo = $('.service-centre-info');
				var oServiceCentreLoading = $('.service-centre-loading');
				
				oServiceCentreInfo.hide();
				oServiceCentreLoading.show();
				oServiceCentre.show();
				
				$('.case-address').show();
				
				$.ajax({
					type: "GET",
					dataType: 'json',
					url: '/service/dealer/' + rParam.id + '/postcode/' + rParam.postcode + '/map430x200.json?zoom=13',
					success: function(response){
						var data = response.map_data;
						mapImage = new Image();
						mapImage.src = data.mapUri;
						mapImage.onload = function(){
							oServiceCentreInfo.find('h4').html(rParam.name);
							oServiceCentreInfo.find('.address').html(rParam.address + '<br />' + rParam.suburb + ', ' + rParam.state + ', ' + rParam.postcode);
							if (rParam.telephone != null) {
								oServiceCentreInfo.find('.phone').html('Phone: ' + rParam.telephone);
							}
							oServiceCentreInfo.find('.service-centre-map').html('<img src="' + data.mapUri + '" />');
		
							oServiceCentreLoading.hide();
							oServiceCentreInfo.show();	
						}
					}
				});
			} else {
				showServiceError();
			}		
		break;
	}
	
	
	if($('.dealerRadioHiddenParams', parent).length == 0){
		$(parent).append('<div class="dealerRadioHiddenParams"></div>');
	}

	var html = '';
	
	if(rParam.name != null){
		html += '<input type="hidden" name="dealerName" value="'+rParam.name+'" />\n';
	}
	if(rParam.address != null){
		html += '<input type="hidden" name="dealerAddress" value="'+rParam.address+'" />\n';
	}	
	if(rParam.id != null){
		html += '<input type="hidden" name="dealerId" value="'+rParam.id+'" />\n';
	}
	if(rParam.state != null){
		html += '<input type="hidden" name="dealerState" value="'+rParam.state+'" />\n';
	}
	if(rParam.email != null){
		html += '<input type="hidden" name="dealerEmail" value="'+rParam.email+'" />\n';
	}
	if(rParam.telephone != null){
		html += '<input type="hidden" name="dealerTelephone" value="'+rParam.telephone+'" />\n';
	}
	if(rParam.suburb != null){
		html += '<input type="hidden" name="dealerSuburb" value="'+rParam.suburb+'" />\n';
	}	
	if(rParam.postcode != null){
		html += '<input type="hidden" name="dealerPostcode" value="'+rParam.postcode+'" />\n';
	}
	if(rParam.fax != null){
		html += '<input type="hidden" name="dealerFax" value="'+rParam.fax+'" />\n';
	}
		
	$('.dealerRadioHiddenParams', parent).html(html);
}

function serviceRadioOnClickAction(radio, parent){
	forms.trackFormSubmit();

	var rParam = $(radio).data('data');
	if ((rParam.id != null) && (rParam.name != null) && (rParam.postcode != null) && (rParam.suburb != null) && (rParam.state != null) && (rParam.address != null)) {
	
		var oServiceCentre = $('.contact-service-centre');
		var oServiceCentreInfo = $('.service-centre-info');
		var oServiceCentreLoading = $('.service-centre-loading');
		
		oServiceCentreInfo.hide();
		oServiceCentreLoading.show();
		oServiceCentre.show();
		
		$.ajax({
			type: "GET",
			dataType: 'json',
			url: '/service/dealer/' + rParam.id + '/postcode/' + rParam.postcode + '/map430x200.json?zoom=13',
			success: function(response){
				var data = response.map_data;
				mapImage = new Image();
				mapImage.src = data.mapUri;
				mapImage.onload = function(){
					oServiceCentreInfo.find('h4').html(rParam.name);
					oServiceCentreInfo.find('.address').html(rParam.address + '<br />' + rParam.suburb + ', ' + rParam.state + ', ' + rParam.postcode);
					if (rParam.telephone != null) {
						oServiceCentreInfo.find('.phone').html('Phone: ' + rParam.telephone);
					}
					oServiceCentreInfo.find('.service-centre-map').html('<img src="' + data.mapUri + '" />');

					oServiceCentreLoading.hide();
					oServiceCentreInfo.show();	
				}
			}
		});
	}		
}

function hideRadioList(params)
{
	if(params == null) var params = {};	
	if(params.listOutput == null) params.listOutput = '.dealers-list';
	
	if($.isArray(params.listOutput))
	{
		$(params.listOutput[0]).hide();
	}
	else
	{
		$(params.listOutput).hide();
	}		
}

function bindAutoFill(input, output, url){
	oInput = $(input);
	oOutput = $(output);
	
	oOutput.html('<option value="">Loading ...</option>');
	
	$.ajax({
		type: "GET",
		dataType: 'json',
		url: url + '/' + oInput.val() + '.json',
		success: function(response) {
			if(response.valid == true){
				var data = response.data;
				var options = '<option value="">Model</option>';
				var i = 0;
				while(data[i] != null) {
					options = options +  '<option value="' + data[i].name + '">' + data[i].model + '</option>'
					i++;
				};
				oOutput.html(options);				
			}else{
				oOutput.html('<option value="">Model</option>');
			}

		},
		error: function() {
			oOutput.html('<option value="">Model</option>');
		}
	});	
}
