var complaintLoadTimeout = 10000;
var complaintAnimateTimeout = 500;
var defaultAnimateTimeout = 500;
var complaintItemCount = 5;
var searchTimeout = 1000;
var lastSearchText = "";
var searchPageIndex = 0;

$(document).ready(function () {
  $(".item-panel").each(function(){
    $(this).click(function(){ ShowComplaint(this); });
    var panel=this;
    $("a",this).click(function(){ ShowComplaint(panel); return false; });
  });


  $("#lnk-argument").click( function()  { document.location='http://argument.org.ua/argument/'; });
  $("#lnk-jurfactor").click( function() { document.location='http://jurfactor.com/'; });
  $("#lnk-prioritet").click( function() { document.location='http://prioritet.in.ua/'; });
  $("#lnk-justina").click( function()   { document.location='http://www.jc.kiev.ua/'; });

  $("#rotate-left").everyTime(complaintLoadTimeout, "items-rotate", function(i) { Rotate(); });

  $("#search-input").bind("change keyup", SearchChanged);
  $("#search-input").blur(function() { doSearch($("#search-input").val()); });
  $("#btnNextSearchPage").click( function() { ShowSearchPage(1); });
  $("#btnPrevSearchPage").click( function() { ShowSearchPage(-1); });

  $(".button-add-complaint").click( function() { ShowNew(); });
  $(".button-blue")    .click( function() { ShowNew(); });
  $(".button-green")   .click( function() { document.location='/association'; });
  $(".button-green-x") .click( function() { document.location='/'; });
  $(".button-orange")  .click( function() { ShowAhj(); });
  $(".button-feedback").click( function() { ShowFeedback(); });
  $(".button-why")     .click( function() { ShowWhy(); });
  $(".button-submit-feedback").click( function() {
    if ($("#FeedbackText").val()!='' &&
        $("#FeedbackMailto").val().indexOf("@")>=0) {
      $.post("/sys/blacklist/feedback/post", {
        //SufferedName:$("#FeedbackName").val(),
        FeedbackMailto:$("#FeedbackMailto").val(),
        FeedbackText:$("#FeedbackText").val()},
        function(data) {
          ShowPosted();
          //alert("Post returned: " + data);
        }
      );
    } else { alert("Для отправки сообщения введите адреса электронной почты. Сам текст сообщения тоже не может быть пустым."); }
  });  
  $(".button-submit").click( function() {
    if ($("#AppelleeName").val()!=''  && $("#SufferedName").val()!='' &&
        $("#ComplaintText").val()!='' &&
        $("#AppelleeMailto").val().indexOf("@")>=0 && $("#SufferedMailto").val().indexOf("@")>=0) {
      $.post("/sys/blacklist/complaint/post", {
        AppelleeName:$("#AppelleeName").val(),
        AppelleeCompany:$("#AppelleeCompany").val(),
        AppelleeMailto:$("#AppelleeMailto").val(),
        AppelleePhone:$("#AppelleePhone").val(),
        SufferedName:$("#SufferedName").val(),
        SufferedCompany:$("#SufferedCompany").val(),
        SufferedMailto:$("#SufferedMailto").val(),
        SufferedPhone:$("#SufferedPhone").val(),
        ComplaintText:$("#ComplaintText").val()},
        function(data) {
          ShowPosted();
          //alert("Post returned: " + data);
        }
      );
    } else { alert("Для отправки жалобы: заполните все поля, помеченные звездочками (имя обидчика и потерпевшего и адреса электронной почты). Сам текст жалобы тоже не может быть пустым."); }
  });
});
var isRotating = false;
function Rotate(){
  var ids = '';
  if (isRotating) return;
  isRotating = true;
  $("#rotate-left .item-panel").each( function() {
    ids = ids+$(".item-id",this).val()+",";
  });

  $.get("/sys/blacklist/short/get", { id:ids }, function(data){
    itemCount = $("#rotate-left .item-panel").length;
    if ( itemCount <= complaintItemCount) {

      $("#rotate-left .caption").after(data);

      if (itemCount == complaintItemCount) {
        $("#rotate-left .item-panel:last")
           .animate({"height": "toggle", "opacity": "toggle", "padding-top": "0px" },
             complaintAnimateTimeout, function() { $(this).remove(); });
      }

      var panel=$("#rotate-left .item-panel:first");
      panel.animate({"height": "toggle", "opacity": "toggle"}, complaintAnimateTimeout)
           .click(function() { ShowComplaint(this); });

      $("a",panel).click(function() { ShowComplaint(panel); return false; });
     }
  });

  isRotating = false;
}

