var curteam = -1;

function showHideTeam(id) {
   if(curteam>0) {
      var ot = document.getElementById('team_'+curteam);
      ot.style.display = 'none';
   }
   var t = document.getElementById('team_'+id);
   if(curteam != id) {
      t.style.display='';
      curteam = id;
   }
   else {
      t.style.display='none';
      curteam = 0;
   }
}

function showMatches() {
   var str = "";
   var now = new Date();
   var curteams = new Array();

   if(MATCHES.length > 0) {
      str += "<table width='170px' cellspacing=0>\n";
      MATCHES.sort(matchStartSort);
   }

   for(var i in MATCHES) {
      match = MATCHES[i];

      var type = match['type'];
      var team1 = match['team1'];
      var team2 = match['team2'];
      var starttime = new Date(match['start_time']*1000);
      //var endtime = new Date(match['end_time']*1000, true);
      var starttimestr = '';
      //var endtimestr = '';
      if(starttime) starttimestr = formatDate(starttime,true);
      //if(endtime) endtimestr = formatDate(endtime);

      var url = match['scorecard_url']?MATCHPREFIX+match['scorecard_url']:'';
      var info = match['info'];
 
      var style='color:maroon;font-size:10px';
      str += "<tr><td class='playercell' style='font-size:9px;width:"+100+"%'><b style='"+style+"'>";
      if(url) str += "<a target='_blank' href='"+url+"'>";
      str += team1+" vs. "+team2;
      if(info) str += " ("+info+") ";
      if(url) str += "</a>";
      str += "</b><br>";
      str += starttimestr;
      //str += starttimestr + " - " + endtimestr;
      str += "</td></tr>\n";
   }
   str += "</table><br>\n";
   var item = document.getElementById('allmatches');
   if(item) item.innerHTML = str;
}

var COLORS = [ "sienna", "black", "darkgreen", "navy", "teal", "cadetblue", "maroon", "steelblue", "seagreen",
               "purple", "darkslategray", "darkkhaki", "darkgoldenrod", "darkslateblue", "brown", "darkred" ];

//var TCOLORS = [ "darkslategray", "darkslateblue" ];
var TCOLORS = [ "#000", "#666" ];

function showSquads() {
   var str = "";

   str += "<table width='100%' cellspacing=0";
   str += " style='border-right:1px solid #ddd;border-left:1px solid #ddd'><tbody>\n";
   var i=1;
   /*if(curteam < 0) {
	   for(var team in TEAMS) curteam++;
	   curteam += 1;
   }*/
   for(var team in TEAMS) {
      var escteam = escape(team);
      var tid = TEAMIDS[team];

      var defurl = "/modules/SS/bannerimg/Default.gif";
      var bgurl = "/modules/SS/bannerimg/Default2.gif";
      //var bgurl = defurl;
      var xname = "<div style='padding-left:5px;font-weight:bold;font-size:12px'>"+team+"</div>";
      var fgcolor = TCOLORS[(i-1)%2];
      //var fgcolor = COLORS[(i-1)%15];
      //var fgcolor = "darkslategrey";
      if(TEAMLOGOS[team]) {
         bgurl="/modules/SS/bannerimg/"+team+".gif";
         xname = '&nbsp;';
	 fgcolor= '#000';
      }
      str += "<tr><td class='teamheader' style='width:175px;background:url(\""+bgurl+"\"); color:"+fgcolor+"' ";
      str += " onclick='showHideTeam("+i+")'>"+xname+"</td>\n";
      str += "<td class='teamheader' style='width:25px;background:url(\""+defurl+"\");font-weight:bold;' id='teamnum_"+tid+"'>\n";
      str += "<center>0</center></td>\n";
      str += "</tr>\n";
      str += "<tr><td colspan=2 width='100%' id='team_"+i+"' "+(i==curteam ? '':'style="display:none"')+">\n";
      str += "<table width='100%' cellspacing=0><tbody>\n";

      TEAMS[team].sort(playerRoleSort);

      var colspan = 2;
      if(SSSTATUS != "open") colspan++;
      if(SSMODE == "editable") colspan++;
      if(SSMODE == "substitutable") colspan++;

      for(var p in TEAMS[team]) {
         var pid = TEAMS[team][p]['id'];
         var prole = TEAMS[team][p]['role'];
         var pname = PLAYERS[pid]['name'];
         var purl = PLAYERS[pid]['profile_url'];
         var picurl = PLAYERS[pid]['picture_url'];
         var points = PLAYERS[pid]['points'];
         if(!(points+'').match(/\./)) points += '.0';
         if(prole == '') continue;

	 var style = '';
	 if(MYPLAYERS[pid]==tid) {
		 style=" class='selectedPlayer'";
	 }
         str += "<tr id='row_"+pid+"_"+tid+"'"+style+">\n";
	 str += "<td class='playercell' width='10px'><img src='/modules/SS/img/"+prole+".gif' /></td>\n";
         str += "<td class='playercell' width='150px' align='left'><a title='See Cricinfo Profile' target='_blank' href='"+purl+"'>"+pname+"</a></td>\n";

         //if(SSSTATUS != "open")
         //   str += "<td class='playercell' style='width:20px;color:maroon' align='right'><nobr>"+points+"</nobr></td>\n";
         if(SSMODE == "editable") {
	    str += "<td class='playercell' style='width:20px;font-size:10px;font-weight:bold' align='right'>";
	    str += "<a title='Add Player' href='javascript:addPlayer("+tid+","+pid+")'>[+]</a></td>\n";
	 }
         if(SSSTATUS != "open") {
            str += "<td class='playercell' align='right'>";
            str += "<a style='color:maroon;font-weight:bold;text-decoration:underline;font-size:11px' ";
	    str += "title='Show Player Stats' href='javascript:showPlayerDetails("+pid+",\"xplayer_\")'><nobr>"+points+"</nobr></a>";
	    str += "</td>\n";
         }
         if(SSMODE == "substitutable") {
	        str += "<td class='playercell' style='width:20px;font-size:10px;font-weight:bold' align='right'>";
		if(MYPLAYERS[pid]!=tid) {
			str += "<a title='Substitute Player' href='javascript:chooseSub("+pid+","+tid+",\""+prole+"\")'>[+]</b>\n";
		}
		str += "</td>\n";
	 }
         if(SSSTATUS != "open") {
            str += "</tr><tr id='xplayer_details_row_"+pid+"' "+style+" style='display:none'>\n";
            str += "<td class='playercell' id='xplayer_details_"+pid+"' colspan="+colspan+"></td>";
         }
	 str += "</tr>\n";
      }
      str += "</tbody></table></td></tr>\n";
      i++;
   }
   str += "</tbody></table>\n";
   var item = document.getElementById('allteams');
   if(item) item.innerHTML = str;
}

