function rusSuffByNum(num,suffarray) {
  // для событий : suffarray ["я","e","й"] - 0: для чисел заканчивающихся на 1 (кроме 11), 1: на 2,3,4 (кроме соотв 12-14), 2: остальные
  if (suffarray.length<3) return;
  var last = num.toString().split("").pop();
  if (num !=11 && last==1) return suffarray[0];
  if ((num < 10 || num >20) && last>=2 && last<=4) return suffarray[1];
  return suffarray[2];
}

function convertDate(date){
 if (!date || date=="0000-00-00") return '';
 return date.replace(/(\d{4})-(\d{2})-(\d{2})/,"$3.$2.$1");

}




if (typeof $ == 'function') {
 
 var calendar = function(p) {
  var c = this;
  c.d = new Date();
  c.months = "Январь,Феваль,Март,Апрель,Май,Июнь,Июль,Август,Сентябрь,Октябрь,Ноябрь,Декабрь".split(",");
  c.monthsd = "января,феваля,марта,апреля,мая,июня,июля,августа,сентября,октября,ноября,декабря".split(",");
  c.weekdays = "Пн.,Вт.,Ср.,Чт.,Пт.,Сб.,Вс.".split(",");
  c.p = $.extend({},{
     "name" : "Календарь",
     "defTitle" : "нет событий",
     "place" : $("#sideRight"),
     "month":c.d.getMonth()+1,
     "year":c.d.getFullYear()
   },p);
  if (c.p.onShowMon) c.onShowMon = c.p.onShowMon;

  c.viewMonth = function(p){
   var c = this;   
   p = $.extend({},c.p,p);
   c.calendarDiv = $(".calendar",p.place);
   if (!c.calendarDiv.size()) {
    c.calendarDiv = $("<div>").addClass("Block calendar")
     .append($("<div>").addClass("Head").html(p.name))
     .append($("<div>").addClass("wrp").append(
        $("<div>").addClass("inner")
         .append($("<a class='prevM' href='#'>&lt;&lt;</a>"))
         .append($("<a class='nextM' href='#'>&gt;&gt;</a>"))
         .append($("<a class='currM' href='#"+c.d.getFullYear()+"-"+(c.d.getMonth()+1)+"'>Сегодня</a>"))
        ))
     .prependTo(p.place);
     $(".inner a",c.calendarDiv).click(function(e){
      e.preventDefault();
      var ao = $(this);
      var ah = ao.attr("href");
      var da = ah.replace('#','').split("-");
      c.viewMonth({"year":da[0],"month":da[1],"place":p.place})
      if (ao.is(".currM") && $(".openEvents").is(":visible"))
       $(".DateCalendar li.today").click();
     });
   }
   c.curMonDiv = $("div[rel='"+p["year"]+"-"+p["month"]+"']",c.calendarDiv);
   if (!c.curMonDiv.size()) {
    var mdays = new Date(p["year"], p["month"], 0).getDate();
    var wday = new Date(p["year"], p["month"]-1, 1).getDay();
    if (wday==0) wday = 7;
    c.curMonDiv = $("<div>").addClass("month").attr("rel",p["year"]+"-"+p["month"]).css("display","none")
     .append($("<h3 style='text-align:center'>").html(c.months[p.month-1]+", "+p.year))
     .append($("<div style='clear:both'></div>"))
     .append($("<ul>").addClass("HeadCalendar"))
     .append($("<div style='clear:both'></div>"))
     .append($("<ul>").addClass("DateCalendar"))
     .append($("<div style='clear:both'></div>"));
    for (i=0; i<c.weekdays.length; i++)
     $(".HeadCalendar",c.curMonDiv).append($("<li>").addClass("ui-corner-all"+(i>=5?" weekend":"")).html(c.weekdays[i]));
    for (i = 2 - wday; i<=mdays; i++)
     $(".DateCalendar",c.curMonDiv).append(
      $("<li>").addClass("ui-corner-all"+(i<1?" empty":"")
        +((p.year == c.d.getFullYear() && p.month == c.d.getMonth()+1 && i==c.d.getDate())?" today":"")
        +(((i+wday-1)%7==0||(i+wday)%7==0)?" weekend":"")
        ).attr("title",p.defTitle)
       .html(i>=1?i:"&nbsp;"));
    c.curMonDiv.appendTo($(".inner",c.calendarDiv)).data("year",p.year).data("month",p.month);
   }
   c.activeMonDiv = $(".month.active:not([rel='"+p["year"]+"-"+p["month"]+"'])",c.calendarDiv);
   if (c.activeMonDiv.size()) {
    var adAr = c.activeMonDiv.attr("rel").split("-");
    var dif = new Date(p.year,p.month-1,1).getTime() > new Date(adAr[0],adAr[1]-1,1).getTime() ? 1:-1;
    c.activeMonDiv.animate({"margin-left":(-dif*c.calendarDiv.width())},500,function(){
       $(this).css({"display":"none","margin-left":0}).removeClass("active");});
    c.curMonDiv.css({"margin-left":(dif*c.calendarDiv.width()),"display":"block"}).animate({"margin-left":0},500);
   }
   var nM = new Date(p.year,p.month,1);
   var pM = new Date(p.year,p.month-2,1);
   $("a.nextM",c.calendarDiv).attr("href","#"+nM.getFullYear()+"-"+(nM.getMonth()+1));
   $("a.prevM",c.calendarDiv).attr("href","#"+pM.getFullYear()+"-"+(pM.getMonth()+1));
   c.curMonDiv.show().addClass("active");
   if (typeof c.onShowMon=="function") c.onShowMon(p);
  };
   c.viewMonth();
 }

 
 $(function(){
 $(".LoginForm input").attr("tabindex",1)
  .change(function(){$(this).data("changed",$(this).val()?true:false)})
  .focusin(function(){if (!$(this).data("changed")) {$(this).data("initval",$(this).val()).val("");}})
  .focusout(function(){if (!$(this).data("changed") && $(this).data("initval")) {$(this).val($(this).data("initval"))}});


/* Календарь */

 var cEvents = new calendar({"onShowMon":
 function(p){
   var c = this;   
   p = $.extend({},c.p,p);
   if (!c.curMonDiv.data("events")) $.ajax({
    url:"/ajax/calendar/","data":"year="+p.year+"&month="+p.month,
    dataType:"json","type":"post",
    success:function(data){
     if (!data||typeof data!="object") return;
      c.curMonDiv.data("events",data);
      $("h3",c.curMonDiv).attr("title",data.length + " событи"+rusSuffByNum(data.length,"е,я,й".split(",")));
      $.each(data,function(i,item){
       var sd = item["datein"].split("-");
       var ed = item["dateout"].split("-");
       sd = new Date(sd[0],sd[1],sd[2]).getTime();
       ed = new Date(ed[0],ed[1],ed[2]).getTime();
       $(".DateCalendar li:not(.empty)",c.curMonDiv).each(function(){
         var l = $(this);
         var ids = l.data("ids") || [];
         var ld = new Date(p.year,p.month,parseInt(l.html())).getTime();
         if (sd <= ld && (ed < 0 || ld <= ed)) {
          ids.push(i);
          l.addClass("events").data("ids",ids)
          .attr("title",ids.length + " событи"+rusSuffByNum(ids.length,"е,я,й".split(",")));
         }
       });
      });
      $(".DateCalendar li.events",c.curMonDiv).click(function(e){
       e.preventDefault();
       var l = $(this);
       var oe = $(".openEvents",p.place);
       var ids = l.data("ids");
       var events = c.curMonDiv.data("events");
       if (!oe.size()) {
        oe = $("<div>").addClass("Block calendar openEvents")
        .css({"top":c.calendarDiv.position()["top"],"left":c.calendarDiv.position()["left"],
             "position":"absolute","opacity":0,"display":"none"})
         .append($("<div>").addClass("Head").append("<span>")
           .append ($("<div class='control'>")
            .append($("<a>").attr({"href":"#","title":"Закрыть"}).addClass("close").html("x")
             .click(function(e){
              e.stopPropagation();e.preventDefault();
              $(this).closest(".openEvents").animate({"margin-left":0,"opacity":0},500,function(){
               $(this).css({"display":"none"})
              });
             }))))
         .append($("<div>").addClass("wrp").append($("<div>").addClass("inner")))
        .appendTo("#sideRight");
       }
       $(".Head span",oe).animate({opacity:0},500,function(){
        $(this).html(l.html()+" "+c.monthsd[c.curMonDiv.data("month")-1] + " " +c.curMonDiv.data("year"))
        })
        .animate({opacity:1},500);
       $(".inner",oe).animate({opacity:0},500,function(){
         $(this).html("");
        if (ids && ids.length)
         for (i=0;i<ids.length;i++){
          var din,dou,strd,
            eID = ids[i];
//          din = convertDate(events[eID]["datein"]);
//          dou = convertDate(events[eID]["dateout"]);
//          strd = (din?din+" ":"")+((din&&dou)?"- ":"")+dou;
          $(".inner",oe).append(
           $("<div>")
            .append($("<a>").attr("href","/Billboard/index/"+events[eID]["typebillboard_alias"]).html("<span>"+events[eID]["typebillboard_title"]+"</span>"))
            .append(" - ")
            .append($("<a>").attr("href","/Billboard/item/"+events[eID]["id"]).html(events[eID]["title"])
            )
//            .append("<span> "+(strd?"("+strd+")":"")+"</span>")
          );
         }
       });

       $(".inner",oe).animate({opacity:1},500);
//       oe.show().animate({"top":l.offset()["top"],"left":l.offset()["left"]-oe.width()},1000);
       oe.show().animate({"margin-left":"-"+oe.innerWidth()+"px","opacity":1},500);

      });

    },
    error:function(jqXHR, textStatus, errorThrown){
    }
   });
 }});


/* notepad */

 $(".AddNoteBook").click(function(e){
  e.preventDefault();
  notepad.add({});
 });
//});

 var notepad = new function() {
  // check for required
  var n = this;
  n.init = function(){
   if (n.get(n.init)===false) return;
   n.infoBlock();
  }
  n.get = function(p){  // Get notepad data
   if (p=="update") p={"update":true};
   else if (typeof p == "function") p = {"onGet":p};
   p = $.extend({},{
    "update":false,
    "onGet":false
    },p);
   if (!p["update"]&&n.data != undefined) return n.data;
   $.ajax({
    url:"/ajax/notepad/list","data":"action=list",
    dataType:"json","type":"post",
    success:function(data){
     if (!data||typeof data!="object") {
      return;
     }
     n.data = data;
     if (typeof p.onGet == "function") p.onGet();
    },
    error:function(jqXHR, textStatus, errorThrown){
    }
   });
   return false;
  }
  n.add = function(d,url){ // add record(s) to notepad
   url = url || (d&&d["url"]?d["url"]:0) || location.pathname;
   if (d&&(d["name"]||d["crumbs"])) {
    var dd;
    dd[url] = d; d = dd; dd=null;
   }
   var def = {};
   var crumbs = [];
   $("#content .crumbs a").each(function(){
    if ($(this).attr("href")=="/" || $(this).attr("href")==url) return;
    crumbs.push({"url":$(this).attr("href"),"anchor":$(this).text()});
   });
   def[url] = {"name":$.trim($(".In").text()),"crumbs":crumbs};
   d = $.extend({},def,d)
   n.data = $.extend({},n.get(),d);
   n.save(d,"add");
  };
  n.clear = function(k){ // clear or notepad
   n.data = null;
   n.save("","clear");
  }
  n.del = function(k){  // remove item from notepad
   n.get();
   delete n.data[k];
   n.save(k,"del");
  };
  n.save = function(d,act) { //Save notepad data
   if (!d) d = n.data;
   if (!act) act = "save";
   $.ajax({
    url:"/ajax/notepad/"+act,"data":$.param({"action":act,"data":d}),
    dataType:"json","type":"post",
    success:function(data){
     if (!data) {
      n.changed();
     } else { // error handle
//      console.log(data);
     }
    },
    error:function(jqXHR, textStatus, errorThrown){
//     console.log("Error while send data "+jqXHR+" "+textStatus+" "+ errorThrown);
    }
   });
  }
  n.changed = function(){
   n.size(true);
   n.infoBlock();
   n.main("onlyUpdate");
  }
  n.size = function(update){ // notepad object size
   if (!update && typeof n.count == "number") return n.count;
   var obj = n.get();
   var size = 0, key;
   for (key in obj) { if (obj.hasOwnProperty(key)) size++; }
   return n.count = size;
  };
  n.infoBlock =  function(p){ // small infoblock
//   p = $.extend();
  var nso = $(".notepadS");
  if (n.size()) {
   if (!nso.size()) {
    nso = $("<div>").addClass("Block notepadS").css("display","none")
     .append($("<div>").addClass("Head").html("Блокнот"))
     .append($("<div>").addClass("wrp").append(
         $("<div>").addClass("inner")
          .html("Записей: <span class='notepad_size'></span> ")
        )
     );
    $("#sideRight").prepend(nso);
    $(".notepadS > .Head").click(function(e){
     n.main();
     });
   }
   $(".notepad_size",nso).html(n.size());
   $(nso).slideDown();
  } else if (nso.size() && nso.is(":visible")) {
   $(".notepad_size",nso).html(n.size());
   $(nso).slideUp();
  }
  };

  n.main = function(p){ // content of notepad
/*
<div class="Block notepad" style="display: none;">
<div style="" class="Head">Блокнот</div>
<div style="" class="wrp"><div style="" class="inner"> TEXT </div></div>

</div>
*/
  if (typeof p=="string" && $.inArray(p,"update,show".split(","))!=-1) {
   var pd = {};
   pd[p] = true;
   p = pd; pd = null;
  } else if (typeof p=="string") {
   switch(p) {
    case "onlyUpdate": p = {"update":true,"show":-1}; break;
    case "hide": p = {"show":false}; break;
   }
  }
  p = $.extend({},{
   "update":false,
   "show":null
  },p);
  var nso = $(".notepadS");
  var no = $(".notepad",nso);
  if (!no.size()) {
     no = $("<div>").addClass("Block notepad").css("display","none")
     .append($("<div>").addClass("Head").html("Блокнот"))
     .append($("<div>").addClass("wrp").append(
         $("<div>").addClass("inner")
          .html("Нет записей ")
        )
     ).appendTo(nso);
     n.mainHeight = no.height();
     $(".Head",no).attr({"title":"Обновить"})
       .click(function(e){
        e.stopPropagation();e.preventDefault();
        n.main("onlyUpdate");
       });
     $("<div class='control'>")
      .append($("<a>").attr({"href":"#","title":"Очистить блокнот"}).addClass("clear").html("Очистить")
       .click(function(e){
        e.stopPropagation();e.preventDefault();
        n.main("hide");
        n.clear();
       }))
      .append($("<a>").attr({"href":"#","title":"Закрыть"}).addClass("close").html("x")
       .click(function(e){
        e.stopPropagation();e.preventDefault();
        n.main();
       }))
       .appendTo($(".Head",no));
  }
  if (p.update || (n.size() && !$(".inner li",no).size())) {
   var ncl = $("<ul>").appendTo($(".inner",no).html("")),url;
   for (url in n.data) {
    $("<li>").appendTo(ncl)
     .append($("<div>").addClass("crumbs").each(function(){
       if (!n.data[url]["crumbs"]) return;
       var crumbs,i;
       if ((crumbs = n.data[url]["crumbs"])=="string") $(this).html(crumbs);
       for(i in crumbs) {
        $(this)
         .append($("<a>").attr("href",crumbs[i]["url"]).html(crumbs[i]["anchor"]))
         .append("<span> / </span>");
        }

      }))
     .append($("<a>").attr("href",url).html(n.data[url]["name"]?n.data[url]["name"]:url))
     .append($("<a>").attr("href","#").html(" x ").attr("title","Удалить").addClass("delete").data("url",url)
       .click(function(e){e.stopPropagation();e.preventDefault();n.del($(this).data("url"));}));
   }
   if (!$("li",ncl).size()) $(".inner",no).html("Нет записей");
   no.height("auto");
   n.mainHeight = no.height()<600?no.height():600;
  }

  if (p.show!=-1 || !n.size()){
   if (no.is(":visible")||p.show===false) {
    no.animate( {"width":"100%","height":"32px"},500,function(){$(this).hide().css({"width":null,"height":null})});
   } else  {
    no.css({"width":"100%","height":"32px"}).show().animate({"width":"600px","height":n.mainHeight+"px"},500);
   }
  }
 };

 n.init();
};




  $("a.deleteItem").click(function(e){
   e.preventDefault();
   if (confirm("Вы действительно хотите удалить объект?")) {
    location.href=$(this).attr("href")+"&confirm=1";
   }
   });
  


});
}

