function getVehicleInfo(q,suffix) {
	if(!suffix)
		suffix = '';
	var url = '/common/vehicledata.jsp';
	var params = 'suffix=' + suffix + '&q=' + q;
	var year = $('year'+suffix) ? $F('year'+suffix) : "";
	var make = $('make'+suffix) ? $F('make'+suffix) : "";
	var model = $('model'+suffix) ? $F('model'+suffix) : "";
	var submodel = $('submodel'+suffix) ? $F('submodel'+suffix) : "";
	$('baseVehId').value = -1;
	$('makeHidden').value = "";
	$('modelHidden').value = "";
	$('submodelHidden').value = "";
	if (q == 'make') {
		disableOptions('make'+suffix,'model'+suffix,'submodel'+suffix);
		if (!year) 
			return;
		setDisplay('Info', 'hide');
		setDisplay('', '');
		params += "&year=" + year;
	} else if (q == 'model') {
		disableOptions('model'+suffix,'submodel'+suffix);
		if (!make) 
			return;
		params += "&year=" + year + "&make=" + escape(make);		
	} else if (q == 'submodel') {
		disableOptions('submodel'+suffix);
		if (!model)	
			return;
		params += "&year=" + year + "&make=" + escape(make) + "&model=" + escape(model);
	} else if (q == 'base') {
		params += "&year=" + year + "&make=" + escape(make) + "&model=" + escape(model) + "&submodel=" + escape(submodel);
	}
	var myAjax = new Ajax.Request(url,{method:'get',parameters:params,onComplete:showOptions});
}

function disableOptions() {
	var a = disableOptions.arguments;
	for (var i=0; i<a.length; i++) {
		if (a[i] == 'submodel')
			$('submodelField').style.display = 'none';
		else if (a[i] == 'submodelAdvanced')
			$('submodelFieldAdvanced').style.display = 'none';
		var o = $(a[i]);
		o.disabled = true;
	}	
//	$('baseVehId').value = "";
}

function showOptions(originalRequest) {
	eval(originalRequest.responseText);
	var submodelIndex = $('submodel'+suffix).selectedIndex;
	if(vehicleInfo.key) {
		var o = $(vehicleInfo.key+suffix);
			//alert(o.name+":"+o.disabled);
		if (vehicleInfo.values.length) {
			if (vehicleInfo.key == 'submodel') {
				if(vehicleInfo.values.length > 1) {
					o.disabled = false;
					$('submodelField'+suffix).style.display = 'block';
				} else {
					submodelIndex = 1;
					if (!vehicleInfo.baseVehicleId) {
						getVehicleInfo('base');
					}
				}
			}
			else o.disabled = false;
		}
		resetOptions(o);
		var opt = document.createElement('option');
		opt.text = "Select a " + vehicleInfo.key;
   		opt.value = "";
	   	addOption(o, opt);
		for (i=0; i<vehicleInfo.values.length; i++) {
			opt = document.createElement('option');
    		opt.text = vehicleInfo.values[i];
    		opt.value = vehicleInfo.values[i];
	    	addOption(o, opt);
		}
	}
	if (vehicleInfo.baseVehicleId) {
		$('baseVehId'+suffix).value = vehicleInfo.baseVehicleId;
		$('makeHidden'+suffix).value = $('make'+suffix).options[$('make'+suffix).selectedIndex].value;
		$('modelHidden'+suffix).value = $('model'+suffix).options[$('model'+suffix).selectedIndex].value;
		$('submodelHidden'+suffix).value = $('submodel'+suffix).options[submodelIndex].value;
	}
}

function resetOptions(o) {
	for (var i=o.length-1; i>=0; i--) {
		o.remove(i);
	}	
}

function addOption(o, opt) {
	try {
	   	o.add(opt, o.options[o.options.length]);
	} catch(ex) {
	 	o.add(opt);
	}
}

function isNull(obj) {
	return obj == null || obj.toString().toLowerCase() == 'null'
				|| obj.toString().replace(/\s+/g,'').length == 0;
}

function hilite(o) {
	o.style.backgroundColor = 'red';
}

function showTiresReplaced(o) {
	$(o).checked = false;
	$('disTiresReplaced').style.display = 'block';		
}

function hideTiresReplaced(o) {
	$(o).checked = true;
	if ($('disTiresReplaced').style.display == 'block')
		$('disTiresReplaced').style.display = 'none';	
}

function checkOption(f) {
	var val = $F(f);
	if (val == 'Other') {
		$(f+'Other').style.display = 'block';
		$(f+'_other').disabled = false;
	} else {
		$(f+'Other').style.display = 'none';
		$(f+'_other').disabled = true;
	}
}

function validateForm() {	
	var optional = {"middle_initial":1,"address2":1};
	var reg = {"curr_mileage":"/^\\d+$/","annual_mileage":"/^\\d+$/",
	           "age_month":"/^\\d+$/","age_day":"/^\\d+$/","age_year":"/^\\d{4}$/",
	           "zip_code":"/^\\d{5}([\\-]\\d{4})?$/","email":"/^\\w+@\\w+\\.\\w+$/"};		
	var allFields = Form.getElements("nyc_form");
	var radios = $('nyc_form').getElementsByTagName('label');
	for (var i=0; i<allFields.length; i++) {
		var f = allFields[i];
		if (f.name == 'Submit' || f.name == "_f" || f.name=="duty_level" || f.disabled) continue;			
		var o = eval('optional'+'.'+f.name);
		if (isNull($F(f.name)) && !o) {
			if ($(f.name+'_lbl')) {
				for (var j=0; j<radios.length; j++) {
					if (radios[j].id == f.name+'_lbl')
						hilite(radios[j]);
				}
			} else 
				hilite(f);
			var msg = "Sorry, we are missing some required fields!\n";
		} else {
			var r = eval('reg'+'.'+f.name);		
			if (r && isNull(eval(r+'.exec(\''+$F(f.name)+'\')'))) {			
				hilite(f);
			} else {
				if ($(f.name+'_lbl')) {
					for (var j=0; j<radios.length; j++) {
						if (radios[j].id == f.name+'_lbl') {
							radios[j].style.backgroundColor='';							
						}
					}
				} else
					f.style.backgroundColor='';
			}
		}
	}
	if (!isNull($F('pass')) && ($F('pass') != $F('pass_confirm'))) {
		msg += "\nPasswords do not match!\n";
	}
	if (msg) { 
		alert(msg);
		return false;
	}
	return true;		
}

function setDisplay(info, value) {
	var year = $('year');
	$("make" + info).className = value;
	$("model" + info).className = value;
	if(($("submodel" + info) && (value == 'hide' || info == 'Info')
			|| year.options[year.selectedIndex].value == "0")) {
		$("submodel" + info).className = value;
	} else if($("submodel" + info) && info == '' && value == '')
		$("submodel" + info).className = value;
}
