var t;

function addCommas(nStr)
{
	nStr += '';
	x = nStr.split('.');
	x1 = x[0];
	x2 = x.length > 1 ? '.' + x[1] : '';
	var rgx = /(\d+)(\d{3})/;
	while (rgx.test(x1)) {
		x1 = x1.replace(rgx, '$1' + ',' + '$2');
	}
	return x1 + x2;
}

function searchPrice( range, value )
{
	var newVal = value.replace ( ",", "" );
	var oldLow = document.forms.searchForm.priceLow.value.replace ( ",", "" );
	var oldHigh = document.forms.searchForm.priceHigh.value.replace ( ",", "" );
	
	if ( range == 'PriceLow' )
	{
		document.getElementById("fieldPriceLow").value=addCommas ( newVal );
	}
	
	else if ( range == 'PriceHigh' )
	{
		document.getElementById("fieldPriceHigh").value = addCommas ( newVal );
	}
	
	clearTimeout ( t );
	var action = "select ( '" + range + "', '" + value + "' )";
	t = setTimeout ( action, 250 );
}

function select ( field, value, preview )
	{
		if ( field == "Region" )
		{
			document.getElementById("searchRegion" + selectedRegion).className = "unselected";
			document.getElementById("searchRegion" + value).className = "selected";
			
			selectedRegion = value;
			document.forms.searchForm.region.value = value.replace ( "_", " " );
		}
		
		else if ( field == "Make" )
		{
			document.forms.searchForm.make.value = value;
			document.forms.searchForm.model.value = "Any";
			
			var url = "/elements/searchForm/aSearchModel.asp?make=" + value;
			loadXMLDoc ( "searchByModel", url );
		}
		
		else if ( field == "Model" )
		{
			document.forms.searchForm.model.value = value;
		}
		
		else if ( field == "YearLow" )
		{
			if ( value > document.forms.searchForm.yearHigh.value )
			{	
				value = document.forms.searchForm.yearHigh.value;
				document.getElementById("fieldYearLow").value=value;
			}
			
			document.forms.searchForm.yearLow.value = value;
		}
		
		else if ( field == "YearHigh" )
		{
			if ( value < document.forms.searchForm.yearLow.value )
			{
				value = document.forms.searchForm.yearLow.value;
				document.getElementById("fieldYearHigh").value=value;
			}
			
			document.forms.searchForm.yearHigh.value = value;
		}
		
		else if ( field == "PriceLow" )
		{
			document.forms.searchForm.priceLow.value = value;
		}
		
		else if ( field == "PriceHigh" )
		{
			document.forms.searchForm.priceHigh.value = value;
		}
		
		if ( preview )
		{
			// Get the listings count		
			var xmlObject;
			if ( window.XMLHttpRequest )
			{ // Support for most browsers
				xmlObject = new XMLHttpRequest ();
			}
						
			else
			{ // IE5, IE6
				xmlObject = new ActiveXObject ( "Microsoft.XMLHTTP" );
			}
			
			// Generate our query
			var region = document.forms.searchForm.region.value;
			if ( region == "Any Region" ) region = "Any";
			
			var make = document.forms.searchForm.make.value;
			var model = document.forms.searchForm.model.value;
			var yearLow = document.forms.searchForm.yearLow.value;
			var yearHigh = document.forms.searchForm.yearHigh.value;
			var priceLow = document.forms.searchForm.priceLow.value.replace ( ",", "" );
			var priceHigh = document.forms.searchForm.priceHigh.value.replace ( ",", "" );
			
			var query = "region=" + region + "&make=" + make + "&model=" + model + "&yearLow=" + yearLow + "&yearHigh=" + yearHigh + "&priceLow=" + priceLow + "&priceHigh=" + priceHigh
			
			var url = "elements/searchForm/aSearchResultsCt.asp?" + query;
			
			xmlObject.open ( "GET", url, true );
			xmlObject.send ();
		}
		
		xmlObject.onreadystatechange=function()
		{
			if ( xmlObject.readyState == 4 && xmlObject.status == 200)
			{
				var resultsCt = xmlObject.responseText;
				var output;
				
				if ( resultsCt == 0 ) output = "<p>No listings found. Please broaden your search.</p>";
				else if ( resultsCt == 1000 ) output = "<p>Found at least 1,000 listings</p>";
				else if ( resultsCt == 1 ) output = "<p>Found one listing</p>";
				else output = "<p>Found " + resultsCt + " listings</p>";
			
				if ( resultsCt != 0 ) output += "<a href=\"/?show=results&" + query + "\"> View Results</a>";
				
				document.getElementById("resultsPreview").innerHTML = output;
			}
		}
	}
	
// If show is true, populates the lightbox with myContent. Otherwise, hides the lightbox.
function lightbox ( show, content )
{
	if ( show )
	{
		var xmlObject;
		if ( window.XMLHttpRequest )
		{ // Support for most browsers
			xmlObject = new XMLHttpRequest ();
		}
					
		else
		{ // IE5, IE6
			xmlObject = new ActiveXObject ( "Microsoft.XMLHTTP" );
		}
		
		xmlObject.onreadystatechange=function()
		{
			if ( xmlObject.readyState == 4 && xmlObject.status == 200)
			{
				document.getElementById("lightbox").innerHTML = xmlObject.responseText;
				
				document.getElementById("lightbox").style.display = "block";
				document.getElementById("fader").style.display = "block";
				
				// Hide the screen bars
				document.body.style.overflow = 'hidden';
			}
		}
		
		xmlObject.open ( "GET", content, true );
		xmlObject.send ();
	}
				
	else
	{
		document.getElementById("lightbox").style.display = "none";
		document.getElementById("fader").style.display = "none";
		
		// Enable scroll bars
		document.body.style.overflow = 'auto';
	}
}
			