function ShowPanel(jqPanel, callback) {
  if ($.browser.msie) {
    $("#panel-new").hide();
    $("#panel-why").hide();
    $("#panel-feedback").hide();
    $("#panel-about").hide();
    $("#panel-posted").hide();
    $("#panel-complaint").hide();
    $("#panel-ahj").hide();
	callback();
    if(jqPanel!="") { $(jqPanel).show(); }
  } else {
    $("#panel-new").animate({"opacity": "hide", "display": "none" }, defaultAnimateTimeout);
    $("#panel-why").animate({"opacity": "hide", "display": "none" }, defaultAnimateTimeout);
    $("#panel-feedback").animate( {"opacity": "hide", "display": "none" }, defaultAnimateTimeout);
    $("#panel-about").animate({"opacity": "hide", "display": "none" }, defaultAnimateTimeout);
    $("#panel-posted").animate({"opacity": "hide", "display": "none" }, defaultAnimateTimeout);
    $("#panel-complaint").animate({"opacity": "hide", "display": "none" }, defaultAnimateTimeout, callback);
    $("#panel-ahj").animate({"opacity": "hide", "display": "none" }, defaultAnimateTimeout, callback);
    if(jqPanel!="") { $(jqPanel).animate({"opacity": "show", "display": "block" }, defaultAnimateTimeout); }
  }

}

function ShowComplaint(item) {
  compliantId = $(".item-id", item).val();
  $.getJSON("/sys/blacklist/full/get", { id:compliantId, rnd:Math.random() }, function(data) {
     ShowPanel("#panel-complaint", function() {
	  if (data["ComplaintStatus"]=="2") { $("#lComplaintText").addClass("slander"); } else { $("#lComplaintText").removeClass("slander"); }
	  if (data["ComplaintStatus"]=="3") { $("#lComplaintText").addClass("correct"); } else { $("#lComplaintText").removeClass("correct"); }
	  if (data["ComplaintStatus"]=="4") { $("#lComplaintText").addClass("investigationx"); } else { $("#lComplaintText").removeClass("investigationx"); }
	  if (data["ComplaintStatus"]=="5") { $("#lComplaintText").addClass("investigation"); } else { $("#lComplaintText").removeClass("investigation"); }
	  
      $("#complaint-date")  .text(data["day"]+' '+data["month"]+' '+data["year"]);
      $("#lAppelleeName")   .text(data["AppelleeName"]);
      $("#lAppelleeCompany").text(data["AppelleeCompany"]);
      $("#lAppelleeMailto") .text(data["AppelleeMailto"]);
      $("#lAppelleePhone")  .text(data["AppelleePhone"]);
      $("#lSufferedName")   .text(data["SufferedName"]);
      $("#lSufferedCompany").text(data["SufferedCompany"]);
      $("#lSufferedMailto") .text(data["SufferedMailto"]);
      $("#lSufferedPhone")  .text(data["SufferedPhone"]);
      $("#lComplaintText")  .html(data["ComplaintText"]);
   });

  });
}

function ShowNew() {
  $.getJSON("/sys/blacklist/new/get", { rnd:Math.random() }, function(data) {
    //alert(print_r(data));
    $("#item-new .day")   .text(data["day"]);
    $("#item-new .month") .text(data["month"]);
    $("#item-new .year")  .text(data["year"]);
    $("#lAppelleeName")   .text(data["AppelleeName"]);
    $("#lAppelleeCompany").text(data["AppelleeCompany"]);
    $("#lAppelleeMailto") .text(data["AppelleeMailto"]);
    $("#lAppelleePhone")  .text(data["AppelleePhone"]);
    $("#lSufferedName")   .text(data["SufferedName"]);
    $("#lSufferedCompany").text(data["SufferedCompany"]);
    $("#lSufferedMailto") .text(data["SufferedMailto"]);
    $("#lSufferedPhone")  .text(data["SufferedPhone"]);
    $("#lComplaintText")  .html(data["ComplaintText"]);
    ShowPanel("#panel-new");
  });
}

