var updateDivCall;

var ArticleID=0;
var ArticleParams= '';

function openWindow(url, name) {
   window.open(url, name);
}

function prepareSilentRefresh(ID, Params) {
   ArticleID=ID;
   ArticleParams=Params;
}

function doSilentRefresh() {
   if (ArticleID) {
      getArticle(ArticleID, ArticleParams);
   }
   ArticleID=0;
   ArticleParams='';
}

function doUpdateDiv() {
   var a= AjaxCallback(updateDivCall);
   if (a) {
      // returns 2 lines
      // Element
      // innerHTML
      var r= a.split('::');
      var p= document.getElementById(r[0]);
      if (p) {
         p.innerHTML= r[1];
      }
      else {
         alert("can't find "+ r[0]);
      }
   }
}

function showOverlay() {
   var a= AjaxCallback();
   if (a) {
      var v= document.getElementById('kompsos-veil');
      var p= document.getElementById('kompsos-overlay');
      var e= document.getElementById('kompsos-overlay-content');
      if (e) {
         if (v) v.style.display='block';
         if (p) p.style.display='block';
         e.innerHTML=a;
         calendarActivator();
      }
      else {
         alert("Overlay area not defined. Check the template!");
      }
   }
}

function closeFeedback() {
   var v= document.getElementById('kompsos-feedback'); if(v) { v.innerHTML=''; v.style.display='none'; }
}

function closeOverlay(Level) {
   var v= document.getElementById('kompsos-overlay-content'); if(v) v.innerHTML='';
   var v= document.getElementById('kompsos-right-menu'); if(v) v.innerHTML='';
   var v= document.getElementById('kompsos-overlay'); if (v) v.style.display='none';
   var v= document.getElementById('kompsos-veil'); if (v) v.style.display='none';
   closeFeedback();
}

function refreshLogin() {
   var a= AjaxCallback();
   if (a) {
       var e= document.getElementById('keepLogin');
       if (e) { e.innerHTML=a; }
   }
}

function keepLogin() {
   var e= document.getElementById('keepMeLoggedIn');
   if (e && e.checked) {
      AjaxCall('keepmeloggedin.ajax.php', 'keep=1', refreshLogin);
   }
   else {
      AjaxCall('keepmeloggedin.ajax.php', 'keep=0', refreshLogin);
   }
}

var __loginInterval=0;

function keepMeLoggedIn() {
   if (__loginInterval) clearInterval(__loginInterval);
   var e= document.getElementById('keepMeLoggedIn');
   if (e && e.checked) { __loginInterval= setInterval("keepLogin()", 300000); }
   keepLogin();
}

function openWindowMaximized(url, name) {
   // Name may NOT contain whitespace or MSIE will crash
   window.open(url, 'kompsos', 'scrollbars=yes,width=640,height=480,resizable=1');
}

function openWindow(url, name) {
   // Name may NOT contain whitespace or MSIE will crash
   window.open(url, 'kompsos', 'scrollbars=yes,width=640,height=480,resizable=1');
}

function ReloadClose()
{
   window.opener.location.reload();
   window.close();
}

function AddIndividual(cid)
{
   url= "addindividual.php";
   url= url+ "?cid="+ cid;
   url= url+ "&sid="+ Math.random();
   openWindow(url, 'individual'+cid);
}

function calendarSubmit() {
   var p= document.forms.calendar.elements.dates;

   if (document.getElementById && document.createTextNode) {
      var tables=document.getElementsByTagName('table');
      for (var i=0;i<tables.length;i++)  {
         if(tables[i].className=='month') {
            var trs=tables[i].getElementsByTagName('tr');
            for(var j=0; j<trs.length; j++) {
               if(trs[j].parentNode.nodeName=='TBODY' && trs[j].parentNode.nodeName!='TFOOT') {
                  var tds=trs[j].getElementsByTagName('td');
                  for (var k=0; k<tds.length; k++) {
                     if (tds[k].marked) {
                        if (p.value!=0) { p.value += ',' + tds[k].id; }
                        else { p.value= tds[k].id; }
                     }
                  }
               }
            }
         }
      }
   }
   if (p.value) window.opener.dates=p.value;
   return false;
 }

