/*
 * KAZUMiX担当
 */

(function(){
   
   d = document;
   
   setMenuHighlight();
   setRollover();
   
   //ギャラリーならそれ用スクリプト実行
   if(d.body.id=='gallery'){
     gallery();
   }
   
   // イベントを追加する関数

   function addEvent(eventTarget, eventName, func){
     if(eventTarget.addEventListener){
       // モダンブラウザ
       eventTarget.addEventListener(eventName, func, false);
     }else if(window.attachEvent){
       // IE
       eventTarget.attachEvent('on'+eventName, function(){func.apply(eventTarget);});
     }
   }

   // メニューハイライト用
   
   function setMenuHighlight(){
     
     var menuImages = function(){
       var result = [];
       var menuBox = d.getElementById('menu');
       var menus =  menuBox.getElementsByTagName('img');
       for(var i=0,len=menus.length; i<len; i++){
         result.push(menus[i]);
       }
       return result;
     }();
     var homeImage = menuImages.shift();
     
     function isHome(){
       if(/^(\/|\/index\..+)$/.test(location.pathname)){
         return true;
       }
       return false;
     }
     
     function setHighlight(targetImage){
       targetImage.src = targetImage.src.replace(/_rollout/,'_rollover');
     }
     
     function highlight(){
       for(var i=0,len=menuImages.length; i<len; i++){
         var image = menuImages[i];
         if(location.pathname.match(image.parentNode.pathname)){
           setHighlight(image);
           return;
         }
       }
     }
     
     if(isHome()){
       setHighlight(homeImage);
     }else{
       highlight();
     }
   }
   
   // ロールオーバー用
   
   function setRollover(){
     var rolloverImages = [];
     
     function setRollOverEvents(){
       if(!document.images){return;}
       var imgs = document.images;
       var insert = [];
       for(var i=0,len=imgs.length; i<len; i++){
	 var splitname = imgs[i].src.split('_rollout.');
	 if(splitname[1]){
           var rolloverImg = document.createElement('img');
	   rolloverImages.push(rolloverImg);
           rolloverImg.src = splitname[0]+'_rollover.'+splitname[1];
           var alpha = 0;
           rolloverImg.currentAlpha = alpha;
           rolloverImg.style.opacity = alpha/100;
           rolloverImg.style.filter = 'alpha(opacity='+alpha+')';
           rolloverImg.style.position = 'absolute';

           addEvent(rolloverImg,'mouseover',function(){setFader(this,100);});
           addEvent(rolloverImg,'mouseout',function(){setFader(this,0);});

           insert[insert.length] = {position:imgs[i],element:rolloverImg};
	 }
       }
       for(i=0,len=insert.length; i<len ;i++){
	 var parent = insert[i].position.parentNode;
	 parent.insertBefore(insert[i].element,insert[i].position);
       }

       addEvent(window,'beforeunload', clearRollover);
     }

     function setFader(targetObj,targetAlpha){
       targetObj.targetAlpha = targetAlpha;
       if(targetObj.currentAlpha==undefined){
	 targetObj.currentAlpha = 100;
       }
       if(targetObj.currentAlpha==targetObj.targetAlpha){
	 return;
       }
       if(!targetObj.fading){
	 if(!targetObj.fader){
           targetObj.fader = fader;
	 }
	 targetObj.fading = true;
	 targetObj.fader();
       }
     }

     function fader(){
       this.currentAlpha += (this.targetAlpha - this.currentAlpha)*0.2;
       if(Math.abs(this.currentAlpha-this.targetAlpha)<1){
	 this.currentAlpha = this.targetAlpha;
	 this.fading = false;
       }
       var alpha = parseInt(this.currentAlpha);
       this.style.opacity = alpha/100;
       this.style.filter = 'alpha(opacity='+alpha+')';
       if(this.fading){
	 var scope = this;
	 setTimeout(function(){fader.apply(scope)},30);
       }
     }
     
     function clearRollover(){
       for(var i=0,len=rolloverImages.length; i<len; i++){
	 var image = rolloverImages[i];
	 image.style.opacity = 0;
	 image.style.filter = 'alpha(opacity=0)';
       }
     }

     addEvent(window,'load',setRollOverEvents);
   }
   
   // ギャラリー用

   function gallery(){
     var frameImage = '/gallery/img/gallery_currentFrame.gif';
     
     var thumbs = function(){
       var result = [];
       var contentsBox = d.getElementById('contents');
       var images = contentsBox.getElementsByTagName('img');
       for(var i=0,len=images.length; i<len; i++){
	 var image = images[i];
	 result.push(image);
       }
       return result;
     }();
     
     function setFrame(image){
       var frame = d.createElement('img');
       frame.src = frameImage;
       frame.style.position = 'absolute';
       image.parentNode.insertBefore(frame, image);
     }
     
     function setCurrentFrame(){
       for(var i=0,len=thumbs.length; i<len; i++){
	 var thumb = thumbs[i];
	 var parentNode = thumb.parentNode;
	 if(!parentNode.href){
	   continue;
	 }
	 if(location.href.match(parentNode.href)){
	   setFrame(thumb);
	   return;
	 }
       }
     }
     
     function setClickEvent(){
       function hideObject(){
	 var objects = d.getElementsByTagName('object');
	 var play = d.createElement('a');
	 play.innerHTML = '再生する';
	 play.style.position = 'absolute';
	 play.href = 'javascript:location.reload()';
	 for(var i=0,len=objects.length; i<len; i++){
	   objects[i].style.visibility = 'hidden';
	   objects[i].parentNode.insertBefore(play, objects[i]);
	 }
       }
       
       var links = d.getElementsByTagName('a');
       for(var i=0,len=links.length; i<len; i++){
	 var link = links[i];
	 addEvent(link, 'click', hideObject);
       }
     }
     
     setCurrentFrame();
     setClickEvent();

   }

 })();
