//<script>

/*---------- Zoom Window ------------*/

	function zoom_window() {
	
window.open("http://s7ondemand1.scene7.com/s7ondemand/zoom/java_zoom.jsp?company=ChaparralMotorsports&sku=<*ListItemID*>","",
	               "toolbar=no,location=no,directories=no,"+
	               "status=no,menubar=no,scrollbars=yes"+
	               "resizable=yes,width=750,height=575,top=0,left=0,right=0,bottom=0")
	}


var $delay = 1500;	//1.5 sec

var pimages = new Array();
var oldstatus = undefined;
var pImage, pImageObj, pImageLoc;
var swapEnabled;
var prodArray = new Array();
var sizeArray = new Array();
var members   = new Object();
var preloadStyleArray = new Array();

// sizesList is a list of sizes used in sorting sizes for families
var sizesList = 
"^0-6MO^0-6MO.^0-6MONTH^0-6MONTHS^0-6/MO^0-6/MO.^0-6/MONTH^0-6/MONTHS"+
"^6-12MO^6-12MO.^6-12MONTH^6-12MONTHS^6-12/MO^6-12/MO.^6-12/MONTH^6-12/MONTHS"+
"^12-18MO^12-18MO.^12-18MONTH^12-18MONTHS^12-18/MO^12-18/MO.^12-18/MONTH^12-18/MONTHS"+
"^18-24MO^18-24MO.^18-24MONTH^18-24MONTHS^18-24/MO^18-24/MO.^18-24/MONTH^18-24/MONTHS"+
"^1T^2T^3T^4T^5T^6T^7T^8T^9T^10T^11T^12T^13T^14T"+
"^LIGHT^STANDARD^HEAVY^"+
 "^XXXXXXXXX-SMALL^XXXXXXXXXSMALL^XXXXXXXXX-S^XXXXXXXXXS^9XSMALL^9X-SMALL^9X-S^9XS"+
	"^XXXXXXXX-SMALL^XXXXXXXXSMALL^XXXXXXXX-S^XXXXXXXXS^8XSMALL^8X-SMALL^8X-S^8XS"+
		"^XXXXXXX-SMALL^XXXXXXXSMALL^XXXXXXX-S^XXXXXXXS^7XSMALL^7X-SMALL^7X-S^7XS"+
			"^XXXXXX-SMALL^XXXXXXSMALL^XXXXXX-S^XXXXXXS^6XSMALL^6X-SMALL^6X-S^6XS"+
				"^XXXXX-SMALL^XXXXXSMALL^XXXXX-S^XXXXXS^5XSMALL^5X-SMALL^5X-S^5XS"+
					"^XXXX-SMALL^XXXXSMALL^XXXX-S^XXXXS^4XSMALL^4X-SMALL^4X-S^4XS"+
						"^XXX-SMALL^XXXSMALL^XXX-S^XXXS^3XSMALL^3X-SMALL^3X-S^3XS"+
							"^XX-SMALL^XXSMALL^XX-S^XXS^2XSMALL^2X-SMALL^2X-S^2XS"+
										 "^XXS^XX-SMALL^XXSMALL^XS^X-SMALL^XSMALL"+
						    "^S^SMALL^S/M^M^MEDIUM^L^L/XL^LARGE^XL^XLARGE^X-LARGE"+
						"^XXL^2XL^2X-L^2X-LARGE^2XLARGE^XX-L^XXL^XX-LARGE^XXLARGE"+
						"^3XL^3X-L^3X-LARGE^3XLARGE^XXX-L^XXXL^XXX-LARGE^XXXLARGE"+
					"^4XL^4X-L^4X-LARGE^4XLARGE^XXXX-L^XXXXL^XXXX-LARGE^XXXXLARGE"+
				"^5XL^5X-L^5X-LARGE^5XLARGE^XXXXX-L^XXXXXL^XXXXX-LARGE^XXXXXLARGE"+
			"^6XL^6X-L^6X-LARGE^6XLARGE^XXXXXX-L^XXXXXXL^XXXXXX-LARGE^XXXXXXLARGE"+
		"^7XL^7X-L^7X-LARGE^7XLARGE^XXXXXXX-L^XXXXXXXL^XXXXXXX-LARGE^XXXXXXXLARGE"+
	"^8XL^8X-L^8X-LARGE^8XLARGE^XXXXXXXX-L^XXXXXXXXL^XXXXXXXX-LARGE^XXXXXXXXLARGE"+
