//requires smartbrowse.js
var invdata = new Object(),
	pagingdata = pagingdata || {};

var inventory = {
	data: {},
	//initialize inventory from ajax request and display first quickview
	init: function () {
		if ($("#SBinvType").val().indexOf("new") != -1)
			$("#SBinvType").val("new");
		else
			$("#SBinvType").val("used");

		inventory.doLoad(invdata.url + '?reset=InventoryListing&detect=false',
				function(req) {
					inventory.load(req);
					if (inventory.data.vehicles.length < 1)
						inventory.noInventory();
					else
						inventory.quickview($("#invTbl tr").get(1).getAttribute("id").replace(/\D/g, ''));
				}
				);
	},

	noInventory : function() {
		$("#vQuickview").html("Inventory Coming Soon");
		$("#vMiniInventory").hide();
	},

	//sort column
	sort : function(sortby) {
		inventory.doLoad(invdata.url + '?sortBy=' + sortby + '&detect=false', inventory.load);
	},

	//display page data with specified parameters used in paging and other scenarios
	page : function(params) {
		inventory.doLoad(invdata.url + '?detect=false' + params, inventory.load);
	},

	setsort : function(defaultsort, colsort) {
		return((colsort == defaultsort) ? inventory.revsort(colsort) : colsort);
	},

	revsort : function(sortby) {
		var sortvals = sortby.split(',');
		for (var j = 0; j < sortvals.length; j++) {
			sortvals[j] = sortvals[j].match(/ desc/) ? sortvals[j].replace(/ desc/, '') : sortvals[j] + ' desc';
		}
		return(sortvals.join(','));
	},

	load : function(response) {
		inventory.data = response;
		pagingdata = response.pagingdata;
		
		$("#invPagingHeader").html(pagingdata);
		var sortmethod;
		var sortflag;
		var invhtml = '<table id="invTbl" cellspacing="0"><tr>';
		for (var i = 0; i < inventory.data.columns.length; i++) {
			if (inventory.data.columns[i].attrib.indexOf('$column') === -1) {
				sortmethod = inventory.setsort(inventory.data.cursort, inventory.data.columns[i].sort);
				sortflag = ((inventory.data.cursort == inventory.data.columns[i].sort) || (inventory.data.cursort == inventory.revsort(inventory.data.columns[i].sort))) ? 1 : 0;
				sortclass = (sortflag) ? ((inventory.data.cursort == inventory.data.columns[i].sort) ? 'normalsort' : 'reversesort') : '';
				invhtml += '<th class="' + ((!i) ? 'firstcol ' : '') + sortclass + ((sortflag) ? ' sorted' : '') + '"><a href="javascript:inventory.sort(\'' + sortmethod + '\');">' + inventory.data.columns[i].label + '</a></th>';
			}
		}
		invhtml += '</tr>';

		var tdclass;
		var vdata;
		for (var i = 0; i < inventory.data.vehicles.length; i++) {
			invhtml += '<tr id="v' + i + '" class="invrow ' + ((i % 2 == 0) ? 'alt' : '') + '">';
			for (var j = 0; j < inventory.data.columns.length; j++) {
				if (inventory.data.columns[j].attrib && inventory.data.map[inventory.data.columns[j].attrib]) {
				vdata = inventory.data.vehicles[i][inventory.data.map[inventory.data.columns[j].attrib][0]];
				tdclass = ((inventory.data.columns[j].type == 'numeric') && (vdata == 0)) ? 'call' : inventory.data.columns[j].type;
				invhtml += '<td class="' + tdclass + '">' + ((vdata == '') ? '&nbsp;' : ((vdata == 0) ? inventory.data.call : vdata)) + '</td>';
				}
			}
			invhtml += '</tr>';
		}
		invhtml += '</table>';
		$('#invContainer').html(invhtml);

		var trs = $('#invTbl').find('tr.invrow');
		trs.mouseover(function() {
			$(this).addClass('rowOver');
			inventory.quickview(this.id.replace(/\D/g, ''));
		});
		trs.mouseout(function() {
			$(this).removeClass('rowOver');
		});
		trs.click(function() {
			//document.location = invpaths['details'] + "vehicleId=" + inventory.data['vehicles'][count];
			var id = parseFloat($(this).attr("id").replace("v", ""));
			//console.log(invpaths);
			document.location = invpaths[$("#SBinvType").val() + '_details'] + "?vehicleId=" + inventory.data['vehicles'][id][0];
		});
		sb_ajax();
	},

	quickview : function(i) {
		var vdata = inventory.data.vehicles[i];
		var vtitle = vdata[inventory.data.map.Year[0]] + ' ' + vdata[inventory.data.map.Make[0]] + ' ' + vdata[inventory.data.map.Model[0]];
		var invpathString = invpaths[$("#SBinvType").val()+'_details'];
		var vId = inventory.data['vehicles'][i][0];
		var vImg = vdata[inventory.data.map.InternetThumbImage[0]];
		var vImgLabel = inventory.data.labels.moreDetails;
		var qvhtml = [];
		qvhtml.push('<h3>', vtitle, '</h3>');
		qvhtml.push('<a href="', invpathString , "?vehicleId=", vId , '">');
		qvhtml.push('<img src="', vImg , '" alt="', vtitle, '" /> ');
		qvhtml.push(vImgLabel , '</a>');
		qvhtml.push('<dl>');
		for (var j = 1; j < 9; j++) {
			for (var key in inventory.data.map) {
				if (inventory.data.map[key][2] == j && vdata[inventory.data.map[key][0]] != '') {
					//console.log(vdata[inventory.data.map.Type[0]])
					if (vdata[inventory.data.map.Type[0]] != 2 && key == 'Mileage') {
						qvhtml.push('<dt>', inventory.data.map[key][1], ':</dt><dd>', vdata[inventory.data.map[key][0]], '</dd>');
					} else if(key != 'Mileage'){
						qvhtml.push('<dt>', inventory.data.map[key][1], ':</dt><dd>', vdata[inventory.data.map[key][0]], '</dd>');
					}
				}
			}
		}
		qvhtml.push('</dl>');
		qvhtml = qvhtml.join('');

		$('#vQuickview').html(qvhtml);

	},

	reset : function() {
		$('#SBcriteria select').each(function() {
			this.selectedIndex = 0;
		});
		sb_submit();
		$('#sb_loading').show();
	},

	doLoad : function(url, handler) {
		jQuery.ajax({
			cache: false,
			dataType: 'json',
			url: url,
			before: function () {
				document.getElementById('inv_loading').style.display = 'block';
			},
			success: function (req) {
				document.getElementById('inv_loading').style.display = 'none';
				if (handler)
					handler(req);
			}
		});
	}
};

//aliases
function invStyle(style, params) {
	inventory.page(params);
}
; //loads an inventory page with appropriate parameters aliased from legacy method
function sb_reset() {
	inventory.reset();
} //smart browsing reset, techinically this should be global in smart browse
doLoad = function(url) { //loads smart browsing, override of default method for this
	var params = '';
	var sbRef = document.forms['sbForm'].elements;
	for (i = 0; i < sbRef.length; i++) {
		params += '&' + escape(sbRef[i].name) + '=' + escape(sbRef[i].value);
	}
	url += params;

	$.ajax({
		url:url,
		dataType:'json',
		beforeSend:function() {
			document.getElementById('inv_loading').style.display = 'block';
		},
		success:function(req) {
			sbdata = req;
			document.getElementById('inv_loading').style.display = 'none';
			sb_load();
		}
	});
};
