var components_fldr = 'Strathcom/components/search/';
var current_page;

window.addEvent('domready', function(){
	//fetchConditions();
	fetchBodyTypes(session.status, session.tag);
	fetchDrives();
	fetchYears();
	updateResults(session.page);
	//loadCompare();
	
	$('makes').addEvent('change', function(e){
		session.make = this.value;
		$('models').selectedIndex = 0;
		$('models').options.length = 1;
		if($('makes').selectedIndex != 0){
			loadModels(makes[this.selectedIndex -1].models);
		}else{
			$('trims').selectedIndex = 0;
			$('trims').options.length = 1;
			session.trim = '';
			session.model = '';
		}
		fetchDrives();
		updateResults(1);
	});
	$('models').addEvent('change', function(e){
		session.model = this.value;
		fetchTrims(session.status, session.make, session.model);
		fetchDrives();
		updateResults(1);
	});
	$('trims').addEvent('change', function(e){
		session.trim = this.value;
		fetchDrives();
		updateResults(1);
	});
	$('drives').addEvent('change', function(e){
		session.drive = this.value;
		updateResults(1);
	});
	$('body_types').addEvent('change', function(e){
		session.body_styles = this.value;
		fetchMakes(session.status, this.value);
		fetchDrives();
		updateResults(1);
	});
	$('min_year').addEvent('change', function(e){
		session.min_year = this.value;
		updateResults(1);
	});
	$('max_year').addEvent('change', function(e){
		session.max_year = this.value;
		updateResults(1);
	});
	$('max_odometer').addEvent('change', function(e){
		session.max_odometer = this.value;
		updateResults(1);
	});
	$('max_price').addEvent('change', function(e){
		session.max_price = this.value;
		updateResults(1);
	});
	//$('on_special').addEvent('click', function(e){
	//	if(this.checked){
	//		session.on_special = 'YES';
	//	}else{
	//		session.on_special = '';
	//	}
	//	updateResults(1);
	//});
});
function fetchMakes(condition, body_type){
	var myAjax = new Request.JSON({
		url: components_fldr + 'make-model.php', 
		async: false,
		onComplete: function(resp){
			makes = resp;
			loadMakes(makes);
		}}).post({
				'class': condition, 
				'body_styles': body_type,
				tag: session.tag
		});
}

function fetchConditions(){
	var myAjax = new Request.JSON({
		url: components_fldr + 'conditions.php', 
		async: false,
		onComplete: function(conditions){
			loadConditions(conditions);		
	}}).post();
}

function fetchBodyTypes(condition){
	var myAjax = new Request.JSON({
		url: components_fldr + 'body_styles.php', 
		async: false,
		onComplete: function(bodyTypes){
			loadBodyTypes(bodyTypes);		
	}}).post({
				'class':condition,
				tag: session.tag
	});
}

function fetchYears(condition, all_years){
	var myAjax = new Request.JSON({
		url: components_fldr + 'years.php', 
		async: false,
		onComplete: function(years){
			loadYears(years);		
	}}).post({all_years: all_years, 'class': condition});
}

function fetchTrims(condition, make, model){
	var myAjax = new Request.JSON({
		url: components_fldr + 'trims.php', 
		async: false,
		onComplete: function(trims){
			loadTrims(trims);		
		}
	}).post({make_id: make, model_id: model, 'class': condition, tag: session.tag});
}

function fetchDrives(){
	var myAjax = new Request.JSON({
		url: components_fldr + 'drives.php', 
		async: false,
		onComplete: function(drives){
			loadDrives(drives);		
		}
	}).post({make_id: session.make, model_id: session.model, 'class': session.status, tag: session.tag, trim: session.trim, body_styles: session.body_styles });
}

function loadMakes(makes){
	$('makes').selectedIndex = 0;
	$('makes').options.length = 1;
	$('models').selectedIndex = 0;
	$('models').options.length = 1;
	var selectedMake = session.make;
	var selectedModel = session.model;
	session.make = '';
	session.model = '';
	makes.each(function(make,i){
		$('makes').options[$('makes').options.length] = new Option(make.name, make.id);
		if(make.id == selectedMake){
			$('makes').options[$('makes').options.length - 1].selected = true;
			session.make = make.id;
			loadModels(make.models, selectedModel);
		}
	});
	if($('makes').selectedIndex == 0){
		$('trims').selectedIndex = 0;
		$('trims').options.length = 1;
		session.trim = '';
	}
	if($('models').selectedIndex == 0){
		$('trims').selectedIndex = 0;
		$('trims').options.length = 1;
		session.trim = '';
	}
}

