function h(str) {
	return str.toLowerCase().replace(/[^a-z0-9_\.\/-]+/, '-').replace(/-+$/, '');
}

function search_action(form) {
	if(search_make != '') {
		form.action = '/make/' + h(search_make);
		if(!location.href.match(form.action)) {
			form.submit();
			return true;
		}
	}
	if(search_make == '' && search_type != '') {
		form.action = '/type/' + h(search_type);
		if(!location.href.match(form.action)) {
			form.submit();
			return true;
		}
	}
	if(search_type == '' && search_make == '') {
		form.action = '/search';
		form.submit();
		return true;
	}
	return false;
}

function remove_special(str) {
	str = str.replace(/&amp;/gi, '&');
	return str;
}

function do_search() {
	
	form = (arguments[0])? arguments[0] : false;
	
	search_make = $('search_make').value;
	search_price = $('search_price').value;
	search_age = $('search_age').value;
	search_type = remove_special($('search_type').value);
	
	// Check if already on the search page
	if($('products_holder')) {
		if(search_price == '' && search_age == '' && !location.href.match(/search/i) && form) {
			search_action(form);
		}
		
		
		// Do the JS Search...
		
		// # Use Hash Tags to Save Results / Search
		
		hash_str = '';
		
		// Some kind of loading thing?
		
		var all_div = $('-div', $('products_holder'));
		var all_vehicles = Array();
		for(i=0; i<all_div.length; i++) {
			if(all_div[i].className == 'view_product' && all_div[i].id != 'no_results') {
				all_vehicles.push(all_div[i]);
				all_div[i].style.display = 'block';
			}
		}
		
		if(search_make != '') {
			for(i=0; i<all_vehicles.length; i++) {
				make = $('.vehicle_make[0]', all_vehicles[i]).innerHTML;
				if(make != search_make) {
					all_vehicles[i].style.display = 'none';
					
				}
			}
		}
		if(search_type != '') {
			for(i=0; i<all_vehicles.length; i++) {
				if($('.vehicle_type[0]', all_vehicles[i])) {
					type = remove_special($('.vehicle_type[0]', all_vehicles[i]).innerHTML);
					if(type != search_type) {
						all_vehicles[i].style.display = 'none';
					}
				} else {
					all_vehicles[i].style.display = 'none';
				}
			}
		}
		
		if(search_price != '') {
			if(search_price.match(/^(\d+)-(\d+)$/)) {
				min_price = parseInt(RegExp.$1);
				max_price = parseInt(RegExp.$2);
			} else {
				min_price = parseInt(search_price);
				max_price = 0;
			}
			for(i=0; i<all_vehicles.length; i++) {
				price = parseInt($('.vehicle_price[0]', all_vehicles[i]).innerHTML.replace(/[^0-9\.]/gi, ''));
				if(price < min_price || (max_price && price > max_price)) {
					all_vehicles[i].style.display = 'none';
				}
			}
		}
		if(search_age != '') {
			if(search_age.match(/^(\d+)-(\d+)$/)) {
				min_age = parseInt(RegExp.$1);
				max_age = parseInt(RegExp.$2);
			} else {
				min_age = parseInt(search_age);
				max_age = 0;
			}
			for(i=0; i<all_vehicles.length; i++) {
				age = $('.vehicle_age[0]', all_vehicles[i]);
				if(age) {
					age = parseInt(age.innerHTML.replace(/[^0-9\.]/gi, ''));
					if(age < min_age || (max_age && age > max_age)) {
						all_vehicles[i].style.display = 'none';
					}
				} else {
					all_vehicles[i].style.display = 'none';
				}
			}
		}
		
		// Message if none displayed...
		var total_results = 0;
		for(i=0; i<all_vehicles.length; i++) {
			if(all_vehicles[i].style.display != 'none') {
				total_results++;
			}
		}
		if(total_results == 0) {
			$('#no_results').style.display = 'block';
		} else {
			$('#no_results').style.display = 'none';
			$('#search_count').innerHTML = '('+ (total_results) +' Results Found)';
		}
		
		//alert(hash_str);
		
	} else if(form) {
		search_action(form);
		form.submit();
		return true;
	}
	
	
}