function setTeamNumbers(teamid) {
   var teamnum = 0;
   for(var i in MYPLAYERS) {
      if(SUBSTITUTES[i]) {
         var tid = SUBSTITUTES[i]['tid'];
         if(tid == teamid) teamnum++;
      }
      else {
         var tid = MYPLAYERS[i];
         if(tid == teamid) teamnum++;
      }
   }
   var item = document.getElementById('teamnum_'+teamid);
   if(item) item.innerHTML = "<center>"+teamnum+"</center>\n";
}

function setAllTeamNumbers() {
   for(var team in TEAMS) {
      setTeamNumbers(TEAMIDS[team]);
   }
}

var SUBSTITUTES = new Array();
var ALTSUBS = new Array();
var curMyPlayer = null;
var curSub = null
var numsubs = 0;

function chooseMyPlayer(pid,tid,role) {
	curMyPlayer = {'id':pid,'tid':tid,'role':role};
	if(curSub) {
		substitutePlayer(curMyPlayer,curSub);
		curSub = null;
		curMyPlayer = null;
	} else {
		showMyPlayers();
	}
}

function chooseSub(pid,tid,role) {
	if(ALTSUBS[pid]) {
		alert('Already substituted');
		return;
	}
	var sub = {'id':pid,'tid':tid,'role':role};
	var item = document.getElementById("row_"+sub['id']+"_"+sub['tid']);
	if(item) item.className="subrow";

	if(curMyPlayer) {
		substitutePlayer(curMyPlayer,sub);
		curSub = null;
		curMyPlayer = null;
	}
	else if(curSub) {
		var item = document.getElementById("row_"+curSub['id']+"_"+curSub['tid']);
		if(item) item.className="";
		curSub = sub;
	}
	else {
		curSub = sub;
	}
}

function substitutePlayer(myplayer,newplayer) {
	numsubs++;
	SUBSTITUTES[myplayer['id']] = newplayer;
	ALTSUBS[newplayer['id']] = myplayer;
	showMyPlayers();
	setAllTeamNumbers();
}

function deleteSubstitution(pid,subid) {
	var sub = SUBSTITUTES[pid];
	if(sub['id'] != subid) return;
	numsubs--;
	var item = document.getElementById("row_"+sub['id']+"_"+sub['tid']);
	if(item) item.className="";
	delete SUBSTITUTES[pid];
	delete ALTSUBS[subid];
	showMyPlayers();
	setAllTeamNumbers();
}

function explainAdjustment(pid,subid) {
	var str = "The 'Adjustment' for the substition is done so that the current points of the new player\n";
	str += "do not affect your current total (apart from reducing it by "+SUBCOST+" points)\n";
	alert(str);
}

var numplayer = 0;
var numbatsman = 0;
var numkeeper = 0;
var numallrounder = 0;
var numbowler = 0;
var teamsize = new Array();