// Basic AJAX functionality -- replaces the content of myDiv with myContent
function loadXMLDoc ( myDiv, myContent )
{
	var xmlObject;
	if ( window.XMLHttpRequest )
	{ // Support for most browsers
		xmlObject = new XMLHttpRequest ();
	}
				
	else
	{ // IE5, IE6
		xmlObject = new ActiveXObject ( "Microsoft.XMLHTTP" );
	}
				
	xmlObject.onreadystatechange=function()
	{
		if ( xmlObject.readyState == 4 && xmlObject.status == 200)
		{
			document.getElementById(myDiv).innerHTML = xmlObject.responseText;
		}
	}

	xmlObject.open ( "GET", myContent, true );
	xmlObject.send ();
}

// Handles the dealer contact form
function postForm ( dealer, car )
{
	// Form validation
	var standardBorder = "1px solid #cdcdcd"
	var posting = true;
	
	// ... First Name
	if ( document.forms.dealerContactForm.nameFirst.value.replace ( / /g,'' ) == "" )
	{ document.forms.dealerContactForm.nameFirst.style.border="1px solid #d00";
		posting = false; }
	else document.forms.dealerContactForm.nameFirst.style.border= standardBorder;
	
	// ... Last Name
	if ( document.forms.dealerContactForm.nameLast.value.replace ( / /g,'' ) == "" )
	{ document.forms.dealerContactForm.nameLast.style.border="1px solid #d00";
		posting = false; }
	else document.forms.dealerContactForm.nameLast.style.border= standardBorder;
	
	// ... Email
	if ( document.forms.dealerContactForm.email.value == "" )
	{ document.forms.dealerContactForm.email.style.border="1px solid #d00";
		posting = false; }
	else 
	{
		// Heavier validation
		var reg = /^([A-Za-z0-9_\-\.])+\@([A-Za-z0-9_\-\.])+\.([A-Za-z]{2,4})$/;
		if ( reg.test ( document.forms.dealerContactForm.email.value ) == false )
		{
			document.forms.dealerContactForm.email.style.border="1px solid #d00";
			posting = false;
		}		
		else
		{
			document.forms.dealerContactForm.email.style.border= standardBorder;
		}
	}
	
	// ... Phone
	if ( document.forms.dealerContactForm.phone1.value == "" || isNaN ( document.forms.dealerContactForm.phone1.value ) ||  document.forms.dealerContactForm.phone1.value.length != 3 )
	{ document.forms.dealerContactForm.phone1.style.border="1px solid #d00";
		posting = false; }
	else document.forms.dealerContactForm.phone1.style.border= standardBorder;
	
	if ( document.forms.dealerContactForm.phone2.value == "" || isNaN ( document.forms.dealerContactForm.phone2.value ) ||  document.forms.dealerContactForm.phone2.value.length != 3 )
	{ document.forms.dealerContactForm.phone2.style.border="1px solid #d00";
		posting = false; }
	else document.forms.dealerContactForm.phone2.style.border= standardBorder;
	
	if ( document.forms.dealerContactForm.phone3.value == "" || isNaN ( document.forms.dealerContactForm.phone3.value ) ||  document.forms.dealerContactForm.phone3.value.length != 4 )
	{ document.forms.dealerContactForm.phone3.style.border="1px solid #d00";
		posting = false; }
	else document.forms.dealerContactForm.phone3.style.border= standardBorder;
	
	
	// ... Zip
	if ( document.forms.dealerContactForm.zip.value == "" || isNaN ( document.forms.dealerContactForm.zip.value ) ||  document.forms.dealerContactForm.zip.value.length != 5 )
	{ document.forms.dealerContactForm.zip.style.border="1px solid #d00";
		posting = false; }
	else document.forms.dealerContactForm.zip.style.border= standardBorder;
	
	// ... Comments
	if ( document.forms.dealerContactForm.comments.value.replace ( / /g,'' ) == "" )
	{ document.forms.dealerContactForm.comments.style.border="1px solid #d00";
		posting = false; }
	else document.forms.dealerContactForm.comments.style.border= standardBorder;
	
	if ( posting )
	{	
		var myNameFirst = document.forms.dealerContactForm.nameFirst.value;
		var myNameLast = document.forms.dealerContactForm.nameLast.value;
		var myEmail = document.forms.dealerContactForm.email.value;
		var myPhone = document.forms.dealerContactForm.phone1.value + document.forms.dealerContactForm.phone2.value + document.forms.dealerContactForm.phone3.value;
		var myPhoneType = document.forms.dealerContactForm.phoneType.value;
		var myZip = document.forms.dealerContactForm.zip.value;
		var myAvailability = document.forms.dealerContactForm.availability.value;
		var myComments = document.forms.dealerContactForm.comments.value;
		var myDealerType = document.forms.dealerContactForm.dealerType.value;
	
		lightbox ( true,  '/elements/dealerContact.asp?posted=1&dealer=' + dealer + '&car=' + car + '&nameFirst=' + myNameFirst + '&nameLast=' + myNameLast + '&email=' + myEmail + '&zip=' + myZip + '&availability=' + myAvailability + '&comments=' + myComments + '&dealerType=' + myDealerType + "&phone=" + myPhone + "&phoneType=" + myPhoneType );
		document.forms.dealerContactForm.submit.disabled = true;
	}
}
