var sizelist=" ,XXX-Small,XXXS,YXXS,XX-Small,XXS,YXXS,X-Small,XS,YXS,Small,S,YS,Medium,M,YM,Large,L,YL,X-Large,XL,YXL,XX-Large,XXL,YXXL,XXX-Large,YXXXL,8,10-12,14-16,18-20, ";

function sizechart(x){return sizelist.indexOf("," + String(x) + ",");}

function numsubstr(fs){
	var not_done = true;
	var i=1;
	var t=fs.charAt(0);
	while ((not_done) && (fs.length >= i)){
		if (isNaN(t+fs.charAt(i))){not_done = false;}else{t=t+fs.charAt(i);}
		i++;
	}
	if (isNaN(t)){t=0;}  //if, for some reason, there is no integer at all, make it a zero.
	return t;
}

function smart_sort(a,b){
	var inda=sizelist.indexOf(a);
	var indb=sizelist.indexOf(b);
	if ((inda >= 0) || (indb >= 0)){
		if((inda >= 0) && (indb >= 0)){
			if (sizechart(a)>=sizechart(b)){return 1;}else{return -1;}
		}else{
			if(inda >= 0){
				if(isNaN(b)){return -1;}else{return 1;}
			}else{
				if(isNaN(a)){return 1;}else{return -1;}
			}
		}
	}else{
		if (isNaN(a) || isNaN(b)){
			if (a>=b){return 1;}else{return -1;}
		}else{
			if (parseInt(a)>=parseInt(b)){return 1;}else{return -1;}
		}
	}
}

function sizechart_sort(r,s){
	//console.log('sizechart: ' + r + " : " + s);
	if (parseInt(sizechart(r))>=parseInt(sizechart(s))){return 1;}else{return -1;}
	
}

function float_sort(p,q){
	//console.log('float: ' + p + " : " + q);
	var flt1, flt2;
	if (isNaN(p)){flt1=numsubstr(p);}else{flt1=p;}
	if (isNaN(q)){flt2=numsubstr(q);}else{flt2=q;}
	if (parseFloat(flt1)>=parseFloat(flt2)){return 1;}else{return -1;}
}

function integer_sort(m,n){
	//console.log('integer: ' + m + " : " + n);
	var int1, int2;
	if (isNaN(m)){int1=numsubstr(m);}else{int1=m;}
	if (isNaN(n)){int2=numsubstr(n);}else{int2=n;}
	if (parseInt(int1)>=parseInt(int2)){return 1;}else{return -1;}
}

function string_sort(j,k){if (j>=k){return 1;}else{return -1;}}

function double_sort(a1,b1,a2,b2){
	var intval = 1; //intval is the value to be returned.  It starts at 1 and is only changed if a is NOT greater than b.
	//If a1 equals b1 then look at a2 & b2.  Otherwise look at a1&b1.
	var regexp = /[0-9]/;
	
	if(a1==b1){
		//a1=b1, so look at a2<>b2
		
		//SECOND TERM SORT:
		if(regexp.test(a2) || regexp.test(b2)){
			intval = float_sort(a2,b2);
		}else{
			intval = sizechart_sort(a2,b2);
		}
	}else{
		//a1&b1 are different, if b1>a1 then make intval=-1.
		
		//FIRST TERM SORT:3
		//console.log((a1) + " : " + (b1));
		if(regexp.test(a1) || regexp.test(b1)){
			if(a1.indexOf('$') > -1 || a1.indexOf('$') > -1){
				a1 = a1.substring(1, a1.length);
				b1 = b1.substring(1, b1.length);
				intval = float_sort(a1,b1);
			//	console.log('$ on' + (a1) + " : " + (b1));
			}else{
				intval = float_sort(a1,b1);
			}
		}else{
			intval = sizechart_sort(a1,b1);
		}
		
	}
	return intval;
}

function UUSort(a,b){return double_sort(a.attr_value1,b.attr_value1,a.attr_value2,b.attr_value2);}
//-->