function checkRules() {
   var map = {'batsman':'batsmen','bowler':'bowlers','allrounder':'allrounders','keeper':'keepers'};
   var ok = true;
   
   for(var i in map) {
      eval("var num = num"+i+";");
      var metric_min = 'min_'+map[i]+'_in_squad'; 
      var metric_max = 'max_'+map[i]+'_in_squad';

      var item_min = document.getElementById(metric_min);
      var item_max = document.getElementById(metric_max);

      if(num < SSRULES[metric_min]) {
	      ok=false; item_min.className='error';
      }
      else item_min.className='normal';

      if(num > SSRULES[metric_max]) {
	      ok = false; item_max.className='error';
      }
      else item_max.className='normal';
   }

   teamsize.sort();
   var teammin = 9999;
   var teammax = 0;
   for(var i in teamsize) {
	   if(teamsize[i]<teammin) teammin = teamsize[i];
	   if(teamsize[i]>teammax) teammax = teamsize[i];
   }
   teammin = (teammin == 9999) ? 0 : teammin;
   var item_min = document.getElementById('min_from_each_team');
   var item_max = document.getElementById('max_from_each_team');
   if(teammin < SSRULES['min_from_each_team']) {
	   ok = false; item_min.className='error';
   }
   else item_min.className='';
   if(teammax > SSRULES['max_from_each_team']) {
	   ok = false; item_max.className='error';
   }
   else item_max.className='normal';
      
   var metric = 'players_in_squad';
   var item = document.getElementById(metric);
   if(numplayer != SSRULES['players_in_squad']) {
      ok=false; item.className='error';
   }
   else {
      item.className='normal';
   }
   var item = document.getElementById('teamstatus');
   if(!ok) {
      item.innerHTML = "<div style='font-size:11px;color:red;font-weight:bold'>ERROR: All rules not met (highlighted below)</div>\n";
   } else {
      item.innerHTML = "<div style='font-size:13px;color:green;font-weight:bold'><center>TEAM OK !</center></div>\n";
   }
   return ok;
}

function addPlayer(teamid, pid) {
   // Check with SSRULES before adding
   // - mins, maxes, numsquad etc
   if(numplayer+1 > SSRULES['players_in_squad']) {
   	alert("Can't add any more players. Please remove some from your team first");
   	return;
   }
   var myplayer = new Array();
   myplayer['id'] = pid;
   myplayer['teamid'] = teamid;
   MYPLAYERS[pid] = teamid;
   var item = document.getElementById("row_"+pid+"_"+teamid);
   if(item) item.className="selectedPlayer";
   setTeamNumbers(teamid);
   showMyPlayers();
}

function removePlayer(teamid, pid) {
   delete MYPLAYERS[pid];
   var item = document.getElementById("row_"+pid+"_"+teamid);
   if(item) item.className="";
   setTeamNumbers(teamid);
   showMyPlayers();
}

function editTeamName() {
   var teamname = MYTEAM['name'] || '';
   var t = prompt("Enter your team's name", teamname);
   if(t) {
      MYTEAM['name'] = t;
      var item = document.getElementById("myteamname");
      if(item) item.innerHTML = MYTEAM['name'];
      item = document.getElementById("myteamnameedit");
      if(item) item.innerHTML = "[edit]";
   }
}


function getUpcomingMatches() {
    var str = ""
    if (NEXTMATCHES.length) {
         str += "<div style='width:300px;font-size:11px;padding-left:50px;padding-right:50px'>\n";
	 str += "<ul style='margin-top:3px'><b><u>Upcoming Matches:</u></b>\n";
        for(var i in NEXTMATCHES) {
	      str += "<li style='font-size:11px'>"+NEXTMATCHES[i]['matchstr']+"\n";
		   str += "<div style='color:#666;font-size:9px'>(Starts in "+NEXTMATCHES[i]['time_left_string']+")";
                   if(ISADMIN) {
                      str += " <a href='#' onclick='showMatchStartEditWindow("+NEXTMATCHES[i]['id']+")'>[edit]</a>\n";
                   }
                   str += "</div>";
        }
	str += "</ul></div>\n";
    }
    return str;
}

function getStatusMessage() {
   var str = "";
   if(SSSTATUS == "closed")  {
	   str += "<center><div style='width:300px;padding-left:50px;padding-right:50px'><center><b>This superselector has closed !</b></center></div></center><br>\n";
   }
   else if(SSSTATUS == "started" && !MYPLAYERS.length)  {
	   str += "<center><div style='width:300px;padding-left:50px;padding-right:50px'><center><b>Cannot enter a team right now as matches are going on !</b></center></div></center><br>\n";
   }
   else if(SSSTATUS == "started" && SSONGOING.length)  {
	   str += "<center><div style='width:300px;padding-left:50px;padding-right:50px;font-size:11px'><b>No substitutions allowed right now because the following matches are on:</b><ul>\n";
	   var latestending = new Date();
	   for(var i in SSONGOING) {
                   var matchurl = MATCHPREFIX+SSONGOING[i]['url'];
		   str += "<li style='font-size:11px'><a target='_blank' href='"+matchurl+"'>"+SSONGOING[i]['matchstr']+"</a> \n";
                   if(ISADMIN) {
                      str += " <a href='#' onclick='showMatchStartEditWindow("+SSONGOING[i]['id']+")'>[edit]</a>\n";
                   }
                   str += "<br/>\n";
		   if(SSONGOING[i]['endtime'] > latestending) latestending=SSONGOING[i]['endtime'];
	   }
	   str += "</ul>Try again on : "+formatDate(new Date(latestending), true)+"</div></center><br>\n";
   }
   else if(SSMODE == "substitutable")  {
	   str += "<center><div style='width:300px;padding-left:50px;padding-right:50px;font-size:11px'><b>You are allowed to make substitutions. It costs "+SUBCOST+" points per substitution.</b></div></center><br>\n";
		str += getUpcomingMatches();
   }
   else {
		str += getUpcomingMatches();
   }
   return str;
}


