$(document).ready(function(){
  baseTableStyle();
  borderTableStyle();
  photoGallery();
  modalGallery();
  gridPanelDisplay();
  smartRollover();
});


function gridPanelDisplay(){
  var defaults = {
    STAGE : '#panelStage',
    DISPLAY : '.panelList',
    IMGPATH : 'images/index/panel/',
    XMLDATA : ''
  }
  $.ajax({
    type: "GET",
    url: 'panel.xml?'+new Date().getTime(),
    dataType: "xml",
    success: function(xml){
      var XML = xml;
      var bannerSize = $(XML).find('banner').size();
      var photoSize = $(XML).find('photo').size();
      var stageSize = $(defaults.STAGE).find('li').size();
      var panelSize = stageSize-bannerSize;
      var baseAry = arrayMakeAndShaffle(stageSize);
      var photoAry = arrayMakeAndShaffle(photoSize);
      var PanelAry = new Array();
      for(var i=0;i < baseAry.length;i++){
        var pos = $(defaults.DISPLAY).find('li:eq('+baseAry[i]+')');
        if(i < bannerSize){
          listInnerMake(baseAry[i],'banner:eq('+i+')');
        }else{
          var phSCT = photoAry[i-bannerSize];
          listInnerMake(baseAry[i],'photo:eq('+phSCT+')');
          PanelAry[i-bannerSize] = baseAry[i];
        }
      }
      $(defaults.DISPLAY).fadeIn(300);
      smartRollover();

      var photoIdx = panelSize-1;
      var panelIdx = -1;
      gridPanelTimer();
      //$('#debug').val('PanelAry['+PanelAry+']\nphotoAry=['+photoAry+']')
      //<textarea id="debug"></textarea><input type="text" id="debug2">

      function gridPanelChange(){
        photoIdx++;
        if(photoIdx > photoSize-1) photoIdx = 0;
        var nextPhoto = photoAry[photoIdx];

        panelIdx++;
        if(panelIdx > panelSize-1) panelIdx = 0;
        var nextPanel = PanelAry[panelIdx];

        //$('#debug2').val('PANEL:'+nextPanel+' | PHOTO: '+nextPhoto);
        $(defaults.DISPLAY).find('li:eq('+nextPanel+')').hide();
          listInnerMake(nextPanel,'photo:eq('+nextPhoto+')');
        $(defaults.DISPLAY).find('li:eq('+nextPanel+')').fadeIn(1000,function(){
          gridPanelTimer();
        });
      }

      function listInnerMake(boxid,target){
        $($(defaults.DISPLAY).find('li:eq('+boxid+')')).find('a').attr('href',$(XML).find(target).attr('href')).attr('target',$(XML).find(target).attr('target'));
        $($(defaults.DISPLAY).find('li:eq('+boxid+')')).find('img').attr('src',defaults.IMGPATH+$(XML).find(target).attr('src'));
      }

      function arrayMakeAndShaffle(SIZE){
        var ary = new Array(SIZE);
        for(var i=0;i < ary.length;i++){
          ary[i] = i;
        }
        ary = $.shuffle(ary);
        return ary;
      }

      function gridPanelTimer(){
        tvID = setTimeout(gridPanelChange,2000);
      }
    }
  });
}


