var VehicleXmlUtil = {
	getTotals: function(xml) {
		var jxml = $(xml);
		var totals = {};
		totals.base = jxml.find("TOTALS BASE").attr("MSRP");
		totals.options = jxml.find("TOTALS OPTIONS").attr("OPTS");
		totals.total = jxml.find("TOTALS NET").attr("MSRP");
		totals.power = jxml.find("TOTALS OPTIONS").attr("POWER");
		totals.packages = jxml.find("TOTALS OPTIONS").attr("PACKAGES");
		return totals;
	},
	getPowerOptionsSummaryHtml: function(xml, selectable) {
		var html = "";
		html += this.buildTableGroup(xml, "Engine", selectable);
		html += this.buildTableGroup(xml, "Transmissions", selectable);
		html += this.buildTableGroup(xml, "Gross Vehicle Weight Rating", selectable);
		html += this.buildTableGroup(xml, "Wheelbase", selectable);
		html += this.buildTableGroup(xml, "Other Powertrain", selectable);
		return html;
	},
	getPackageOptionsSummaryHtml: function(xml, selectable) {
		var html = "";
		html += this.buildTableGroup(xml, "Packages", selectable);
		html += this.buildTableGroup(xml, "Quick Order Packages", selectable);
		html += this.buildTableGroup(xml, "Other Packages", selectable);
		return html;
	},
	getOptionsSummaryHtml: function(xml, selectable) {
		var html = "";
		html += this.buildTableGroup(xml, "Options", selectable);
		html += this.buildTableGroup(xml, "Wheels", selectable);
		html += this.buildTableGroup(xml, "Tires", selectable);
		html += this.buildTableGroup(xml, "Seats", selectable);
		html += this.buildTableGroup(xml, "Audio", selectable);
		html += this.buildTableGroup(xml, "Other Options", selectable);
		return html;
	},
	getPowerOptionsHtml: function(xml, selectable) {
		var html = "";
		html += this.buildGroup(xml, "Engine", selectable);
		html += this.buildGroup(xml, "Transmissions", selectable);
		html += this.buildGroup(xml, "Gross Vehicle Weight Rating", selectable);
		html += this.buildGroup(xml, "Wheelbase", selectable);
		html += this.buildGroup(xml, "Other Powertrain", selectable);
		return html;
	},
	getPackageOptionsHtml: function(xml, selectable) {
		var html = "";
		html += this.buildGroup(xml, "Packages", selectable);
		html += this.buildGroup(xml, "Quick Order Packages", selectable);
		html += this.buildGroup(xml, "Other Packages", selectable);
		return html;
	},
	getOptionsHtml: function(xml, selectable) {
		var html = "";
		html += this.buildGroup(xml, "Options", selectable);
		html += this.buildGroup(xml, "Wheels", selectable);
		html += this.buildGroup(xml, "Tires", selectable);
		html += this.buildGroup(xml, "Seats", selectable);
		html += this.buildGroup(xml, "Audio", selectable);
		html += this.buildGroup(xml, "Other Options", selectable);
		return html;
	},
	buildTableGroup: function(xml, groupName, selectable) {
		var xpath = "OPTIONS OPTION_GROUP[DESC='" + groupName + "'] OPTION";
		var html = "";
		if( $(xml).find(xpath).length > 0 ) {
			html += "<table>";

			var _this = this;
			$( xml ).find(xpath).each(function() {
				html += _this.buildOptionTableContent($(this), selectable);
			});
			html += "</table>";
		}
		return html;
	},
	buildGroup: function(xml, groupName, selectable) {
		var xpath = "OPTIONS OPTION_GROUP[DESC='" + groupName + "'] OPTION";
		var html = "";
		if( $(xml).find(xpath).length > 0 ) {
			if(selectable) {
				html += "<div class=\"collapseHead\" onclick=\"VehicleXmlUtil.collapseHead(this);\">";
				html += "<a href=\"javascript:;\" class=\"arrowDown\">" + groupName + "</a>";
				html += "</div>";
				html += "<div class=\"collapseBody\">";
			} else {
				html += "<div>";
			}
			var _this = this;
			$( xml ).find(xpath).each(function() {
				html += _this.buildOptionContent($(this), selectable);
			});
			html += "</div>";
		}
		return html;
	},
	buildOptionTableContent: function(opt, selectable) {
			var desc = $(opt).attr("DESC");
			var code = $(opt).attr("CODE");
			var state = $(opt).attr("STATE");
			var content = $(opt).attr("CONTENT");
			var msrp = $(opt).attr("MSRP");
			var checked = (this.checked(state) ? "checked" : "");
			var disabled = (  (state=="G" || state=="C") ? "disabled" : "" );

			var html = "";
			if(selectable || checked) {
				var html = "<tr><td class=\"bpPrintCellOne\">" + desc + "</td><td class=\"bpPrintCellTwo\">"+this.formatContent(content)+"</td><td class=\"bpPrintCellThree\">$" +  formatCurrency(msrp) +"</td></tr>";
			}
			return html;
	},
	buildOptionContent: function(opt, selectable) {
			var desc = $(opt).attr("DESC");
			var code = $(opt).attr("CODE");
			var state = $(opt).attr("STATE");
			var content = $(opt).attr("CONTENT");
			var msrp = $(opt).attr("MSRP");
			var checked = (this.checked(state) ? "checked" : "");
			
			var html = "";
			if(selectable || checked) {
				var html = "<p>";
				if(selectable) html += "<input type=\"checkbox\" id=\"" + code + "\" class=\""+ state +"\"  value=\"" + code + "\" " + checked + " onclick=\"return BnpConfig.selectCmd(this, false);\" />";
				html += desc + " - $" +  formatCurrency(msrp) +"</p>";
				html += this.formatContent(content);
			}
			return html;
	},
	formatContent: function(content){
		var html = "";
		splitContent = content.split("^");
		if( splitContent.length > 0 ){
			html += "<ul>";
			for(var i = 0 ; i < splitContent.length; i++){
				if( splitContent[i] )
					html += "<li>" + splitContent[i] + "</li>";
			}
			html += "</ul>";
		}
		return html;
	},
	checked: function(state){
		if( state == "S" || state == "G"  ){
			return true;
		}
		return false;
	},
	paintChecked: function(state){
		if( state == "S"  ){
			return true;
		}
		return false;
	},
	collapseHead: function(head) {
		$(head).next().toggle("normal");
		if($(head).children("a").hasClass("arrowDown")){
			$(head).children("a").attr("class","arrowRight");
		}else{
			$(head).children("a").attr("class","arrowDown");
		}
	}
}