function getPlayerInfoRow(pid,tid,prole,cellcls,rowcls,prefix,colspan,e) {
      var teamname = TEAMNAMES[tid];
      var pname = PLAYERS[pid]['name'];
      var purl = PLAYERS[pid]['profile_url'];
      var picurl = PLAYERS[pid]['picture_url'];
      var thumburl = '/files/playerthumbs/'+pid+'.jpg';
      var points = PLAYERS[pid]['points'];
      if(!(points+'').match(/\./)) points += '.0';

      var str = "";
      str += "<tr id='"+prefix+"row_"+pid+"' class='"+rowcls+"'>\n";
      str += "<td class='"+cellcls+"' width='30px'>\n";
      if(picurl) str += "<a target='_blank' href='"+picurl+"'><img border=0 width='27px' height='30px' style='border:1px solid #666;' src='"+thumburl+"'/></a>\n";
      else str += "<img border=0 style='border:1px solid #666;' src='/modules/SS/img/unknown.jpg'/></a>\n";
      str += "</td>\n";
      str += "<td class='"+cellcls+"' width='10px'><img src='/modules/SS/img/"+prole+".gif'></td>\n";
      str += "<td class='"+cellcls+"' width='200px' style='font-weight:bold'>\n";
      str += "<a title='See Cricinfo Profile' target='_blank' href='"+purl+"'>"+pname+"</a>\n";
      str += "<br>\n";
      str += "<span style='font-size:10px;color:#777;font-weight:normal'>"+teamname+" "+prole+"</span>\n";
      str += "</td>\n";
      if(SSSTATUS != "open") {
            str += "<td class='"+cellcls+"' style='width:20px' align='right'>";
            str += "<a style='color:maroon;font-weight:bold;text-decoration:underline;font-size:11px' title='Show Player Stats' href='javascript:showPlayerDetails("+pid+",\""+prefix+"\")'><nobr>"+points+"</nobr></a>";
	    str += "</td>\n";
      }
      if(SSMODE == "editable" && e) {
            str += "<td class='"+cellcls+"' style='font-size:10px;font-weight:bold;width:20px' align='right'>";
            str += "<a title='Remove Player' href='javascript:removePlayer("+tid+","+pid+")'>[-]</a></td>";
      }
      if(SSMODE == "substitutable" && e) {
            str += "<td class='"+cellcls+"' style='font-size:10px;font-weight:bold;width:20px' align='right'>\n";
            if(!SUBSTITUTES[pid] && !ALTSUBS[pid]) {
		str += "<a title='Substitute Player' href='javascript:chooseMyPlayer("+pid+","+tid+",\""+prole+"\")'><b>[-]</b></a>";
	    }
	    str += "</td>\n";
      }
      if(SSSTATUS != "open") {
            str += "</tr><tr id='"+prefix+"details_row_"+pid+"' class='"+rowcls+"' style='display:none'>\n";
            str += "<td class='"+cellcls+"' id='"+prefix+"details_"+pid+"' colspan="+colspan+"></td>";
      }
      str += "</tr>\n";
      return str;
}


