var memory_first = false;
var memory_second = false;
var first_click = true;
var time_started;
var timer;
var time = 0;
  
var counter = 0;
var trys = 0;

var num_rows = 4;
var num_cols = 6;  

$(document).ready(function(){

  generateMemory('memory', num_cols, num_rows);

});
 
 
function generateMemory(id, num_cols, num_rows) {

  var dataString = 'num_cols='+num_cols+'&num_rows='+num_rows;
  
  $.ajax({
    type:     "POST",
    url:      "/ajax/memory",
    data:     dataString,
    dataType: "json",
    success: function(data) {

      buildMemory(id, num_cols, num_rows, data.cards);
      
    },

    error: function(obj, msg1, msg2) {
      alert('error');
      return false;
    }
      
  });

  return false;
 
}


function buildMemory(id, num_cols, num_rows, cards) {

  var html = '<div id="deck"></div>';
  //html += '<div id="memory_counter"></div>';
  //html += '<div id="status"><table cellpadding="0" cellspacing="0" border="0"><tr><td align="right">Anzahl Züge:&nbsp;</td><td align="right"><span id="trycont">0</span></td></tr><tr><td align="right">Zeit:&nbsp;</td><td align="right"><span id="memory_timer_cont">0:00</span></td></tr></table></div>';
  html += '<div id="status">Anzahl Züge:&nbsp;<span id="trycont">0</span><br />Zeit:&nbsp;<span id="memory_timer_cont">0:00</span></div>';
  html += '<div id="text"><h3>Testen Sie Ihr Gedächtnis</h3><p>MovieBrain schult nicht nur das Gedächtnis, sondern ist auch ungemein unterhaltend und ansteckend. Testen Sie Ihr Gedächtnis und finden Sie die zusammengehörenden Filmbilder.</p></div>';
  if (set == 1) {
    bt1 = 'bt_memory1_high';
    bt2 = 'bt_memory2';
  } else {
    bt1 = 'bt_memory1';
    bt2 = 'bt_memory2_high';
  }
  html += '<div id="buttons"><a href="/games-aktionen/moviebrain/set/1"><img src="/_media/img/'+bt1+'.png" /></a>&nbsp;<a href="/games-aktionen/moviebrain/set/2"><img src="/_media/img/'+bt2+'.png" /></a>&nbsp;<a href="javascript:self.reload();"><img src="/_media/img/bt_spielen.png" /></a></div>';
  //} else {
    //html += '<div id="buttons"><a href="javascript:self.reload();"><img src="/_media/img/bt_spielen.png" /></a>&nbsp;&nbsp;<a href="/games-aktionen/moviebrain/set/1"><img src="/_media/img/bt_fuerkinder.png" /></a>TODO anderer Button</div>';
  //}
  //html += '<div id="try_counter">Anzahl Züge:<span id="trycont"></span></div>';
  //html += '<div id="memory_timer">Zeit:&nbsp;<span id="memory_timer_cont">0:00</span></div>';
 
  html += '<div id="memory_table"><table cellpadding="0" cellspacing="7" border="0">';
 
  for (var row=0; row<num_rows; row++) {
    html += '<tr>';
    
    for (var col=0; col<num_cols; col++) {
      var index = (row * num_cols) + col;
      html += '<td><div id="card_'+index+'" class="card"><div class="cont"><img src="/_media/img/memory/set'+set+'/'+cards[index]+'.jpg" /></div><div class="back"><a href="javascript:void(0);"><img src="/_media/img/icon_memory_back.png" /></a></div></div></td>';
    }
    
    html += '</tr>';

  }  
 
  html += '</table></div>';
  
  html += '<div id="hs"></div>';

  $('#'+id).html(html);
  
  // nur zum testen
  //sendResult();
  
  $('#memory .back a').click(function() {
  
    var card_id = $(this).parent().parent().attr('id');
    var parts = card_id.split('_');
    var id = parts[1];
    
    if (first_click) {
      timer = window.setInterval('actclock()', 1000);
      time_started = new Date();
      
      first_click = false;
    }
    
    if (memory_first && memory_second) {
      return false;
    }
    
    if (!memory_first) {
      memory_first = id;
      showCard($('#'+card_id+' .back'));
      //$('#'+card_id+' .back').animate({width: "0%"}, 500, 'linear', function() { $('#'+card_id+' .back').hide(); });
      
    } else {
    
      if (!memory_second) {
        memory_second = id;
        if (memory_first == memory_second) {
          return false;
        }
        showCard($('#'+card_id+' .back'));
        trys++;
        $('#memory #trycont').html(trys);

        if (cards[memory_first] == cards[memory_second]) {
          window.setTimeout('memory_correct()', 1000);
        }
        if (cards[memory_first] != cards[memory_second]) {
          window.setTimeout('memory_incorrect()', 2000);
        }
      }

    }
    //alert(id);  
  
  });
  
  $('#memory #memory_counter').html(counter);
  $('#memory #trycont').html(trys);

}


