ERMapSales = {
	tabCssOffset: 'top left',
	el_search:null,
	el_results:null,
	el_resultCount:null,
	
	viewToolsViewText: 'LISTINGS',
	viewToolsHideText: 'POIs',
	
	categories:null,
	items:[],
	itemIdMap:{},
	minMax:null,
	
	init: function() {
		ERMapSales.categories = ERMAPDATA.reCategories;
		ERMapSales.items = ERMAPDATA.resItems;
		ERMapSales.minMax = ERMAPDATA.reMinMax;
		
		// Setup search fields
		ERMapSales.setupSearch();
		
		// Assign pointers
		ERMapSales.el_search = jQuery('#salesSearch').css('display', 'none');
		ERMapSales.el_results = jQuery('#reResults').css('display', 'none');
		ERMapSales.el_resultCount = jQuery('<div>'+ERMapSales.items.length+'</div>');

		// Initialize Results
		ERMapSales.Results.init();
		
		// Add to the search tab
		ERMapSearch.addTab('sales', ERMapSales);
	},
	
	addItem: function(itemindex, itemdata) {
		jQuery.extend(itemdata, {
			mapIconUrl: '/map/images/mapIcons/sales.png'
		});
		
		var obj = new ERMapItem({
			data:			itemdata,
			searchFields:	['cat', 'price', 'beds', 'baths', 'sqft'],
			onByDefault:	false,
			resultBox:		ERMapSales.Results,
			onClickIcon:	ERMapSales.onClickMapIcon
		});
		
		ERMapSales.itemIdMap[itemdata.id] = obj;
		ERMapSales.items[itemindex] = ERMapSales.itemIdMap[itemdata.id];
	},
	
	setupSearch: function() {
		// Save pointers
		ERMapSales.el_categories = jQuery('#reCategories');
		ERMapSales.els_priceMinMax = jQuery('#resPrice_min,#resPrice_max');
		ERMapSales.els_bedsMinMax = jQuery('#resBeds_min,#resBeds_max');
		ERMapSales.els_bathsMinMax = jQuery('#resBaths_min,#resBaths_max');
		ERMapSales.els_sqftMinMax  = jQuery('#resSqft_min,#resSqft_max');
		
		var steps, el_min, el_max;
		
		// Initialize Categories dropdown
		var val = [];
		var el = ERMapSales.el_categories[0].options;
		jQuery.each(ERMapSales.categories, function(i, n) {
			// For each Sales category, create a new Option
			// in the drop-down list
			val.push(i);
			el[el.length] = new Option(n, i);
		});
		// The first value is the "All Categories" option,
		// so its value is that of all the categories
		el[0].value = val.join("\t");
		el[0].selected = false;
	
		// Initialize Price MinMax dropdown
		// We want 10 choices, evenly spread, rounded to 100,000.
		step = (ERMapSales.minMax.price_max - ERMapSales.minMax.price_min) / 10;
		var price = parseInt(ERMapSales.minMax.price_min / 100000) * 100000;
		el_min = document.getElementById('resPrice_min').options;
		el_max = document.getElementById('resPrice_max').options;
		for (i = 0; i < 10; i++) {
			if (el_min.length == 0  ||  el_min[el_min.length] != price) {
				var formatted = '$' + price.toString().replace(/(\d)(?=(\d{3})+([.]|$))/g,"$1,");
				el_min[el_min.length] = new Option(formatted, price);
				el_max[el_max.length] = new Option(formatted, price);
			}
			price = parseInt((price + step + 100000) / 100000) * 100000;
		}
		el_max[el_max.length - 1].selected = true;
		
		// Initialize Bedrooms MinMax dropdown
		// We want one choice for each number between the min and max values
		el_min = document.getElementById('resBeds_min').options;
		el_max = document.getElementById('resBeds_max').options;
		for (i = ERMapSales.minMax.beds_min; i <= ERMapSales.minMax.beds_max; i++) {
			el_min[el_min.length] = new Option(i, i);
			el_max[el_max.length] = new Option(i, i);
		}
		el_max[el_max.length - 1].selected = true;
	
		// Initialize Bathrooms MinMax dropdown
		// We want one choice for each number between the min and max values
		el_min = document.getElementById('resBaths_min').options;
		el_max = document.getElementById('resBaths_max').options;
		for (i = ERMapSales.minMax.baths_min; i <= ERMapSales.minMax.baths_max; i++) {
			el_min[el_min.length] = new Option(i, i);
			el_max[el_max.length] = new Option(i, i);
		}
		el_max[el_max.length - 1].selected = true;
	
		// Initialize Square Feet MinMax
		// We want 10 choices, evenly spready, rounded to 100
		step = (ERMapSales.minMax.sqft_max - ERMapSales.minMax.sqft_min) / 10;
		var sqft = parseInt(ERMapSales.minMax.sqft_min / 100) * 100;
		el_min = document.getElementById('resSqft_min').options;
		el_max = document.getElementById('resSqft_max').options;
		for (i = 0; i < 10; i++) {
			if (el_min.length == 0  ||  el_min[el_min.length] != sqft) {
				var formatted = sqft.toString().replace(/(\d)(?=(\d{3})+([.]|$))/g,"$1,");
				el_min[el_min.length] = new Option(formatted, sqft);
				el_max[el_max.length] = new Option(formatted, sqft);
			}
			sqft = parseInt((sqft + step + 100) / 100) * 100;
		}
		el_max[el_max.length - 1].selected = true;
	},
	
	onClickResult: function(e) {
		ERMap.showInfo('sale', ERMapSales.itemIdMap[this.lang]);
		return false;
	},
	
	onClickMapIcon: function(id) {
		ERMap.showInfo('sale', ERMapSales.itemIdMap[id]);
	},
	
	Results: {
		el: null,
		el_num: null,
		el_row: null,
		toggleClass: '',
		count:0,
		
		init: function() {
			ERMapSales.Results.count = ERMapSales.items.length;
			ERMapSales.Results.el_row = ERMapSales.el_results.find('tr').remove();
			ERMapSales.Results.toggleClass = ERMapSales.Results.el_row[0].className;
			ERMapSales.Results.el_row.removeClass(ERMapSales.Results.toggleClass);
		},
		/**
		 * Adds an item to the results
		 *
		 * @param	n	The item to add
		 */
		add: function(n) {
//			
//			var C = ERMapSales.Results.count%2 ? ERMapSales.Results.toggleClass : '';
			ERMapSales.Results.el_row.clone()
				.attr({'id':'reResults'+n.id, 'lang':n.id})
				.find('.resultsAddress a')
					.html(n.address.split("\t").shift())
				.end()
				.find('.resultsPrice')
					.html(n.formattedPrice)
				.end()
				.click(ERMapSales.onClickResult)
				.appendTo(ERMapSales.el_results)
			;
		},
		
		/**
		 * Makes an item visible in the results page
		 *
		 * @param	n	The item to show
		 */
		show: function(n) {
			ERMapSales.el_resultCount.html(++ERMapSales.Results.count);
			document.getElementById('reResults'+n.id).style.display = '';
		},
		
		/**
		 * Hides an item in the results
		 *
		 * @param	n	The item to hide
		 */
		hide: function(n) {
			ERMapSales.el_resultCount.html(--ERMapSales.Results.count  ||  '0');
			document.getElementById('reResults'+n.id).style.display = 'none';
		},
		
		/**
		 * Alternates backgrounds
		 */
		stripe: function() {
			ERMapSales.el_results.find('tr:visible').each(function(i) {
				if (i%2) jQuery(this).removeClass(ERMapSales.Results.toggleClass);
				else jQuery(this).addClass(ERMapSales.Results.toggleClass);
			});
		}
	}
};