function getPlayersTable(team, players, e) {
   var str = "";
   var teamname = team['name'] || '';

   if(team['id'] != MYTEAM['id']) e = false;
   var subadjustment = team['subadjustment'] || 0;

   str += "<table align='center' width='300px' cellspacing=0";
   str += " style='border-right:1px solid #ddd;border-left:1px solid #ddd'>\n";
   str += "<tr><td class='tcat' style='font-size:11px;height:24px;padding-top:2px;border-bottom:1px solid #ddd'>";
   //str += "<b>&nbsp;Name:</b> <input size=20 style='width:120px;font-size:11px' name='myteamname' value='"+teamname+"'></td></tr>\n";
   str += "<center><span id='myteamname'>"+teamname+"</span>";
   if(SSMODE == "editable" && e) {
      str += " <a id='myteamnameedit' href='javascript:editTeamName()'>";
      str += teamname ? "[edit]" : "[set your team's name]";
   }
   str += "</center>\n";
   str += "<tr><td>\n";
   str += "<table width='100%' cellspacing=0>\n";

   var sortedPlayers = new Array();
   for(var pid in players) {
      var tid = players[pid];
      var prole = getPlayerRoleInTeam(TEAMNAMES[tid],pid);
      sortedPlayers.push({'id':pid,'role':prole});
   }
   sortedPlayers.sort(playerRoleSort);

   var max = SSRULES['players_in_squad'];

   numplayer = 0;
   numbatsman = 0;
   numkeeper = 0;
   numallrounder = 0;
   numbowler = 0;
   teamsize.length=0;
   for(var team in TEAMS) teamsize[TEAMIDS[team]] = 0;

   var i=0;
   var totalpoints = 0;

   var colspan = 3;
   if(SSSTATUS != "open") colspan++;
   if(SSMODE == "editable" && e) colspan++;
   if(SSMODE == "substitutable" && e) colspan++;


   for(var ind in sortedPlayers) {
      var pid = sortedPlayers[ind]['id'];
      var prole = sortedPlayers[ind]['role'];
      var tid = players[pid];

      var points = PLAYERS[pid]['points'];
      totalpoints += points;
      if(!(points+'').match(/\./)) points += '.0';
      if(prole == '') continue;

      numplayer++;
      var rowcls = 'oddplayerrow';
      if(i%2==0) rowcls = 'evenplayerrow';
      if(curMyPlayer && curMyPlayer['id'] == pid) rowcls = "subrow";
 
      // New Display
      var sub = SUBSTITUTES[pid];
      if(sub && e) {
	      var subpoints = PLAYERS[sub['id']]['points'];
	      var adj = points - subpoints - SUBCOST;
	      var totalreduction = SUBCOST;
	      adj = Math.round(adj);

              teamsize[sub['tid']]++;
              eval("num"+sub['role']+"++;");

	      str += "<tr><td colspan="+colspan+" class='playercell substitution' style='padding:0px'>\n";
	      str += "<table width='100%' cellpadding=0 cellspacing=0>\n";

              str += getPlayerInfoRow(pid,tid,prole,'subbedout','',"player_",colspan,e);

	      str += getPlayerInfoRow(sub['id'],sub['tid'],sub['role'],'subbedin','',"subplayer_",colspan,e);

	      str += "<tr><td colspan="+colspan+" class='smallfont' style='padding:2px;font-size:10px;color:green;font-weight:bold'>";
	      str += "Substitution Cost: "+totalreduction+",\n";
	      str += "Adjustment: "+(adj>0?'+':'')+adj+"\n";
	      str += " <a title='Cancel Substitution' href='javascript:deleteSubstitution("+pid+","+sub['id']+")'>[x]</a>\n";
	      str += " <a title='Explain Adjustment' href='javascript:explainAdjustment("+pid+","+sub['id']+")'>[?]</a>\n";
	      str += "</td></tr>\n";
	      str += "</table></td></tr>\n";
      }
      else {
              teamsize[tid]++;
              eval("num"+prole+"++;");
              str += getPlayerInfoRow(pid,tid,prole,'playercell',rowcls,"player_",colspan,e);
      }
      i++;
   }

   for(;i<max;i++) {
      var rowcls = 'oddplayerrow';
      if(i%2==0) rowcls = 'evenplayerrow';
      str += "<tr class='"+rowcls+"'>\n";
      str += "<td colspan="+colspan+" class='playercell' style='height:37px'>&nbsp;</td></tr>\n";
   }
   if(SSSTATUS != "open") {
      str += "<tr>\n";
      str += "<td colspan=3 class='playercell' style='padding-top:10px;padding-bottom:10px;font-size:12px;'><b>Substitution Adjustments:</b></td>\n";
      str += "<td align='right' colspan="+(colspan-3)+" class='playercell' style='font-size:11px;color:maroon;font-weight:bold'><nobr>";
      str += (subadjustment>0?'+':'')+Math.round(subadjustment)+"</nobr></td></tr>\n";
   }
   str += "</table></td></tr>\n";
   str += "</table><br>\n";

   var tpoints = Math.round(totalpoints + subadjustment);
   // Show Points
   if(SSSTATUS != "open")
      str += "<center><div style='color:maroon;font-weight:bold;font-size:12px'>Total Points : "+tpoints+"</div></center><br>\n";
   return str;
}


function showMyPlayers() {
   var str = "";

   // Get Appropriate Status Message
   var statusStr = getStatusMessage();

   var playersStr = getPlayersTable(MYTEAM, MYPLAYERS, true);

   // Show save/cancel button
   var saveButtonStr = "";
   if(SSMODE == "editable" || (SSMODE == "substitutable")) {
       if(checkRules()) {
         saveButtonStr += "<center><button style='border:2px solid green' onclick='";
	 saveButtonStr += SSMODE == "editable" ? "createTeamAndSave(this);" : "createSubstitutesAndSave(this);";
	 saveButtonStr += "return false;'>Save</button>\n";
         saveButtonStr += "&nbsp;<span class='ajaxloader' id='ssteamsave_load'></span></center>\n";
       }
       else if ((SSMODE == "editable" && MYPLAYERS.length) || (SSMODE == "substitutable" && numsubs > 0)) {
         saveButtonStr += "<center><button style='border:2px solid maroon' onclick='window.location=\"index.php?pageid=superselector&ssid="+SS['id']+"\";return false;'>Cancel</button>\n";
       }
   }

   str += statusStr;

   // Show Team 
   str += playersStr;

   str += "<div>"+saveButtonStr+"</div>\n";

   var item = document.getElementById('myteam');
   if(item) item.innerHTML = str;
}


