/* jat: 10.SEPT.2007 - added to the sizelist var, and changed the type of sort that gets called in double_sort() */

//*** sizelist var is overridden on product.asp - changes made here will not show on the page
var sizelist=" ,XXX-Small,XX-Small,X-Small,XS,S,Small,SM,M,MED,MD,Medium,L,LG,Large,Xtra Large,XL,X-Large,Xtra XLarge,XXL,XX-Large,Xtra Xtra XLarge,XXXL,XXX-Large,#1,#2,#3,#4,#5,#6,#7,#8,#9,#10,#11,#12,#13,#14,#15,#16,#17,#18,#19,#20,#21,#22,#23,#24,#25,#26, ";

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){if (parseInt(sizechart(r))>=parseInt(sizechart(s))){return 1;}else{return -1;}}

function float_sort(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){
	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.
	var regexp = /[0-9]/;
	//If a1 equals b1 then look at a2 & b2.  Otherwise look at a1&b1.
	if(a1==b1){
		//a1=b1, so look at a2<>b2
		
		//SECOND TERM SORT:
		// jat - if there are numbers in the sort attribute, use float-sort or else use the string sorting guide
		if(regexp.test(a2) || regexp.test(b2)){
			intval=float_sort(a2,b2);
		}else{
			intval=	string_sort(a2,b2);
		}
	}else{
		//a1&b1 are different, if b1>a1 then make intval=-1.
		
		//FIRST TERM SORT:3
		// jat - if there are numbers in the sort attribute, use float-sort or else use the sizechart sorting guide
		if((a1.indexOf('#') > -1) || (b1.indexOf('#') > -1)){
			intval=sizechart_sort(a1,b1);
		}else if(regexp.test(a1) || regexp.test(b1)){
			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);}