function tableruler() {
   if (document.getElementById && document.createTextNode) {
      var tables=document.getElementsByTagName('table');
         for (var i=0;i<tables.length;i++)  {
            if(tables[i].className=='month') {
               var trs=tables[i].getElementsByTagName('tr');
               for(var j=0; j<trs.length; j++) {
                  if(trs[j].parentNode.nodeName=='TBODY' && trs[j].parentNode.nodeName!='TFOOT') {
                     var tds=trs[j].getElementsByTagName('td');
                     for (var k=0; k<tds.length; k++) {
                       if (tds[k].id) {
                          tds[k].onmouseover=function(){ this.oldclass= this.className; this.className='hovered'; return false; }
                          tds[k].onmouseout=function(){ this.className=this.oldclass; return false; }
                          tds[k].onmousedown=function(){
                             if (this.marked) { this.oldclass=this.original; this.marked= false; }
                             else { this.original= this.oldclass; this.marked= true; this.oldclass='marked'; this.className='marked'; }
                             return false;
                          }
                       }
                     }
                  }
               }
           }
       }
   }
}

function setChangedExt(e) {
   switch (e.type) {
   case 'checkbox':
      if (e.checked) { }
      else { }
   default:
   }
}

var busy= false;
var eElement= null;
function hurryUp() {
   if (!busy) {
      if (!eElement) eElement= document.getElementById('Edit');
      if (eElement && eElement.checked) busy= true;
   }
}

function showUpdate() {
   var a= AjaxCallback();
   if (a) {
      if (a=='ERROR') { alert(a); }
      var p= document.getElementById('Edit');
      if (p) {
         p.disabled= false;
         p.checked= true;
      }
      p= document.getElementById('Feedback');
      if (p) {
         p.innerHTML= a;
         p.style.display='block';
      }
   }
}

function doUpdate(Field) {
   var go= 0;
   var k= new String;
   var p= document.getElementById('Edit');

   // Figure out what kind of field we are dealing with
//   if (!p.checked) { p.checked= confirm('Do you want to switch editing on?'); }
   switch (Field.type) {
   case 'checkbox':
      if (Field.checked) { k= Field.name + '=' +Field.value; }
      else if (Field.value=='Y') { k= Field.name + '=N'; }
      else if (Field.value=='N') { k= Field.name + '=Y'; }
      else { k= Field.name + '=0'; }
      break;
   case 'select-one':
      k= Field.name + '=' + Field.options[Field.selectedIndex].value;
      break;
   case 'radio':
      k= Field.name + '=' +Field.value;
      break;
   default:
      if (Field.value== Field.defaultValue) { return 0; }
//      else { Field.defaultValue= Field.value; } // Don't do this until upon return from Ajax!!'
      k= Field.name + '=' +Field.value;
      break;
   }

   if (!p || (p && p.checked)) {
      for (var n=0; n<50; n++) {
         if (i= document.getElementById('similar_'+ n)) {
            if (i.checked) v= i.value;  else v= 0;
            k+= "&similar[" + i.value + "]=" +v;
         }
         else {
            break;
         }
      }
      if (p) p.disabled= true;
      AjaxCall('update.ajax.php', k, showUpdate);
   }
   else {
      switch (Field.type) {
      case 'checkbox':
         Field.checked= Field.defaultChecked;
         break;
      case 'select-one':
         for (i=0; i<Field.length; i++) {
             Field.options[i].selected= Field.options[i].defaultSelected;
         }
         break;
      case 'radio':
         break;
      default:
         Field.value= Field.defaultValue;
      }
   }
}

function doUpdateDiv() {
   var a= AjaxCallback();
   if (a) {
      // returns 2 lines
      // Element
      // innerHTML
      var r= a.split('::');
      var p= document.getElementById(r[0]);
      if (p) {
         p.innerHTML= r[1];
      }
      else {
         alert("can't find "+ r[0]);
      }
   }
}

function updatePitches(p) {
   if (p) {
      var k= p.name + '=' + p.value;
      AjaxCall('updatepitches.ajax.php', k, doUpdateDiv);
   }
}

function toggleVisibility(id) {
   var e= document.getElementById(id);
   if (e) {
      if (e.style.display=='none') e.style.display='block';
      else e.style.display= 'none';
   }
}

function addTimeSlot() {
   AjaxCall('addtimeslot.ajax.php', null, doUpdateDiv);
}