function getMatchIndexByID(mid) {
   for(var i in MATCHES) {
      if(MATCHES[i]['id']==mid)
         return i;
   }
   return -1;
}


function showUserTeam(teamid, username) {
   if(SSMODE != "uneditable") return;
   this.ssload = document.getElementById('myteam');
   this.ssload.innerHTML = ("<center><img src='/modules/SS/img/loading.gif'/></center>");
   var me = this;

   this.fetchTeamDetails = function() {
      if(me.xml_sender.handler.readyState == 4 && me.xml_sender.handler.status == 200) {
         if(me.xml_sender.handler.responseXML) {
            var ers = fetch_tags(me.xml_sender.handler.responseXML, 'error');
            var playertags = fetch_tags(me.xml_sender.handler.responseXML, 'player');
            me.ssload.innerHTML = '';
	    if(ers.length > 0) {
	       var erstr = '';
	       for(var i=0; i<ers.length; i++) {
                  erstr += me.xml_sender.fetch_data(ers[i])+"\n";
	       }
	       alert("Error while loading user's team:\n"+erstr);
	    }
	    else if(playertags.length > 0) {
	       var nametag = fetch_tags(me.xml_sender.handler.responseXML, 'name')[0];
	       var adjtag = fetch_tags(me.xml_sender.handler.responseXML, 'adjustment')[0];
               var team = new Array();
               var players = new Array();
               team['id']=teamid;
	       team['name'] = me.xml_sender.fetch_data(nametag);
	       team['subadjustment'] = parseFloat(me.xml_sender.fetch_data(adjtag));
               for(var i=0; i<playertags.length; i++) {
                  var pid = playertags[i].getAttribute('id');
                  var tid = playertags[i].getAttribute('teamid');
                  players[pid] = tid;
               }
               var str = "";
	       str += "<center><div style='width:300px;font-size:13px;color:red'><b>NOTE: You are viewing "+username+"'s Team !!</b><br>\n";
	       str += "<b><a style='color:green' href='javascript:showMyPlayers()'>Go back to My Team</a></b></div></center><br>\n";
               str += getPlayersTable(team, players);
	       str += "<center><div style='width:300px;font-size:13px;color:red'><b>NOTE: You are viewing "+username+"'s Team !!</b><br>\n";
	       str += "<b><a style='color:green' href='javascript:showMyPlayers()'>Go back to My Team</a></b></div></center><br>\n";
               me.ssload.innerHTML = str;
	    }
         }
         if (is_ie)
         {
            me.xml_sender.handler.abort();
         }
      }
   }

   this.xml_sender = new vB_AJAX_Handler(true);
   this.xml_sender.onreadystatechange(this.fetchTeamDetails);

   this.xml_sender.send('index.php?', 'pageid=superselector&ssid='+SS['id']+'&do=fetch_team_details&teamid='+teamid);
}

function closePlayerDetails (playerid,prefix) {
   var rowitem = document.getElementById(prefix+'details_row_'+playerid);
   rowitem.style.display = "none";
}

