var a= new Object;

function openWindow(url, name) {
   // Name may NOT contain whitespace or MSIE will crash
   if (!name) name='kompsos';
   window.open(url, name, 'menubar=yes,toolbar=yes,status=yes,location=yes,scrollbars=yes,resizable=1');
}

function showSurvey() {
   a= AjaxCallback();
   if (a) {
      var p= document.getElementById('scoreboard');
      if (p) p.innerHTML= a;
   }
}

function dummy() {
   a= AjaxCallback();
   if (a) {
      // Do nothing, just make sure the call is handled properly
   }
}

function getSurvey(id) {
   var k= 'CompID=' + id;
   AjaxCall('survey.ajax.php', k, showSurvey);
}

function getSurveyLevel(id) {
   var l=document.getElementById('LevelID');
   var k= 'LevelID=' + l.value;
   AjaxCall('survey.ajax.php', k, showSurvey);
}

function nextMonth(article, year, month, RandomID) {
   if (month<12) { month++; }
   else  {month=1; year++; }
   if (!RandomID) RandomID= 'null';
   k= "Article="+ article +"&Month=" + month + "&Year=" + year + "&RandomID=" + RandomID;
   AjaxCall('calendar.ajax.php', k, showMonth);
}

function prevMonth(article, year, month, RandomID) {
   if (month>1) { month--; }
   else { month=12; year--; }
   if (!RandomID) RandomID= 'null';
   k= "Article="+ article +"&Month=" + month + "&Year=" + year + "&RandomID=" + RandomID;
   AjaxCall('calendar.ajax.php', k, showMonth);
}

function showMonth() {
   a= AjaxCallback();
   if (a) {
      var p= document.getElementById('calendar');
      if (p) p.innerHTML= a;
   }
}

function editPoll(Poll, ID) {
   window.open('poll.php?Poll='+Poll+'&ID='+ID);
}

function hasVoted() {
   a= AjaxCallback();
   if (a) {
      // First line contains the name of the DIV
      var pp= a.split(';');
      var s= 'poll['+ pp[0] + ']';
      var p= document.getElementById(s);
      if (p) p.innerHTML= pp[1];
   }
}


function vote(e) {
   var f=document.getElementById('form['+ e +']');
   if (f) {
      var a= f.elements;
      for (var j=0; j<a.length; j++) {
         if (a[j].checked) {
            k= 'poll'+ '=' + e +'&answer='+ a[j].value;
            AjaxCall('vote.ajax.php', k, hasVoted);
         }
      }
   }
}

var oldInnerHTML='';

function loadArticle() {
   var a= AjaxCallback();
   var popup= document.getElementById('centercolumns');
//   var popup= document.getElementById('popup');
   if (a) {
      if (popup) {
         if (! oldInnerHTML) oldInnerHTML= popup.innerHTML;
         popup.innerHTML=a;
         // Make sure, if it wasn't opened otherwise, to open the popup layer
         // var subframe= document.getElementById('subframe');
         // if (subframe) { subframe.innerHTML=a; }
         // var shade= document.getElementById('shade');
         // if (shade) { shade.style.display= 'block'; }
         popup.scrollTop = 0;
//         popup.style.display= 'block';
      }
   }
}

function loadHeadlines() {
   var a= AjaxCallback();
   if (a) {
      // return value is articleID::InnerHTML
      var v=a.split('::');
      var popup= document.getElementById(v[0]);
      if (popup) popup.innerHTML=v[1];
   }
}

function closeArticle() {
   var popup= document.getElementById('centercolumns');
//   var popup= document.getElementById('popup');
   if (popup) {
      popup.innerHTML=oldInnerHTML;
      oldInnerHTML='';
//      var shade= document.getElementById('shade');
//      if (shade) { shade.style.display= 'none'; }
//      popup.style.display= 'none';
//      var subframe= document.getElementById('subframe');
//      if (subframe) { subframe.innerHTML=""; }

      return false; // To make sure the link is not activated
   }
   else {
      return true;
   }
}


function getArticle(ID, Params) {
   // TODO: Use scriptaculous for a more flashy opening
   var OK=false;
   var popup= document.getElementById('centercolumns');
   if (!oldInnerHTML) oldInnerHTML= popup.innerHTML;
//   if (popup) popup.innerHTML="<img class='loadimg' src='./images/loading.gif'>";
//   var subframe= document.getElementById('subframe');
//   if (subframe) {
//      var shade= document.getElementById('shade');
//      if (shade) { shade.style.display= 'block'; }
//     var popup= document.getElementById('popup');
//      if (popup) { shade.style.display= 'block'; }
//      popup.style.display= 'block';
//      subframe.innerHTML="<img class='loadimg' src='./images/loading.gif'>";

      var k='Article='+ ID;
      if (Params) k+= '&' + Params;
      AjaxCall('getarticle.ajax.php', k, loadArticle);
//   }
   // else { OK= true; }
   return OK;
}


