#ifndef DJPOINTS
#define DJPOINTS

void top_djpoint_10(usermaster &allusers, const apstring filename, apstring title);
	//prints the list of all users' 10th djpoints totals, ranked
void top_djpoint_10(usermaster &allusers, const apstring filename, apstring title)
{
	//figure out SP+DP totals
   //NOTE: this could be easily tweaked for better efficiency, but it's less ambiguous this way
	for(int i=0; i<allusers.userlist.length(); i++)
   {
		allusers.userlist[i].data[_("djpoint_10")][0]=allusers.userlist[i].data[_("djpoint_10")][1]+allusers.userlist[i].data[_("djpoint_10")][2];
		allusers.userlist[i].data[_("AAA_count")][0]=allusers.userlist[i].data[_("AAA_count")][1]+allusers.userlist[i].data[_("AAA_count")][2];
		allusers.userlist[i].data[_("AA_count")][0]=allusers.userlist[i].data[_("AA_count")][1]+allusers.userlist[i].data[_("AA_count")][2];
		allusers.userlist[i].data[_("A_count")][0]=allusers.userlist[i].data[_("A_count")][1]+allusers.userlist[i].data[_("A_count")][2];
		allusers.userlist[i].data[_("B_count")][0]=allusers.userlist[i].data[_("B_count")][1]+allusers.userlist[i].data[_("B_count")][2];
		allusers.userlist[i].data[_("C_count")][0]=allusers.userlist[i].data[_("C_count")][1]+allusers.userlist[i].data[_("C_count")][2];
		allusers.userlist[i].data[_("D_count")][0]=allusers.userlist[i].data[_("D_count")][1]+allusers.userlist[i].data[_("D_count")][2];
		allusers.userlist[i].data[_("E_count")][0]=allusers.userlist[i].data[_("E_count")][1]+allusers.userlist[i].data[_("E_count")][2];
		allusers.userlist[i].data[_("F_count")][0]=allusers.userlist[i].data[_("F_count")][1]+allusers.userlist[i].data[_("F_count")][2];
		allusers.userlist[i].data[_("perfect")][0]=allusers.userlist[i].data[_("perfect")][1]+allusers.userlist[i].data[_("perfect")][2];
		allusers.userlist[i].data[_("combo")][0]=allusers.userlist[i].data[_("combo")][1]+allusers.userlist[i].data[_("combo")][2];
		allusers.userlist[i].data[_("clear")][0]=allusers.userlist[i].data[_("clear")][1]+allusers.userlist[i].data[_("clear")][2];
		allusers.userlist[i].data[_("play")][0]=allusers.userlist[i].data[_("play")][1]+allusers.userlist[i].data[_("play")][2];
   }

	for(int mode=0; mode<3; mode++)
   {
   	for(int STEP=65535; STEP>=1; STEP/=2)							//sort users by points for each mode
		   for(int h=0; h<STEP; h++)										//using shell sort
			   for(int i=STEP+h; i<allusers.userlist.length(); i+=STEP)
			   {
			   	int j=i;
			   	while(j>=STEP && allusers.userlist[j].data[_("djpoint_10")][mode]>allusers.userlist[j-STEP].data[_("djpoint_10")][mode])
			      {
			      	swap(allusers.userlist[j],allusers.userlist[j-STEP]);
			         j-=STEP;
			      }
			   }


   	apstring working_filename=filename;
           if(mode==0) working_filename+=COMBINED;
      else if(mode==1) working_filename+=SINGLE;
      else if(mode==2) working_filename+=DOUBLE;

	   ofstream ouf; ouf.open(working_filename.c_str());

	   ouf<<header(title);

      ouf<<linklist(mode);

	   ouf<<"<center><h1>DJ POINTS (10th)</h1><h2>";
		switch(mode)
      {
      	case 0: ouf<<"SINGLE+DOUBLE"; break;
      	case 1: ouf<<"SINGLE PLAY"; break;
      	case 2: ouf<<"DOUBLE PLAY"; break;
      }

      ouf<<playstyles(filename);

	   int width=5;
	   ouf<<"<table border><tr>\
<td width=6%>Rank</td>\
<td width=12%>User</td>\
<td width=12%>PTS</td>\
<td width="<<width<<"%><img src=\"AAA.gif\"></td>\
<td width="<<width<<"%><img src=\"AA.gif\"></td>\
<td width="<<width<<"%><img src=\"A.gif\"></td>\
<td width="<<width<<"%><img src=\"B.gif\"></td>\
<td width="<<width<<"%><img src=\"C.gif\"></td>\
<td width="<<width<<"%><img src=\"D.gif\"></td>\
<td width="<<width<<"%><img src=\"E.gif\"></td>\
<td width="<<width<<"%><img src=\"F.gif\"></td>\
<td width="<<width<<"%></td>\
<td width="<<width<<"%>P</td>\
<td width="<<width<<"%>FC</td>\
<td width="<<width<<"%>clr</td>\
<td width="<<width<<"%>play</td>\
<td width="<<width<<"%>total</td></tr>";

		int rank=0;
		for(int i=0; i<allusers.userlist.length(); i++)
      	if(allusers.userlist[i].data[_("djpoint_10")][mode]>0)
		      ouf<<"<tr>"
	            <<"<td>"<<++rank<<"</td>"
	            <<djlink(allusers.userlist[i])
		      	<<"<td><font color=#ffcc44>"<<allusers.userlist[i].data[_("djpoint_10")][mode]<<"</td>"
		      	<<"<td>"<<allusers.userlist[i].data[_("AAA_count")][mode]<<"</td>"
		      	<<"<td>"<<allusers.userlist[i].data[_("AA_count")][mode]<<"</td>"
		      	<<"<td>"<<allusers.userlist[i].data[_("A_count")][mode]<<"</td>"
		      	<<"<td>"<<allusers.userlist[i].data[_("B_count")][mode]<<"</td>"
		      	<<"<td>"<<allusers.userlist[i].data[_("C_count")][mode]<<"</td>"
		      	<<"<td>"<<allusers.userlist[i].data[_("D_count")][mode]<<"</td>"
		      	<<"<td>"<<allusers.userlist[i].data[_("E_count")][mode]<<"</td>"
		      	<<"<td>"<<allusers.userlist[i].data[_("F_count")][mode]<<"</td>"
		         <<"<td></td>"
		      	<<"<td>"<<allusers.userlist[i].data[_("perfect")][mode]<<"</td>"
		      	<<"<td>"<<allusers.userlist[i].data[_("combo")][mode]<<"</td>"
		      	<<"<td>"<<allusers.userlist[i].data[_("clear")][mode]<<"</td>"
		      	<<"<td>"<<allusers.userlist[i].data[_("play")][mode]<<"</td>"
		         <<"<td>"<<allusers.userlist[i].data[_("perfect")][mode]+allusers.userlist[i].data[_("combo")][mode]+allusers.userlist[i].data[_("clear")][mode]+allusers.userlist[i].data[_("play")][mode]<<"</td>"
	            <<"</tr>";

	   ouf<<"</table>";

	   ouf<<footer();

	   ouf.close();
	}
}


#endif
