﻿function SortTable(m,cs)
{
	//cs: wether change sort field
	var isN=IsNumber(m);
	if(cs==undefined || cs==true)
	{
		if(lastCol==m)
		{
			if(lastSort=="▼")
				sort="▲";
			else
				sort="▼";
		}
		else
			sort=GetFD(m);
	}
	var arrData=new Array();
	var x,y;
	arrData=CopyData(arCol[m]);
	ReSetIndex();
	for(var i=0;i<arrData.length-1;i++) 
	{
		for(var j=i+1;j<arrData.length;j++) 
		{
			if(sort=="▼")
			{
				if(IsSmall(arrData[i],arrData[j],isN))
				{
					SwapData(i,j,arrData);
					SwapIndex(i,j);
				}
			}
			else	
			{
				if(IsBig(arrData[i],arrData[j],isN))
				{
					SwapData(i,j,arrData);
					SwapIndex(i,j);
				}
			}	
		}
	}
	BuildTable();
		
	lastCol=m;
	lastSort=sort;
	SetHeader(m);
}

function ReSetIndex()
{
	for(var i=0;i<arIndex.length;i++)
	{
		arIndex[i]=i;
	}
}
function CopyData(a2)
{
	var a1=new Array();
	for(var i=0;i<a2.length;i++)
		a1[i]=a2[i];
	return a1;
}
function IsSmall(v1,v2,isN)
{
	if(v1=="--")
		return true;
	else
		if(v2=="--")
		return false;
	else
		if(isN)
		{
			if(Number(v1)<Number(v2))
				return true;
			else
				return false;
		}
		else
		{
			if(v1.localeCompare(v2)<0) 
				return true;
			else
				return false;
		}
}
function IsBig(v1,v2,isN)
{
	if(v1=="--")
		return false;
	else
		if(v2=="--")
		return true;
	else
		if(isN)
		{
			if(Number(v1)>Number(v2))
				return true;
			else
				return false;
		}
		else
		{
			if(v1.localeCompare(v2)>0) 
				return true;
			else
				return false;
		}
}
function SwapIndex(v1,v2)
{
	var tmp=arIndex[v1];
	arIndex[v1]=arIndex[v2];
	arIndex[v2]=tmp;
}
function SwapData(v1,v2,arrData)
{
	var tmp=arrData[v1];
	arrData[v1]=arrData[v2];
	arrData[v2]=tmp;
}
function AddPercent(o)
{
	if(o==null || o==undefined || o=="")
		return "--";
	else
		if(o!="--")
		return o+"%";
	else
		return o;
}