function showCard(elem) {
  elem.animate({width: "0%"}, 200, 'swing', function() { elem.hide(); });
}

function hideCard(elem) {
  elem.show();
  elem.animate({width: "100%"}, 200, 'swing', function() { });
}

function moveCardToDeck(elem) {

  var position = elem.parent().position();
  var top = position.top;
  var left = position.left;

  var newtop = -1*top + 30;  
  var newleft = -1*left + 122;  
  
  elem.css('z-index', trys + 10);
  
  elem.animate({top: newtop + "px", left: newleft + "px"}, 500, 'linear', function() { });

}

function memory_incorrect() {

  hideCard($('#card_'+memory_first+' .back'));
  hideCard($('#card_'+memory_second+' .back'));

  memory_first = false;
  memory_second = false;
  
}

function memory_correct() {

  counter++;

  moveCardToDeck($('#card_'+memory_first + ' .cont'));
  moveCardToDeck($('#card_'+memory_second + ' .cont'));
  
  memory_first = false;
  memory_second = false;
  
  if (counter == (num_cols * num_rows / 2)) {
    // fertig
    window.clearInterval(timer);
    
    window.setTimeout('sendResult()', 1000);
  }
  
}

function actclock() {

  var acttime = new Date();
  
  var diff = Math.floor((acttime.getTime() - time_started.getTime())/1000);
  time = diff;
  var min = Math.floor(diff / 60);
  var sec = diff % 60;
  if (sec < 10) {
    sec = '0'+sec;
  }
  
  $('#memory_timer_cont').html(min+':'+sec);

}


function sendResult() {

  var dataString = 'counter='+trys+'&time='+time+'&set='+set;
  //var dataString = 'counter=24&time=86&set='+set;
  
  $.ajax({
    type:     "POST",
    url:      "/ajax/memoryhs",
    data:     dataString,
    dataType: "json",
    success: function(data) {

      showHs(data);
      
    },

    error: function(obj, msg1, msg2) {
      alert('error');
      //sendCodeRequest(code, '');
      return false;
    }
      
  });

  return false;
  
}  

