function content_onBlur(obj, data)
{
   if (obj.val() == '')
      obj.val(data.text);
}

function content_onFocus(obj, data)
{
   if (obj.val() == data.text)
      obj.val('');
}

function author_onBlur(obj, data)
{
   if (obj.val() == '')
      obj.val(data.text);
}

function author_onFocus(obj, data)
{
   if (obj.val() == data.text)
      obj.val('');
}

function disableCommentForm(disabled)
{
   $('#author').attr('disabled', disabled);
   $('#cText').attr('disabled', disabled);
   $('#btCancel').attr('disabled', disabled);
   $('#btSend').attr('disabled', disabled);
}

function showInfoMsg(msg)
{
   var info = $('#info');
   
   info.text(msg);
   info.show();
}

function success_sendComment(data)
{
   var info = $('#info');

   if (data.error)
      info.html(data.error);
   else {
      refreshComments();
      info.hide();
   }
   
   disableCommentForm(false);
   $('#btCancel').click();
}

function cancel_onClick(obj, data)
{
   $('#cText').val(data.contentText);
   $('#author').val(data.authorText);
}

function refreshComments()
{
   var id = $('#id');
   
   $.post('index.php?controller=articles&action=comments', {id: id.val()}, success_refreshComments, 'text');
}

function success_refreshComments(data)
{
   $('#bKomentarze').html(data);
}

function send_onClick(obj, data)
{
   disableCommentForm(true);
   
   if ($('#logMe').attr('checked'))
      showLoginBox(loginData);
   else 
      sendComment(sendData)
}

function sendComment(data)
{
   var info = $('#info');
   var content = $('#cText');
   var author = $('#author');
   var id = $('#id');

   if (content.val() == '') {
      showInfoMsg(data.contentText);
      disableCommentForm(false);
   }
   else if (!data.logged && (author.val() == '')) {
      showInfoMsg(data.authorText);
      disableCommentForm(false);
   }
   else {
      var request = {id: id.val(), content: content.val(), author: author.val()};
      showInfoMsg(data.sendText); 
      $.post('index.php?controller=articles&action=comment', request, success_sendComment, 'json');
   }
}

function showLoginBox(data)
{
   var box = $('#blogRegisterMid');
   
   /* init cleaning */
   box.html('');
   
   /* info/error display element */
   var info = $('<div id="infoLogin"></div>');
   info.hide();
   
   /* title element */
   var title = $('<h2 class="header"></h2>');
   title.text(data.titleText);
   
   /* login input */
   var login = $('<input type="text" id="nick" value="' + data.loginText + '" />');
   login.focus(function() { if ($(this).val() == data.loginText ) $(this).val('')});
   
   /* passwd input */
   var passwd = $('<input type="password" id="password" value="' + data.passwordText + '" />');
   passwd.focus(function() { if ($(this).val() == data.passwordText) $(this).val('')});
   
   /* cancel button */
   var cancel = $('<input type="button" id="blogRezygnuje" />');
   cancel.click(function() {disableCommentForm(false); $('#blogRegister').hide();});
   
   /* ok button */
   var ok = $('<input type="button" id="blogOk" />');
   ok.click(loginUser_onClick);
   
   /* buttons container */
   var p = $('<p id="fblogp2"></p>');
   p.append(cancel).append(ok);
   
   /* line elem */
   var line = $('<p class="horizLine" style="width: 85%; margin: 0 auto"></p>');

   /* register label */
   var reg_label = $('<h2 class="header"></h2>');
   reg_label.text(data.registerText);
   
   /* register link */
   var reg_link = $('<a id="registerMe" href="javascript:void(0);"></a>');
   reg_link.append(reg_label);
   reg_link.click(function() {showRegisterBox(registerData)});

   /* from element */
   var form = $('<form id="fblogRegister"></form>');
   form.append(login).append(passwd).append(p).append(line).append(reg_link);   
   
   box.append(title).append(info).append(form);
   
   box.parent().show();
   centerBox(box.parent().get(0));
}