// TODO: Put these in a secondary library as they are also defined in editor.js
function showInfo() {
   var a= AjaxCallback();
   if (a) { alert(a) }
}
function getInfo(Table, ID) {
   AjaxCall('info.ajax.php', 'Table=' + Table +'&ID=' + ID, showInfo);
}

function doLogin() {
   var a= AjaxCallback();
   if (a) {
      if (a.indexOf('location:')==0) {
          window.location.href=a.substr(9);
          window.location.reload(true);
      }
      else {
         var e= document.getElementById('login');
         if (e) e.innerHTML=a;
      }
   }
}

function tryLogin() {
   // TODO: Encrypt the password
   var e;
   var k= 'ajax=1';
   if (e= document.login.Cookie) {
      for (var i=0; i< e.length; i++) {
         if (e[i].checked==true) {
             k+= "&Cookie="+e[i].value;
             break;
         }
      }
   }
   var e= document.getElementById('ClubCode'); if(e) { k+= "&ClubCode=" + e.value; }
   var e= document.getElementById('UserName'); if(e) { k+= "&UserName=" + e.value; }
   var e= document.getElementById('Password'); if(e) { k+= "&Password=" + e.value; }
   AjaxCall('login.ajax.php', k, doLogin);

}

function tryLogoff() {
   AjaxCall('login.ajax.php', 'ajax=1&logoff=1', doLogin);
}

function doLogoff() {
   AjaxCall('login.ajax.php', 'ajax=1&logoff=0', loadArticle);
}

function reOpenGame(ID) {
   AjaxCall('reopen.ajax.php', 'GameID='+ID, dummy);
   return false;
}

function getMyGames(Article) {
   var e=document.getElementById('LevelID');
   if (e) {
      var k= "ajax=1&LevelID=" + e.options[e.selectedIndex].value;
      getArticle(Article, k);
   }
   return false;
}

function getRefAssignments(Article) {
   var k= "ajax=1";
   var e= document.getElementById('publish');
   if (e) { k+= "&publish=" + e.options[e.selectedIndex].value; }
   var e= document.getElementById('Begin');   if (e) k+= "&Begin="+e.value;
   var e= document.getElementById('End');     if (e) k+= "&End="+e.value;
   getArticle(Article, k);
   return false;
}

function reloadStats(Article, First, Last) {
   var e= null;
   var k='ajax=1&StatsMin=' + First + '&StatsMax=' + Last;

   e= document.getElementById('Sort'); if (e) k+= "&Sort="+ e.value;
   e= document.getElementById('LevelID'); if (e) k+= "&LevelID="+ e.value;
   e= document.getElementById('CompID'); if (e) k+= "&CompID=" + e.value;
   e= document.getElementById('TeamID'); if (e) k+= "&TeamID=" + e.value;
   e= document.getElementById('ClubID'); if (e) k+= "&ClubID=" + e.value;
   e= document.getElementById('Licence'); if (e) k+= "&Licence=" + e.value;
   getArticle(Article, k);
   return false;
}

function reloadPenalties(Article, First, Last) {
   var e= null;
   var k='ajax=1&PenMin=' + First + '&PenMax=' + Last;

   e= document.getElementById('LevelID'); if (e) k+= "&LevelID="+ e.value;
   e= document.getElementById('CompID'); if (e) k+= "&CompID=" + e.value;
   e= document.getElementById('TeamID'); if (e) k+= "&TeamID=" + e.value;
   e= document.getElementById('ClubID'); if (e) k+= "&ClubID=" + e.value;
   e= document.getElementById('Licence'); if (e) k+= "&Licence=" + e.value;
   getArticle(Article, k);
   return false;
}

function getHeadlines(ID, Limit) {
   var k='Article='+ ID;
   if (Limit) k+= '&ajax=1&Limit=' + Limit;
   AjaxCall('headlines.ajax.php', k, loadHeadlines);
}

function showIncident() {
   var a= AjaxCallback();
   if (a) {
      // callback kwill be ID::InnerHTML
      var v= a.split('::');
      if (v[0]) {
         var e=document.getElementById(v[0]);
         if (e) e.innerHTML=v[1];
      }
   }
}

function editIncident(ID) {
   var k= 'Incident='+ ID;
   AjaxCall('incidents.ajax.php', k, showIncident);
   return false;
}