function showHs(data) {

  var output = '';
  
  output += '<div style="padding:40px 20px 20px 20px;">';
  output += '<div style="position:absolute; top:16px; right:18px; z-index:10000;"><a href="javascript:$(\'#hs\').fadeOut(500);void(0);"><img src="/_media/img/bt_close_layer.png" /></a></div>';
  output += '<div style="position:absolute; top:14px; left:47px; width:415px; z-index:10000;">';
  
  if (!data.loggedin) {

    output += '<h5>Der Highscore</h5>';
    
    output += '<p>Als registriertes und eingeloggtes Mitglied können Sie sich künftig in die Highscore-Liste eintragen.</p>';
    output += '<p>Wenn Sie bereits ClubCinema-Mitglied sind, melden Sie sich einfach an und spielen Sie nochmal mit!</p>';
    output += '<p>Wenn Sie noch kein ClubCinema-Mitglied sind, wird es Zeit sich zu registrieren. Sie erhalten mit Ihrer Anmeldung außerdem 100 ClubCinema Punkte gratis.</p>';
    output += '<a href="/benutzer/anmeldung"><img src="/_media/img/bt_jetztregistrieren.png" /></a>';

  } else {  

    if (data.hs.length <= 10) {
    
      if (data.res == -1) {
      
        // keine Verbesserung

        output += '<h5>Das ging schonmal besser</h5>';
        output += '<p>Sie haben bereits einen besseren Eintrag in der Highscore-Liste (grau hinterlegt).</p>';
      
      } else {
      
        output += '<h5>Sie sind in der MovieBrain-Top 10</h5>';
        output += '<p>Herzlichen Glückwunsch! Sie haben es in die MovieBrain-Top 10 geschafft. Das war eine Reife Leistung.</p>';
      
      }
      
    } else {
    
      if (data.res == -1) {
      
        // keine Verbesserung

        output += '<h5>Das ging schonmal besser</h5>';
        output += '<p>Sie haben bereits einen besseren Eintrag in der Highscore-Liste (grau hinterlegt).</p>';
      
      }
      
      if (data.res == 0) {
      
        // Verbesserung
      
        output += '<h5>Sie haben sich verbessert </h5>';
        output += '<p>Glückwunsch! Sie haben sich verbessert, sind aber noch nicht in die Top 10 vorgedrungen. </p>';
      
      }
    
    }
  
    output += '<div><table cellpadding="0" cellspacing="0" border="0" class="tab1">';
    output += '<tr class="header"><th width="50">Pos</th><th width="185">Name</th><th width="55">Zeit</th><th width="54">Züge</th><th width="69">Datum</th></tr>';
    
    for (var i=0; i<data.hs.length; i++) {
      var name = '...';
      if (data.hs[i].nickname != '') {
        name = data.hs[i].nickname;
      }
      if ((i==10) && (data.hs[i].counter != 10)) {
        output += '<tr class="row"><td>&nbsp;</td><td colspan="4">...</td></tr>';
        output += '<tr class="row high"><td align="left">'+ (data.hs[i].counter+1) +'</td><td>'+ name +'</td><td align="left" class="blue">'+ data.hs[i].mb_zeit +'</td><td align="left" class="blue">'+ data.hs[i].mb_zuege +'</td><td align="left">'+ data.hs[i].mb_timestamp +'&nbsp;</td></tr>';
        //output += '<tr><td colspan="5">...</td></tr>';
      } else {
        var tr_class = '';
        if (data.loggedin && (data.hs[i].mb_benutzer_id == data.user_id)) {
          tr_class = 'high';
        }
        output += '<tr class="row '+tr_class+'"><td align="left">'+ (data.hs[i].counter+1) +'</td><td>'+ name +'</td><td align="left" class="blue">'+ data.hs[i].mb_zeit +'</td><td align="left" class="blue">'+ data.hs[i].mb_zuege +'</td><td align="left">'+ data.hs[i].mb_timestamp +'&nbsp;</td></tr>';
      }    
    }
    
    output += '</table></div>';
    
    

    if (data.hs.length == 10) {
    
      if (data.res == -1) {
      
        // keine Verbesserung

        //output += '<p>Sie haben bereits einen besseren Eintrag in der Highscore-Liste. Versuchen Sie es gleich nochmal. Das können Sie besser!</p>';
      
      } else {
      
        //output += '<p>Versuchen Sie es gleich nochmal. Da geht noch was! </p>';
        
      }
      
    } else {
    
      if (data.res == -1) {
      
        // keine Verbesserung

        //output += '<p>Sie haben bereits einen besseren Eintrag in der Highscore-Liste. Versuchen Sie es gleich nochmal. Das können Sie besser!</p>';
      
      }
      
      if (data.res == 0) {
      
        // Verbesserung
      
        //output += '<p>Versuchen Sie es gleich nochmal. Da geht noch was! </p>';
      
      }
    
    }
    
    if (!data.hasnn) {
    
      output += '<p>Tragen Sie in Ihren Daten ein Nickname ein, damit dieser in der Highscore-Liste angezeigt wird.</p>';
    
    }

    output += '<div style="padding-top:0px;">';
    
    if (!data.hasnn) {
    
      output += '<a href="/benutzer/daten"><img src="/_media/img/bt_meinedatenbearbeiten.png" /></a>&nbsp;';
    
    }
    
    output += '<a href="javascript:self.reload();"><img src="/_media/img/bt_spielen.png" /></a></div>';
    
  
  }
  
  output += '</div></div>';

  $('#hs').html(output);
  $('#hs').fadeIn(500);
  
  
}
