var arrTeam=new Array();
var arrWedstrijdLeiding=new Array();
var Wedstrijd=new Array();
var InvullenUitslagen=new Array();
var InvullenCommentaar=new Array();
var naamKlasse=new String();
var intKlasse=null;
var intTeam=null;
var strVandaag=new String(); // Format yyyymmdd
var strUitslagVanaf=new String(); // Format yyyymmdd
var strUitslagTotmt=new String(); // Format yyyymmdd
var strBijgewerkt=new String();
var strBijgewerktOp=new String();
var xmlDoc1=null;
var xmlDoc2=null;
var uplString=null;
var indKlaar=false;
var ip=null;
var tabStand=null;
var tabUitslag=null;
var tabComment=null;

function WeekNummer (datIn)
{// DatIn is een string met format yyyymmdd
 if (datIn=='') return '';
 var datInput=new Date();
 aMaand=datIn.substr(4,2);
 aMaand--;
 datInput.setFullYear(datIn.substr(0,4), aMaand, datIn.substr(6,2));
 
 var target  = new Date(datInput.valueOf());  
   
 // ISO week date weeks start on monday  
 // so correct the day number  
 var dayNr   = (datInput.getDay() + 6) % 7;  
   
 // Set the target to the thursday of this week so the  
 // target date is in the right year  
 target.setDate(target.getDate() - dayNr + 3);  
   
 // ISO 8601 states that week 1 is the week  
 // with january 4th in it  
 var jan4    = new Date(target.getFullYear(), 0, 4);  
 var jan4DayNr = (jan4.getDay() + 6) % 7;
 jan4.setDate(jan4.getDate() - jan4DayNr + 3);   
 // Number of days between target date and january 4th  
 var dayDiff = (target - jan4) / 86400000;    
   
 // Calculate week number: Week 1 (january 4th) plus the    
 // number of weeks between target date and january 4th    
 var weekNr = 1 + Math.floor(dayDiff / 7);    
   
 weekjaar = target.getFullYear();
 return (weekNr < 10) ? weekjaar + '-0' + weekNr : weekjaar + '-' + weekNr;
}

function InhoudVan(tagcontent,tagname)
{try {return tagcontent.getElementsByTagName(tagname)[0].childNodes[0].nodeValue;}
 catch(err) {return '';}
}

function AttributeVan(tagcontent,tagname)
{try {return tagcontent.getAttribute(tagname);}
 catch(err) {return null;}
}

function VanWebsite()
{var pattUrl=/.nl/i;
 return pattUrl.test(location.hostname);
}

function createXMLHttpRequest()
{try {return new XMLHttpRequest();} catch(e) {}
 try {return new ActiveXObject("Msxml2.XMLHTTP");} catch (e) {}
 try {return new ActiveXObject("Microsoft.XMLHTTP");} catch (e) {}
 alert("XMLHttpRequest not supported");
 return null;
}

function setSpeciaalIt (klIn, cdIn)
{uParams = 'pActie=1&pKlasse=' + klIn + '&pCode=' + cdIn;
 xmlDoc2 = createXMLHttpRequest();
 xmlDoc2.onreadystatechange = function () {if (xmlDoc2.readyState == 4 && xmlDoc2.status == 200) verifyWw(xmlDoc2.responseText);};
 xmlDoc2.open('POST', 'speciaalit.php', true);
 xmlDoc2.setRequestHeader("Method", "POST speciaalit.php HTTP/1.1");
 xmlDoc2.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
 xmlDoc2.send(uParams);
}

function getXMLDoc1 (volgnr)
{xmlDoc1 = createXMLHttpRequest();
 xmlDoc1.open("GET", 'Wedstrijden.xml', false);
 xmlDoc1.setRequestHeader("If-Modified-Since", "Sat, 1 Jan 2000 00:00:00 GMT");
 xmlDoc1.send(null);
 LeesXML (volgnr);
}

function loadXMLDoc1 (volgnr)
{dTime = new Date();
 uParams = 'pFilename=Wedstrijden.xml&pTimestamp=' + dTime.getTime();
 xmlDoc1 = createXMLHttpRequest();
 xmlDoc1.onreadystatechange = function () {if (xmlDoc1.readyState == 4 && xmlDoc1.status == 200) LeesXML (volgnr);};
 xmlDoc1.open('POST', 'leeswedstrijden.php', true);
 xmlDoc1.setRequestHeader("Method", "POST leeswedstrijden.php HTTP/1.1");
 xmlDoc1.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
 xmlDoc1.send(uParams);
}

