var ajaxBusy = false;
function showProperties(obj, objName)
{
  objName = objName || 'obj';
  var result = "";
  for (var i in obj)
    result += objName + "." + i + " = " + obj[i] + "\n";
  alert(result);
}

function dump(obj, objName)
{
  return showProperties(obj, objName);
}

function check_login_form()
{
  var email = $("#email");
  
  if( email && !email.attr('value') )
  {
    email.focus();
    alert('Type your email');
    return false;
  }
  
  var pass = $('#pass');
  if( pass && !pass.attr('value') )
  {
    pass.focus();
    alert('Type your password. We will not tell it anyone!');
    return false;
  }
  return true;
}

function before_ajax()
{
  ajaxBusy = true;
  $('#ajax-load').show();
}

function after_ajax()
{
  ajaxBusy = false;
  $('#ajax-load').hide();
}

function add_url()
{
  if( ajaxBusy )
  {
    return false;
  }
  
  var url = $('#url');
  if( !jQuery.trim( url.val() ))
  {
    url.focus();
    alert('Type an URL');
    return false;
  }
  
  $.ajax(
  {
    beforeSend: before_ajax,
    complete: after_ajax,
    type: "POST",
    url: "/chart/addUrl",
    data: { url: url.val() },
    dataType: 'json',
    success: function( rez ){
      dump( rez );
      if( 0 == rez.ok )
      {
        alert( "Error occured!\nPlease try again later.");
        return false;
      }
      else if( -1 == rez.ok )
      {
        alert( "Wrong URL. Check the spelling.");
        return false;
      }
    }
  });
  return true;
}

function add_new_chart()
{
  if( ajaxBusy )
  {
    return false;
  }
  
  var url = $('#url').attr('value')
  if( !jQuery.trim( url ))
  {
    $('#url').focus();
    alert('Type an URL');
    return false;
  }
  
  var engine = ( url.match( /feeds.feedburner.com/i ) ? 'feedburner' : 'html' );
  var data = {
    url      : url,
    engine   : engine
  };
  
  if( 'html' == engine )
  {
    var oPattern1 = $('#pattern1');
    if( !jQuery.trim( oPattern1.val() ))
    {
      oPattern1.focus();
      alert('Type the beginning pattern');
      return false;
    }
    var oPattern2 = $('#pattern2');

    data['pattern1'] = $('#pattern1').val();
    data['pattern2'] = $('#pattern2').val();
  }
  
  $.ajax(
  {
    beforeSend: before_ajax,
    complete: after_ajax,
    type: "POST",
    url: "/chart/add",
    data: data,
    dataType: 'json',
    success: function( rez ){
      //dump( rez );
      var e = $('#add_new_cnt');
      if( 0 == rez.ok )
      {
        alert( rez.error || "Error occured!\nPlease try again later." );
        return false;
      }
      e.fadeOut('slow');
      paste_new_chart(rez);
      clear_add_form();
    }
  });
  return true;
}

function test_chart()
{
  if( ajaxBusy )
  {
    return false;
  }
  
  var url = $('#url').attr('value')
  if( !jQuery.trim( url ))
  {
    $('#url').focus();
    alert('Type an URL');
    return false;
  }
  
  var data = {
    url      : url
  };
  
  var oPattern1 = $('#pattern1');
  if( !jQuery.trim( oPattern1.val() ))
  {
    oPattern1.focus();
    alert('Type the beginning pattern');
    return false;
  }
  var oPattern2 = $('#pattern2');

  data['pattern1'] = $('#pattern1').val();
  data['pattern2'] = $('#pattern2').val();
  
  $.ajax(
  {
    beforeSend: before_ajax,
    complete: after_ajax,
    type: "POST",
    url: "/chart/test",
    data: data,
    dataType: 'json',
    success: function( rez ){
      //dump( rez );
      switch( rez.ok )
      {
        case 1:   alert('Parsed value: ' + rez.data);
                  break;
        case -1:  alert('Check the URL, it seems to be malformed');
                  $('#url').focus();
                  break;
        case -2:  alert('Check the beginning pattern, it seems to be empty');
                  $('#pattern1').focus();
                  break;
        case -3:  alert('Cannot parse data.\nMaybe try to define the finishing pattern - it seems to be empty');
                  $('#pattern2').focus();
                  break;
        default:  alert('Unknown error, try again later.');
      }
      // {
        // alert( "Error occured!\nPlease try again later.");
        // return false;
      // }
      // e.fadeOut('slow');
      // paste_new_chart(rez);
      // clear_add_form();
    }
  });
  return true;
}

