var FBSM=window.FBSM;
if(typeof FBSM=='undefined'){FBSM=new Object();FBSM.C=new Object();FBSM.PD=new Object();FBSM.U=new Object();FBSM.SC=new Object();FBSM.W=new Object();FBSM.WC=new Object();FBSM.F=new Object();FBSM.TFG=new Object();FBSM.R=new Object();}

FBSM.C.currentTabIndex = '1';
FBSM.C.IDMap = new Object();
FBSM.C.tireFitmentGuideTireSizeInfo = null;
FBSM.C.tireFitmentGuideTireSizeInfoIndex = 0;
FBSM.C.SORT_COLUMN_INDEX = 0;
FBSM.C.flashObjectCollection = new Object();
FBSM.W.currentMiniPromo = -1;
FBSM.W.miniPromoLogos = [];
FBSM.TFG.wrapperBodyHeight = null;

/***** START: NON-NAMESPACED LEGACY FUNCTIONS *****/
function MM_swapImgRestore(){var i,x,a=document.MM_sr;for(i=0;a&&i<a.length&&(x=a[i])&&x.oSrc;i++)x.src=x.oSrc;}
function MM_preloadImages(){var d=document;if(d.images){if(!d.MM_p)d.MM_p=new Array();var i,j=d.MM_p.length,a=MM_preloadImages.arguments;for(i=0;i<a.length;i++)if(a[i].indexOf("#")!=0){d.MM_p[j]=new Image;d.MM_p[j++].src=a[i];}}}
function MM_findObj(n, d){var p,i,x;if(!d)d=document;if((p=n.indexOf("?"))>0&&parent.frames.length){d=parent.frames[n.substring(p+1)].document;n=n.substring(0,p);}if(!(x=d[n])&&d.all)x=d.all[n];for(i=0;!x&&i<d.forms.length;i++)x=d.forms[i][n];for(i=0;!x&&d.layers&&i<d.layers.length;i++)x=MM_findObj(n,d.layers[i].document);if(!x && d.getElementById)x=d.getElementById(n);return x;}
function MM_swapImage(){var i,j=0,x,a=MM_swapImage.arguments;document.MM_sr=new Array;for(i=0;i<(a.length-2);i+=3)if((x=MM_findObj(a[i]))!=null){document.MM_sr[j++]=x;if(!x.oSrc)x.oSrc=x.src;x.src=a[i+2];}}
function BindEvent(bindingObject, bindingEvent, boundDelegate){try {var bindingEventValue = new String(bindingEvent);if(bindingObject.attachEvent){bindingObject.attachEvent(bindingEvent, boundDelegate);} else if(bindingObject.addEventListener){bindingEventValue = bindingEventValue.toLowerCase().replace("on", "");bindingObject.addEventListener(bindingEventValue, boundDelegate, false);}} catch (e){}}
/***** END: NON-NAMESPACED LEGACY FUNCTIONS *****/

