/**
 * Obsluga karty gry
 * 
 */
  
$(document).ready(function() {
  game.setup();
  ocena.setup();

})

ocena = {
  lock : false,
  grywalnosc : 0,
  grywalnosc_dom : null,
  grafika : 0,
  grafika_dom : null,
  dzwiek : 0,
  dzwiek_dom : null,
    
  ajax_load : '<img src="/img/ajax-loader-black.gif" alt="" />',
    
  points_to_box : function(points) {
    return points*2;
  },
    
  box_to_points : function(box) {
    points = (box+1)/2;
    return points;
  },
    
  save_vote : function() {
    if(this.dzwiek==0 || this.grafika==0 || this.grywalnosc==0) return;
        
    $('#ocena_content_twoja .ocena_content_bottom .left').html('zapisywanie oceny...')
    $('#ocena_content_twoja .ocena_content_bottom .right').html(ocena.ajax_load)
        
    game_id = $('#GAME_ID').html();
        
    while(ocena.lock) sleep(1)
    ocena.lock=true
    $.ajax({
      url: '/gry/save_vote',
      type: 'post',
      dataType : 'json',
      data: {
        'game_id': game_id,
        'grywalnosc': ocena.grywalnosc,
        'grafika': ocena.grafika,
        'dzwiek':ocena.dzwiek
      },
      success: function(ret) {
        //alert(ret.result)
        srednia = Math.round( (ocena.grafika+ocena.grywalnosc+ocena.dzwiek)/3*2)/2
        $('#ocena_content_twoja .ocena_content_bottom .left').html('SUMA')
        $('#ocena_content_twoja .ocena_content_bottom .right').html(srednia)
        ocena.lock = false
                
        $('.srednia .grafika').html(ret.grafika)
        $('.srednia .grywalnosc').html(ret.grywalnosc)
        $('.srednia .dzwiek').html(ret.dzwiek)
                
        ocena.set_ocena_srednia();
      }
            
    })
  },
    
  click_twoja_grywalnosc : function(obj) {
    this.point_twoja_grywalnosc(obj)
    this.grywalnosc = this.box_to_points(parseInt(obj.attr('rel')))
    this.grywalnosc_dom = obj
        
    this.save_vote()
  },
    
    
  click_twoja_grafika : function(obj) {
    this.point_twoja_grafika(obj)
    this.grafika = this.box_to_points(parseInt(obj.attr('rel')))
    this.grafika_dom = obj
        
    this.save_vote()
  },
    
  click_twoja_dzwiek : function(obj) {
    this.point_twoja_dzwiek(obj)
    this.dzwiek = this.box_to_points(parseInt(obj.attr('rel')))
    this.dzwiek_dom = obj
        
    this.save_vote()
  },
    
  point_twoja_grywalnosc : function(obj) {
    if(this.lock) return;
        
    this.lock = true
    point = parseInt(obj.attr('rel'))
        
    $('#ocena_content_twoja .ocena_content_box.grywalnosc span').html(ocena.box_to_points(point))
    $('#ocena_content_twoja .ocena_content_box.grywalnosc .b').each(function() {
      bn = $(this).attr('rel');
      if(bn <= point) {
        $(this).addClass('p')
        $(this).removeClass('m')
      } else {
        $(this).addClass('m')
        $(this).removeClass('p')
      }
    })
    this.lock = false
  },
    
  point_twoja_grafika : function(obj) {
    if(this.lock) return;
        
    this.lock = true
    point = parseInt(obj.attr('rel'))
        
    $('#ocena_content_twoja .ocena_content_box.grafika span').html(ocena.box_to_points(point))
    $('#ocena_content_twoja .ocena_content_box.grafika .b').each(function() {
      bn = $(this).attr('rel');
      if(bn <= point) {
        $(this).addClass('p')
        $(this).removeClass('m')
      } else {
        $(this).addClass('m')
        $(this).removeClass('p')
      }
    })
    this.lock = false
  },
    
  point_twoja_dzwiek : function(obj) {
    if(this.lock) return;
        
    this.lock = true
    point = parseInt(obj.attr('rel'))
        
    $('#ocena_content_twoja .ocena_content_box.dzwiek span').html(ocena.box_to_points(point))
    $('#ocena_content_twoja .ocena_content_box.dzwiek .b').each(function() {
      bn = $(this).attr('rel');
      if(bn <= point) {
        $(this).addClass('p')
        $(this).removeClass('m')
      } else {
        $(this).addClass('m')
        $(this).removeClass('p')
      }
    })
    this.lock = false
  },
    
  set_ocena_srednia : function() {
    grafika = parseFloat( $('.srednia .grafika').html());
    grywalnosc = parseFloat( $('.srednia .grywalnosc').html());
    dzwiek = parseFloat( $('.srednia .dzwiek').html());
        
    $('#ocena_content_srednia .ocena_content_box.grywalnosc .b').each(function() {
      bn = $(this).attr('rel');
      if(bn < ocena.points_to_box(grywalnosc)) {
        $(this).addClass('p')
        $(this).removeClass('m')
      } else {
        $(this).addClass('m')
        $(this).removeClass('p')
      }
    })
    $('#ocena_content_srednia .ocena_content_box.grywalnosc span').html(grywalnosc)

    $('#ocena_content_srednia .ocena_content_box.grafika .b').each(function() {
      bn = $(this).attr('rel');
      if(bn < ocena.points_to_box(grafika)) {
        $(this).addClass('p')
        $(this).removeClass('m')
      } else {
        $(this).addClass('m')
        $(this).removeClass('p')
      }
    })
    $('#ocena_content_srednia .ocena_content_box.grafika span').html(grafika)
        
    $('#ocena_content_srednia .ocena_content_box.dzwiek .b').each(function() {
      bn = $(this).attr('rel');
      if(bn < ocena.points_to_box(dzwiek)) {
        $(this).addClass('p')
        $(this).removeClass('m')
      } else {
        $(this).addClass('m')
        $(this).removeClass('p')
      }
    })
    $('#ocena_content_srednia .ocena_content_box.dzwiek span').html(dzwiek)
        
    srednia = Math.round( (grafika+grywalnosc+dzwiek)/3 * 2) / 2
    $('#ocena_content_srednia .ocena_content_bottom .right').html(srednia)
        
  },
    
  set_ocena_twoja : function() {
    if( parseFloat($('.twoja .grafika').html()) == 0 ) return;
        
    grafika = parseFloat( $('.twoja .grafika').html());
    grywalnosc = parseFloat( $('.twoja .grywalnosc').html());
    dzwiek = parseFloat( $('.twoja .dzwiek').html());
        
    this.grafika = grafika
    this.grywalnosc = grywalnosc
    this.dzwiek = dzwiek
        
    $('#ocena_content_twoja .ocena_content_box.grywalnosc .b').each(function() {
      bn = $(this).attr('rel');
      if(bn == -1 + ocena.points_to_box(grywalnosc)) ocena.grywalnosc_dom = $(this)
      if(bn < ocena.points_to_box(grywalnosc)) {
        $(this).addClass('p')
        $(this).removeClass('m')
      } else {
        $(this).addClass('m')
        $(this).removeClass('p')
      }
    })
    $('#ocena_content_twoja .ocena_content_box.grywalnosc span').html(grywalnosc)

    $('#ocena_content_twoja .ocena_content_box.grafika .b').each(function() {
      bn = $(this).attr('rel');
      if(bn == -1 + ocena.points_to_box(grafika)) ocena.grafika_dom = $(this)
      if(bn < ocena.points_to_box(grafika)) {
        $(this).addClass('p')
        $(this).removeClass('m')
      } else {
        $(this).addClass('m')
        $(this).removeClass('p')
      }
    })
    $('#ocena_content_twoja .ocena_content_box.grafika span').html(grafika)
        
    $('#ocena_content_twoja .ocena_content_box.dzwiek .b').each(function() {
      bn = $(this).attr('rel');
      if(bn == -1 + ocena.points_to_box(dzwiek)) ocena.dzwiek_dom = $(this)
      if(bn < ocena.points_to_box(dzwiek)) {
        $(this).addClass('p')
        $(this).removeClass('m')
      } else {
        $(this).addClass('m')
        $(this).removeClass('p')
      }
    })
    $('#ocena_content_twoja .ocena_content_box.dzwiek span').html(dzwiek)
        
    srednia = Math.round( (grafika+grywalnosc+dzwiek)/3 * 2) / 2
    $('#ocena_content_twoja .ocena_content_bottom .right').html(srednia)
        
  },
    
  click_srednia : function() {
    $('#ocena_content_twoja').hide();
    $('#ocena_content_srednia').show();
    $('#click_srednia').addClass('active');
    $('#click_twoja').removeClass('active');
  },
    
  click_twoja : function () {
    $('#ocena_content_srednia').hide();
    $('#ocena_content_twoja').show();
    $('#click_srednia').removeClass('active');
    $('#click_twoja').addClass('active');
  },
    
  setup : function() {
        
    this.set_ocena_srednia();
    this.set_ocena_twoja();
        
    $('#ocena_content_twoja .grywalnosc .b').mouseover(function() {
      ocena.point_twoja_grywalnosc($(this))
    }).mouseout(function() {
      if( ocena.grywalnosc_dom==null) {
        $('#ocena_content_twoja .grywalnosc .b').removeClass('p').addClass('m')
        $('#ocena_content_twoja .ocena_content_box.grywalnosc span').html('N/A')
      } else {
        ocena.point_twoja_grywalnosc(ocena.grywalnosc_dom)
      }
    }).click(function() {
      ocena.click_twoja_grywalnosc($(this))
      return false;
    })
        
    $('#ocena_content_twoja .grafika .b').mouseover(function() {
      ocena.point_twoja_grafika($(this))
    }).mouseout(function() {
      if( ocena.grafika_dom==null) {
        $('#ocena_content_twoja .grafika .b').removeClass('p').addClass('m')
        $('#ocena_content_twoja .ocena_content_box.grafika span').html('N/A')
      } else {
        ocena.point_twoja_grafika(ocena.grafika_dom)
      }
    }).click(function() {
      ocena.click_twoja_grafika($(this))
      return false
    })
        
    $('#ocena_content_twoja .dzwiek .b').mouseover(function() {
      ocena.point_twoja_dzwiek($(this))
    }).mouseout(function() {
      if( ocena.dzwiek_dom==null) {
        $('#ocena_content_twoja .dzwiek .b').removeClass('p').addClass('m')
        $('#ocena_content_twoja .ocena_content_box.dzwiek span').html('N/A')
      } else {
        ocena.point_twoja_dzwiek(ocena.dzwiek_dom)
      }
    }).click(function() {
      ocena.click_twoja_dzwiek($(this))
      return false
    })
        
    $('#click_srednia').click(function() {
      ocena.click_srednia();
      return false;
    })
        
    $('#click_twoja').click(function() {
      ocena.click_twoja();
      return false;
    })
  }
}
  
