function sort2d(arrayName, element, num, cs) {
	if (num) {
		for (var i=0; i<(arrayName.length-1); i++) {
			for (var j=i+1; j<arrayName.length; j++) {
				if (parseInt(arrayName[j][element],10) < parseInt(arrayName[i][element],10)) {
					var dummy = arrayName[i];
					arrayName[i] = arrayName[j];
					arrayName[j] = dummy;
				}
			}
		}
	} else {
		for (var i=0; i<(arrayName.length-1); i++) {
			for (var j=i+1; j<arrayName.length; j++) {
				if (cs) {
					if (arrayName[j][element].toLowerCase() < arrayName[i][element].toLowerCase()) {
						var dummy = arrayName[i];
						arrayName[i] = arrayName[j];
						arrayName[j] = dummy;
					}
				} else {
					if (arrayName[j][element] < arrayName[i][element]) {
						var dummy = arrayName[i];
						arrayName[i] = arrayName[j];
						arrayName[j] = dummy;
					}
				}
			}
		}
	}
}

/* sort the list!
by = 0 - order by text (default)
by = 1 - order by value
by = 2 - order by color
by = 3 - order by background color
by = 4 - order by class name
by = 5 - order by id
num = if true sorts numbers e.g. 2 before 10
cs = casesensitive e.g. a before Z*/
function listsort(obj, by, num, cs) { /*updated from version 1.2*/
	obj = (typeof obj == "string") ? document.getElementById(obj) : obj;
	by = (parseInt("0" + by) > 5) ? 0 : parseInt("0" + by);
	if (obj.tagName.toLowerCase() != "select" && obj.length < 2)
		return false;
	var elements = new Array();
	for (var i=0; i<obj.length; i++) {
		elements[elements.length] = new Array((document.body.innerHTML ? obj[i].innerHTML : obj[i].text), obj[i].value, (obj[i].currentStyle ? obj[i].currentStyle.color : obj[i].style.color), (obj[i].currentStyle ? obj[i].currentStyle.backgroundColor : obj[i].style.backgroundColor), obj[i].className, obj[i].id, obj[i].selected);
	}
	sort2d(elements, by, num, cs);
	for (i=0; i<obj.length; i++) {
		if (document.body.innerHTML) obj[i].innerHTML = elements[i][0];
		else obj[i].text = elements[i][0];
		obj[i].value = elements[i][1];
		obj[i].style.color = elements[i][2];
		obj[i].style.backgroundColor = elements[i][3];
		obj[i].className = elements[i][4];
		obj[i].id = elements[i][5];
		obj[i].selected = elements[i][6];
	}
}



/*
This function is called from an item page with 2 drop downs on it from the onchange event
of the first drop down. The function changes the values in the second drop down depending 
on what is selected in the first.
*/
function VariantDropDowns(x)
{
	for (m = dd2.options.length-1; m > 0; m--)
		dd2.options[m]=null;

	for ( i = 0; i < group[x].length; i++)
	{
		dd2.options[i] = new Option(group[x][i].text, group[x][i].value);
	}

	dd2.options[0].selected = true;
	GetVarID();
}

/*
This function sets the variant control to have the correct 
variant id for the currently selected combination
*/
function GetVarID()
{
	var a = dd1[dd1.options.selectedIndex].text;
	var b = dd2[dd2.options.selectedIndex].text;
	dd1[dd1.options.selectedIndex].value = varGroup[a][b];
	document.getElementById('price').innerHTML = varGroupPrice[a][b];
	if (document.getElementById('priceper100g') != null)
		document.getElementById('priceper100g').innerHTML = varPricePer100g[a][b];
}

/*
This function displays the correct prices
for the currently selected variant
*/
function SetVarPrices()
{
	var key;
	if (dd1.options != null)
		key = dd1[dd1.options.selectedIndex].value;
	else
		key = dd1.value;

	document.getElementById('price').innerHTML = varPrice[key];
	if (document.getElementById('priceper100g') != null)
		document.getElementById('priceper100g').innerHTML = varPricePer100g[key];
}
