/*
	Copyright (c) 2004-2009, The Dojo Foundation All Rights Reserved.
	Available via Academic Free License >= 2.1 OR the modified BSD license.
	see: http://dojotoolkit.org/license for details
*/


if(!dojo._hasResource["dojo.data.util.sorter"]){
dojo._hasResource["dojo.data.util.sorter"]=true;
dojo.provide("dojo.data.util.sorter");
dojo.data.util.sorter.basicComparator=function(a,b){
var r=-1;
if(a===null){
a=undefined;
}
if(b===null){
b=undefined;
}
if(a==b){
r=0;
}else{
if(a>b||a==null){
r=1;
}
}
return r;
};
dojo.data.util.sorter.createSortFunction=function(_1,_2){
var _3=[];
function _4(_5,_6,_7,s){
return function(_8,_9){
var a=s.getValue(_8,_5);
var b=s.getValue(_9,_5);
return _6*_7(a,b);
};
};
var _a;
var _b=_2.comparatorMap;
var bc=dojo.data.util.sorter.basicComparator;
for(var i=0;i<_1.length;i++){
_a=_1[i];
var _c=_a.attribute;
if(_c){
var _d=(_a.descending)?-1:1;
var _e=bc;
if(_b){
if(typeof _c!=="string"&&("toString" in _c)){
_c=_c.toString();
}
_e=_b[_c]||bc;
}
_3.push(_4(_c,_d,_e,_2));
}
}
return function(_f,_10){
var i=0;
while(i<_3.length){
var ret=_3[i++](_f,_10);
if(ret!==0){
return ret;
}
}
return 0;
};
};
}