FBSM.C.addEvent = function(elm, evType, fn, useCapture){
	if(elm.addEventListener){
		elm.addEventListener(evType, fn, useCapture);
		return true;
	} else if(elm.attachEvent){
		return elm.attachEvent("on"+evType, fn);
	} else {
		alert("Handler could not be removed");
	} return false;
}
FBSM.C.addOption = function(selectbox,text,value){
	var optn = document.createElement("OPTION");
	optn.text = text;
	optn.value = value;
	selectbox.options.add(optn);
}
FBSM.C.bindDictionaryToSelectBox = function(selectbox, dictionary){
	for(var index = 0; index < dictionary.length; index++) FBSM.C.addOption(selectbox, dictionary[index].Name, dictionary[index].Value);
}
FBSM.C.bindEvent = function(bindingObject, bindingEvent, boundDelegate){
	try {
		var bindingEventValue = new String(bindingEvent);
		if(bindingObject.attachEvent){
			bindingObject.attachEvent(bindingEvent, boundDelegate);
		} else if(bindingObject.addEventListener){
			bindingEventValue = bindingEventValue.toLowerCase().replace("on", "");
			bindingObject.addEventListener(bindingEventValue, boundDelegate, false);
		}
	} catch (e){}
}
FBSM.C.bindListToSelectBox = function(selectbox, list){
	for(var index = 0; index < list.length; index++) FBSM.C.addOption(selectbox, list[index], list[index]);
}
FBSM.C.doHourglass = function(){
	var f = document.getElementById('endeavor_searchbox');
	if(f && f.searchProducts){
		var q = f.searchProducts;
		if((q.value.trim() == 'Search for Brand, Product or Part Number') || (q.value.trim() == '')){
			return false;
		} else {
			document.body.style.cursor = 'wait';
		}
		f.searchKeywordLookupId.value='';
		f.searchKeywordLookupName.value='';
	} else {
		//document.body.style.cursor = 'wait';
		return false;
	}
	return true;
}
FBSM.C.doneLoading = function() {
	var img = new Image();
	$(img).attr("src", "media/transparent.gif");
}
FBSM.C.escapeHTML = function(val) {
	return val.replace(/</g, "&lt;").replace(/>/g, "&gt;");
}
FBSM.C.extractSelected = function(className){
	return className.substr(0, className.length-9);
}
FBSM.C.getCouponPrint = function(couponId){
	var cssFiles = document.getElementsByTagName('link');
	var width=400;
	var height=200;
	var viewer=window.open('','viewer','toolbar=no,location=no,directories=no,status=no,menubar=no,scrollbars=yes,resizable=yes,width='+width+',height='+height+',left=200,top=50');
	viewer.document.open();
	viewer.document.write('<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n');
	viewer.document.write('<html id=\"couponPopUp\">\n');
	viewer.document.write('<head>\n');
	viewer.document.write('<title>Coupon</title>\n');
	for(var x = 0; x < cssFiles.length; x++){
		viewer.document.write('<link rel=\"stylesheet\" type=\"text/css\" href=\"'+cssFiles[x].href+'\"/>\n');
	}
	viewer.document.write('</head>\n');
	viewer.document.write('<body leftmargin=\"0\" topmargin=\"0\" marginwidth=\"0\" marginheight=\"0\" class=\"couponDisplayPopup\">\n');
	viewer.document.write('<div class=\"couponPrint\">\n');
	viewer.document.write($("#" + couponId).html()+'\n');
	viewer.document.write('</div>\n');
	viewer.document.write('<div class=\"couponControls\"><input class=\"ecomm_button\" type=\"button\" name=\"print\" value=\"Print\" onClick=\"window.print()\"><input class=\"ecomm_button\" type=\"button\" name=\"close\" value=\"Close\" onClick=\"window.close()\"></div>\n');
	viewer.document.write('</body>\n');
	viewer.document.write('</html>\n');
	FBSM.C.loadCustomJavascriptParametersFromSource('s.linkTrackVars="prop18,prop19";s.linkTrackEvents="";s.prop18={@getEvar25};s.prop19="' + $("#" + couponId + " .assetSubTitle").html().addSlashes() + '";');
	viewer.document.close();
}
FBSM.C.getGalleryDisplayImg = function(imgSrc){	
	if($('#FB_imageLoader').length==0) {
		$('<div id="FB_imageLoader" />').appendTo('body');
	}
	var img = new Image();
	$(img).load(function (){
		$('#FB_imageLoader').append(this); 
		FBSM.C.initGalleryPopUp(this, imgSrc);
	}).attr('src', imgSrc);
}
FBSM.C.getParent = function(el, pTagName){
	if(el == null)
		return null;
	else if(el.nodeType == 1 && el.tagName.toLowerCase() == pTagName.toLowerCase())	// Gecko bug, supposed to be uppercase
		return el;
	else
		return FBSM.C.getParent(el.parentNode, pTagName);
}
FBSM.C.getRequestAQuoteForm = function(basePath, manufacturer, model, year, image, productType, industryId, aspect, partNumber, notAvailable){
	var url = basePath + "popupForms/dynamic/Request.aspx?manufacturer=" + manufacturer + "&model=" + model + "&year=" + year + "&image=" + image + "&productType=" + productType + "&industryId=" + industryId + "&aspect=" + aspect + "&partNumber=" + partNumber;
	if(notAvailable) url += "&productNotAvailable=true";
	//Set the window size (window automatically centered by this function)
	var height = 480;
	var width = 400;
	var top = parseInt((window.screen.height - height) / 2);
	var left = parseInt((window.screen.width - width) / 2);
	window.open(url, "_blank", "location=no,menubar=no,directories=no,toolbar=no,status=yes,resizable=yes,scrollbars=yes,top=" + top + "px,left=" + left + "px,width=" + width + "px,height=" + height + "px");
}
FBSM.C.getRequestAQuoteFormFromTFG = function(basePath, manufacturer, model, year, image, productType, industryId, aspect, notAvailable, vehicleYear, vehicleMake, vehicleModel, vehicleStyle, tireSize){
	var url = basePath + "popupForms/dynamic/Request.aspx?manufacturer=" + '' + "&model=" + '' + "&year=" + '' + "&image=" + '' + "&productType=" + productType + "&industryId=" + industryId + "&aspect=" + aspect + "&vehicleYear=" + vehicleYear + "&vehicleMake=" + escape(vehicleMake) + "&vehicleModel=" + escape(vehicleModel) + "&vehicleStyle=" + escape(vehicleStyle) + "&tireSize=" + tireSize
	if(notAvailable) url += "&productNotAvailable=true";
	//Set the window size (window automatically centered by this function)
	var height = 480;
	var width = 400;
	var top = parseInt((window.screen.height - height) / 2);
	var left = parseInt((window.screen.width - width) / 2);
	window.open(url, "_blank", "location=no,menubar=no,directories=no,toolbar=no,status=yes,resizable=yes,scrollbars=yes,top=" + top + "px,left=" + left + "px,width=" + width + "px,height=" + height + "px");
}
FBSM.C.getSelectedValue = function(select){
	return (select.value == undefined) ? select.options[select.selectedIndex].value : select.value;
}
FBSM.C.getSelectedText = function(select){
	return (select.text == undefined) ? select.options[select.selectedIndex].text : select.text;
}
FBSM.C.getServerControl = function(clientName){
	var control = $("*[id$='_"+clientName+"']");
	if(control.length>0) return control[0];
	return null;
}
FBSM.C.getSpecificationsPage = function(basePath, optionId){
	var url = basePath + "popupPages/Specifications.aspx?optionId=" + optionId;
	//Set the window size (window automatically centered by this function)
	var height = 250;
	var width = 450;
	var top = parseInt((window.screen.height - height) / 2);
	var left = parseInt((window.screen.width - width) / 2);
	window.open(url, "_blank", "location=no,menubar=no,directories=no,toolbar=no,status=yes,resizable=yes,scrollbars=yes,top=" + top + "px,left=" + left + "px,width=" + width + "px,height=" + height + "px");
}
FBSM.C.getTFGTireSizeAtIndex = function(index){
	var width = FBSM.C.getServerControl('cmbWidth');
	if(width!=null && FBSM.C.tireFitmentGuideTireSizeInfo!=null && FBSM.C.tireFitmentGuideTireSizeInfo.length>index){
		FBSM.C.tireFitmentGuideTireSizeInfoIndex = index;
		FBSM.C.selectOptionValue(width, FBSM.C.tireFitmentGuideTireSizeInfo[index].Width);
		FBSM.C.requestHeights(width);
	}
}
FBSM.C.getToggleForTrade = function(){
	var el = $(".requestQuoteCheckWithTrade");
	if(el.length) {
		el = el[0];
		if(el!=null) {
			el = el.childNodes[0];
			if(el!=null) FBSM.C.toggleTradeDiv(el.checked);
		}
	}
}
FBSM.C.handleTFGHeightSelectResponse = function(responseXML){
	var root = (responseXML!=null) ? responseXML.documentElement : null;
	var content = (responseXML!=null && root!=null) ? root.firstChild.nodeValue : '{ "list":[ "" ] }';
	eval("var tfgData = " + content + ";");
	var diameters = FBSM.C.getServerControl('cmbDiameter');
	diameters.options.length = 0;
	FBSM.C.bindListToSelectBox(diameters, tfgData.list);
	diameters.disabled = false;
	if(diameters!=null && FBSM.C.tireFitmentGuideTireSizeInfo!=null && FBSM.C.tireFitmentGuideTireSizeInfo.length>FBSM.C.tireFitmentGuideTireSizeInfoIndex){
		FBSM.C.selectOptionValue(diameters, FBSM.C.tireFitmentGuideTireSizeInfo[FBSM.C.tireFitmentGuideTireSizeInfoIndex].Diameter);
	}
}
FBSM.C.handleTFGWidthSelectResponse = function(responseXML){
	var root = (responseXML!=null) ? responseXML.documentElement : null;
	var content = (responseXML!=null && root!=null) ? root.firstChild.nodeValue : '{ "list":[ "" ] }';
	eval("var tfgData = " + content + ";");
	var heights = FBSM.C.getServerControl('cmbHeight');
	heights.options.length = 0;
	FBSM.C.bindListToSelectBox(heights, tfgData.list);
	heights.disabled = false;
	if(heights!=null && FBSM.C.tireFitmentGuideTireSizeInfo!=null && FBSM.C.tireFitmentGuideTireSizeInfo.length>FBSM.C.tireFitmentGuideTireSizeInfoIndex){
		FBSM.C.selectOptionValue(heights, FBSM.C.tireFitmentGuideTireSizeInfo[FBSM.C.tireFitmentGuideTireSizeInfoIndex].Height);
	}
	FBSM.C.requestDiameters(heights);
	var submit = FBSM.C.getServerControl('btnSearchByKnownSize');
	submit.disabled = (responseXML!=null && root!=null) ? false : true;
}
FBSM.C.initGalleryPopUp = function(pic, src){
	var cssString = '';
	var cssFiles = document.getElementsByTagName('link');
	for(var x = 0; x < cssFiles.length; x++){cssString += '<link rel="stylesheet" type="text/css" href="'+cssFiles[x].href+'"/>';}
	
	var viewer=window.open('','viewer','toolbar=no,location=no,directories=no,status=no,menubar=no,scrollbars=no,resizable=no,width='+(pic.width+40)+',height='+(pic.height+60)+',left=200,top=50');
	viewer.document.open();
	viewer.document.write('<html><head><title>Gallery</title>' + cssString + '</head><body class="galleryDisplayPopup"><table class="galleryDisplay_tbl" align="center" width="'+pic.width+'" border="0" cellspacing="10" cellpadding="0"><tr class="galleryDisplay_tblRow"><td class="galleryDisplay_tblCell" align="center" valign="top"><image src="'+src+'"/></td></tr><tr class="galleryDisplay_tblRow"><td class="galleryDisplayControls_tblCell" align="right" valign="middle"><input class="ecomm_button" type="button" name="close" value="Close" onClick="window.close()"></td></tr></table></body></html>');
	viewer.document.close();
}
FBSM.C.insertSelected = function(className){
	return className + "_selected";
}
FBSM.C.pauseDiameters = function(loading){
	FBSM.C.setToLoadingSelectBox(FBSM.C.getServerControl('cmbDiameter'), loading);
	var btnSubmit = FBSM.C.getServerControl('btnSearchByKnownSize');
}
FBSM.C.pauseHeights = function(loading){
FBSM.C.setToLoadingSelectBox(FBSM.C.getServerControl('cmbHeight'), loading);
	FBSM.C.pauseDiameters(false);
}
FBSM.C.pauseMakes = function(loading){
	FBSM.C.setToLoadingSelectBox(FBSM.C.getServerControl('cmbMake'), loading);
	FBSM.C.pauseModels(false);
}
FBSM.C.pauseModels = function(loading){
	FBSM.C.setToLoadingSelectBox(FBSM.C.getServerControl('cmbModel'), loading);
	FBSM.C.pauseStyles(false);
}
FBSM.C.pauseSizes = function(loading){
	FBSM.C.setToLoadingSelectBox(FBSM.C.getServerControl('lstSizes'), loading);
	var submit = FBSM.C.getServerControl('btnSearchByVehicle');
	if(submit) submit.disabled = true;
}
FBSM.C.pauseStyles = function(loading){
	FBSM.C.setToLoadingSelectBox(FBSM.C.getServerControl('cmbStyle'), loading);
	FBSM.C.pauseSizes(false);
}
FBSM.C.popUp = function(url){
	day = new Date();
	id = day.getTime();
	eval("page" + id + " = window.open('" + url + "', '" + id + "', 'toolbar=0,scrollbars=0,location=0,statusbar=0,menubar=0,resizable=0,width=502,height=425,left = 257,top = 179');");
}
FBSM.C.primaryNavInit = function(){
	if(jQuery.browser.msie && jQuery.browser.version < 7){
		$("#primeNavList li").hover(function(){ $(this).children("ul").show(); }, function(){ $(this).children("ul").hide(); });
	}
}
FBSM.C.requestDiameters = function(selectbox){
	FBSM.C.pauseDiameters(true);
	// Send Request
	if(selectbox.Value!=""){
		$.ajax({
			type: "POST",
			url: "services/TireFitmentGuide.asmx/GetTireDiametersJSON",
			data: "width=" + FBSM.C.getSelectedValue(FBSM.C.getServerControl('cmbWidth')) + '&height=' + FBSM.C.getSelectedValue(selectbox),
			dataType: "xml",
			success: function(responseXML) {
				FBSM.C.handleTFGHeightSelectResponse(responseXML);
			}
		});
	} else {
		FBSM.C.handleTFGHeightSelectResponse(null);
	}
}
FBSM.C.requestHeights = function(selectbox){
	FBSM.C.pauseHeights(true);
	if(selectbox.Value!=""){
		$.ajax({
			type: "POST",
			url: "services/TireFitmentGuide.asmx/GetTireHeightsJSON",
			data: "width=" + FBSM.C.getSelectedValue(selectbox),
			dataType: "xml",
			success: function(responseXML) {
				FBSM.C.handleTFGWidthSelectResponse(responseXML);
			}
		});
	} else {
		FBSM.C.handleTFGWidthSelectResponse(null);
	}
}
FBSM.C.requestSearchResults = function(selectbox){
	FBSM.C.pauseSizes(true);
	$.ajax({
		type: "POST",
		url: "services/TireFitmentGuide.asmx/GetTireSizesJSON",
		data: "styleId=" + FBSM.C.getSelectedValue(selectbox) + "&styleValue=" + FBSM.C.getSelectedText(selectbox),
		dataType: "xml",
		success: function(responseXML) {
			eval("var tfgData = " + responseXML.documentElement.firstChild.nodeValue + ";");
			FBSM.C.tireFitmentGuideTireSizeInfo = tfgData.list;
			var sizes = FBSM.C.getServerControl('lstSizes');
			sizes.options.length = 0;
			FBSM.C.bindDictionaryToSelectBox (sizes, tfgData.list);
			if(sizes.length>0){
				sizes.selectedIndex = 0;
				FBSM.C.getTFGTireSizeAtIndex(0);
				FBSM.C.requestSubmitUrl(sizes);
			}
			sizes.disabled = false;
		}
	});
}
FBSM.C.requestSubmitUrl = function(selectbox){
	var submit = FBSM.C.getServerControl('btnSearchByVehicle');
	if(submit){
		submit.disabled = false;
	} else {
		submit = FBSM.C.getServerControl('btnRequestAQuote');
		if(submit){
			var yearBox = FBSM.C.getServerControl('cmbYear');
			var year = (yearBox)?FBSM.C.getSelectedText(yearBox):'';
			var makeBox = FBSM.C.getServerControl('cmbMake');
			var make = (makeBox)?FBSM.C.getSelectedText(makeBox):'';
			var modelBox = FBSM.C.getServerControl('cmbModel');
			var model = (modelBox)?FBSM.C.getSelectedText(modelBox):'';
			var styleBox = FBSM.C.getServerControl('cmbStyle');
			var style = (styleBox)?FBSM.C.getSelectedText(styleBox):'';
			var styleId = (styleBox)?FBSM.C.getSelectedValue(styleBox):'';
			var size = FBSM.C.getSelectedValue(selectbox);
			// Send Request
			if($("#raqs_body").length>0){
				submit.disabled = false;
				$("#rq_txtTireSize").val(size);
				$("#rq_txtVehicleYear").val(year);
				$("#rq_txtVehicleMake").val(make);
				$("#rq_txtVehicleModel").val(model);
				$("#rq_txtVehicleStyle").val(style);
			} else {
				submit.disabled = true;
				$.ajax({
					type: "POST",
					url: "services/TireFitmentGuide.asmx/GetSubmitUrl",
					data: "productListPage=TireFitmentProductList.htm&styleId=" + styleId + "&size=" + size + "&year=" + year + "&make=" + escape(make) + "&model=" + escape(model) + "&style=" + escape(style),
					dataType: "xml",
					success: function(responseXML) {
						var submit = FBSM.C.getServerControl('btnRequestAQuote');
						if(responseXML && submit){
							submit.disabled = false;
							eval(responseXML.documentElement.firstChild.nodeValue);
						}
					}
				});
			}
		}
	}
}
FBSM.C.requestVehicleMakes = function(selectbox){
	FBSM.C.pauseMakes(true);
	$.ajax({
		type: "POST",
		url: "services/TireFitmentGuide.asmx/GetMakesJSON",
		data: "year=" + FBSM.C.getSelectedValue(selectbox),
		dataType: "xml",
		success: function(responseXML) {
			eval("var tfgData = " + responseXML.documentElement.firstChild.nodeValue + ";");
			var makes = FBSM.C.getServerControl('cmbMake');
			makes.options.length = 0;
			FBSM.C.addOption(makes,'Pick a Make','0');
			FBSM.C.bindDictionaryToSelectBox (makes, tfgData.list);
			makes.disabled = false;
		}
	});
}
FBSM.C.requestVehicleModels = function(selectbox){
	FBSM.C.pauseModels(true);
	$.ajax({
		type: "POST",
		url: "services/TireFitmentGuide.asmx/GetModelsJSON",
		data: "makeId=" + FBSM.C.getSelectedValue(selectbox) + "&makeValue=" + FBSM.C.getSelectedText(selectbox),
		dataType: "xml",
		success: function(responseXML) {
			eval("var tfgData = " + responseXML.documentElement.firstChild.nodeValue + ";");
			var models = FBSM.C.getServerControl('cmbModel');
			models.options.length = 0;
			FBSM.C.addOption(models,'Pick a Model','0');
			FBSM.C.bindDictionaryToSelectBox (models, tfgData.list);
			models.disabled = false;
		}
	});
}
FBSM.C.requestVehicleStyles = function(selectbox){
	FBSM.C.pauseStyles(true);
	$.ajax({
		type: "POST",
		url: "services/TireFitmentGuide.asmx/GetStylesJSON",
		data: "modelId=" + FBSM.C.getSelectedValue(selectbox) + "&modelValue=" + FBSM.C.getSelectedText(selectbox),
		dataType: "xml",
		success: function(responseXML) {
			eval("var tfgData = " + responseXML.documentElement.firstChild.nodeValue + ";");
			var styles = FBSM.C.getServerControl('cmbStyle');
			styles.options.length = 0;
			FBSM.C.addOption(styles,'Pick a Style','0');
			FBSM.C.bindDictionaryToSelectBox (styles, tfgData.list);
			styles.disabled = false;
		}
	});
}
FBSM.C.resetTFG = function(){
	var yearBox = $("select[id$=cmbYear]");
	if(yearBox.length>0){
		yearBox.selectedIndex = 0;
		$("select[id$=lstSizes]").empty().attr("disabled",true);
		$("select[id$=cmbMake]").empty().attr("disabled",true);
		$("select[id$=cmbModel]").empty().attr("disabled",true);
		$("select[id$=cmbStyle]").empty().attr("disabled",true);
		$("select[id$=btnSearchByVehicle]").attr("disabled",true);
	}
	if($("select[id$=cmbWidth]").length>0) {
		$("select[id$=cmbWidth]").val("135");
		FBSM.C.requestHeights($("select[id$=cmbWidth]")[0]);
	}
}
FBSM.C.selectCatalog = function(){
	if($('#compCatSelectBox').val()) window.location='catalogAsset.htm?catalogId=' + $('#compCatSelectBox').val();
}
FBSM.C.selectContainer = function(containerId, tabObject){
	if(containerId !== FBSM.C.currentTabIndex){
		var currentContainer = document.getElementById("container_"+FBSM.C.currentTabIndex);
		var newContainer = document.getElementById("container_"+containerId);
		var newTab = tabObject;
		var currentTab = document.getElementById("selector_"+FBSM.C.currentTabIndex);
		currentContainer.className = FBSM.C.extractSelected(currentContainer.className);
		newContainer.className = FBSM.C.insertSelected(newContainer.className);
		currentTab.className = FBSM.C.extractSelected(currentTab.className);
		newTab.className = FBSM.C.insertSelected(newTab.className);
		FBSM.C.currentTabIndex = containerId;
	}
}
FBSM.C.selectOptionValue = function(selectCtrl, value){
	if(value!=null && value!=""){
		for(var index=0; index < selectCtrl.options.length; index++){
			if(selectCtrl.options[index].value==value) selectCtrl.selectedIndex = index;
		}
	} else {
		selectCtrl.selectedIndex = 0;
	}
}
FBSM.C.setToLoadingSelectBox = function(selectbox, loading){
	selectbox.options.length = 0;
	if(loading) FBSM.C.addOption(selectbox, "Loading...", "0");
	selectbox.disabled = true;
}
FBSM.C.showMore = function(show){
	var docElement = document.getElementById(show.id+'More');
	if(docElement != null){
		if(docElement.style.display == 'none'){
			docElement.style.display = 'block';
			show.innerHTML = "<div class='navItemLink'><a class=\"leftNavItemViewMore\">Hide Extra...</a></div>";
		} else{
			docElement.style.display = 'none';
			show.innerHTML = "<div class='navItemLink'><a class=\"leftNavItemViewMore\">View More...</a></div>";
		}
	}
	return;
}
FBSM.C.sortables_init = function(){
	if($('#ecms_sortableTblCtl').length) FBSM.C.ts_makeSortable($('#ecms_sortableTblCtl')[0]);
}
FBSM.C.test_searchByKnownSize = function(){
	var width = FBSM.C.getServerControl('cmbWidth');
	var height = FBSM.C.getServerControl('cmbHeight');
	var diameter = FBSM.C.getServerControl('cmbDiameter');
	if((width!=null && height!=null && diameter!=null) && (width.value=="0" || diameter.value=="0")){
		alert("Please select a tire size before searching");
		return false;
	}
	return true;
}
FBSM.C.test_searchByVehicle = function(){
	var sizes = FBSM.C.getServerControl('lstSizes');
	if(sizes!=null && sizes.selectedValue==""){
		alert("Please select a tire size before searching");
		return false;
	}
	
	//Plug the results of this search into the tirefitment sidebar widget. (assuming it's on the site)
	var widgetFitmentSelection = new String();
	var controlValue;
	controlValue = FBSM.C.getServerControl('cmbYear')
	widgetFitmentSelection += controlValue.selectedIndex - 1 + '~'
	controlValue = FBSM.C.getServerControl('cmbMake')
	widgetFitmentSelection += controlValue.selectedIndex - 1 + '~'
	controlValue = FBSM.C.getServerControl('cmbModel')
	widgetFitmentSelection += controlValue.selectedIndex - 1 + '~'
	controlValue = FBSM.C.getServerControl('cmbStyle')
	widgetFitmentSelection += controlValue.selectedIndex - 1 + '~'
	controlValue = FBSM.C.getServerControl('lstSizes')
	widgetFitmentSelection += controlValue.selectedIndex + '~'
	$.cookies.set("selectedTireFitmentRight", widgetFitmentSelection);

	return true;
}
FBSM.C.toggleHelpContact = function() {
	if($("#helpDialogSendContactInfo").attr("checked")) {
		$("#helpDialogFormContents .helpContactContent").show();
	} else {
		$("#helpDialogFormContents .helpContactContent").hide();
	}
}
FBSM.C.toggleTradeDiv = function(value){
	if($("#requestQuoteTrade").length) $("#requestQuoteTrade")[0].style.display = ((value || value==null) ? "" : "none");
}
FBSM.C.ts_getInnerText = function(el){
	if(typeof el == "string") return el;
	if(typeof el == "undefined"){ return el };
	if(el.innerText) return el.innerText;	//Not needed but it is faster
	var str = "";
	var cs = el.childNodes;
	for(var i = 0; i < cs.length; i++){
		switch (cs[i].nodeType){
			case 1: //ELEMENT_NODE
				str += FBSM.C.ts_getInnerText(cs[i]);
				break;
			case 3:	//TEXT_NODE
				str += cs[i].nodeValue;
				break;
		}
	}
	return str;
}
FBSM.C.ts_makeSortable = function(table){
	if(table.rows && table.rows.length > 0) var firstRow = table.rows[0];
	if(!firstRow) return;
	// We have a first row: assume it's the header, and make its contents clickable links
	for(var i=0;i<firstRow.cells.length;i++){
		var cell = firstRow.cells[i];
		var txt = cell.innerHTML;
		if(txt !='&nbsp;') cell.innerHTML = '<a href="#" class="ecms_sortableTblCtlSelector" onclick="FBSM.C.ts_resortTable(this);return false;">'+txt+'<span class="ecms_sortableTblCtlDirection"><img src="media/arrowNull.gif" /></span></a>';
	}
}
FBSM.C.ts_resortTable = function(lnk){
	// get the span
	var span;
	for(var ci=0;ci<lnk.childNodes.length;ci++){
		if(lnk.childNodes[ci].tagName && lnk.childNodes[ci].tagName.toLowerCase() == 'span') span = lnk.childNodes[ci];
	}
	var spantext = FBSM.C.ts_getInnerText(span);
	var td = lnk.parentNode;
	var column = td.cellIndex;
	var table = FBSM.C.getParent(td,'TABLE');
	// Work out a type for the column
	if(table.rows.length <= 1) return;
	var itm = FBSM.C.ts_getInnerText(table.rows[1].cells[column]);
	sortfn = FBSM.C.ts_sort_caseinsensitive;
	if(itm.match(/^\d\d[\/-]\d\d[\/-]\d\d\d\d$/)) sortfn = FBSM.C.ts_sort_date;
	if(itm.match(/^\d\d[\/-]\d\d[\/-]\d\d$/)) sortfn = FBSM.C.ts_sort_date;
	if(itm.match(/[$]/)) sortfn = FBSM.C.ts_sort_currency;
	if(itm.match(/^[\d\.]+$/)) sortfn = FBSM.C.ts_sort_numeric;
	FBSM.C.SORT_COLUMN_INDEX = column;
	var firstRow = new Array();
	var newRows = new Array();
	for(i=0;i<table.rows[0].length;i++){ firstRow[i] = table.rows[0][i]; }
	for(j=1;j<table.rows.length;j++){ newRows[j-1] = table.rows[j]; }
	newRows.sort(sortfn);
	if(span.getAttribute("sortdir") == 'down'){
		ARROW = '<img src="media/downArrowBlack.gif" />';
		newRows.reverse();
		span.setAttribute('sortdir','up');
	} else {
		ARROW = '<img src="media/upArrowBlack.gif" />';
		span.setAttribute('sortdir','down');
	}
	// We appendChild rows that already exist to the tbody, so it moves them rather than creating new ones
	// don't do sortbottom rows
	for(i=0;i<newRows.length;i++){ if(!newRows[i].className || (newRows[i].className && (newRows[i].className.indexOf('sortbottom') == -1))) table.tBodies[0].appendChild(newRows[i]);}
	// do sortbottom rows only
	for(i=0;i<newRows.length;i++){ if(newRows[i].className && (newRows[i].className.indexOf('sortbottom') != -1)) table.tBodies[0].appendChild(newRows[i]);}
	// Delete any other arrows there may be showing
	var allspans = document.getElementsByTagName("span");
	for(var ci=0;ci<allspans.length;ci++){
		if(allspans[ci].className == 'ecms_sortableTblCtlDirection' && FBSM.C.getParent(allspans[ci],"table") == FBSM.C.getParent(lnk,"table")){
			allspans[ci].innerHTML = '<img src="media/arrowNull.gif" />';
		}
	}
	for(var rowIndex=0; rowIndex < table.rows.length; rowIndex++){
		var row = table.rows[rowIndex];
 		row.className = (row.className.substr(0,(row.className.length -8))+(rowIndex % 2 == 0) ? "_tblRow0" : "_tblRow1");

	}
	span.innerHTML = ARROW;
}
FBSM.C.ts_sort_caseinsensitive = function(a,b){
	aa = FBSM.C.ts_getInnerText(a.cells[FBSM.C.SORT_COLUMN_INDEX]).toLowerCase();
	bb = FBSM.C.ts_getInnerText(b.cells[FBSM.C.SORT_COLUMN_INDEX]).toLowerCase();
	if(aa==bb) return 0;
	if(aa<bb) return -1;
	return 1;
}
FBSM.C.ts_sort_currency = function(a,b){
	aa = FBSM.C.ts_getInnerText(a.cells[FBSM.C.SORT_COLUMN_INDEX]).replace(/[^0-9.]/g,'');
	bb = FBSM.C.ts_getInnerText(b.cells[FBSM.C.SORT_COLUMN_INDEX]).replace(/[^0-9.]/g,'');
	return parseFloat(aa) - parseFloat(bb);
}
FBSM.C.ts_sort_date = function(a,b){
	// y2k notes: two digit years less than 50 are treated as 20XX, greater than 50 are treated as 19XX
	aa = FBSM.C.ts_getInnerText(a.cells[FBSM.C.SORT_COLUMN_INDEX]);
	bb = FBSM.C.ts_getInnerText(b.cells[FBSM.C.SORT_COLUMN_INDEX]);
	if(aa.length == 10){
		dt1 = aa.substr(6,4)+aa.substr(3,2)+aa.substr(0,2);
	} else {
		yr = aa.substr(6,2);
		if(parseInt(yr) < 50){ yr = '20'+yr; } else { yr = '19'+yr; }
		dt1 = yr+aa.substr(3,2)+aa.substr(0,2);
	}
	if(bb.length == 10){
		dt2 = bb.substr(6,4)+bb.substr(3,2)+bb.substr(0,2);
	} else {
		yr = bb.substr(6,2);
		if(parseInt(yr) < 50){ yr = '20'+yr; } else { yr = '19'+yr; }
		dt2 = yr+bb.substr(3,2)+bb.substr(0,2);
	}
	if(dt1==dt2) return 0;
	if(dt1<dt2) return -1;
	return 1;
}
FBSM.C.ts_sort_numeric = function(a,b){
	aa = parseFloat(FBSM.C.ts_getInnerText(a.cells[FBSM.C.SORT_COLUMN_INDEX]));
	if(isNaN(aa)) aa = 0;
	bb = parseFloat(FBSM.C.ts_getInnerText(b.cells[FBSM.C.SORT_COLUMN_INDEX]));
	if(isNaN(bb)) bb = 0;
	return aa-bb;
}
FBSM.C.updateCheckoutStatus = function(orderguid){
	$.post("/Services/OrderServices.asmx/UpdateOrderStatus", { orderGuid: orderguid });
}
FBSM.C.writeFlashObjects = function(){
	if(FBSM.C.flashObjectCollection) for(var tag in FBSM.C.flashObjectCollection) FBSM.C.flashObjectCollection[tag].write(tag);
}
FBSM.C.getQuoteRequestRegions = function(country) {
	$.ajax({
		type: "POST",
		url: 'services/ProductDetailServices.asmx/GetRegionsForCountry',
		dataType: "html",
		data: "country_name=" + country,
		success: function(res) {
			if($("select[id$='_cmbRegion']").length>0) {
				res = res.replace("<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<string xmlns=\"http://50below.com/\">", "").replace("</string>", "").decodeHtmlTags();
				res = "<select name=\"" + $("#cmbRegionWrapper select").attr("name") + "\" id=\"" + $("#cmbRegionWrapper select").attr("id") + "\" class=\"ecms_forms_selectBox\" tabIndex=\"10\">" + res + "</select>";
				$("#cmbRegionWrapper").html(res);
			}
		}
	});
}
FBSM.C.showRequestQuoteElements = function(){
	$('#cmbPurchaseTimeFrameWrapper select').show();
	$('#cmbCountryWrapper select').show();
	$('#cmbRegionWrapper select').show();
}
FBSM.C.loadCustomJavascriptParameters = function(val,type){
	if(typeof s != "undefined") {
		if(val!="checkout_tab_shipping" || s.pageName!="checkout shipping") {
			$.ajax({
				type: "POST",
				url: "/Services/WidgetServices.asmx/getAjaxParams",
				data: "command=" + val + "&type=" + type,
				dataType: 'script'
			});
			FBSM.C.storeOmnitureEvars();
		}
	}
}
FBSM.C.loadCustomJavascriptParametersFromSource = function(script){
	if(typeof s != "undefined") {
		$.ajax({
			type: "POST",
			url: "/Services/WidgetServices.asmx/getAjaxParamScript",
			data: "script=" + script,
			dataType: 'script'
		});
		FBSM.C.storeOmnitureEvars();
	}
}
FBSM.C.storeOmnitureEvars = function(){
	if(typeof s!="undefined"){
		var data=new Array(51);
		var hasResults = false;
		for(i=0;i<51;i++) {
			if(typeof s["eVar"+i.toString()]!="undefined"){
				data[i] = s["eVar"+i.toString()].replace(/\|/g,"-");
				hasResults = true;
			} else {
				data[i] = "";
			}
		}
		if(hasResults){
			$.ajax({
				type: "POST",
				url: "/Services/WidgetServices.asmx/storeEvars",
				data: {"evars":data.join("|")},
				success: function(res){}
			});
		}
	}
}
FBSM.W.swapMiniPromo = function() {
	$('#miniPromo img').fadeOut(150);
	FBSM.W.currentMiniPromo = (FBSM.W.currentMiniPromo+1 < FBSM.W.miniPromoLogos.length) ? FBSM.W.currentMiniPromo+1 : 0;
	var img = new Image();
	var imgsrc = FBSM.W.miniPromoLogos[FBSM.W.currentMiniPromo].imageUrl;
	if(document.location.protocol=="https:"){
		imgsrc=imgsrc.replace("http://images.endeavorsuite.com","https://media.50below.com").replace("http://media.50below.com","https://media.50below.com");
	}
	$(img).load(function() {
		$(this).hide();
		$('#miniPromo a').html(this);
		$(this).fadeIn();
		if(FBSM.W.miniPromoLogos.length>0) minipromos_interval = setTimeout('FBSM.W.swapMiniPromo()', 6000);
	}).attr('src', imgsrc).css('border', 0);
}
FBSM.SC.innerHTMLSelectFix=function(element,innerHTML){
	if(typeof element != 'undefined') { 
		element.innerHTML = "";
		//creating phantom element to receive temp innerHTML
		var selTemp = document.createElement("micoxselect");
		var opt;
		selTemp.id="micoxselect1";
		document.body.appendChild(selTemp);
		selTemp = document.getElementById("micoxselect1");
		selTemp.style.display="none";
		if(innerHTML.toLowerCase().indexOf("<option")<0){
			innerHTML = "<option>" + innerHTML + "</option>";
		}
		innerHTML = innerHTML.replace(/<option/g,"<span").replace(/<\/option/g,"</span");
		selTemp.innerHTML = innerHTML;
		for(var i=0;i<selTemp.childNodes.length;i++){
			if(selTemp.childNodes[i].tagName){
				opt = document.createElement("OPTION");
				for(var j=0;j<selTemp.childNodes[i].attributes.length;j++){
					opt.setAttributeNode(selTemp.childNodes[i].attributes[j].cloneNode(true));
				}
				opt.value = selTemp.childNodes[i].getAttribute("value");
				opt.text = selTemp.childNodes[i].innerHTML.replace("&nbsp;", " ");
				opt.text = selTemp.childNodes[i].innerHTML.replace("&amp;", "&");
				if(document.all){ //IEca
					element.add(opt);
				}else{
					element.appendChild(opt);
				}
			}
		}
		document.body.removeChild(selTemp);
		selTemp = null;
	}
}
FBSM.SC.toggleWithTrade=function(value){ $("#rq_withTradeRow").toggleIf(value); }
FBSM.SC.clearOnClose=function(caller){
	$((caller=="raqs")?"#rq_Form2":"#Form1").find(':text,:password,textarea').attr('value','').end().find(':checkbox,:radio').attr('checked',false).end().find('select').attr('selectedIndex',-1);
	FBSM.SC.toggleWithTrade(false);
}
FBSM.TFG.showNote = function(name) {
	var body = $('#' + name + '_body');
	body.attr("class",'notevisible');
	$("#IEFRAMEFIX").show();
	var scrollToTop = 0;
	if( typeof( window.innerWidth ) == 'number' ) {
		scrollToTop = window.pageYOffset;
	} else if( document.documentElement && ( document.documentElement.clientWidth || document.documentElement.clientHeight ) ) {
		scrollToTop = document.body.scrollTop;
		if(scrollToTop==0) scrollToTop = document.documentElement.scrollTop;
	} else if( document.body && ( document.body.clientWidth || document.body.clientHeight ) ) {
		scrollToTop = document.body.scrollTop;
		if(scrollToTop==0) scrollToTop = document.documentElement.scrollTop;
	}
	if(FBSM.TFG.wrapperBodyHeight==null) FBSM.TFG.wrapperBodyHeight = $("#ecomm_tireFitmentGuide").height();
	var offsetTop = $("#ecomm_tireFitmentGuide")[0].offsetTop;
	var topval = (scrollToTop - offsetTop >= 0) ? scrollToTop - offsetTop: 0;
	var leftval = Math.round(($("#ecomm_tireFitmentGuide")[0].clientWidth/2)-(body.clientWidth/2));
	body.css("top",topval+30);
	body.css("left",(leftval>30)?leftval:"30");
	$("#IEFRAMEFIX").css("top",topval+30);
	$("#IEFRAMEFIX").css("left",(leftval>30)?leftval:"30");
	$("#IEFRAMEFIX").css("height",body[0].offsetHeight);
	if(body.attr("id")!="response_body") $("#ecomm_tireFitmentGuide").css("height",(body[0].offsetHeight + (topval+30)));
	if($("#rq_txtFirstName").length>0){
		var rq_offsetWidth = $("#rq_txtFirstName").width()+"px";
		$("#rq_cmbCountries").css("width",rq_offsetWidth);
		$("#rq_cmbRegions").css("width",rq_offsetWidth);
	}
	if(name=="raqs") FBSM.C.loadCustomJavascriptParameters("tfg_request_quote_start","o");
}
FBSM.TFG.hideNote = function(name) {
	$("#"+name+"_body").attr("class",'notehidden');
	$("#IEFRAMEFIX").hide();
	$("#ecomm_tireFitmentGuide").css("height",FBSM.TFG.wrapperBodyHeight);
}
FBSM.TFG.getRegions_showcase = function(country, caller) {
	$.ajax({
		type: "POST",
		url: "controls/Showcase/Subpage/SinglePage_GetRegions.aspx",
		data: "country_name=" + country,
		dataType: 'application/x-www-form-urlencoded',
		success: function(response){
			var element = $("#"+caller);
			FBSM.SC.innerHTMLSelectFix(element[0],response);
			element.css("width",$("#rq_txtFirstName").width());
		}
	});
}
FBSM.TFG.preValidateForm = function(caller) {
	var hasErrors=false,EmptyElements="",element=null;
	var requiredElements=new Array("rq_txtFirstName", "rq_txtLastName", "rq_txtEmail", "rq_txtConfirmEmail", "rq_txtDayPhone", "rq_txtVehicleYear", "rq_txtVehicleMake", "rq_txtVehicleModel", "rq_txtVehicleStyle");
	var requiredElmNames=new Array("First Name", "Last Name", "Email", "Confirmation Email", "Phone", "Vehicle Year", "Vehicle Manufacturer", "Vehicle Model", "Vehicle Style", "City", "Region");
	var allElements=new Array("rq_txtFirstName", "rq_txtLastName", "rq_txtEmail", "rq_txtConfirmEmail", "rq_txtDayPhone", "rq_txtEveningPhone", "rq_txtComments", "rq_cmbTimeframeToPurchase", "rq_txtPostalCode", "rq_txtVehicleYear", "rq_txtVehicleMake", "rq_txtVehicleModel", "rq_txtVehicleStyle", "rq_txtTireSize", "rq_txtAddress1", "rq_txtAddress2", "rq_txtCity", "rq_cmbRegions", "rq_cmbCountries", "rq_findWebSite");
	if($("span[id$='labelRegion']").html()=="*Region:") requiredElements.push("#rq_txtCity", "#rq_cmbRegions");
	var email = $("#rq_txtEmail");
	var confirmEmail = $("#rq_txtConfirmEmail");
	for(var x in requiredElements){
		element = $(requiredElements[x]);
		if(element.val()==""){
			hasErrors = true;
			EmptyElements += ((EmptyElements!="") ? ", " : "") + requiredElmNames[x];
		}
	}
	if(!hasErrors) {
		if(email.val().toLowerCase()==confirmEmail.val().toLowerCase()) {
			var queryString = "rq_productType=new&";
			$(caller).parents("form").find("input:not(:submit,:button),select,textarea").each(function(i) {
				queryString+=this.id+"="+((this.type!="checkbox")?escape(this.value):this.checked)+"&";
			});
			$.ajax({
				type: "POST",
				url: "controls/Showcase/Subpage/SinglePage_SendQuoteRequest.aspx",
				data: queryString,
				dataType: 'application/x-www-form-urlencoded',
				success: function(response){
					if(response.substring(0,2)=="1:") {
						alert(response.substring(2));
					} else {
						FBSM.TFG.hideNote("raqs");
						$("#response_body_contents").html(response);
						FBSM.TFG.showNote("response");
						$("#raqs_body").find(':text,:password,textarea').attr('value','').end().find(':checkbox,:radio').attr('checked',false).end().find('select').attr('selectedIndex',-1);
						FBSM.C.loadCustomJavascriptParameters("form_submit","o");
					}
				}
			});
		} else {
			alert("Email addresses do not match, please verify that they are correct and submit the form again.");
		}
	} else {
		alert(EmptyElements + ((EmptyElements.indexOf(",")>-1)? " are empty. These fields are" : " is empty. This field is") + " required, please double check your form and submit it again.");
	}
}
FBSM.F.resizeImage = function(img){
	if(img){
		var w = img.width;
		var h = img.height;
		var a = w/h;
		var W = 78;
		var H = 78;
		var pivot = (W-w > 0 || H-h > 0) ? (w > h) : (w - W > h - H);
		if(pivot)			{
			img.width = W;
			img.height = W / a;
		} else {
			img.height = H;
			img.width = H * a;
		}
	}
}
String.prototype.lastIndexOfAny = function(any){
	if(typeof src == 'string' && typeof any == 'string'){
		for(var i = this.length - 1; i >= 0; i--){
			if(any.indexOf(this[i]) >= 0) return i;
		}
		return -1;
	}
}
String.prototype.trim = function(){
	return this.replace(/^\s+|\s+$/g,"");
}
String.prototype.decodeHtmlTags = function(){
	return this.replace(/&gt;/g, ">").replace(/&lt;/g, "<");
}
String.prototype.encodeHtmlTags = function(){
	return this.replace(/>/g, "&gt;").replace(/</g, "&lt;");
}
String.prototype.addSlashes = function(){
	return this.replace(/([\\"'])/g, "\\$1").replace(/\u0000/g, "\\0");
}
$(document).ready(function(){
	FBSM.C.sortables_init();
	FBSM.C.resetTFG();
	FBSM.C.writeFlashObjects();
	FBSM.C.primaryNavInit();
});