function ShowAhj() {
  ShowPanel("#panel-ahj");
}

function ShowPosted() {
  ShowPanel("#panel-posted");
}

function ShowWhy() {
  ShowPanel("#panel-why");
}

function ShowFeedback() {
  ShowPanel("#panel-feedback");
}

function getEventKey(e) {
  if( !e ) {
    if( window.event )
      e = window.event; //Internet Explorer
    else return;
  }
  if( typeof( e.keyCode ) == 'number'  )
    e = e.keyCode; //DOM
  else if( typeof( e.which ) == 'number' )
    e = e.which; //NS 4 compatible
  else if( typeof( e.charCode ) == 'number' )
    e = e.charCode; //also NS 6+, Mozilla 0.9+
  else return;
  return e;
}

function SearchChanged(e){
  searchText = $("#search-input").val();
  $("#search-input").stopTime("search-timer");
  if (getEventKey(e) == 13)
    doSearch(searchText);
  else
  $("#search-input").oneTime(searchTimeout, "search-timer",  function() {
     doSearch(searchText);
  });
}

function doSearch(searchText, pageIndex){
  $("#search-input").stopTime("search-timer");

  if (searchText.length == 0) { //returning to standard mode
    lastSearchText = searchText;
    $("#search-item-count").remove();
    $("#search-navigation").hide();
    $("#rotate-left").stopTime("items-rotate");
    $("#rotate-left").everyTime(complaintLoadTimeout, "items-rotate", function(i) { Rotate(); });
    Rotate();
    return;
  }

  pageIndex = (pageIndex == null) ? 0 : pageIndex;
  if (lastSearchText == searchText && searchPageIndex == pageIndex) return;

  $.get("/sys/blacklist/search/get", { q:searchText, page:pageIndex }, function(data){
      lastSearchText = searchText;
      searchPageIndex = pageIndex;
      $("#rotate-left").stopTime("items-rotate");

      $("#rotate-left .item-panel").remove();
      $("#search-item-count").remove();

      $("#rotate-left .caption").after(data);

      $("#rotate-left .item-panel")
        .click(function() { ShowComplaint(this); })
        .fadeIn(complaintAnimateTimeout)
        .find("a").click(function() {
            ShowComplaint( $(this).parents("div.item-panel").get(0) ); return false;
          });

      itemCount = $("#search-item-count").val();
      if (itemCount > complaintItemCount)
        $("#search-navigation").show();
      else
        $("#search-navigation").hide();

      lastPageIndex = parseInt(itemCount / complaintItemCount) + ((itemCount % complaintItemCount) > 0 ? 1 : 0 );

      if (searchPageIndex <= 0)
        $("#btnPrevSearchPage").css("visibility","hidden");
      else
        $("#btnPrevSearchPage").css("visibility","visible");

      if (searchPageIndex >= lastPageIndex-1)
        $("#btnNextSearchPage").css("visibility","hidden");
      else
        $("#btnNextSearchPage").css("visibility","visible");
  });
}

function ShowSearchPage(offset){
  pageIndex = searchPageIndex + offset;
  if (pageIndex < 0) pageIndex = 0;
  doSearch(lastSearchText, pageIndex);
}

function print_r(x, max, sep, l) {
  l = l || 0;
  max = max || 10;
  sep = sep || ' ';
  if (l > max) {
    return "[WARNING: Too much recursion]\n";
  }
  var i,
      r = '',
      t = typeof x,
      tab = '';
  if (x === null) {
    r += "(null)\n";
  } else if (t == 'object') {
    l++;
    for (i = 0; i < l; i++) {
      tab += sep;
    }
    if (x && x.length) {
      t = 'array';
    }
    r += '(' + t + ") :\n";
    for (i in x) {
      try {
        r += tab + '[' + i + '] : ' + print_r(x[i], max, sep, (l + 1));
      } catch(e) {
        return "[ERROR: " + e + "]\n";
      }
    }
  } else {
    if (t == 'string') {
      if (x == '') {
        x = '(empty)';
      }
    }
    r += '(' + t + ') ' + x + "\n";
  }
  return r;
};

var_dump = print_r;