var widthem = 27;
var menuItems = new Array();
var naviTitles = new Array();
var naviGroup = new Array();
var naviItems = new Array();
var menuOpen = 0;
var targetItemRows = 0;

jQuery.fn.openButton = function() {
  jQuery("#openbutton").click(function() {
    Menu.toggle();    
  });
  jQuery("#closebutton").click(function() {
    Menu.toggle();    
  });
};

jQuery.fn.menu = function() {
  Menu.init();
  Slider.init();
  Slider.show();

  jQuery(".naviTitle").mouseover(function() {
    Menu.mouseOver($(this));
  });
  jQuery(".naviTitle").mouseout(function() {
    Menu.mouseOut($(this));
  });

  return false;
};

var Menu = {
  init: function() {
    var wd = 0;
    var tmp = 0;
    var itemRows = 0;
    var prevItemsLength = 0;
    var targetItem = "";
  
    //
    $.each($(".naviTitle",$("#navi")),function(i){
      naviTitles[i] = $(this);
    });
    $.each($(".naviItems",$("#navi")),function(i){
      naviItems[i] = $(this);
    });
    phpself = document.URL.replace(/http\:\/\/[^\/]+\//,"");
    phpself = phpself.replace(/\/[^\/]+$/,"");
    phpself = phpself.replace(/\//g,"__");
    for(key1 in titles){
      for(key2 in titles[key1]){
        re = new RegExp(key2);
        if( phpself.match(re)  ){
          targetItem = titles[key1][key2];
          document.title = "無限の翼｜" + key1 + "｜" + targetItem;

//          alert(targetItem);
        }
      }
    }
    $.each($(".naviGroup",$("#navi")),function(i){
      ii = '0' + i;
      naviGroup[i] = $(this);
      menuItems[i] = new Array();
      wd = 0;
      tmp = 0;
      prevItemsLength = 0;
      itemRows = 0;
      $.each($(".item",naviGroup[i]),function(j){
        $(this).css("width", $(this).children("a").html().length + "em");
        wd += $(this).children("a").html().length;
        if(j == 0){
          menuItems[i][itemRows] = new Array();
        }else if(tmp > wd % widthem){
          prevItemsLength = j;
          itemRows++;
          menuItems[i][itemRows] = new Array();
        }
        menuItems[i][itemRows][j - prevItemsLength] = $(this);
        tmp = wd % widthem;

        if($(this).children("a").html() == targetItem){
          targetItemRows = itemRows;
        }

      });
    });
    Menu.showOne(targetItemRows);
  },
  showOne: function(showId){
    //
    $("#navi ul").css("border-color","").css("border-width","").css("border-style","").css("height","").css("margin-top","2px");
    if(showId == ""){
      showId = 0;
    }
    itemPt = showId;
    naviGroup[0].css("display","block");
    for(j=0;j<menuItems[0].length;j++){
      if(j==showId){
        for(k=0;k<menuItems[0][0].length;k++){
          menuItems[0][0][k].css("display","list-item");
        }
      }else{
        for(k=0;k<menuItems[0][j].length;k++){
          menuItems[0][j][k].css("display","none");
        }
      }
    }
    for(i=1;i<naviTitles.length;i++){
      naviTitles[i].css("display","none");
      for(j=0;j<menuItems[i].length;j++){
        naviGroup[i].css("display","none");
//        $(".naviItems",naviTitles[i]).css("display","none");
  //    alert(naviTitles[i].css("width"));
      }
      //
      naviTitles[i].css("font-weight","normal").css("background-color","");
    }
    $(".naviItems:eq(0)").css("display","block");
    $(".naviItems").css("height","2.5em");
    //$(".naviTitle:eq(0) a").click(Menu.toggle);
    jQuery(".naviTitle a").css("color","#FF6C00");
    naviTitles[0].css("font-weight","bold").css("margin-top","-2px");
    Slider.show();
  },
  showAll: function(){
    for(i=0;i<naviTitles.length;i++){
      naviTitles[i].css("display","block");
      naviGroup[i].css("display","none");
      naviItems[i].css("display","none");
      $(".next").css("display","none");
      $(".prev").css("display","none");
      for(j=0;j<menuItems[i].length;j++){
        for(k=0;k<menuItems[i][j].length;k++){
          menuItems[i][j][k].css("display","list-item");
        }
      }
      //
      //naviTitles[i].css("font-weight","normal").css("background-color","");
    }
    $("#navi ul").css("border-color","#ffffff").css("border-width","1px").css("border-style","solid").css("height","120px").css("margin-top","4px");
    naviTitles[0].css("margin-top","0px");
  },
  toggle: function(){
    heightClose = "2.5em";
    //heightOpen = 0.5 + (2 * naviTitles.length) + (menuItems[(menuItems.length - 1)].length - 1) + "em";
    heightOpen = "9.5em";
    if(menuOpen == 0){
      $("#navigation").css("height",heightOpen);
      $("#openbutton").css("display","none");
      $("#closebutton").css("display","block");
      Menu.showAll();
      menuOpen = 1;
    }else{
      $("#navigation").css("height",heightClose);
      $("#openbutton").css("display","block");
      $("#closebutton").css("display","none");
      Menu.showOne(targetItemRows);
      menuOpen = 0;
    }
  },
  mouseOver: function($obj){
    if(menuOpen == 0){ return false;}
    //
    for(i=0;i<naviTitles.length;i++){
      naviTitles[i].css("font-weight","normal").css("background-color","");
    }
    $obj.css("font-weight","bold").css("background-color","#ffffff");
    id = $obj.attr("id");
    cnt = parseInt(id.substr(id.length - 2));
    for(i=0;i<naviGroup.length;i++){
      if(i == cnt){
        naviGroup[i].fadeIn();
        naviItems[i].fadeIn();
      }else{
        naviGroup[i].hide();
        naviItems[i].hide();
      }
    }
//    alert($naviItems.css("display"));
  },
  mouseOut: function($obj){
    if(menuOpen == 0){ return false;}
    //for(i=0;i<naviTitles.length;i++){
    //  naviTitles[i].css("color","FF6C00");
    //}
    $obj.css("color","#FF6C00");
    jQuery(".naviTitle a").css("color","#FF6C00");
  }
};

var itemPt = 0;
var Slider = {
  init: function() {
    for(i=0;i<menuItems.length;i++){
      for(j=0;j<menuItems[i].length;j++){
//        alert(menuItems[i][j].css("width"));
      }
    }
    jQuery(".next").click(function() {
      if(itemPt < menuItems[0].length){
        itemPt++;
      }
      Slider.show();
    });
    jQuery(".prev").click(function() {
      if(itemPt > 0){
        itemPt--;
      }
      Slider.show();
    });
  },
  show: function() {
    for(i=0;i<menuItems[0].length;i++){
      if(i == itemPt){
        for(j=0;j<menuItems[0][i].length;j++){
//          menuItems[0][i][j].css("display","list-item");
          menuItems[0][i][j].fadeIn();
        }
      }else{
        for(j=0;j<menuItems[0][i].length;j++){
          menuItems[0][i][j].css("display","none");
//          menuItems[0][i][j].fadeOut();
        }
      }
    }
    if((itemPt == 0 && menuItems[0].length > 1) || itemPt < menuItems[0].length - 1){
//      $(".next").css("display","list-item");
      $(".next").fadeIn();
    }else{
      $(".next").css("display","none");
//      $(".next").fadeOut();
    }
    if(itemPt > 0){
//      $(".prev").css("display","list-item");
      $(".prev").fadeIn();
    }else{
      $(".prev").css("display","none");
//      $(".prev").fadeOut();
    }
  }
};