function showRegisterBox(data)
{
   var box = $('#blogRegisterMid');
   
   /* init cleaning */
   box.html('');
   
   /* info/error display element */
   var info = $('<div id="infoLogin"></div>');
   info.hide();
   
   /* title element */
   var title = $('<h2 class="header"></h2>');
   title.text(data.titleText);
   
   /* login input */
   var login = $('<input type="text" id="nick" value="' + data.loginText + '" />');
   login.focus(function() { if ($(this).val() == data.loginText) $(this).val('')});

   /* login input */
   var email = $('<input type="text" id="email" value="' + data.emailText + '" />');
   email.focus(function() { if ($(this).val() == data.emailText) $(this).val('')});
   
   /* passwd input */
   var passwd = $('<input type="password" id="password" value="' + data.passwordText + '" />');
   passwd.focus(function() { if ($(this).val() == data.passwordText) $(this).val('')});
   
   /* passwd confirmation input */
   var c_passwd = $('<input type="password" id="c_password" value="' + data.passwordText + '" />');
   c_passwd.focus(function() { if ($(this).val() == data.passwordText) $(this).val('')});   

   /* rules link */
   var rules_link = $('<a href="rules.html" class="bullet"></a>');
   rules_link.text(data.rulesText);
   
   /* rules container */
   var p_rules = $('<p id="fblogp1"></p>');
   p_rules.append(rules_link);
         
   /* cancel button */
   var cancel = $('<input type="button" id="blogRezygnuje" />');
   cancel.click(function() {disableCommentForm(false); $('#blogRegister').hide();});
   
   /* ok button */
   var ok = $('<input type="button" id="blogZarejestruj" />');
   ok.click(registerUser_onClick);

   /* buttons container */
   var p_buttons = $('<p id="fblogp2"></p>');
   p_buttons.append(cancel).append(ok);
   
   /* from element */
   var form = $('<form id="fblogRegister"></form>');
   form.append(login).append(email).append(passwd).append(c_passwd).append(p_rules).append(p_buttons);   
   
   box.append(title).append(info).append(form);
   
   box.parent().show();
   centerBox(box.parent().get(0));
}

function disableLoginForm(disabled)
{
   $('#nick').attr('disabled', disabled);
   $('#password').attr('disabled', disabled);
   $('#blogRezygnuje').attr('disabled', disabled);
   $('#blogOk').attr('disabled', disabled);
}

function loginUser_onClick()
{
   disableLoginForm(true);
   var login = $('#nick').val();
   var passwd = $('#password').val();
   
   var request = {login: login, password: passwd}; 
   $.post('index.php?controller=users&action=login', request, success_loginUser_onClick, 'json');
}

function success_loginUser_onClick(data)
{
   disableLoginForm(false);
   if (data.error) {
      var info = $('#infoLogin');
      info.text(data.error);
      info.show();
   }
   else if (data.logged) {
      $('#blogRegister').hide();
      $('#logMeWrapper').hide();
      $('#logMe').attr('checked', false);
      var p = $('<p></p>');
      p.text(data.login);
      
      $('#author').remove();
      var author = $('<input type="hidden" id="author" name="author" value="' + data.login + '"/>');

      var logout = $('<a href="index.php?controller=users&action=logout" id="logOut"></a>');
      $('#goBack').before(logout);
      
      $('#commentForm').prepend(author).prepend(p);
            
      sendComment(sendData);
   }  
}

function disableRegisterForm(disabled)
{
   $('#nick').attr('disabled', disabled);
   $('#password').attr('disabled', disabled);
   $('#c_password').attr('disabled', disabled);
   $('#email').attr('disabled', disabled);
   $('#blogRezygnuje').attr('disabled', disabled);
   $('#blogZarejestruj').attr('disabled', disabled);
}

function registerUser_onClick()
{
   disableRegisterForm(true);
   var login = $('#nick').val();
   var passwd = $('#password').val();
   var c_passwd = $('#c_password').val();
   var email = $('#email').val();
   
   var request = {login: login, password: passwd, c_password: c_passwd, email: email}; 
   $.post('index.php?controller=users&action=register', request, success_registerUser_onClick, 'json');
}

function success_registerUser_onClick(data)
{
   disableRegisterForm(false);
   if (data.error) {
      var info = $('#infoLogin');
      info.text(data.error);
      info.show();
   }
   else if (data.registered) {
      showRegisteredBox(registeredData);
   }  
   // TODO: dodac obsluge else z opisem 'Blad komunikacji. Prosimy sprobowac pozniej.'
}

function showRegisteredBox(data)
{
   var box = $('#blogRegisterMid');
   
   /* init cleaning */
   box.html('');
   
   /* content container */
   var p_content = $('<p id="fblogp1"></p>');
   p_content.text(data.content);
   
   /* close image */
   var close_img = $('<img src="/.templates/images/forum/btZamknij.gif" alt="" style="position: relative; margin-top: 10px;"/>');
   
   /* close link */
   var close_link = $('<a href="javascript:void(0);"></a>');
   close_link.click(function() {disableCommentForm(false); $('#blogRegister').hide();});
   close_link.append(close_img);

   /* close container */
   var p_close = $('<p id="fblog2"></p>');
   p_close.append(close_link);
   
   /* from element */
   var form = $('<form id="fblogRegister"></form>');
   form.append(p_content).append(p_close);   
   
   box.append(form);
   
   box.parent().show();
   centerBox(box.parent().get(0));
}

function centerBox(obj) {
    obj.style.marginTop = parseInt(js_getScrollY() - (obj.offsetHeight / 2)) + "px";
}

function js_getScrollY () {
    if (document.body && document.body.scrollTop) /* DOM */
      return document.body.scrollTop;
    else if (document.documentElement && document.documentElement.scrollTop) /* IE */
      return document.documentElement.scrollTop;
    return 0;
}