game = {
    
  ajax_load : '<img src="/img/ajax-loader.gif" alt="" />',
  lock : false,
  game_id : 0,
  platform_id : 0,
    
    
    
  modyfikuj_opis : function() {
    $('#game_opis').hide();
    $('#game_opis_edit').show();
    $('.c1').hide();
    $('.c2').show();
  },
    
  zapisz_zmiany : function() {
    $('.c2').html(game.ajax_load + ' trwa zapisywanie zmian... ')
    game_id = $('#GAME_ID').html();
    updated_description = $('#game_opis_edit').val();
    $.ajax({
      url: '/gry/modyfikuj_opis',
      type: 'post',
      data: {
        'game_id':game_id,
        'updated_description':updated_description
      },
      success: function(ret) {
        $('#description_box').html(ret);
        game.setup();
      }
    })
  } ,
    
  przywroc_opis : function() {
    $('.c1').html(game.ajax_load + ' trwa ładowanie...')
    game_id = $('#GAME_ID').html();
    $.ajax({
      url:'/gry/fetch_description_history',
      data: {
        'game_id':game_id
      },
      success: function(ret) {
        $('#description_box').html(ret);
        game.setup();
      }
    })
  },
    
  wyswietl_opis: function() {
    $('.c1').html(game.ajax_load + ' trwa ładowanie...')
    game_id = $('#GAME_ID').html();
    $.ajax({
      url:'/gry/fetch_description',
      data: {
        'game_id':game_id
      },
      success: function(ret) {
        $('#description_box').html(ret);
        game.setup();
      }
    })
  },
    
  perform_przywroc_opis: function(obj) {
    if(game.lock) return;
    game.lock = true;
        
    $('.c1').html(game.ajax_load + ' proszę czekać...')
    revision = $('td.revision',obj.parent().parent()).html();
    game_id = $('#GAME_ID').html();
    $.ajax({
      url:'/gry/przywroc_opis',
      data:{
        'revision':revision,
        'game_id':game_id
      },
      success: function(ret) {
        $('#description_box').html(ret);
        game.setup();
      }
    })
        
  },
    
  anuluj : function() {
    $('#game_opis').show();
    $('#game_opis_edit').hide();
    $('.c1').show();
    $('.c2').hide();
  },

  uzupelnij_okladka : function(obj) {
    code = '<form id="uzupelnij_okladka_form" style="display:inline;width:50px"><input type="file" name="file" /> <a href="#">zapisz</a></form>';
    var parent = obj.parent()
    obj.parent().html(code)
    $('a',parent).click(function() {
      game.perform_uzupelnij_okladka($(this))
      return false;
    })
  },
    
  perform_uzupelnij_okladka : function(obj) {
    obj.html(game.ajax_load)
    game_id = $('#GAME_ID').html();
    pgame_id = $('#PGAME_ID').html();
        
    $('#uzupelnij_okladka_form').ajaxSubmit({
      url:'/gry/uzupelnij_okladka/'+pgame_id,
      type: 'post',
      dataType: 'json',
      success: function(ret) {
        if(ret.result) {
          obj.parent().html('zapisano.')
          $('img.gameinfo_okladka').attr('src',ret.url)
        } else {
          obj.parent().html('<span style="color:red">błąd</span>')
        }
      }
            
    })
  },

  uzupelnij : function(obj, dp) {
    oval = $('span',obj.parent()).html()
    if(!dp) {
      if(oval) {
        code = '<input type="text" value="' + oval + '" /><a href="#">zapisz</a>';
      } else {
        code = '<input type="text" /><a href="#">zapisz</a>';
      }
    } else {
      if(oval) {
        code = '<input type="text" class="dp" value="' + oval + '" /><a href="#">zapisz</a>';
      } else {
        code = '<input type="text" class="dp" /><a href="#">zapisz</a>';
      }
    }
        
    var parent = obj.parent()
    obj.parent().html(code)
    $('.dp').datepicker()
    $('a',parent).click(function() {
      game.perform_uzupelnij($(this))
      return false;
    })
  },
    
  perform_uzupelnij : function(obj) {
    obj.html(game.ajax_load)
    f = $('input',obj.parent()).val()
        
    game_id = $('#GAME_ID').html();
    platform_id = $('#PLATFORM_ID').html();
    rel = obj.parent().attr('rel')
    
    $.ajax({
      url: '/gry/uzupelnij',
      type: 'post',
      data: {
        'game_id': game_id,
        'platform_id': platform_id,
        'rel': rel,
        'val': f
      },
      success: function(ret) {
        if(ret=='true') {
          
          obj.parent().html(f)
        } else {
          obj.parent().html('<span style="color:red">błąd</span>')
        }
                
      }
    })
  },
    
  perform_uzupelnij_platforme : function(obj) {
    if(this.lock) return;
        
    this.lock = true;
    p_id = parseInt(obj.attr('rel'));
    game_id = $('#GAME_ID').html();
    platform_id = $('#PLATFORM_ID').html();
        
    obj.html('trwa dodawanie ' + this.ajax_load)
    $.ajax({
      url: '/gry/uzupelnij_platforme',
      type: 'get',
      data: {
        'game_id': game_id,
        'platform_id': platform_id,
        'p_id': p_id
      },
      success: function(ret) {
        $('.page_box_topinfo').html(ret)
        ocena.setup()
        game.setup()
      }
    })
  },
    
  setup : function() {
    game.lock=false;
        
    this.game_id = $('#GAME_ID').html();
    this.platform_id = $('#PLATFORM_ID').html();
        
        
        
    $('#uzupelnij_platforme_click').click(function() {
      $('#uzupelnij_platforme').show();
      $(this).parent().hide();
            
      $('.perform_uzupelnij_platforme').click(function() {
        game.perform_uzupelnij_platforme($(this));
        return false;
      })
            
      return false;
    })
        
    $('.uzupelnij').click(function() {
      game.uzupelnij($(this),false)
      return false;
    })
    
    $('.uzupelnij_dp').click(function() {
      game.uzupelnij($(this),true)
      return false;
    })
        
    $('.uzupelnij_okladka').click(function() {
      game.uzupelnij_okladka($(this))
      return false;
    })
        
    $('.a_przywroc').click(function() {
      game.perform_przywroc_opis( $(this) );
      return false;
    })
        
    $('#wyswietl_opis').click(function() {
      game.wyswietl_opis();
      return false;
    })
        
    $('#modyfikuj_opis').click(function() {
      game.modyfikuj_opis();
      return false;
    })
        
    $('#zapisz_zmiany').click(function() {
      game.zapisz_zmiany();
      return false;
    })
        
    $('#przywroc_opis').click(function() {
      game.przywroc_opis();
      return false;
    })
        
    $('#anuluj').click(function() {
      game.anuluj();
      return false;
    })
  }
}

