PHOTO = 
{
  photo: 0,
  initiate: function(useronly){
    var photoid = parseInt(location.hash.replace(/#zdjecie-/, ''));
    
    if(isNaN(photoid))
    {
      PHOTO.setError('Podano nieprawidłowy identyfikator zdjęcia.');
      return false;
    }
    else
    {
      PHOTO.get(photoid);
    }
  },
  get: function(id){
    if(PHOTO.photo != 0)
    {
      PHOTO.clear();
    }
    
    if(isNaN(id))
    {
      PHOTO.setError('Podano nieprawidłowy identyfikator zdjęcia.');
      return false;
    }
    else
    {
      PHOTO.photo = id;
    }
    
    $.ajax({
      type: 'GET',
      url: HOME + 'fotorelacje/pokazzdjecie/' + PHOTO.photo + '/',
      success: function(data){
        switch(data)
        {
          case 'a1':
            PHOTO.setError('Podano nieprawidłowy identyfikator zdjęcia.');
            return false;
          break;
          case 'a2':
            PHOTO.setError('Wystąpił problem podczas pobierania informacji o zdjęciu.');
            return false;
          break;
          default:
            var json = eval('(' + data + ')');
            setTimeout(function(){
              PHOTO.set(json);
            }, 550);
          break;
        }
      }
    });
  },
  clear: function(){
    $('#photocontainer').fadeOut(500);
    $('#photo-info').fadeOut(500);
    $('#photo-exif').fadeOut(500);
    
    if($('#photo-comments').css('display') != 'none')
    {
      $('#photo-comments').slideUp(500);
    }
    if($('#photo-comment-form').css('display') != 'none')
    {
      $('#photo-comment-form').slideUp(500);
    }
    if($('#comment-error').css('display') != 'none')
    {
      $('#comment-error').slideUp(500);
    }
    setTimeout(function(){
      $('#photocontainer').unbind();
      $('#photocontainer').css({'margin-top': '0px', 'margin-left': '0px'});
      $('#photo-previous-div').css({'display': 'none'});
      $('#photo-next-div').css({'display': 'none'});
      $('#photo-previous').unbind();
      $('#photo-next').unbind();
      
      $('div[@class=commentselectclass]').remove();
    }, 501);
  },
  set: function(gallery){
    PHOTO.preloadImage(HOME + 'photos/photorelations/medium/' + gallery.photo.id + '.jpg', function(){
      PHOTO.setNavigation(gallery.previousphoto, gallery.nextphoto);
      PHOTO.setBiglink(gallery.photo.id);
      
      PHOTO.setPhoto(gallery.photo.id, gallery.photo.width, gallery.photo.height);
      PHOTO.setInfo(gallery.photo.views, gallery.photo.author, gallery.photo.userlink);
      PHOTO.setExif(gallery.photo.exif);
      PHOTO.getComments(gallery.photo.id);
    });
  },
  setPhoto: function(id, width, height)
  {
    var photo = $('#mainphoto');
    var photocontainer = $('#photocontainer');
    
    medium_height = Math.round(467*height/width);
    medium_width = Math.round(467*width/height);
    
    if(width < 467 && height < 467)
    {
      var margin_top = Math.round((467 - height)/2);
      var margin_left = Math.round((467 - width)/2);
      
      photocontainer.css({'margin-top': margin_top});
      photocontainer.css({'margin-left': margin_left});
    }
    else if(medium_width > medium_height)
    {
      var margin = Math.round((467 - medium_height)/2);
      
      photocontainer.css({'margin-top': margin});
    }
    else if(medium_width < medium_height)
    {
      var margin = Math.round((467 - medium_width)/2);
      
      photocontainer.css({'margin-left': margin});
    }
    
    photo.attr('src', HOME + 'photos/photorelations/medium/' + id + '.jpg');
    
    photocontainer.css({'display': 'inline'});
    photocontainer.fadeIn(500);
  },
  setInfo: function(views, author, authorlink){
    var author_a = $('#photo-author');
    
    $('#photo-views').text(views);
    author_a.attr('href', HOME + 'galeria/' + authorlink + '/');
    author_a.text(author);
    
    $('#photo-info').fadeIn(500);
  },
  setExif: function(exif){
    if(exif.Make){ $('#photo-make').text(exif.Make); }
    if(exif.Model){ $('#photo-model').text(exif.Model); }
    if(exif.FNumber){ $('#photo-fnumber').text(exif.FNumber); }
    if(exif.ISOSpeedRatings){ $('#photo-iso').text('iso' + String(exif.ISOSpeedRatings)); }
    if(exif.ExposureTime){ $('#photo-exposuretime').text(exif.ExposureTime); }
    if(exif.FocalLength){ $('#photo-focallength').text(exif.FocalLength); }
    
    $('#photo-exif').fadeIn(500);
  },
  setNavigation: function(previous, next){
    var photop = $('#photo-previous');
    var photon = $('#photo-next');
    
    if(previous != '')
    {
      photop.attr('href', '#zdjecie-' + previous);
      photop.click(function(){
        PHOTO.get(previous);
      });
    }
    
    if(next != '')
    {
      photon.attr('href', '#zdjecie-' + next);
      photon.click(function(){
        PHOTO.get(next);
      });
    }
    
    if(previous != '' & next != '')
    {
      PHOTO.bindNavigation(3);
    }
    else if(previous != '' & next == '')
    {
      PHOTO.bindNavigation(2);
    }
    else if(previous == '' & next != '')
    {
      PHOTO.bindNavigation(1);
    }
    else
    {
      PHOTO.bindNavigation(0);
    }
  },
  bindNavigation: function(mode){
    var photocontainer = $('#photocontainer');
    switch(mode)
    {
      case 3:
        photocontainer.mouseover(function(){
          $('#photo-previous-div').css({'display': 'block'});
          $('#photo-next-div').css({'display': 'block'});
        });
        photocontainer.mouseout(function(){
          $('#photo-previous-div').css({'display': 'none'});
          $('#photo-next-div').css({'display': 'none'});
        });
      break;
      case 2:
        photocontainer.mouseover(function(){
          $('#photo-previous-div').css({'display': 'block'});
        });
        photocontainer.mouseout(function(){
          $('#photo-previous-div').css({'display': 'none'});
        });
      break;
      case 1:
        photocontainer.mouseover(function(){
          $('#photo-next-div').css({'display': 'block'});
        });
        photocontainer.mouseout(function(){
          $('#photo-next-div').css({'display': 'none'});
        });
      break;
    }
  },
  setBiglink: function(id){
    $('#photo-biglink').attr('href', HOME + 'photos/photorelations/big/' + id + '.jpg');
  },
  setError: function(text)
  {
    $('#photo-error').text(text);
    $('#photo-error').fadeIn(500);
    setTimeout(function(){
      var url = 'http://' + location.hostname + location.pathname; 
      document.location = url.replace('zdjecia/', '');
    }, 1500);
  },
  setCommentForm: function(id){
    $('#photo-comment-form').attr('action', HOME+ 'fotorelacje/dodajkomentarz/' + id + '/');
    $('#photo-comment-form').slideDown(500);
  },
  clearCommentForm: function(id){
    $('#photo-comment-author').val('');
    $('#photo-comment-email').val('');
    $('#photo-comment-body').val('');
  },
  addComment: function(){
    var author = $('#photo-comment-author').val();
    var email = $('#photo-comment-email').val();
    var body = $('#photo-comment-body').val();
    
    if(author == '' || email == '' || body == '')
    {
      alert('Aby dodać komentarz należy wypełnić wszystkie pola!');
      return false;
    }
    
    if(!email.match('^[a-z0-9!#$%&*+-=?^_`{|}~]+(\.[a-z0-9!#$%&*+-=?^_`{|}~]+)*@([-a-z0-9]+\.)+([a-z]{2,3}|info|arpa|aero|coop|name|museum)$'))
    {
      alert('Prosimy o podanie prawdziwego adresu e-mail. Nie zostanie on wyświetlony na stronie i pozostanie tylko do wiadomości autorów strony.');
      return false;
    }
    
    var query = 'author=' + author + '&email=' + email + '&body=' + body;
    
    $.ajax({
      type: 'POST',
      url: $('#photo-comment-form').attr('action'),
      data: query,
      beforeSend: function(){
        $('#photo-comment-form').slideUp(500);
        setTimeout(function(){
          $('#comment-add-loading').slideDown(500);
        }, 500);
      },
      complete: function(){
        setTimeout(function(){
          $('#comment-add-loading').slideUp(500);
        }, 500);
      },
      success: function(msg){
        setTimeout(function(){
          switch(msg)
          {
            default:
              var comment = eval('(' + msg + ')');
              
              if(comment.admin == 'yes')
              {
                $('#photo-comments').append('<div id="photo-comment-id-' + comment.id + '" style="display: none;" class="commentselectclass"><div class="komentarz"><div class="koment_top"><div class="koment_autor"><a href="mailto:' + comment.email + '">' + comment.author + '</a><br />IP: ' + comment.ip + '; host: ' + comment.host + ' <a href="javascript: void(0);" onclick="deletecomment(' + comment.id + ');" class="delete">[usuń]</a> <img src="' + HOME + 'tpl/img/loading_mini_black.gif" alt="Usuwam..." style="display: none;" id="photo-comment-loading-' + comment.id + '" /></div><div class="koment_data">' + comment.added + '</div><br style="clear: both;" /></div>' + comment.body + '</div><div class="space"></div></div>');
              }
              else
              {
                $('#photo-comments').append('<div id="photo-comment-id-' + comment.id + '" style="display: none;" class="commentselectclass"><div class="komentarz"><div class="koment_top"><div class="koment_autor">' + comment.author + '</div><div class="koment_data">' + comment.added + '</div><br style="clear: both;" /></div>' + comment.body + '</div><div class="space"></div></div>');
              }
              
              if($('#comment-error').css('display') != 'none')
              {
                $('#comment-error').slideUp(550);
                setTimeout(function(){
                  $('#photo-comment-id-' + comment.id).css({'display': 'block'});
                  $('#photo-comments').slideDown(500);
                  PHOTO.clearCommentForm();
                }, 600);
              }
              else
              {
                setTimeout(function(){
                  $('#photo-comment-id-' + comment.id).slideDown(500);
                  PHOTO.clearCommentForm();
                }, 600);
              }
            break;
            case 'a1':
              $('#comment-add-error').empty().append('Podano nieprawidłowy identyfikator zdjęcia!');
              $('#comment-add-error').fadeIn('normal');
              setTimeout(function(){
                $('#categoryerror').fadeOut('normal', function(){
                  $('#categoryform').slideDown(500);
                });
              },3000);
            break;
            case 'a2':
              $('#comment-add-error').empty().append('Aby dodać komentarz należy wypełnić wszystkie pola!');
              $('#comment-add-error').fadeIn('normal');
              setTimeout(function(){
                $('#categoryerror').fadeOut('normal', function(){
                  $('#categoryform').slideDown(500);
                });
              },3000);
            break;
            case 'a3':
              $('#comment-add-error').empty().append('Prosimy o podanie prawdziwego adresu e-mail. Nie zostanie on wyświetlony na stronie i pozostanie tylko do wiadomości autorów strony.');
              $('#comment-add-error').fadeIn('normal');
              setTimeout(function(){
                $('#categoryerror').fadeOut('normal', function(){
                  $('#categoryform').slideDown(500);
                });
              },3000);
            break;
            case 'a4':
              $('#comment-add-error').empty().append('Wystąpił problem z dodawaniem komentarza do bazy danych.');
              $('#comment-add-error').fadeIn('normal');
              setTimeout(function(){
                $('#categoryerror').fadeOut('normal', function(){
                  $('#categoryform').slideDown(500);
                });
              },3000);
            break;
          }
        }, 500);
      },
      error: function(request, settings){
        $('#comment-add-error').empty().append('Wystąpił problem z dodawaniem komentarza. Prawdopodobnie serwer jest przeciążony, spróbuj później.');
        $('#comment-add-error').fadeIn('normal');
        setTimeout(function(){
          $('#categoryerror').fadeOut('normal', function(){
            $('#categoryform').slideDown(500);
          });
        },3000);
      }
    });
    
    return true;
  },
  getComments: function(id){
    $.ajax({
      type: 'GET',
      url: HOME + 'fotorelacje/komentarze/' + id + '/',
      success: function(data){
        switch(data)
        {
          case 'a1':
            alert(data);
            return false;
          break;
          case 'a2':
            $('#comment-error').text('Tego zdjęcia jeszcze nikt nie skomentował. Bądź pierwszy!');
            $('#comment-error').slideDown(500);
            setTimeout(function(){
              PHOTO.setCommentForm(id);
            }, 510);
            return false;
          break;
          default:
            $('#photo-comments').append(data);
            $('#photo-comments').slideDown(1000);
            setTimeout(function(){
              PHOTO.setCommentForm(id);
            }, 1010);
          break;
        }
      }
    });
  },
  preloadImage: function(url, callback){
    var img = document.createElement('img');
    img.setAttribute('src', url);
    
    if(img.complete)
    {
      callback();
    }
    else
    {
      var img = $(img);
      img.load(function(){
        callback();
      });
    }
  }
}