function $(s) {
	var p = (arguments[1])? arguments[1] : document;
	var t = 'id';
	var n = false;
	var i = 0;
	
	if(s.match(/^((#|\.)[^\s]+)\s(.+?)$/gi)) {
		return $(RegExp.$3, $(RegExp.$1, p));
	}
	
	if(s.match(/^\.(\w+)(\[(\d)\])?/)) {
		t = 'class';
		s = RegExp.$1;
		if(RegExp.$2 != "") {
			n = parseInt(RegExp.$3);
		}
	} else if(s.match(/^-(\w+)(\[(\d)\])?/)) {
		t = 'tag';
		s = RegExp.$1;
		if(RegExp.$2 != "") {
			n = parseInt(RegExp.$3);
		}
	} else {
		s = s.replace(/(#)/gi, '');
	}

	if(t == 'id') {
		if(p == document) {
			if(p.getElementById(s))
				return p.getElementById(s);
		} else {
			_e = p.getElementsByTagName('*');
			for(i=0; i<_e.length; i++) {
				if(_e[i].id && _e[i].id == s) {
					return _e[i];
				}
			}
		}
	} else if(t == 'class') {
		_elem = Array();
		_e = p.getElementsByTagName('*');
		_r = new RegExp('(^|\\s)' + s + '(\\s|$)', 'i');
		for(i=0; i<_e.length; i++) {
			if(_e[i].className && _e[i].className.match(_r)) {
				_elem.push(_e[i]);
			}
		}
		if(n !== false) {
			return _elem[n];
		}
		return _elem;
	} else if(t == 'tag') {
		_elem = p.getElementsByTagName(s);
		if(n !== false) {
			return _elem[n];
		}
		return _elem;
	}
	return false;
}
img_mover_timeout = false;
stop_set = false;
number_of_images = 0;
function load_popup(id) {
	clearTimeout(img_mover_timeout);
	$('popup').style.display='block';
	$('fader').style.display='block';
	
	if(!id) id = 0;
	
	html = '';
	images = '';
	for(i=0; i<product_images.length; i++) {
		if(html!='') html += ' | ';
		html += '<a onclick="load_popup('+i+')" id="image_link_'+i+'">';
		//if(i==id) html += '<b>';
		html += 'Image ' + (i+1);
		//if(i==id) html += '</b>';
		html += '</a>'; 
		
		images += '<div class="popup_image_holder" id="view_large_vehicle' + i + '"><img src="'+product_images[i]+'" alt="" /></div>';
	}
	$('image_switcher').innerHTML = html;
	$('image_link_'+id).style.fontWeight='bold';
	$('big_image').innerHTML = images;
	$('view_slideshow').style.display='block';
	$('stop_slideshow').style.display='none';
	for(i=0; i<product_images.length; i++) {
		$('view_large_vehicle'+i).style.zIndex='8';
		$('view_large_vehicle'+id).style.zIndex='10';
		if(typeof(document.getElementById('view_large_vehicle'+i).style.opacity)=='string' && document.getElementById('view_large_vehicle'+i).style.opacity!=0) {
			document.getElementById('view_large_vehicle'+i).style.opacity = 0;						
		} else if (typeof(document.getElementById('view_large_vehicle'+i).style.filter)=='string' && document.getElementById('view_large_vehicle'+i).style.filter != 'alpha(opacity=0)') {
			document.getElementById('view_large_vehicle'+i).style.filter = 'alpha(opacity=0)';
		}
		
	}
	$('view_large_vehicle'+id).style.zIndex='10';
	if(typeof(document.getElementById('view_large_vehicle'+id).style.opacity)=='string') {
		document.getElementById('view_large_vehicle'+id).style.opacity = 1;						
	} else if (typeof(document.getElementById('view_large_vehicle'+id).style.filter)=='string') {
		document.getElementById('view_large_vehicle'+id).style.filter = 'alpha(opacity=100)';
	}
	current_img = id;
	//window.location = '#scroll_popup';
}

function close_popup() {
	$('popup').style.display = 'none';
	$('fader').style.display = 'none';
	clearTimeout(img_mover_timeout);
}

function get_next() {
	next = 1*current_img + 1;
	//alert('Go to: ' + next);
	//alert('Images: ' + number_of_images);
	if(next >= number_of_images) {
		//alert('too big, so back to zero');
		next = 0;
	}
	return next;
}

function get_prev() {
	var prev = 1*current_img - 1;
	if(prev <= 0) {
		prev = number_of_images-1;
	}
	return prev;
}

function next_img() {
	if(!stop_set) {
		go_next = get_next();
		fadeinout_img(go_next);
	}
}
function fadeinout_img(fadein) {
	clearTimeout(img_mover_timeout);
	element = document.getElementById('view_large_vehicle'+fadein);
	opacity = returnOpacity(element);
	opacity = (opacity == 0) ? 0.01 : 1.1*opacity;
	if(opacity > 1)
		opacity = 1;
	divs = document.getElementById('big_image').getElementsByTagName('div');
	for(i=0; i<divs.length; i++) {
		if(divs[i].id != element.id && returnOpacity(divs[i]) > 0) {
			setOpacity(divs[i], 1 - opacity);
		}
	}
	setOpacity(element, opacity);
	if(opacity < 1) {
		setTimeout('fadeinout_img("'+fadein+'")', 30);
		return;
	}
	current_img = fadein;
	for(i=0; i<product_images.length; i++) {
		$('image_link_'+i).style.fontWeight='normal';
	}
	$('image_link_'+fadein).style.fontWeight='bold';
	if(!stop_set)
		img_mover_timeout = setTimeout('next_img()', 5000);
	else
		clearTimeout(img_mover_timeout);
	
}

function popitup(url) {
	newwindow=window.open(url,'name','height=421,width=458,top=170,left=50%');
	if (window.focus) {newwindow.focus()}
	return false;
}

current_img = 0;
product_images = new Array();

var useOpacity =
    (typeof document.createElement("div").style.opacity != 'undefined');
var useFilter = !useOpacity
    && (typeof document.createElement("div").style.filter != 'undefined');
function setOpacity(el, value) {
    // let el be either an element object or an id string
    if (typeof el == 'string')
        el = document.getElementById(el);
    // ensure value is in [0-1] range
    value = Math.min(1, Math.max(value, 0));
    // set opacity or filter alpha depending on what's supported
    if (useOpacity)
        el.style.opacity = value;
    else if (useFilter)
        el.style.filter = "alpha(opacity=" + (value * 100) + ")";
}
function returnOpacity(el) {
    // let el be either an element object or an id string
    if (typeof el == 'string')
        el = document.getElementById(el);
    // set opacity or filter alpha depending on what's supported
    if (useOpacity)
        return 1*el.style.opacity;
    else if (useFilter)
        return 1*(el.style.filter.replace(/[^0-9]+/gi, '')/100);
}
