Here is my sort function. You can define the sort order in any way.
You can adjust the sort order to your needs.
var SortOrder1 = "A,Ä,B,C,D,E,F,G,H,I,J,K,L,M,N,Ö,O,P,Q,R,S,T,U,Ü,V,W,X,Y,Z,a,ä,b,c,d,e,f,g,h,i,j,k,l,m,n,o,ö,p,q,r,s,t,u,ü,v,w,x,y,z"; // UPPER CASE first
var SortOrder2 = "A,Ä,a,ä,B,C,c,D,d,E,e,é,é,d,F,f,G,g,H,h,I,i,J,j,K,k,L,l,M,m,N,n,O,ô,o,Ö,ö,P,p,Q,q,R,r,S,s,T,t,U,u,Ü,ü,V,v,W,w,X,x,Y,y,Z,z,"; //Alternating upper and lower case containing accents
var SortOrder3 = "A,Ä,a,ä,B,C,c,D,d,E,e,é,é,d,F,f,G,g,H,h,I,i,J,j,K,k,L,l,M,m,N,n,O,o,ô,Ö,ö,P,p,Q,q,R,r,S,s,T,t,U,u,Ü,ü,V,v,W,w,X,x,Y,y,Z,z,"; //swapped "o" and "ô"
var aNames = ['Käfer', 'côte', 'Bären', 'küssen', 'Kasimir','coté', 'analog', 'Ähnlich', 'Äpfel'];
BubbleSort(aNames,SortOrder1);
$.writeln ("------------ UPPERCASE first");
$.writeln (aNames.join("\n"));
BubbleSort(sNamen,SortOrder2);
$.writeln ("------------ Alternating upper and lower case");
$.writeln (sNamen.join("\n"));
BubbleSort(sNamen,SortOrder3);
$.writeln ("------------ swapped o");
$.writeln (sNamen.join("\n"));
function BubbleSort(faSortArray,fSortOrder)
{
if ((faSortArray.constructor.name != "Array") || (fSortOrder.constructor.name != "String"))
{
alert ("Invalid constructor");
return;
}
var swapped, temp;
do
{
swapped = false;
for (var i=0; i < faSortArray.length-1; i++)
{
if (CompareString(faSortArray[i],faSortArray[i+1],fSortOrder) == 1)
{
temp = faSortArray[i];
faSortArray[i] = faSortArray[i+1];
faSortArray[i+1] = temp;
swapped = true;
}
}
} while (swapped);
return faSortArray;
}
function CompareString(String1,String2,fSortOrder)
{
var result = 0;
for (var i = 0; i <= String1.length;i++)
if (String1.charAt(i) != String2.charAt(i))
{
var PosInString1 = fSortOrder.indexOf(String1.charAt(i));
var PosInString2 = fSortOrder.indexOf(String2.charAt(i));
if (PosInString1 > PosInString2)
{
result = 1;
}
else
{
result = 2;
}
break;
}
return result;
}