"^9XL^9X-L^9X-LARGE^9XLARGE^XXXXXXXXX-L^XXXXXXXXXL^XXXXXXXXX-LARGE^XXXXXXXXXLARGE";

function swapImageByNum(num)
{
	//if (!swapEnabled) return;
	//if (!pimages[num].width) return swapImageByNum(0);
	pImageObj = pimages[num];
	setTimeout("wait(pImageObj,pImage)",1);
}
var oldBackID;
function statusAlert(txt) {
	if(oldstatus==undefined)
		oldstatus = window.status;
	window.status=txt;
	if(oldBackID!=undefined) {
		clearTimeout(oldBackID);
		oldBackID = undefined;
	}
	oldBackID = setTimeout(setBackStatus,arguments[1]?arguments[1]*1000:2000);
}
function setBackStatus() {
	window.status = oldstatus;
	oldstatus=undefined;
}
function wait(pImageObj,pImage){
	if (pImage==undefined) return;
	if (pImageObj&&((pImageObj.readyState && pImageObj.readyState=="complete")||pImageObj.complete)&&pImageObj.width&&pImageObj.width>5){

		if(pImage.height!=pImageObj.height&&pImageObj.height>0)
			pImage.height = pImageObj.height;
		if(pImage.width!=pImageObj.width&&pImageObj.width>0)
			pImage.width = pImageObj.width;
		pImage.src = pImageObj.src;
		if (pImage.src.indexOf(".jpg/")>0){
			pImage.src=pImage.src.slice(0,pImage.src.lastIndexOf("/"));
		}
	} else {
		if (pimages[0]) {
			pImage.height = pimages[0].height;
			pImage.width = pimages[0].width;
			pImage.src = pimages[0].src;
		}
	}
	return true;
}
function preloadDropdownImages(imgArr)
{
	swapEnabled=false;
	//setTimeout(modFamilyImage,5000);
	//try {
	if (pImage==undefined) pImage=getpImage();
	if (pImage==undefined) return;
	if (preloadStyleArray.length==0) return;

	startTimer = new Date().getTime();
	
	// Get Dropdown options
	var opts = imgArr;

	// Get Prefix to image
	if (pImage.src.indexOf("_-_")>0)
		pImageInit = pImage.src.slice(0,pImage.src.indexOf("_-_"));	
	else
		pImageInit = pImage.src.slice(0,pImage.src.lastIndexOf("."));

	// load first image
	pimages[0] = new Image();
	pimages[0].src = pImage.src;
	pimages[0].height = pImage.height;
	pimages[0].width = pImage.width;

	// Create an array to prevent redundant images
	var pimagelocs = new Array();
	var tmp;

	for (var i=0; i<opts.length; i++)
	{
		tmp = unescape(opts[i]);
		tmp = tmp.replace(/(\/)+|(&nbsp;)+|( )+/gi,"-");
		tmp = tmp.replace("&amp;","&");
		pImageLoc = pImageInit+"_-_"+tmp+".jpg";
		pImageLoc = pImageLoc.replace(/(\")+/gi,"-");
		pushUnique(pimagelocs, pImageLoc);
	}

	var tmpImg;
	for (var i=0; i<pimagelocs.length; i++)
	{
		tmpImg = new Image();
		tmpImg.src = pimagelocs[i];
		pimages.push(tmpImg);
	}
	load_id = setTimeout(checkLoaded,500);
}

var startTimer, loadTimer, load_id;
function checkLoaded()
{
	if (!load_id) return;
	var li = 0;
	var bytes = 0;
	var to_continue = true;
	var tmpimg;
	loadTimer = (new Date().getTime()-startTimer)/1000;

	for (var i=1; i<pimages.length; i++)
	{
		if (pimages[i].readyState=="complete"||pimages[i].complete)
		{
			li++;
			if (pimages[i].fileSize)
				bytes+=new Number(pimages[i].fileSize);
		}
		else
		{
			//statusAlert(pimages[i].src.substr(pimages[i].src.lastIndexOf("/")));
			to_continue=false;
			if (pimages[i].readyState=="uninitialized")
			{
				//alert(pimages[i].src);
				if (pimages[i].src.indexOf(" ", pimages[i].src.indexOf("_-_")+3)>-1) {
					tmpimg = new Image();
					var loc = unescape(pimages[i].src);
					var pref = loc.substr(0, loc.lastIndexOf("/"));
					loc = loc.substr(loc.lastIndexOf("/"));
					if (loc.indexOf("_-_")>-1)
					{
						pref+=loc.substr(0,loc.indexOf("_-_")+3);
						loc = loc.substr(loc.indexOf("_-_")+3);
					}
					if (loc.indexOf(" ")>-1)
						tmpimg.src = pref+loc.substr(loc.lastIndexOf("/")).replace(/ /gi,"_");
					pimages[i] = tmpimg;
				//} else {
				//	var tmpimg = new Image();
				//	var loc = String(pimages[0].src);
				//	tmpimg.src = loc;
				//	pimages[i] = tmpimg;
				}
			}
		}
	}
	if (!to_continue&&loadTimer<30) return setTimeout(checkLoaded,500);
	var sayTxt = "Loaded "+li+" images ";
	if (bytes>0)
		sayTxt+="["+Math.round((bytes/1028)*100)/100+" kb] ";
	sayTxt += "in "+loadTimer+" seconds";
	statusAlert(sayTxt);
	swapEnabled=true;
	load_id = undefined;
}
function getpImage()
{
	if (pImage==undefined)
		for(var im=0;im<document.images.length;im++)
			if (document.images[im].alt=="Product Image"||document.images[im].alt=="true"||(document.images[im].src.indexOf('product_images')>0 && document.images[im].src.indexOf('/spacer.gif')==-1))
				return document.images[im];
}

function checkBFModExclusion(curFam){
	try {
		if (thisFamilyExcluded===false || thisFamilyExcluded===true) return thisFamilyExcluded;
	} catch (err) { }
	return false;
}

function findSwap(arr, txt)
{
	for(var i=0; i<arr.length; i++)
		if(arr[i][0]==txt) return arr[i][1];
	return txt;
}
// function bxfamMod is the main Family Function
function bxfamMod(){
	if (!curFam) return;
	if (!document.forms['ProdSel']) return false;
    var sarftmp = navigator.userAgent;
if (sarftmp.indexOf("Safari")>-1) {
thisFamilyExcluded=true;
}
	if (checkBFModExclusion(curFam)==true) return false;

	var gForm = document.forms['ProdSel'];
	var gFormElm = gForm.nsItemSelect?gForm.nsItemSelect.options:undefined;
	if (gFormElm==undefined) return false;

	var prodTmp;
	var styleOpts = "";
	var outStyle;
	var icount;

	icount=0;

	for (var i=0; i<gFormElm.length; i++){
		try {
			if (gFormElm[i].innerText.indexOf("NOBO")>-1&&thisFamilyHideNOBO) continue;
		}catch(err) { }
		prodTmp = getHTMLText(gFormElm[i]);
		prodTmp = prodTmp.replace(/\s+/gi," ").replace(/(&nbsp;)+/gi,"^").replace(/\s(\$[^\s]+)\s/,"^$1^").replace(/\s([^\s]+)\^/,"^$1^");
		prodTmp = prodTmp.split("^");

		prodTmp.push(icount);
//		prodTmp.push(gFormElm[i].value);

		prodTmp[0] = escape(prodTmp[0]);
		pushUnique(prodArray,prodTmp[0]);
		if (prodTmp.length<5) {
			members[prodTmp[0]] = new famObj(prodTmp);
		}
		if (prodTmp.length>4) {
			if (!members[prodTmp[0]]) members[prodTmp[0]] = new Object();
			members[prodTmp[0]][prodTmp[1]] = new famObj(prodTmp);
		}

		icount += 1
	}

	try {
		if(!(famNoSort==true))
			prodArray.sort(bSort);
	} catch(err) { prodArray.sort(bSort); }
	preloadStyleArray = prodArray;
	setTimeout("preloadDropdownImages(preloadStyleArray)",50);

	for (var i=0; i<prodArray.length; i++)
	{
		outStyle = prodArray[i];
		styleOpts+="<OPTION VALUE=\""+outStyle+"\">";
		try {
			if(famStyles!=undefined) {
				if (typeof(famStyles[0])=="object")
					outStyle=findSwap(famStyles,outStyle);
				else if(typeof(famStyles[0])=="string")
					outStyle=famStyles[i];
			} else
				outStyle=unescape(outStyle).replace(/_/gi," ");
		}catch(err) {
			outStyle=unescape(outStyle).replace(/_/gi," ");
		}
		outStyle=outStyle.replace(/_/gi," ");
		styleOpts+=outStyle;
		styleOpts+="</OPTION>";
	}
	
	var outHTML = "";
	outHTML+= "<FORM NAME=\"modform\">";
	outHTML+= "<TABLE CELLPADDING=\"0\" CELLSPACING=\"0\" BORDER=\"0\" style=\"margin-top:13px;\">";
	outHTML+= "<TR><TD width=\"140\" style=\"padding-bottom:5px;\"><span class=\"regBold\">Select ";
	try{
		if(famStyle!=undefined)
			outHTML+=famStyle;
		else
			outHTML+="Style";
	}catch(err){outHTML+="Style";}
	outHTML+=":</span></TD><TD width=\"180\" style=\"padding-bottom:5px;\" ID=\"hdrSize\"><span ID=\"hdrSizeB\" style=\"display:none;\" class=\"regBold\">Select ";
	try{
		if(famSize!=undefined)
			outHTML+=famSize;
		else
			outHTML+="Size";
	}catch(err){outHTML+="Size";}
	outHTML+=":</span></TD></TR>";																		 	
	outHTML+= "<TR><TD style=\"padding-top:5px;\" width=\"140\" id=\"styleTD\"><SELECT NAME=\"modStyle\" onchange=\"setupSizes();\"><OPTION VALUE=\"-null-\">Please select...</OPTION>"+styleOpts+"</SELECT></TD><TD style=\"padding-top:5px;\" width=\"180\" ID=\"bdySize\"><span ID=\"bdySizeB\" style=\"display:none;\"><SELECT NAME=\"modSize\" ONCHANGE=\"selectProd()\"><OPTION VALUE=\"-null-\">Please select...</OPTION></SELECT></span></TD></TR>";
	outHTML+= "<TR><TD style=\"padding-top:15px;\"><span class=\"regBold\">Price:</span></TD><TD width=\"180\" style=\"padding-top:15px;\"><span class=\"regBold\"></span></TD></TR>";
	outHTML+= "<TR><TD CLASS=\"regText\" ID=\"modprice\">Please select above...</TD><TD CLASS=\"regText\" ID=\"modstatus\"></TD></TR>";
	outHTML+= "</TABLE>";
	outHTML+= "</FORM>";
	gForm.style.display="none";
	document.getElementById("formdiv").parentNode.innerHTML += outHTML;
	document.forms['modform'].modStyle.selectedIndex = 0;
	//alert(listChildren(document.forms['modform'].modStyle));
	document.forms['modform'].modStyle.onkeydown=changeMe;
	document.forms['modform'].modStyle.onchange=setupSizes;
	document.forms['modform'].modSize.onchange=selectProd;
	document.forms['modform'].modSize.onkeydown=changeMe;
	window.top.setMatch=2;
}
function changeMe(e)
{
	if (e==undefined) e = window.event;
	if (e==undefined) return;
	if (e.keyCode<37||e.keyCode>40) return;
	if (e.srcElement) e = e.srcElement;
	if (e.target) e = e.target;
	if(e.name=="modStyle")
		setTimeout("setupSizes(document.forms['modform'].modStyle)",10);
	else
		setTimeout("selectProd(document.forms['modform'].modSize)",10);
}
// function selectProd is called when the size option is changed
function selectProd(e)
{
	if (e==undefined) e = window.event;
	if (e==undefined) return;
	if (e.srcElement) e = e.srcElement;
	if (e.target) e = e.target;
	if (arguments[1]) e.options.selectedIndex = arguments[1];
	if (e.value=="-null-")
		return clearSelection();
	var memb = members[e.form.modStyle.value][e.value];
	if (!memb.price) return;
	members.lastSize=e.value;
	var modprice = document.getElementById("modprice");
	var modstatus = document.getElementById("modstatus");
	if (modprice.innerHTML!=memb.price)
		modprice.innerHTML = memb.price;
	var membAvailability ="";
  switch(memb.avail) {
     case "Avail":
        membAvailability = "In Stock Ready to Ship";
        break;
    case "OOS":
        membAvailability = "Usually Ships in 2 to 5 Days";
        break;
    case "NOBO":
        membAvailability = "Sold Out";
        break;
    case "NLA":
        membAvailability = "No Longer Available";
        break;
    default:
        membAvailability = memb.avail.replace("EXP:","Expected: ");
        break;
  }
  membAvailability = "";
	if (modstatus.innerHTML!=membAvailability) {
		modstatus.innerHTML = membAvailability;
	}
	document.forms['ProdSel'].nsItemSelect.selectedIndex = memb.value;
}
function clearSelection()
{
	var modprice = document.getElementById("modprice");
	var modstatus = document.getElementById("modstatus");
	if (modprice.innerHTML!="Please select above...")
		modprice.innerHTML = "Please select above...";
	if (modstatus.innerHTML!="")
		modstatus.innerHTML = "";
	document.forms['ProdSel'].nsItemSelect.selectedIndex = -1;
}
// function setupSizes is called when the style option is changed
function setupSizes(e)
{
	if (e==undefined) e = window.event;
	if (e==undefined) return;
	if (e.srcElement) e = e.srcElement;
	if (e.target) e = e.target;
	swapImageByNum(e.selectedIndex);
	if (e.value=="-null-") {
		clearSelection();
		e.form.modSize.selectedIndex = 0;
		
		if(getBrowser()=="Firefox"||getBrowser()=="Netscape") {
			document.getElementById("hdrSizeB").style.display = "none";
			document.getElementById("bdySizeB").style.display = "none";
		} else {
// 			hdrSize.style.display="none";
// 			bdySize.style.display="none";
			document.getElementById("hdrSizeB").style.display = "none";
			document.getElementById("bdySizeB").style.display = "none";
		}
		while(e.form.modSize.options.length>1)
			e.form.modSize.options[1] = null;
		return;
	}
	if (!members[e.value]) return;
	var styleObj = members[e.value];
	if (styleObj.price)
	{
	 	var membAvailability ="";
    switch(styleObj.avail) {
     case "Avail":
        membAvailability = "In Stock Ready to Ship";
        break;
    case "OOS":
        membAvailability = "Usually Ships in 2 to 5 Days";
        break;
    case "NOBO":
        membAvailability = "Sold Out";
        break;
    case "NLA":
        membAvailability = "No Longer Available";
        break;
    default:
        membAvailability = styleObj.avail.replace("EXP:","Expected: ");
        break;
  }
  membAvailability = "";
		if(getBrowser()=="Firefox"||getBrowser()=="Netscape") {
			document.getElementById("modprice").innerHTML = styleObj.price;
			document.getElementById("modstatus").innerHTML = membAvailability;
		} else {
			modprice.innerText = styleObj.price;
			modstatus.innerText = membAvailability;
		}
		document.forms['ProdSel'].nsItemSelect.selectedIndex = styleObj.value;
		if(getBrowser()=="Firefox"||getBrowser()=="Netscape") {
			document.getElementById("hdrSizeB").style.display="none";
			document.getElementById("bdySizeB").style.display="none";
		} else {
// 			hdrSize.style.display="none";
// 			bdySize.style.display="none";
      document.getElementById("hdrSizeB").style.display="none";
			document.getElementById("bdySizeB").style.display="none";
		}
		while(e.form.modSize.options.length>1)
			e.form.modSize.options[1] = null;
		e.form.modStyle.blur();
		e.form.modStyle.focus();
	} else {
		while (e.form.modSize.options.length>1)
			e.form.modSize.options[1] = null;
		if(getBrowser()=="Firefox"||getBrowser()=="Netscape") {
			document.getElementById("hdrSizeB").style.display="";
			document.getElementById("bdySizeB").style.display="";
		} else {
// 			hdrSize.style.display="block";
// 			bdySize.style.display="block";
			document.getElementById("hdrSizeB").style.display="";
			document.getElementById("bdySizeB").style.display="";
		}
		var i = 0;
		var selectioned = false;
		var toSelect = 0;
		var styles = new Array()
		for (var kid in styleObj)
			styles.push(styleObj[kid].size);
		try{
			if(!(famNoSort==true))
				styles.sort(bSort);
		} catch(err) { styles.sort(bSort); }
		var outSize = "";
		for (var kidi=0; kidi<styles.length; kidi++)
		{
			i++;
			var kid = styles[kidi];
			outSize = styleObj[kid].size.replace(/_/gi," ");
			try {
				if(famSizes!=undefined) {
					if(typeof(famSizes[0])=="object")
						outSize = findSwap(famSizes, outSize);
					else
						outSize = famSizes[i-1];
				}
			} catch(err) { }
			e.form.modSize.options[i] = new Option(outSize, styleObj[kid].size);
			e.form.modSize.options[i].innerHTML = outSize;
			if(selectioned) continue;
			if (styleObj[kid].size == members.lastSize) {
				toSelect = i;
				//alert(members.lastSize);
				//e.form.modSize.options[i].selected=true;
				selectioned = true;
			}
		}
		//window.status = toSelect + ":" + members.lastSize;
		selectProd(e.form.modSize, toSelect);
		e.form.modStyle.blur();
		e.form.modStyle.focus();
		//for (var kid=0; kid<styleObj.length; kid++)
		//	e.form.modSize.options[kid+1] = new Option(styleObj[kid].size, styleObj[kid].size.replace(/_/gi," "));
	}
	try {
	if (window.top.setMatch!=1) {
	 var variationName = e.form.modStyle.options[e.form.modStyle.selectedIndex].text;
	 try {
   if (famStyles!=undefined) {
	  for (chkOverride=0;chkOverride<famStyles.length;chkOverride++) {
     if (variationName==famStyles[chkOverride][1]) {
       variationName = famStyles[chkOverride][0];
     }
    }
	 }
	 }
	 catch (err) {
	 }
	 variationName = variationName.replace(new RegExp( "/", "g" ),"-");
	 variationName = variationName.replace(new RegExp( " ", "g" ),"_");
	 selectCategory("VARIATION",variationName);
	 window.top.setMatch=2;
	} else {
	 window.top.setMatch=0;
	}
	}
	catch (err) {
	}
}
function matchVariation (params) {
var sarftmp = navigator.userAgent;
if (sarftmp.indexOf("Safari")>-1) {
} else {
if (window.top.setMatch!=2) {
  var variationId = params.split(":")[5];
  var modS = document.getElementById("modStyle");
  try {
  if (famStyles!=undefined) {
    variationIdB = variationId;
    variationId = variationId.replace(new RegExp( "-", "g" ),"/");
    for (chkOverride=0;chkOverride<famStyles.length;chkOverride++) {
      if (variationIdB==famStyles[chkOverride][0]||variationId==famStyles[chkOverride][0]) {
        variationId = famStyles[chkOverride][1];
        variationId = variationId.replace(new RegExp( "/", "g" ),"-");
        variationId = variationId.replace(new RegExp( " ", "g" ),"_");
      }
    }
  }
  }
  catch (err) {
  }
  for (i=0;i<modS.length;i++) {
    if (modS.options[i].text.replace(new RegExp( " ", "g" ),"_")==variationId.replace(new RegExp( "-", "g" ),"/")||modS.options[i].text.replace(new RegExp( " ", "g" ),"_")==variationId) {
    	modS.options[i].selected = true;
    	window.top.setMatch = 1;
    	setTimeout("setupSizes(document.forms['modform'].modStyle)",10);
    }
  }
} else {
  window.top.setMatch=0;
}
}
}

function famObj(arr)
{
	this.style = arr[0];
	this.size = arr.length>4?arr[1]:undefined;
	this.price = arr[arr.length>4?2:1];
	this.avail = arr[arr.length>4?3:2];
	this.value = arr[arr.length>4?4:3];
	return this;
}

// The obj argument should be a TD or other object that has an innerText
// Opera for some reason puts in the innerHTML instead, so this function
// gets the text attribute if that happens
function getCleanText( obj )
{
	if (typeof(obj)!="object") return "";
	if (obj.text)
		return obj.text;
	if (obj.textContent)
		return obj.textContent;
	return obj.innerText;
}
// Function getHTMLText is like getCleanText but returns HTML instead of clean text
function getHTMLText( obj )
{
	if (typeof(obj)!="object") return "";
	if (obj.innerHTML)
		return obj.innerHTML;
	else
		return obj.text;
}
// Function bSort is used to sort friendly names for families
// This is a VERY necessary function, do not delete
function bSort(a,b)
{
	//a = firstWord(a);
	//b = firstWord(b);
	if(a==undefined||b==undefined) return 0;
	var isASize = -1, isBSize = -1;
	var aStr = "^"+ltrim(a).split("_")[0]+"^";
	var bStr = "^"+ltrim(b).split("_")[0]+"^";
	isASize=sizesList.indexOf(aStr.toUpperCase());
	isBSize=sizesList.indexOf(bStr.toUpperCase());
	//alert(aStr + "::" + isASize+"\n"+bStr + "::" + isBSize);
	
	if (isASize>-1 && isBSize>-1)
	{
		if(isASize!=isBSize)
			return isASize-isBSize;
		else
		{
			if(aStr.length>a.length||bStr.length>b.length)
				return 0;
			else
				return bSort(a.substr(aStr.length),b.substr(bStr.length));
		}
	}

	// If they are both numbers, sort them numerically
	if (isNaN(a)==false&&isNaN(b)==false)
		return a-b;

	// Check for a slash (for tires, then recursevely sorts)
	if (aStr.indexOf("/")>-1&&bStr.indexOf("/")>-1)
		return tireSort(a,b);
	
	// Try comparing to get the number from the string
	var firstDiff = compare(a,b);
	try {
	if (firstDiff>0 && !isNaN(a.substr(firstDiff,1))&&!isNaN(b.substr(firstDiff,1)))
	{
		var num1 = "";
		var num2 = "";
		for (var i=firstDiff; i<a.length; i++)
		{
			if (isNaN(a.substr(i,1))) break;
			num1+=a.substr(i,1);
		}
		for (var i=firstDiff; i<b.length; i++)
		{
			if (isNaN(b.substr(i,1))) break;
			num2+=b.substr(i,1);
		}
		return num1-num2;
	}
	} catch(err) { }

	// Otherwise, sort them alphabetically
	if (a<b) return -1;
	if (a>b) return 1;
	return 0;
}
function tireSort(a,b)
{
	if(a.indexOf("/")==-1||b.indexOf("/")==-1) return bSort(a,b);
	if((a.indexOf("x",a.indexOf("/"))>-1||a.indexOf("-",a.indexOf("/"))>-1)&&(b.indexOf("x",b.indexOf("/"))>-1||b.indexOf("-",b.indexOf("/"))>-1))
	{
		var as1 = a.substr((a.indexOf("-",a.indexOf("/"))>-1?a.indexOf("-",a.indexOf("/")):a.indexOf("x",a.indexOf("/")))+1);
		var as2 = a.substr(0,a.indexOf("/"));
		var as3 = a.substring(a.indexOf("/")+1,a.length-as1.length-1);
		var bs1 = b.substr((b.indexOf("-")>-1?b.indexOf("-",b.indexOf("/")):b.indexOf("x",b.indexOf("/")))+1);
		var bs2 = b.substr(0,b.indexOf("/"));
		var bs3 = b.substring(b.indexOf("/")+1,b.length-bs1.length-1);
		if(as1>bs1) return 1;
		if(as1<bs1) return -1;
		if(as2>bs2) return 1;
		if(as2<bs2) return -1;
		if(as3>bs3) return 1;
		if(as3<bs3) return -1;
		return 0;
	} else
		return bSort(a.substr(0,a.indexOf("/")),b.substr(0,b.indexOf("/")));
}
// Function compare is used in bSort (as well as other functions)
// This function is VERY necessary, do not delete
function compare(str1, str2)
{
	if (str1==undefined||str2==undefined) return 0;
	if (typeof(str1)!="string"||typeof(str1)!="string") return 0;
	for (var i=0; i<str1.length; i++)
		if (str1.charAt(i)!=str2.charAt(i)) return i;
	return str1.length;
}

// Function indexOfCharCode is used somewhat like String.indexOf, but you can use
// Character codes instead of strings.
// This function is necessary for Opera to correctly parse out words for friendly names
function indexOfCharCode(str, num)
{
	if (typeof(str)!="string")return -1;
	if (typeof(num)!="number")return -1;
	for (var i=0; i<str.length; i++)
		if (str.charCodeAt(i)==num) return i;
	return -1;
}

//</script>