function loadModels(models, model_id){
	var selectedModel = 0;
	if(model_id){selectedModel = model_id};
	session.model = '';
	models.each(function(model,i){
		$('models').options[$('models').options.length] = new Option(model.name, model.id);
		if(model.id == selectedModel){
			$('models').options[$('models').options.length - 1].selected = true;
			session.model = model.id;
		}
	});
	if(selectedModel == 0){
		$('trims').selectedIndex = 0;
		$('trims').options.length = 1;
		session.trim = '';
	}else{
		fetchTrims(session.status, session.make, session.model);
	}
}

function loadTrims(trims){
	selectedTrim = session.trim;
	$('trims').selectedIndex = 0;
	$('trims').options.length = 1;
	session.trim = '';
	trims.each(function(trim,i){
		$('trims').options[$('trims').options.length] = new Option(trim.value, trim.value);
		if(trim.value == selectedTrim){
			$('trims').options[$('trims').options.length - 1].selected = true;
			session.trim = trim.value;
		}
	});
}

function loadDrives(drives){
	selectedDrive = session.drive;
	$('drives').selectedIndex = 0;
	$('drives').options.length = 1;
	session.drive = '';
	drives.each(function(drive,i){
		$('drives').options[$('drives').options.length] = new Option(drive.name, drive.value);
		if(drive.value == selectedDrive){
			$('drives').options[$('drives').options.length - 1].selected = true;
			session.drive = drive.value;
		}
	});
}

function loadYears(years){
	var selected = years.length -1;
	$('min_year').options.length = 0;
	years.each(function(year,i){
		$('min_year').options[$('min_year').options.length] = new Option(year.year, year.year);
		if(year.year == session.min_year){
			selected = $('min_year').options.length - 1;
		}
	});
	$('min_year').selectedIndex = selected;
	selected = 0;
	$('max_year').options.length = 0;
	years.each(function(year,i){
		$('max_year').options[$('max_year').options.length] = new Option(year.year, year.year);
		if(year.year == session.max_year){
			selected = $('max_year').options.length - 1;
		}
	});
	$('max_year').selectedIndex = selected;
	session.min_year = $('min_year').value;
	session.max_year = $('max_year').value;
}

function loadConditions (conditions){
	$('status').selectedIndex = 0;
	$('status').options.length = 0;
	conditions.each(function(condition,i){
		$('status').options[$('class').options.length] = new Option(condition + ' Vehicles', condition);
		if(condition == session.status){
			$('status').options[$('status').options.length - 1].selected = true;
		}
	});

}

function updateResults(page,orderby){
	orderby = orderby?orderby:'';
	$('results').set('html','<div style="float:left;margin:50px auto;"><img src="Strathcom/images/loading_img.gif" width="200" height="32" /></div>');
	if(orderby == session.orderby){
		session.orderdir = (session.orderdir == 'ascending')?'descending':'ascending';
	}else{
		session.orderby = (orderby == '')?session.orderby:orderby;
	}
	if(session.tag == 'Bargain'){
		session.status = ''
	}else{
		if(session.status == ''){
			session.status = 'Used';
		}
	}
	page = page?page:1;
	session.page = page;
	current_page = page;
	new Request.HTML({
		url: components_fldr + 'results.php',
		update:'results'
			}).post({
			'class':session.status,
			body_styles: session.body_styles,
			make:session.make,
			model:session.model,
			min_year:session.min_year,
			max_year:session.max_year,
			max_odometer:session.max_odometer,
			max_price:session.max_price,
			page:session.page,
			orderby:session.orderby,
			orderdir: session.orderdir,
			on_special: session.on_special,
			trim: session.trim,
			tag: session.tag,
			drive: session.drive
			});
}

function loadCompare(v_id, d_id, action){
	new Request.HTML({
		url:components_fldr + 'compare.php',
		update:'compare'
	}).post({
		v_id: v_id,
		d_id: d_id,
		action: action
	});
}

function comparePopup(width,cnt){
	if (cnt < 2){
	   alert("You must select at least one vehicle for comparison.");
	   return;
	}
	var options = "top=0,left=0,height=896,width=" + width + ",buttons=no,scrollbars=yes,location=no,menubar=no,resizable=yes,status=no,directories=no,toolbar=no";
	
	newwindow=window.open("Strathcom/components/search/compare.php?view=details", "compare", options);
	
	if (window.focus) {
		newwindow.focus();
	}
}

function loadBodyTypes(bodyTypes){
	$('body_types').selectedIndex = 0;
	$('body_types').options.length = 1;
	var selectedBodyType = session.body_styles;
	session.body_styles = '';
	bodyTypes.each(function(bodyType,i){
		$('body_types').options[$('body_types').options.length] = new Option(bodyType.style, bodyType.value);
		if(bodyType.value == selectedBodyType){
			$('body_types').options[$('body_types').options.length - 1].selected = true;
			session.body_styles = $('body_types').value;
		}
	});
	fetchMakes(session.status, session.body_styles);
}