function paste_new_chart(data)
{
  var id = data['id'] || Math.random();
  
  obj = $('<div class="post" style="display: none" id="post'+id+'"><h2 class="title"><a href="'+('html'==data['engine'] ? data['url'] : data['clean_url'] )+'">'+( '' == jQuery.trim(data['name']) ? data['url'] : data['name'] ) +'</a>: <span class="last_value">' + data['value'] + '</span></h2><h3 class="date">+100% (' + ( data['value'] > 0 ? '+' : '' ) + data['value'] + ')</h3><div class="entry"><div id="flashcontent'+id+'"><strong>You need to upgrade your Flash Player</strong></div><script type="text/javascript">addStockGraph("'+id+'");</script></div><div class="meta"><a href="#" onclick="if(confirm(\'Are you sure?\')) delete_chart( '+id+', \'post'+id+'\'); return false;">Delete</a></div></div>');
  obj.insertAfter("#add_new_cnt");
  obj.fadeIn(1000);
  return obj;
}

function get_date()
{
  var d = new Date();
  return fixTime(d.getDate()) + '.' + fixTime( 1 + d.getMonth() );
}

function fixTime(n)
{
  if( n < 10 )
  {
    n = '0' + n;
  }
  return n;
}


function clear_add_form()
{
  $('#url').attr('value', '');
  //$('#c_name').attr('value', '');
  //$('#format_int').attr('checked', true);
  $('#pattern1').attr('value', '');
  $('#pattern2').attr('value', '');
  $('.html_options').hide();
}

function delete_chart(id, contId)
{
  var data = {
    id : id
  };
  
  $.ajax(
  {
    beforeSend: before_ajax,
    complete: after_ajax,
    type: "POST",
    url: "/chart/delete",
    data: data,
    success: function(ok){
      var e = $('#' + contId);
      if ( e.is(':visible') )
      {
        e.slideUp('slow');
      }
      if( !ok )
      {
        alert( "Error occured!\nPlease try again later.");
        return false;
      }
    }
  });
  return false;
}

/* function init_lavaLamp()
{
    $(function() {
        $("#lavaLamp").lavaLamp({
            fx: "backout",
            speed: 700,
            click: function(event, menuItem) {
              var p1 = $('#pattern_row1');
              var p2 = $('#pattern_row2');
              var t1 = $('#pattern1');
              var t2 = $('#pattern2');
              var engine = $('#engine');
              var f = $('#format_row');
              var speed = 'slow';
              if( 'add_feedburner' == menuItem.id )
              {
                engine.attr( 'value', 'feedburner' );
                p1.fadeOut(speed);
                p2.fadeOut(speed);
                f.fadeOut(speed);
                t1.attr( 'disabled', true );
                t2.attr( 'disabled', true );
              }
              else
              {
                engine.attr( 'value', 'html' );
                t1.attr( 'disabled', false );
                t2.attr( 'disabled', false );
                f.fadeIn(speed);
                p1.fadeIn(speed);
                p2.fadeIn(speed);
              }
                return false;
            }
        });
    });
} */

function process_new_url()
{
  var url = jQuery.trim($('#url').val());
  var is_html = !url.match( /feeds.feedburner.com/i );
  if( '' == url)
  {
    $('#add_btn').attr('disabled',  true);
    $('.html_options').fadeOut();
  }
  else
  {
    if( is_html )
    {
      $('.html_options').fadeIn();
      $('#add_btn').attr('disabled', !$('#pattern1').val() );
    }
    else //feedburner
    {
      $('#add_btn').attr('disabled', false);
      $('.html_options').fadeOut();
    }
  }
  $('#test_btn').attr( 'disabled', $('#add_btn').attr('disabled') );
}

function send_feedback()
{
  var text = jQuery.trim($('#feedback_text').val());
  if( '' == text )
  {
    alert('Type anything ;]');
  }
  else
  {
    $.ajax(
    {
      beforeSend: before_ajax,
      complete: after_ajax,
      type: "POST",
      url: "/tools/feedback",
      data: {text: text},
      success: function(ok){
        switch( parseInt(ok, 10) )
        {
          case 1:
              alert( 'OK!\nThank you for your feedback!' );
              break;
          case -1:
              alert( 'You are not logged!\nPlease log in before sending us your feedback.' );
              break;
          case 0:
          default:
              alert( 'Error has occured. Try again later.' );
        }
        return false;
      }
    });
    return false;
  }
}