function modalGallery(){
  var defaults = {
    MODALGALLERY : '#modalGallery',
    MODALTEMPLATE : '#modalTemplate',
    MODALXML : '#modalXML',
    OPENREL : 'a[rel=modalOPEN]',
    CLOSECLASS : 'modalClose',
    PREVCLASS : 'modalLeft',
    NEXTCLASS : 'modalRight',
    fadeSPEED : 300,
    XMLDATA : ''
  }

  if($(defaults.MODALGALLERY).size() > 0){
    $(defaults.MODALTEMPLATE).hide();
    var ITEMCOUNT = $(defaults.OPENREL).size();
    defaults['ITEMCOUNT'] = $(defaults.OPENREL).size();

    if($(defaults.MODALTEMPLATE +' '+defaults.MODALXML).val()){
      $.ajax({
        type: "GET",
        url: $(defaults.MODALTEMPLATE +' '+defaults.MODALXML).val()+'?'+new Date().getTime(),
        dataType: "xml",
        success: function(xml){
          defaults['XMLDATA'] = xml;
          modalGalleryAction(defaults);
        }
      });
    }else{
      modalGalleryAction(defaults);
    }
  }

  function modalGalleryAction(option){
    $("body").prepend('<div id="modalStage" style="position: relative; display: none; z-index: 1000;"><div id="modalDisplay" style="position: fixed; top: 50%; left: 50%; color: #ffffff; z-index: 1010;"></div><div id="modalBG" class="'+option.CLOSECLASS+'"  style="background-color: #000000; width: 100%; height: 100%; position: absolute; filter: alpha(opacity=90); -moz-opacity:0.9; opacity:0.9; z-index: 1000;"></div></div>');
    $('#modalDisplay').html($(option.MODALTEMPLATE).html());
    $('#modalStage').css('min-width',$('body > *').width()+'px');
    $('#modalBG').css('min-width',$('body > *').width()+'px').height($('body').height());
    if(modalBrowserFlag() == 'IE6') $('#modalDisplay').css('position','absolute')
    var IMAGESRC = new Image();
    $(option.OPENREL).each(function(i){
      $(this).attr('href');
      $(this).attr('tabindex',i);
      IMAGESRC[i] = $(this).attr('href');
      jQuery("<img>").attr("src", IMAGESRC[i]);
    });
    //OPEN
    $(option.OPENREL).click(function(){
      if(modalRunCheck()){
        var thisID = $(this).attr('tabindex');
        modalDisplayCreate(thisID,'#modalStage',option);
      }
      return false;
    });

    $('.'+option.NEXTCLASS).click(function(){  //NEXT
      if(modalRunCheck()){
        var thisID = $(this).attr('tabindex');
        if(ITEMCOUNT === thisID) thisID = 0;
        modalPagerAction(thisID,option);
      }
      return false;
    });

    $('.'+option.PREVCLASS).click(function(){  //PREV
      if(modalRunCheck()){
        var thisID = $(this).attr('tabindex');
        if(0 > thisID) thisID = ITEMCOUNT-1;
        modalPagerAction(thisID,option);
      }
      return false;
    });

    $('.'+option.CLOSECLASS).click(function(){  //CLOSE
      if(modalRunCheck()){
        $('#modalStage').fadeOut(option.fadeSPEED,function(){
          $('#modalStage').removeClass('running');
        });
      }
      return false;
    });

    function modalDisplayCreate(thisID,DISPLAYID,option){
      var positionY = Math.ceil(($(window).height()-$('#modalDisplay').height())/2);
      if(modalBrowserFlag() == 'IE6') positionY = positionY+$(document).scrollTop();
      $('#modalDisplay').css({
        top: positionY+'px',
        marginLeft: $('#modalDisplay').width()/-2+'px'
      });

      //要素代入。
      $('#modalDisplay #photoTag').attr('src',IMAGESRC[thisID]);
      $('#modalDisplay .'+option.PREVCLASS).attr('tabindex',thisID-1);
      $('#modalDisplay .'+option.NEXTCLASS).attr('tabindex',thisID+1);
      if(option.XMLDATA){
        var thisXml = $(option.XMLDATA).find('entry:eq('+thisID+') > *');
        $(thisXml).each(function(){
          if($(this).text()){
            $('#modalDisplay .xml-'+$(this)[0].tagName+'-box').show();
            $('#modalDisplay .xml-'+$(this)[0].tagName).text($(this).text());
          }else{
            $('#modalDisplay .xml-'+$(this)[0].tagName+'-box').hide();
            $('#modalDisplay .xml-'+$(this)[0].tagName).text('');
          }
        })
      }
      //要素代入END。

      $(DISPLAYID).fadeIn(option.fadeSPEED,function(){
        $('#modalStage').removeClass('running');
      });
    }

    function modalPagerAction(thisID,option){
      $('#modalDisplay').fadeOut(option.fadeSPEED,function(){
        modalDisplayCreate(thisID,'#modalDisplay',option);
      });
    }

    function modalRunCheck(){
      if($('#modalStage').hasClass('running')){
        return false;
      }else{
        $('#modalStage').addClass('running');
        return true;
      }
    }

    function modalBrowserFlag(){
      if(jQuery.browser.msie && parseInt(jQuery.browser.version) == 6){
        return 'IE6';
      }else{
        return false;
      }
    }
  }
}






function photoGallery(){
  if($('#photoGallery').size() > 0){
    SRC = new Array();
    COUNT = $('#thumbNavi').find('li a').size();
    $('#thumbNavi').find('li a').each(function(i){
      SRC[i] = $(this).attr('href');
      jQuery("<img>").attr("src", SRC[i]);
    });


    $('#thumbNavi').find('li a').click(function(){
      if(!$(this).hasClass('current')){
        TARGET = this;
        photoChange();
        return false;
      }else{
        return false;
      }
    });

    $('#leftMovieBtn').find('a').click(function(){
      ID = $('.current').parent().prev().index();
      if(ID < 0) ID = ID+COUNT;
      TARGET = $('#thumbNavi li:eq('+ID+')').find('a');
      photoChange();
      return false;
    });

    $('#rightMovieBtn').find('a').click(function(){
      ID = $('.current').parent().next().index();
      if(ID < 0) ID = 0;
      TARGET = $('#thumbNavi li:eq('+ID+')').find('a');
      photoChange();
      return false;
    });

    function photoChange(){
      if($('#thumbNavi').hasClass('running')){
        return false;
      }else{
        $('#thumbNavi').addClass('running');
        $('#thumbNavi').find('a').removeClass('current');
        $(TARGET).addClass('current');
        $('#photoArea').find('.caption').text($(TARGET).find('img').attr('alt'));
        $('#photoArea').find('.photobox img').hide();
        $('#photoArea').find('.photobox img').attr('src',$(TARGET).attr('href')).bind("load", function() {
          $('#photoArea').find('.photobox img').fadeIn(300,function(){
            $('#thumbNavi').removeClass('running');
            return false;
          });
        });
      }
    }
  }
}


function baseTableStyle(){
  if($('.baseTableStyle').hasClass){
    $('.baseTableStyle').find('tr').each(function(){
      $(this).find('th:odd').addClass('tdColorSet')
      $(this).find('td:even').addClass('tdColorSet')
    });
  }
}


function borderTableStyle(){
  if($('.borderTableStyle').hasClass){
    $('.borderTableStyle').find('tr:even td').addClass('tdColorSet')
  }
}

function smartRollover(){
  $('[src*="_off."]').mouseover(function(){
    $(this).attr("src",$(this).attr("src").replace(/^(.+)_off(\.[a-z]+)$/,"$1_on$2"));
  }).mouseout(function(){
    $(this).attr("src",$(this).attr("src").replace(/^(.+)_on(\.[a-z]+)$/,"$1_off$2"));
  }).each(function(init){
    $("<img>").attr("src",$(this).attr("src").replace(/^(.+)_off(\.[a-z]+)$/,"$1_on$2"));
  })
}