function deleteTimeSlot(ID) {
   AjaxCall('addtimeslot.ajax.php', 'delete='+ID, doUpdateDiv);
}

function editRefereeCalendar(a) {
   var clear= false;
   var r= document.getElementById('reason').value;
   var p= document.getElementById('partial').checked;
   var k= 'PID='+PID+'&Date='+a.id;

   if (a.marked || (r==a.title)) { clear= true; }
   if (clear) { a.marked= false; a.oldClass=a.original; }
   else { if (r.length) { k+='&Reason='+r; } k+= '&Partial='; k+= (p) ? 'Y' : 'N'; a.original= a.oldClass; a.className='marked'; a.marked= true; }
   AjaxCall('referee.ajax.php', k, updateCalendar);
}

function updateCalendar() {
   var a= AjaxCallback();
   if (a) {
      var v= a.split('::');
      var d= document.getElementById(v[0]);
      if (d) {
         d.oldClass=v[1];
         if (d.className!='hovered') { d.className= v[1]; }
         d.title=v[2]; // Reason
         if (v[3]) { d.marked= (v[3]=='true'); }
         else { d.marked=(v[1].length>0); }
      }
   }
}

function editBlockerCalendar(a) {
   var clear= false;
   var k= 'Date='+a.id;
   var r='';

   var e= document.getElementById('Reason'); if (e) r= e.value;
   var e= document.getElementById('PID');    if (e) k+= '&PID=' + e.value;
   var e= document.getElementById('ClubID'); if (e) k+= '&ClubID=' + e.value;
   var e= document.getElementById('TeamID'); if (e) k+= '&TeamID=' + e.value;
   var e= document.getElementById('Venue');  if (e) k+= '&Venue=' + e.value;
   var e= document.getElementById('Pitch');  if (e) k+= '&Pitch=' + e.value;
   var e= document.getElementById('From');   if (e) k+= '&From=' + e.value;
   var e= document.getElementById('Till');   if (e) k+= '&Till=' + e.value;

   // Check which time slots are checked
   var e= document.getElementsByTagName('input');
   for (var i=0;i<e.length;i++) {
      if (e[i].type=='checkbox' && e[i].checked ) { k+= "&checkbox[" + e[i]['id'] +"]=" + e[i]['id']; }
   }

   if (a.marked || (r==a.title)) { clear= true; }
   if (clear) { a.marked= false; a.oldClass=a.original; }
   else {
      if (r.length) { k+= '&Reason=' + r; }
      a.original= a.oldClass; a.className='marked'; a.marked= true;
   }
   AjaxCall('blocker.ajax.php', k, updateCalendar);
}

function updatePitches(p) {
   if (p) {
      var k= p.name + '=' + p.value;
      AjaxCall('updatepitches.ajax.php', k, doUpdateDiv);
   }
}

function editBlock(Venue, ID) {
   var k= 'VenueID=' + Venue + '&Chronological=1';
   k+= '&BlockID='+ ID;
   if (!confirm('Verhindering verwijderen?')) return false;
   else { AjaxCall('showblockers.ajax.php', k, popupFeedback); return true; }
}

function addBlock(Venue) {
   var tables=document.getElementsByTagName('table');
   var d='';
   for (var i=0;i<tables.length;i++)  {
      if(tables[i].className=='month') {
         var trs=tables[i].getElementsByTagName('tr');
         for(var j=0; j<trs.length; j++) {
            if(trs[j].parentNode.nodeName=='TBODY' && trs[j].parentNode.nodeName!='TFOOT') {
               var tds=trs[j].getElementsByTagName('td');
               for (var k=0; k<tds.length; k++) {
                  if (tds[k].id) {
                     if (tds[k].marked) {
                        d+= (d) ? ',' : ''; d+=tds[k].id;
                     }
                  }
               }
            }
         }
      }
   }
   if (!d) { alert('U moet minimaal 1 dag selecteren'); return false; }

   var k= "VenueID=" + Venue + "&Dates="+d;
   var f= document.getElementById('write');
   if (f && f.checked) k+='&Write=1';

   var v= '';
   for (var i=1; i< 15; i++) {
      p=document.getElementById('pitch_' + i);
      if (p && p.checked) {
          v+= (v) ? ', ' : '';
          v+= p.value;
      }
   }
   if (!v) { alert('U moet minimaal 1 veld aanvinken'); return false; }
   k+= "&Pitch="+v;

   var r=document.getElementById('Reason').value;
   if (!r) { alert('U moet een reden opgeven'); return false; }
   k+= '&Reason=' + r;
   k+= '&Begin=' + document.getElementById('Begin').value;
   k+= '&End=' + document.getElementById('End').value;
   AjaxCall('showblockers.ajax.php', k, popupFeedback);
   return true;
}

