var defaultLocation = 'ie. Chicago, IL or Toronto, ON';

$(document).ready(function () {
	$('#szLocation').focus(function() {
		if($(this).val() == defaultLocation) {
			$(this).removeClass('example');
			$(this).val('');
		}
	});

	$('#szLocation').blur(function() {
		if($(this).val() == '') {
			$(this).addClass('example');
			$(this).val(defaultLocation);
		}
	});

	$('#priceSlider').slider({
		handle: ".handle",
		min: minPriceLimit,
		max: maxPriceLimit + priceInterval,
		stepping: priceInterval,
		range: true,
		slide: function(e, ui) {
			if($(ui.handle).attr('id') == 'pricehandle1') {
				if($('#minPrice').val() == ui.value) {
					return;
				}
				$('#minPrice').val(ui.value);
				if(ui.value == 0) {
					$('#minPriceDisplay').text('No Minimum');
				}
				else if(ui.value > maxPriceLimit) {
					$('#minPriceDisplay').text('No Maximum');
				}
				else {
					$('#minPriceDisplay').text(moneyFormat(ui.value));
				}
			}
			else if($(ui.handle).attr('id')== 'pricehandle2') {
				if($('#maxPrice').val() == ui.value) {
					return;
				}
				$('#maxPrice').val(ui.value);
				if(ui.value == 0) {
					$('#maxPriceDisplay').text('No Minimum');
				}
				else if(ui.value > maxPriceLimit) {
					$('#maxPriceDisplay').text('No Maximum');
				}
				else {
					$('#maxPriceDisplay').text(moneyFormat(ui.value));
				}
			}
		}
	});
	$('#priceSlider').slider('moveTo', currMinPrice, 0);
	$('#priceSlider').slider('moveTo', currMaxPrice, 1);

	$('#bedsSlider').slider({
		handle: ".handle",
		min: 0,
		max: minBeds.length-1,
		stepping: 1,
		startValue: currMinBedKey,
		slide: function(e, ui) {
			//This is an optimization, mainly for IE6 because it tends to fire
			//this function much more often than other browsers. So we only
			//edit the value when it has actually changed.
			if($('#minBed').val() == minBeds[ui.value]) {
				return;
			}
			
			$('#minBed').val(minBeds[ui.value]);
			if(ui.value == 0) {
				$('#minBedDisplay').text('Any');
			}
			else {
				$('#minBedDisplay').text(minBeds[ui.value] + '+');
			}
		}
	});

	$('#bathsSlider').slider({
		handle: ".handle",
		min: 0,
		max: minBaths.length-1,
		stepping: 1,
		startValue: currMinBathKey,
		slide: function(e, ui) {
			//This is an optimization, mainly for IE6 because it tends to fire
			//this function much more often than other browsers. So we only
			//edit the value when it has actually changed.
			if($('#minBath').val() == minBaths[ui.value]) {
				return;
			}

			$('#minBath').val(minBaths[ui.value]);
			if(ui.value == 0) {
				$('#minBathDisplay').text('Any');
			}
			else {
				$('#minBathDisplay').text(minBaths[ui.value] + '+');
			}
		}
	});

	if ($('#moreOptionsLink').hasClass("moreOptionsOn")) {
		applyAdvancedSliders();
	}

	$('#propSelectAll').click(function() {
		$(".propTypeList input").each(function() {
			this.checked = "checked";
		});
		return false;
	});
	
	$('#propDeselectAll').click(function() {
		$(".propTypeList input").each(function() {
			this.checked = "";
		});
		return false;
	});

	$('#moreOptionsLink').click(function () {
		$('#moreOptionsLink').toggleClass("moreOptions");
		$('#moreOptionsLink').toggleClass("moreOptionsOn");	
		//Firefox displays the amenities scroll bar immediately, so we hide the 
		//amenities box and bring it back when animation is done
		$('#searchOptions').animate({height: "toggle"}, 2000, "easeOutExpo");
/*
		if($('#searchOptionsOpen').val() == "1") {
			$('#searchOptionsOpen').val("0");
			varArray = new Object();
			varArray['searchOptionsOpen'] = "0";
			alterQueryString(varArray);
		}
		else {
			$('#searchOptionsOpen').val("1");
			varArray = new Object();
			varArray['searchOptionsOpen'] = "1";
			alterQueryString(varArray);
		}
*/
		applyAdvancedSliders();
	});

	$('.ssLink').click(function() {
		var searchQueryPre = $(this).attr('href');
		var searchQuery = $('#searchToolsForm').serialize();
		$(this).attr('href',searchQueryPre + searchQuery);
		return true;
	});

	$('.reset').click(function() {
		$('#szLocation').val('');
		$('#szLocation').focus();
		$('#priceSlider').slider('moveTo', minPriceLimit, 0);
		$('#priceSlider').slider('moveTo', maxPriceLimit + priceInterval, 1);
		$('#bedsSlider').slider('moveTo', 0);
		$('#bathsSlider').slider('moveTo', 0);
		$('#sqFtSlider').slider('moveTo', minSqFtLimit, 0);
		$('#sqFtSlider').slider('moveTo', maxSqFtLimit + sqFtInterval, 1);
		$('#acreSlider').slider('moveTo', 0, 0);
		$('#acreSlider').slider('moveTo', acres.length-1, 1);
		$("input[name='iHasPhoto']").each(function() {$(this).attr('checked', '')});
		$("input[name='rgPropTypes[]']").each(function() {$(this).attr('checked', 'checked')});
		$("input[name='hasOpenHouse']").each(function() {$(this).attr('checked', '')});
		$("input[name='iAmenityID[]']").each(function() {$(this).attr('checked', '')});
		$("input[name='iRadius']").each(function() {$(this).val(['20'])});
	});

});