function getXMLDoc2 (volgnr)
{xmlDoc2 = createXMLHttpRequest();
 xmlDoc2.open("GET", 'WebsiteUitslagen.xml', false);
 xmlDoc2.setRequestHeader("If-Modified-Since", "Sat, 1 Jan 2000 00:00:00 GMT");
 xmlDoc2.send(null);
 VerwerkWebUitslag (volgnr);
}

function loadXMLDoc2 (volgnr)
{dTime = new Date();
 uParams = 'pFilename=NaarWedstrijdleiding.txt&pKlasse=' + volgnr + '&pResult=' + encodeURI(uplString) + '&pTimestamp=' + dTime.getTime();
 //  alert ('uParams=' + uParams);
 uplString='';
 xmlDoc2 = createXMLHttpRequest();
 xmlDoc2.onreadystatechange = function () {if (xmlDoc2.readyState == 4 && xmlDoc2.status == 200) VerwerkWebUitslag (volgnr)};
 xmlDoc2.open('POST', 'leesuitslagen.php', true);
 xmlDoc2.setRequestHeader("Method", "POST leesuitslagen.php HTTP/1.1");
 xmlDoc2.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
 xmlDoc2.send(uParams);
}

function LeesXML (volgnr)
{// Inlezen alle data
 xmlFile = xmlDoc1.responseXML;
 var pattPostcode=/\d{4}\s[A-Z][A-Z]/;
 //alert('Size van xml-bestand is ' + xmlDoc1.responseText.length);

 if (xmlFile == null)
   {alert('Geen XML data gevonden');}
 strBijgewerkt=xmlFile.getElementsByTagName("LaatstBijgewerkt")[0].childNodes[0].nodeValue;
 strBijgewerktOp=strBijgewerkt.substr(6,2) + '-' + strBijgewerkt.substr(4,2) + '-' + strBijgewerkt.substr(0,4);
 
 xKlasse=xmlFile.getElementsByTagName("Klasse");
 //alert ('Aantal Worksheets = ' + xKlasse.length);

 document.getElementById("divAlleKlassen").style.display='none';
 liKlas = document.getElementById("liAlleKlassen");
 if (liKlas.childNodes.length == 0)
  {for (i=0;i<xKlasse.length;i++)
    {numKlasse = AttributeVan (xKlasse[i], 'idnum');
     naamKlasse = AttributeVan (xKlasse[i], 'naam');
     newLI = document.createElement("li");
     newLI.innerHTML = '<a href="" onClick="LaadKlasse(' + numKlasse + ');return false;">' + naamKlasse + '</a>';
     liKlas.appendChild(newLI);
    }
  }

 for (i=0;i<xKlasse.length;i++)
  {numKlasse = xKlasse[i].getAttribute("idnum");
   if (numKlasse == volgnr)
    {intKlasse=numKlasse;
     naamKlasse = xKlasse[i].getAttribute("naam");
     xTeams=xKlasse[i].getElementsByTagName("Teams");
     xTeam=xTeams[0].getElementsByTagName("Team");
     arrTeam=[];
     Wedstrijd=[];
     for (j=0;j<xTeam.length;j++)
      {arrTeam[j]=new Array();
       aMail1=InhoudVan(xTeam[j],"Email1");
       aMail2=InhoudVan(xTeam[j],"Email2");
       arrTeam[j][0]=InhoudVan(xTeam[j],"TeamNaam");
       arrTeam[j][1]=InhoudVan(xTeam[j],"SpeelDag");
       arrTeam[j][2]=InhoudVan(xTeam[j],"ZaalNaam");
       arrTeam[j][3]=InhoudVan(xTeam[j],"Adres");
       arrTeam[j][4]=InhoudVan(xTeam[j],"Postcode");
       arrTeam[j][5]=InhoudVan(xTeam[j],"Plaats");
       arrTeam[j][6]=InhoudVan(xTeam[j],"TijdOpen");
       arrTeam[j][7]=InhoudVan(xTeam[j],"TijdInspelen");
       arrTeam[j][8]=InhoudVan(xTeam[j],"TijdWedstrijd");
       arrTeam[j][9]=InhoudVan(xTeam[j],"Wachtwoord");
       arrTeam[j][10]=InhoudVan(xTeam[j],"ZaalOpmerking");
       arrTeam[j][11]=InhoudVan(xTeam[j],"TeamOpmerking");
       arrTeam[j][12]=InhoudVan(xTeam[j],"ContactPersoon");
       arrTeam[j][13]=InhoudVan(xTeam[j],"Telefoon1");
       arrTeam[j][14]=InhoudVan(xTeam[j],"Telefoon2");
       arrTeam[j][15]=(aMail1!='' && aMail2!='') ? aMail1 + '@' + aMail2 : '';
       arrTeam[j][16]=InhoudVan(xTeam[j],"Foto");
       // Bewerk de postcode
       arrTeam[j][4]=arrTeam[j][4].toUpperCase();
       if (arrTeam[j][4].length == 6)
        arrTeam[j][4]=arrTeam[j][4].substring(0,4) + ' ' + arrTeam[j][4].substring(4,6);
       arrTeam[j][4]=(pattPostcode.test(arrTeam[j][4]))?arrTeam[j][4]:'';
      }
      //alert ('Aantal teams ' + arrTeam.length);

     xWedstrijden=xKlasse[i].getElementsByTagName("Wedstrijden");
     xWedstrijd=xWedstrijden[0].getElementsByTagName("Wedstrijd");
     //alert ('Aantal Wedstrijden = ' + xWedstrijd.length);
     k=-1;
     for (j=0;j<xWedstrijd.length;j++)
      {strRonde=InhoudVan(xWedstrijd[j],"Ronde");
       strTT=InhoudVan(xWedstrijd[j],"TeamThuis");
       strTU=InhoudVan(xWedstrijd[j],"TeamUit");
       strPl=InhoudVan(xWedstrijd[j],"DatumGepland");
       strSp=InhoudVan(xWedstrijd[j],"SpeelDatum");
       strUS=InhoudVan(xWedstrijd[j],"SetStanden");
       strAT=InhoudVan(xWedstrijd[j],"AftrekThuis");
       strAU=InhoudVan(xWedstrijd[j],"AftrekUit");
       strCm=InhoudVan(xWedstrijd[j],"Commentaar");

       // Categorie
       // 1 = Geplanned
       // 2 = Gespeeld, uitslag onbekend
       // 3 = Gespeeld, uitslag bekend
       if (strUS != '')
         {strCat = '3';}
       else strCat = (strSp < strVandaag) ? '2' : '1';
       strWeek=WeekNummer(strSp);

       k++;
       Wedstrijd[k]=new Array(strCat, strRonde, strWeek, strTT, strTU, strPl, strSp, strUS, strAT, strAU, strCm);
  // Array Wedstrijd
  //  0 = category 1 of 2 of 3
  //  1 = speelronde
  //  2 = week van speeldatum
  //  3 = team thuis
  //  4 = team uit
  //  5 = datum orgineel geplanned
  //  6 = speeldatum
  //  7 = setstanden
  //  8 = aftrek team thuis
  //  9 = aftrek team uit
  // 10 = commentaar
      }
    }
  }
 indKlaar=true;
}

