function sGetSelectValue(fieldId) {
	return $(fieldId).options[$(fieldId).selectedIndex].value;
}

function searchGetQueryString(vehcType) {

	var prefix = '';
	if (vehcType != 'auto') {
		prefix = vehcType +"_";
	}
	var marqueDetailId = 0;
	if ($(prefix +'marqueDetailId').selectedIndex == undefined) {
		marqueDetailId = $(prefix +'marqueDetailId').value;
	} else {
		marqueDetailId = sGetSelectValue(prefix +'marqueDetailId');
	}
	var model = sGetSelectValue(prefix +'model');
	var transmissionType = sGetSelectValue(prefix +'searchTransmissionType');
	var fuelType = sGetSelectValue(prefix +'searchFuelType');
	var params = 'marque_detail_id=' + marqueDetailId
		+ '&model=' + model
		+ '&transmission_id=' + transmissionType
		+ '&fuel_type_id=' + fuelType
		+ '&vehcType='+ vehcType;
	return params;
}

/**
 * Update the given select field from values encoded in the format key0=>value0,key1=>value1,...
 * @param fieldId (string) Id of field to update
 * @param outText (string) Key value sequence in above format
 */
function searchUpdateSelectValues(fieldId, outText) {
	var prevSel = sGetSelectValue(fieldId);

	var i;
	for(i = $(fieldId).options.length - 1 ; i >= 0 ; i-- ) {
		$(fieldId).remove(i);
	}

	outText = outText.split(',');

	if ( outText.length > 0 ) {
		for (i = 0 ; i < outText.length ; i++) {
			var keyVals = outText[i].split('=>');
			$(fieldId).options[ $(fieldId).options.length ] = new Option( keyVals[1], keyVals[0], (keyVals[0] == prevSel), (keyVals[0] == prevSel) );
		}
	}

	return;
}

function searchUpdate_Models(vehcType) {
	var target = baseHref + 'ajax.php';
	var params = 'type=getMarqueModels&autoSearch=true&' + searchGetQueryString(vehcType);
	var selectedOption = false;
	var myAjax = new Ajax.Request(target,
	{
		method: 'post',
		parameters: params,
		onSuccess: function (request) {
			
			var fieldId = 'model';
			if (vehcType != 'auto') {
				fieldId = vehcType +"_"+ fieldId;
			}
			
			var prevSel = $F( fieldId );
			
			var i;
			for(i = $(fieldId).options.length - 1 ; i >= 0 ; i-- ) {
				$(fieldId).remove(i);
			}

			var data = request.responseText.evalJSON();
			
			$( fieldId ).options[ $( fieldId ).options.length ] = new Option( 'Select Model', '' );
			data.each ( function ( el ) {
				
				if ( el.variant != null ){
					var thisSel = el.model+'|'+el.variant;
			
					if ( prevSel == thisSel ) {
						
						selectedOption = true;
						
					} else {
						
						selectedOption = false;
					}
					
					$( fieldId ).options[ $( fieldId ).options.length ] = new Option( el.model+' '+el.variant, el.model+'|'+el.variant, selectedOption );
					
					
				} else {
					var thisSel = el.model;
					if ( prevSel == thisSel ) {
						
						selectedOption = true;

						
					}else {
						
						selectedOption = false;
					}
					
					$( fieldId ).options[ $( fieldId ).options.length ] = new Option( el.model, el.model, selectedOption );
					
					
				}
			
			});
			
			
/*			var outText = request.responseText;
			outText = outText.split(',');

			if ( outText.length > 0 ) {
				for (i = 0 ; i < outText.length ; i++) {
					$(fieldId).options[ $(fieldId).options.length ] = new Option( outText[i], outText[i], (outText[i] == prevSel), (outText[i] == prevSel) );
				}
			}*/

		},

		onFailure: function( request ) {
			alert( 'request failed, please try again' );
		}
	});
}

function searchUpdate_TransmissionTypes(vehcType) {
	var target = baseHref + 'ajax.php';
	var params = 'type=searchGetTransmissionList&' + searchGetQueryString(vehcType);

	var myAjax = new Ajax.Request(target,
	{
		method: 'post',
		parameters: params,
		onSuccess: function (request) {
			var fieldId = 'searchTransmissionType';
			if (vehcType != 'auto') {
				fieldId = vehcType +"_"+ fieldId;
			}
			var outText = request.responseText;
			searchUpdateSelectValues(fieldId, outText);
		},

		onFailure: function(request) {
			alert( 'request failed, please try again' );
		}
	});

}

function searchUpdate_FuelTypes(vehcType) {
	var target = baseHref + 'ajax.php';
	var params = 'type=searchGetFuelList&'+ searchGetQueryString(vehcType);

	var myAjax = new Ajax.Request(target,
	{
		method: 'post',
		parameters: params,
		onSuccess: function (request) {
			var fieldId = 'searchFuelType';
			if (vehcType != 'auto') {
				fieldId = vehcType +"_"+ fieldId;
			}
			var outText = request.responseText;
			searchUpdateSelectValues(fieldId, outText);
		},

		onFailure: function(request) {
			alert( 'request failed, please try again' );
		}
	});

}

function searchUpdateAll(vehcType) {
	if (vehcType == undefined) {
		vehcType = 'auto';
	}
	searchUpdate_Models(vehcType);
	searchUpdate_TransmissionTypes(vehcType);
	searchUpdate_FuelTypes(vehcType);
}

function showAdvSearch() {
	$$('div.advSearchHidden').each(
		function (div) {
			div.style.display = 'block';
		}
	);
	$$('div.advSearchHidden_bike').each(
		function (div) {
			div.style.display = 'block';
		}
	);
	$('advSearchButton').style.display = 'none';
	$('advSearchButtonHide').style.display = 'inline';
}

function hideAdvSearch() {
	$$('div.advSearchHidden').each(
		function (div) {
			div.style.display = 'none';
		}
	);
	$$('div.advSearchHidden_bike').each(
		function (div) {
			div.style.display = 'none';
		}
	);
	$('advSearchButton').style.display = 'inline';
	$('advSearchButtonHide').style.display = 'none';
}

function switchSearchForm(newForm) {
	$('form_usedCar').style.display = 'none';
	$('form_usedBike').style.display = 'none';

	$('form_'+ newForm).style.display = 'block';
	
	if ( (newForm == 'usedBike') && ( $('bike') ) && ( $('usedCar') ) ) {
		$('vehcType').value = 'bike';
        $('bike').className = 'active';
        $('usedCar').className = '';
	} else {
		if ( $('bike') && $('usedCar') ) {
			$('vehcType').value = 'auto';
	        $('usedCar').className = 'active';
	        $('bike').className = '';
		}
	}
	searchUpdateAll($('vehcType').value);
    
}

function submitSearch() {
	var vehcType = 'auto';
	if ($('vehcType') != undefined) {
		vehcType = $('vehcType').value;
	}
	if (vehcType == 'auto') {
		$('frmUsedSearch').submit();
	} else if (vehcType == 'bike') {
		$('frmUsedBikesSearch').submit();
	}
}