function showPlayerDetails (playerid, prefix) {
   if(SSSTATUS == "open") return;
   prefix = prefix || '';
   this.rowitem = document.getElementById(prefix+'details_row_'+playerid);
   this.rowitem.style.display = "";
   this.ssload = document.getElementById(prefix+'details_'+playerid);
   this.ssload.innerHTML = ("<center><img src='/modules/SS/img/loading.gif'/></center>");
   var me = this;

   this.fetchPlayerDetails = function() {
      if(me.xml_sender.handler.readyState == 4 && me.xml_sender.handler.status == 200) {
         if(me.xml_sender.handler.responseXML) {
            var ers = fetch_tags(me.xml_sender.handler.responseXML, 'error');
            var matchtags = fetch_tags(me.xml_sender.handler.responseXML, 'match');
            me.ssload.innerHTML = '';
	    if(ers.length > 0) {
               me.rowitem.style.display = 'none';
	       var erstr = '';
	       for(var i=0; i<ers.length; i++) {
                  erstr += me.xml_sender.fetch_data(ers[i])+"\n";
	       }
	       alert("Error while loading player details:\n"+erstr);
	    }
	    else if(matchtags.length > 0) {
	       var attrs = new Array("Batting", "Bowling", "Fielding");

               var str = "";
	       str += "<div style='text-align:right;font-size:10px'><a href='javascript:closePlayerDetails("+playerid+",\""+prefix+"\")'>[close]</a></div>\n";
               for(var i=0; i<matchtags.length; i++) {
                  var mid = matchtags[i].getAttribute('id');
                  var mpoints = matchtags[i].getAttribute('points');
		  var matchind = getMatchIndexByID(mid);
		  if(matchind < 0) continue;
		  var match = MATCHES[matchind];
                  var matchurl = MATCHPREFIX+match['scorecard_url'];
		  var matchstr = "<a style='color:darkblue;font-weight:bold' target='_blank' href='"+matchurl+"'>";
                  matchstr += match['team1']+" vs. <br>"+match['team2'];
                  if(match['info']) matchstr += " ("+match['info']+")";
		  matchstr += "</a>";
                  
		  str += "<fieldset><legend>"+matchstr+"</legend>";
		  str += "<div style='font-size:11px;color:maroon'><b>Points: "+mpoints+"</b></div>";
                  var innings = fetch_tags(matchtags[i], 'innings');
		  for(var j=0; j<innings.length; j++) {
		     str += "<div style='font-size:11px'>\n";
		     if(innings.length > 1) str += "<b>Inngs "+innings[j].getAttribute("id")+":</b><br>";
		     var cnt=0;
		     for(var k in attrs) {
		        var attr = attrs[k];
		        var val = innings[j].getAttribute(attr);
                        var tg = fetch_tags(innings[j], attr)[0];
                        var val = me.xml_sender.fetch_data(tg);
			if(val) {
			   if(cnt) str += "<br>";
			   str += attr+": "+val;
			   cnt++;
			}
		     }
		     str += "</div>";
		  }
		  str += "</fieldset>";
               }
               me.ssload.innerHTML = str;
	    } else {
               me.rowitem.style.display = 'none';
            }
         }
         if (is_ie)
         {
            me.xml_sender.handler.abort();
         }
      }
   }

   this.xml_sender = new vB_AJAX_Handler(true);
   this.xml_sender.onreadystatechange(this.fetchPlayerDetails);

   this.xml_sender.send('index.php?', 'pageid=superselector&ssid='+SS['id']+'&do=fetch_player_details&playerid='+playerid);
}


var ewin;
function showMatchStartEditWindow(matchid) {
   var str = "";
   var matchind = getMatchIndexByID(matchid);
   var match = MATCHES[matchind];
   var starttime = new Date(match['start_time']*1000);
   var starttimestr = formatDate(starttime,true);
   str += "<div style='font-family:Verdana;font-size:13px;color:red'><b>Careful: You will not be able to undo this !!</b></div><br/>";
   str += "<div style='font-family:Verdana;font-size:13px'><b>"+match['team1']+' vs '+match['team2']+"</b></div>";
   str += "<div style='font-family:Verdana;font-size:11px'>Current Start Time: <span style='color:red'>"+starttimestr+"</span></div><p/>";
   str += "<form id='editmatch' onsubmit='return false'>"; 
   str += "<input type='hidden' name='matchid' value='"+matchid+"'>";
   str += "<select name='change'>";
   str += "<option value='15'>Delayed 15 more minutes</option>";
   str += "<option value='30'>Delayed 30 more minutes</option>";
   str += "<option value='45'>Delayed 45 more minutes</option>";
   str += "<option value='60'>Delayed 1 more hour</option>";
   str += "<option value='90'>Delayed 1.5 more hours</option>";
   str += "<option value='120'>Delayed 2 more hours</option>";
   str += "<option value='NOW'>Started !!!</option>";
   str += "</select>";
   str += "<input type='button' value='Change Timing' onclick='opener.changeMatchStart()'/>";
   str += "<div style='padding-top:10px' id='edit_start'/>";
   str += "</form>";

   ewin = window.open('','timingeditwin','width=400,height=150');
   ewin.document.open();
   ewin.focus();
   ewin.document.writeln(str);
   ewin.document.close();
}

function changeMatchStart () {
   this.ssload = ewin.document.getElementById('edit_start');
   this.ssload.innerHTML = ("<center><img src='/modules/SS/img/loading.gif'/></center>");
   var me = this;
   var formobj = ewin.document.getElementById('editmatch');
   var matchid = formobj.matchid.value;
   var change = formobj.change.value;

   this.storeMatchTimings = function() {
      if(me.xml_sender.handler.readyState == 4 && me.xml_sender.handler.status == 200) {
         if(me.xml_sender.handler.responseXML) {
            var ers = fetch_tags(me.xml_sender.handler.responseXML, 'error');
            me.ssload.innerHTML = "";
	    if(ers.length > 0) {
	       var erstr = '';
	       for(var i=0; i<ers.length; i++) {
                  erstr += me.xml_sender.fetch_data(ers[i])+"\n";
	       }
	       ewin.alert("Error while changing match timing:\n"+erstr);
	       ewin.close();
	    } else {
	       //ewin.alert("Done. Reloading..");
	       ewin.close();
	       window.location="index.php?pageid=superselector&ssid="+SS['id'];
	    }
         }
         if (is_ie)
         {
            me.xml_sender.handler.abort();
         }
      }
   }

   this.xml_sender = new vB_AJAX_Handler(true);
   this.xml_sender.onreadystatechange(this.storeMatchTimings);
   this.xml_sender.send('index.php?', 
                'pageid=superselector&ssid='+SS['id']+'&do=change_match_timing&matchid='+matchid+'&change='+change);
   return false;
}