function PresenteerSetstanden (strUitslag)
{arrWebUS=strUitslag.split(',');
 webUSDp=arrWebUS[0];
 for (k in arrWebUS)
  {if (k>0) {webUSDp=webUSDp + ((k%2==0)?',':'-') + arrWebUS[k];}}
 return webUSDp;
}

// Verwerk de Website Uitslagen in de resultaten
function VerwerkWebUitslag (volgnr)
{xmlWebU = xmlDoc2.responseXML;
 //alert('xmlWebU=' + xmlDoc2.responseText);
 intTeam=InhoudVan(xmlWebU, "Team");
 xWebUitslag=xmlWebU.getElementsByTagName("Wedstrijd");
 arrWedstrijdLeiding=[];
 for (i=0;i<xWebUitslag.length;i++)
  {webKL=InhoudVan(xWebUitslag[i],"Klasse");
   if (webKL == volgnr)
    {webIP=InhoudVan(xWebUitslag[i],"IpAddress");
     webID=InhoudVan(xWebUitslag[i],"InputDate");
     webTT=InhoudVan(xWebUitslag[i],"TeamThuis");
     webTU=InhoudVan(xWebUitslag[i],"TeamUit");
     webSp=InhoudVan(xWebUitslag[i],"SpeelDatum");
     webUS=InhoudVan(xWebUitslag[i],"SetStanden");
     webCm=InhoudVan(xWebUitslag[i],"Commentaar");
		 webMsg='Onbekend';
     for (j in Wedstrijd)
      {if (Wedstrijd[j][3] == webTT && Wedstrijd[j][4] == webTU && Wedstrijd[j][6] == webSp)
        {if (Wedstrijd[j][0] == '3')
          {if (Wedstrijd[j][7] == webUS)
            {webMsg='Gespeeld';}
           else
            {webMsg='Gespeeld, maar uitslag was ' + PresenteerSetstanden(Wedstrijd[j][7]);} // Ind: G = Gespeeld
          }
         else
          {if (webUS.length>0) // Uitslag ingegeven
            {Wedstrijd[j][0]='3';
             Wedstrijd[j][7]=webUS;
             webMsg='Uitslag nog verwerken';} // Ind: U = Uitslag ingegeven
           else // Commentaar ingeven
            {Wedstrijd[j][10]=webCm;
             webMsg='Commentaar ingegeven';} // Ind: C = Commentaar
          }
        }
      }
     arrWedstrijd=new Array(i, webIP, webID, webTT, webTU, webSp, PresenteerSetstanden(webUS), webCm, webMsg);
     arrWedstrijdLeiding.push (arrWedstrijd);
     //alert('TeamThuis=' + webTT + ' aantal records=' + arrWedstrijdLeiding.length);
    }
  }
 indKlaar=true;
}