function applyAdvancedSliders() {
	if (typeof sqFtSlidersApplied == 'undefined') {
		$('#sqFtSlider').slider({
			handle: ".handle",
			min: minSqFtLimit,
			max: maxSqFtLimit + sqFtInterval,
			stepping: sqFtInterval,
			range: true,
			slide: function(e, ui) {
				if($(ui.handle).attr('id') == 'sqFtHandle1') {
					if($('#minSqFt').val() == ui.value) {
						return;
					}
					$('#minSqFt').val(ui.value);
					if(ui.value == 0) {
						$('#minSqFtDisplay').text('No Minimum');
					}
					else if(ui.value > maxSqFtLimit) {
						$('#minSqFtDisplay').text('No Maximum');
					}
					else {
						$('#minSqFtDisplay').text(sqFtFormat(ui.value));
					}
				}
				else if($(ui.handle).attr('id')== 'sqFtHandle2') {
					if($('#maxSqFt').val() == ui.value) {
						return;
					}
					$('#maxSqFt').val(ui.value);
					if(ui.value == 0) {
						$('#maxSqFtDisplay').text('No Minimum');
					}
					else if(ui.value > maxSqFtLimit) {
						$('#maxSqFtDisplay').text('No Maximum');
					}
					else {
						$('#maxSqFtDisplay').text(sqFtFormat(ui.value));
					}
				}
			}
		});
		$('#sqFtSlider').slider('moveTo', currMinSqFt, 0);
		$('#sqFtSlider').slider('moveTo', currMaxSqFt, 1);
		sqFtSlidersApplied = true;
	}
	
	if (typeof acreSlidersApplied == 'undefined') {
		$('#acreSlider').slider({
			handle: ".handle",
			min: 0,
			max: acres.length-1,
			stepping: 1,
			range: true,
			slide: function(e, ui) {
				if($(ui.handle).attr('id') == 'acreHandle1') {
					if($('#minAcre').val() == acres[ui.value]) {
						return;
					}
					$('#minAcre').val(acres[ui.value]);
					if(ui.value == 0) {
						$('#minAcreDisplay').text('No Minimum');
					}
					else if(ui.value == acres.length-1) {
						$('#minAcreDisplay').text('No Maximum');
					}
					else {
						var acreText = ' acre';
						if(acres[ui.value] > 1) {
							acreText += 's';
						}
						$('#minAcreDisplay').text(acres[ui.value] + acreText);
					}
				}
				else if($(ui.handle).attr('id')== 'acreHandle2') {
					if($('#maxAcre').val() == acres[ui.value]) {
						return;
					}
					$('#maxAcre').val(acres[ui.value]);
					if(ui.value == 0) {
						$('#maxAcreDisplay').text('No Minimum');
					}
					else if(ui.value == acres.length-1) {
						$('#maxAcreDisplay').text('No Maximum');
					}
					else {
						var acreText = ' acre';
						if(acres[ui.value] > 1) {
							acreText += 's';
						}
						$('#maxAcreDisplay').text(acres[ui.value] + acreText);
					}
				}
			}
		});
		$('#acreSlider').slider('moveTo', currMinAcreKey, 0);
		$('#acreSlider').slider('moveTo', currMaxAcreKey, 1);
		acreSlidersApplied = true;
	}
}

function alterQueryString(varArray) {
	$('.searchQuery').each(function() {
		queryString = $(this).attr('href');
		for(i in varArray) {
			varName = i;
			varValue = varArray[i];
			pattern = new RegExp(varName +"=.*?(?=&|$)");
			if(queryString.search(pattern) == -1) {
				queryString = queryString + "&" + varName + "=" + varValue;
			}
			else {
				queryString = queryString.replace(pattern, varName + "=" + varValue);
			}
		}
		$(this).attr('href', queryString);
	});
}

function moneyFormat(num) {
	var numStr = "" + num;
	var dec = numStr.indexOf(".");
	var end = ((dec > -1) ? "" + numStr.substring(dec, numStr.length) : "");
	numStr = "" + parseInt(numStr);
	
	var count = 0;
	var temp1 = "";
	var temp2 = "";
	for (var k = numStr.length-1; k >= 0; k--) {
		var oneChar = numStr.charAt(k);
		if(count == 3) {
			temp1 += ",";
			temp1 += oneChar;
			count = 1;
			continue
		}
		else {
			temp1 += oneChar;
			count++;
		}
	}

	for (var k = temp1.length-1; k >= 0; k--) {
		var oneChar = temp1.charAt(k);
		temp2 += oneChar;
	}

	temp2 = "$" + temp2 + end;
	return temp2;
}

function sqFtFormat(num) {
	var numStr = "" + num;
	var dec = numStr.indexOf(".");
	var end = ((dec > -1) ? "" + numStr.substring(dec, numStr.length) : "");
	numStr = "" + parseInt(numStr);
	
	var count = 0;
	var temp1 = "";
	var temp2 = "";
	for (var k = numStr.length-1; k >= 0; k--) {
		var oneChar = numStr.charAt(k);
		if(count == 3) {
			temp1 += ",";
			temp1 += oneChar;
			count = 1;
			continue
		}
		else {
			temp1 += oneChar;
			count++;
		}
	}

	for (var k = temp1.length-1; k >= 0; k--) {
		var oneChar = temp1.charAt(k);
		temp2 += oneChar;
	}

	temp2 = temp2 + end + " sq ft";
	return temp2;
}