function deleteTeam(CID, FID, SID, TeamID) {
   var k= 'ClubID=' + CID + '&FID=' + FID + '&SID='+SID + '&TeamID=' + TeamID;
   AjaxCall('addteam.ajax.php', k, doUpdateDiv);
}

function addTeam(CID, FID, SID) {
   var k= 'ClubID=' + CID + '&FID=' + FID + '&SID='+SID;
   AjaxCall('addteam.ajax.php', k, doUpdateDiv);
}

function addVenue(CID, VenueID) {
   var k='ClubID='+CID;
   if (VenueID<0) k+='&VenueID=-1&Command=Add';
   AjaxCall('addpreferedvenue.ajax.php', k, refreshVenues);
}

function updateVenues (CID) {
   var k='ClubID='+CID +'&VenueID=-1';
   AjaxCall('addpreferedvenue.ajax.php', k, refreshVenues);
}

function deleteVenue(CID, VenueID) {
   var k='ClubID='+CID +'&Command=Del&VenueID=' + VenueID;
   AjaxCall('addpreferedvenue.ajax.php', k, refreshVenues);
}

function openInOverlay(phpFile, paramStr) { AjaxCall(phpFile, paramStr, showOverlay); }
function openInFeedback(phpFile, paramStr) { AjaxCall(phpFile, paramStr, popupFeedback); }

function setTeamCalendar(TeamID) { openInOverlay('showcalendar.ajax.php', 'TeamID='+TeamID); }
function delAlternative(TeamID, ID) { openInOverlay('showalternatives.ajax.php', 'TeamID=' + TeamID +'&ID=' + ID + '&Command=Del'); }
function setSlotCalendar(Venue, Pitch, Day, Time) { openInOverlay('showcalendar.ajax.php', 'Venue='+Venue + '&Pitch=' + Pitch + '&Day=' +Day + '&Time='+ Time); }
function addAlternative(TeamID) { openInOverlay('showalternatives.ajax.php', 'TeamID='+TeamID+'&Command=Add'); }
function setAlternatives(TeamID) { openInOverlay('showalternatives.ajax.php', 'TeamID='+TeamID); }

function showShowTeamCalendar(TeamID) { openInFeedback('showcalendar.ajax.php', 'TeamID='+TeamID); }
function showAlternatives(TeamID) { openInFeedback('showalternatives.ajax.php', 'TeamID='+TeamID); }
function showBlockers(VenueID, chronological) {
   var k= 'VenueID='+VenueID;
   if (chronological) k+= '&Chronological=1';
   openInFeedback('showblockers.ajax.php', k);
}


function dummy() {
   a= AjaxCallback();
   if (a) {
      // Do nothing, just make sure the call is handled properly
   }
}

function reOpenGame(ID) {
   AjaxCall('reopen.ajax.php', 'GameID='+ID, dummy);
   return false;
}


function calendarActivator() {
   var tables=document.getElementsByTagName('table');
      for (var i=0;i<tables.length;i++)  {
         if(tables[i].className=='month') {
            var trs=tables[i].getElementsByTagName('tr');
            for(var j=0; j<trs.length; j++) {
               if(trs[j].parentNode.nodeName=='TBODY' && trs[j].parentNode.nodeName!='TFOOT') {
                  var tds=trs[j].getElementsByTagName('td');
                  for (var k=0; k<tds.length; k++) {
                    if (tds[k].id) {
                       tds[k].onmouseover=function(){ this.oldclass= this.className; this.className='hovered'; return false; }
                       tds[k].onmouseout=function(){ this.className=this.oldclass; return false; }
                       tds[k].onmousedown=function(){
                          if (this.marked) { this.oldclass=this.original; this.marked= false; }
                          else { this.original= this.oldclass; this.marked= true; this.oldclass='marked'; this.className='marked'; }
                          return false;
                       }
                     }
                  }
               }
           }
       }
   }
}