function DateNaarString (inDatum)
{if (parseInt(inDatum.getMonth())<9)
   {aMaand='0' + (parseInt(inDatum.getMonth()) + 1);}
 else
   {aMaand='' + (parseInt(inDatum.getMonth()) + 1);}
 if (parseInt(inDatum.getDate())<10)
   {aDag='0' + inDatum.getDate();}
 else
   {aDag='' + inDatum.getDate();}
 return inDatum.getFullYear() + aMaand + aDag;
}

function Presenteer ()
{ShowTeams();
 VulNogInTeVullenUitslagen(intTeam);
 // Toon het gecombineerde resultaat
 VulStand();
 ShowStand();
}

function StapsgewijsInlezen (cKlasseNr, cStap)
{if (cStap==1)
  {if (xmlDoc1==null)
    {indKlaar=false; loadXMLDoc1 (cKlasseNr); cStap=2;}
   else
    {indKlaar=false; LeesXML (cKlasseNr); cStap=3;}
  }
 if (cStap==2)
  {if (indKlaar==true)
    {clearTimeout(t); cStap=3;}
   else
    {t=setTimeout('StapsgewijsInlezen(' + cKlasseNr + ', 2);',100);}
  }
 if (cStap==3)
  {indKlaar=false; loadXMLDoc2 (cKlasseNr); cStap=4;}
 if (cStap==4)
  {if (indKlaar==true)
    {clearTimeout(t); Presenteer();}
   else
    {t=setTimeout('StapsgewijsInlezen(' + cKlasseNr + ', 4);',100);}
  }
}

function LaadKlasse (cKlasseNr)
{var pattUrl=/.nl/i;
 //alert ('LaadKlasse (' + cKlasseNr + ', ' + cUitslag + ')');
 vandaag=new Date();
 strVandaag=DateNaarString (vandaag);
 vandaag.setDate(vandaag.getDate()-2);
 strUitslagVanaf=DateNaarString (vandaag);
 vandaag.setDate(vandaag.getDate()+14);
 strUitslagTotmt=DateNaarString (vandaag);
 InvullenUitslagen =[];
 InvullenCommentaar=[];
 tabUitslag=null;
 tabComment=null;

 indKlaar = true;
 if (VanWebsite ()) // Ophalen van website
  {StapsgewijsInlezen (cKlasseNr, 1);
  }
 else // Ophalen van locale directory
  {if (xmlDoc1==null)
    {getXMLDoc1 (cKlasseNr);}
   else
    {LeesXML (cKlasseNr);}
   getXMLDoc2 (cKlasseNr);
   Presenteer();
  }
}