function saveTeam(formobj, loadid) {
   if(!loadid) loadid = 'ssteamsave_load';
   this.ssload = document.getElementById(loadid);
   this.ssload.innerHTML = "<img src='/modules/SS/img/loading.gif'/>";

   var me = this;

   this.checkSaveResult = function () {
      if(me.xml_sender.handler.readyState == 4 && me.xml_sender.handler.status == 200) {
         if(me.xml_sender.handler.responseXML) {
            var ers = fetch_tags(me.xml_sender.handler.responseXML, 'error');
            var team = fetch_tags(me.xml_sender.handler.responseXML, 'team');
            me.ssload.innerHTML = "";
	    if(ers.length > 0) {
	       var erstr = '';
	       for(var i=0; i<ers.length; i++) {
                  erstr += me.xml_sender.fetch_data(ers[i])+"\n";
	       }
	       alert("Error while saving team:\n"+erstr);
	    }
	    else if(team.length > 0) {
               var teamid = team[0].getAttribute('id');
	       alert("Team Saved ! Thank you.\nIf you have made substitutions, please wait for a few minutes for the leaderboard to update.");
	       window.location="index.php?pageid=superselector&ssid="+SS['id'];
	    }
         }
         if (is_ie)
         {
            me.xml_sender.handler.abort();
         }
      }
   }

   this.xml_sender = new vB_AJAX_Handler(true);
   this.xml_sender.onreadystatechange(this.checkSaveResult);

   this.xml_sender.send('index.php?', formobj.build_query_string());
}

function createTeamAndSave(btn) {
   if(!checkRules()) { alert('Errors in team'); return; }

   var errorstr = '';
   var warnstr = '';
   var team = new Array();
   var players = new Array();

   var pseudoform = new vB_Hidden_Form('index.php');
   pseudoform.add_variable('pageid', 'superselector');
   pseudoform.add_variable('do', 'save_team');
   pseudoform.add_variable('ssid', SS['id']||'');
   pseudoform.add_variable('myteamid', MYTEAM['id']||'');
   if(!MYTEAM['name']) errorstr += "Team has no Name\n";
   pseudoform.add_variable('myteamname', MYTEAM['name']||'');

   for(var pid in MYPLAYERS) {
      var tid = MYPLAYERS[pid];
      players.push(pid);
      pseudoform.add_variable('player_team_'+pid, tid);
   }
   if(players.length==0) {
      errorstr += "The Team doesn't have any players\n";
   } else {
      pseudoform.add_variable('players', players.join());
   }

   if(errorstr) {
      alert("!!ERROR!!:\n"+errorstr);
      return false;
   }

   if(warnstr) {
      var y = confirm("Warnings:\n"+warnstr+"\n\nDo you want to continue ?");
      if(!y) return false;
   }
   btn.disabled = true;
   new saveTeam(pseudoform, 'ssteamsave_load');

   return true;
}

function createSubstitutesAndSave(btn) {
   if(!checkRules()) { alert('Errors in team'); return; }

   var errorstr = '';
   var warnstr = '';
   var subbed = new Array();

   var pseudoform = new vB_Hidden_Form('index.php');
   pseudoform.add_variable('pageid', 'superselector');
   pseudoform.add_variable('do', 'substitute_players');
   pseudoform.add_variable('ssid', SS['id']||'');
   pseudoform.add_variable('myteamid', MYTEAM['id']||'');
   if(!MYTEAM['name']) errorstr += "Team has no Name\n";
   pseudoform.add_variable('myteamname', MYTEAM['name']||'');

   for(var pid in SUBSTITUTES) {
      var subid = SUBSTITUTES[pid]['id'];
      var subteamid = SUBSTITUTES[pid]['tid'];
      subbed.push(pid);
      pseudoform.add_variable('sub_'+pid, subid);
      pseudoform.add_variable('sub_team_'+pid, subteamid);
   }
   if(subbed.length==0) {
      errorstr += "You haven't made any substitutions to be saved\n";
   } else {
      pseudoform.add_variable('subbed_players', subbed.join());
   }

   if(errorstr) {
      alert("!!ERROR!!:\n"+errorstr);
      return false;
   }

   if(warnstr) {
      var y = confirm("Warnings:\n"+warnstr+"\n\nDo you want to continue ?");
      if(!y) return false;
   }
   btn.disabled = true;
   new saveTeam(pseudoform, 'ssteamsave_load');

   return true;
}

