SS.Models.SimpleStore = Backbone.Model.extend({
	
	initialize: function(spec) {
		var 
			$list, $li, i, len,
			attrId;
		
		_.bindAll(this, "unselect", "updateOrder");
		
		this.categoryList = new SS.Collections.Categories();
		this.categoryList.bind("change:selected", this.unselect);
		
		// Populate Model from server-side generated DOM, probably should be JSON passed in above
		$list = $('#categoryLinks').find('li');
		
		$('#categoryLinks').bind('click', function(event) {
			event.preventDefault();
		});
		
		for (i = 0; len = $list.length, i < len; i++) {
			$li = $($list[i]);
			
			attrId = $li.find('a').attr('id');
			attrId = attrId.substr(attrId.indexOf('_') + 1);
			
			this.categoryList.add({
				name: $.trim($li.find('a').html()),
				id: attrId,
				selected: $li.attr('class') === 'selected' ? true : false,
				order: i
			});
		}
		
		// Initialize Cart Model
		this.cartModel = new SS.Models.Cart();
	},
		
	// Updates order of category based on array of category objects
	updateOrder: function(attrs) {
		var i, len, categoryModel;
		
		// Loop through categories and set the order attribute
		for (i = 0; len = attrs.length, i < len; i++) {
			categoryModel = this.categoryList.get(attrs[i].id);
			if ( categoryModel ) {
				categoryModel.set({
					order: attrs[i].order
				},{silent: true});
			}
		}
		
		// Sort category collection and trigger order change event
		this.categoryList.sort();
		this.categoryList.trigger('change:order');
	},
	
	// When a category is selected we need to unselect all other categories
	unselect: function() {
		this.categoryList.each( function(category) {
			if ( !category.hasChanged("selected") && category.get("selected")) {
				category.set({selected: false});
				category.view.unselect();
			}
		});
	}
});

