$(function() {
  alignBlocks();                // Выровнивание блоков
  var persons = new Persons();  // Выпускники
  var mainmenu = new MainMenu();// Главное меню
  var submenu = new Submenu();  // Раздвигающиеся меню
  var ajax = new Ajax();        // Аякс на страницах
  var galleries = new multipleGalleries();
});

//=======================================================================

var alignBlocks = function() {
  if ($("#center .home_page").get(0)) {
    var lBlock = $("#center .home_page .left_block").removeAttr("style");
    var cBlock = $("#center .home_page .center_block").removeAttr("style");
    var rBlock = $("#center .home_page .right_block").removeAttr("style");
    var lHeight = lBlock.height();
    var cHeight = cBlock.height();
    if (!rBlock.get(0)) {
      if (lHeight < cHeight) {
        lBlock.height(cHeight);
      } else {
        cBlock.height(lHeight);
      }
    } else {
      var rHeight = rBlock.height();
      if ((lHeight < cHeight) && (rHeight < cHeight)) {
        lBlock.height(cHeight);
        rBlock.height(cHeight);
      } else if ((lHeight < rHeight) && (cHeight < rHeight)) {
        lBlock.height(rHeight);
        cBlock.height(rHeight);
      } else {
        rBlock.height(lHeight);
        cBlock.height(lHeight);
      }
    }
  }
}

var resizeWindow = function() {
  // IE fix for dynamic size changing
  if ($.browser.msie && $.browser.version == 6) {
    var foot = $("#main .foot");
    foot.css({bottom: 0});
    foot.removeAttr("style");
  }
}

//=======================================================================

var Submenu = function() {
  this.speed = 300;
  this.init();
}
Submenu.prototype = {
  init: function() {
    var self = this;
    $("#left .left_menu .left_menu_item").each(function() {
      var li = $(this);
      var submenu = $(".submenu",li);
      if (submenu.get(0)) {
        var ins = $("<ins />").appendTo($("div",li)).click(function() {self.toggle($(this))});
        if (!li.is(".active")) {
          submenu.hide();
          ins.addClass("plus");
        } else {
          ins.addClass("minus");
        }
        //$("div a",li).click(function() {self.toggle($(this).parent().parent()); return false;});
      }
    });
  },
  toggle: function(ins) {
    var self = this;
    var li = ins.parent().parent();
    $("ul.submenu",li).slideToggle(self.speed,function() {resizeWindow()});
    if (ins.is(".plus")) {
      ins.removeClass("plus").addClass("minus");
    } else {
      ins.removeClass("minus").addClass("plus");
    }
  }
}

//=======================================================================

var Ajax = function() {
  this.menu = $("#content-menu");
  this.container = $("#content");
  this.speed = 0;
  this.init();
}
Ajax.prototype = {
  init: function() {
    var self = this;
    $("li a",self.menu).click(function() {
      self.get($(this).parent()); return false;
    });
  },
  get: function(li) {
    var self = this;
    if (!li.is(".active")) {
      $.ajax({url: "/xData/",
              dataType: "xml",
              type: "POST",
              data: {id: li.attr("node_id"), object: li.attr("class_name")},
              success: function(xml) {self.show(xml,li)},
              error: function() {window.location.href = $("a",li).attr("href")}});
    }
  },
  show: function(xml,li) {
    var self = this;
    var text = xml.getElementsByTagName('text')[0];
    var print = xml.getElementsByTagName('print')[0];
    self.container.fadeOut(self.speed,function() {
      $(".active",self.menu).removeClass("active");
      li.addClass("active");
      var op = (print) ? textContent(print) : "hide";
      $("#center .print").animate({opacity: op},self.speed);
      $(this).empty().html(textContent(text)).fadeIn(self.speed,function() {resizeWindow()});
    });
  }
}

//=======================================================================

var Persons = function() {
  this.speed = 300;
  this.container = $(".home_page .right_block #person");
  this.next = $(".home_page .right_block #next");
  this.init();
}
Persons.prototype = {
  init: function() {
    var self = this;
    self.next.click(function() {
      self.get();
    });
  },
  get: function() {
    var self = this;
    $.post("/xData/",{count: self.next.attr("count"), offset: self.next.attr("offset"), object: "person"},function(xml) {self.show(xml)});
  },
  show: function(xml) {
    var self = this;
    var text = xml.getElementsByTagName('text')[0];
    var offset = xml.getElementsByTagName('offset')[0];
    self.next.attr("offset",textContent(offset));
    self.container.fadeOut(self.speed,function() {
      $(this).empty().html(textContent(text)).fadeIn(self.speed,function() {alignBlocks()});
    });
  }
}

//=======================================================================

var MainMenu = function() {
  this.init();
}
MainMenu.prototype = {
  init: function() {
    var self = this;
    $("#main-menu .main_menu_item a.main_menu_more").click(function() {self.toggle($(this)); return false;});
    $(document.body).click(function() {self.hideAll()});
  },
  toggle: function(a) {
    var self = this;
    var img = $("img",a);
    var ul = $("ul.popup",a.parent());
    var ie6 = $.browser.msie && $.browser.version == 6;
    if (a.is(".current")) {
      if (ie6) {
        img.css({filter: "progid:DXImageTransform.Microsoft.AlphaImageLoader(src='/i/more.png', sizingMethod='scale')"});
      } else {
        img.attr("src","/i/more.png");
      }
      a.removeClass("current");
      ul.hide();
    } else {
      // Hide shown popup
      self.hideAll();
      // Show our popup
      if (ie6) {
        img.css({filter: "progid:DXImageTransform.Microsoft.AlphaImageLoader(src='/i/less.png', sizingMethod='scale')"});
      } else {
        img.attr("src","/i/less.png");
      }
      a.addClass("current");
      ul.show();
    }
  },
  hideAll: function() {
    var self = this;
    $("#main-menu .main_menu_item a.current").each(function() {
      self.toggle($(this));
    });
  }
}

//=======================================================================

    function multipleGalleries() {
        this.name = "MultiGallery";
        this.gallery = null;
        this.start();
    }

    multipleGalleries.prototype = {
        start: function(){
            var self = this;
            $(".galleries .gallery").each(function(){
                var links = $(this).find("a");
                if(links.length>0){
                    $(links[0]).click(function(){
                        var gallery_id = $(this).parent().attr("gallery_id");
                        if(self.gallery){ self.gallery = null };
                        self.gallery = new FBox({
                                animation: true,
                                imagesList: true,
                                imagesListWidth: 80,
                                useLoaderAnim: true,
                                loaderParams: {
                                    animatioLength: 400,
                                    animationStep: 50,
                                    animationTime: 100
                                },
                                showOverlay: true,
                                navigationButtons: true,
                                navigationButtonsHover: false,
                                ajax: {
                                    url: '/xData/',
                                    object: 'gallery',
                                    gallery_id: gallery_id
                                },
                                constraints: {
                                    minWidth: 470,
                                    minHeight: 465,
                                    maxWidth: 750,
                                    maxHeight: 550
                                }
                            });
                        self.gallery.show();
                        return false;
                    });
                }
            });
        }
    }

//=======================================================================
    
var textContent = function(xml) {
  if (xml.text != undefined) {
    return xml.text;
  } else if (xml.textContent != undefined) {
    return xml.textContent;
  } else {
    return xml.firstChild.nodeValue;
  }
}
