//ほかのライブラリとのコンフリクトを避ける
$j = jQuery.noConflict();

//	====================================================
//	Useful Javascript Library
//	Haste Ver 1.10
//	
//	1.別ウィンドウで開かせる
//	2.クリックで消えるテキストフィールド初期値
//	3.ロールオーバー、カレント表示スクリプト
//	4.scrollsmoothly
//	5.アコーディオン
//	6.iframe代用スクリプト
//	
//	====================================================




//	====================================================
//	別ウィンドウで開かせる
//	classにpopupを指定
//	====================================================

window.onload=autoPOP;

function autoPOP()
{
	var x = document.getElementsByTagName('a');
	for (var i=0;i<x.length;i++)
	{
		if (x[i].getAttribute('className') == 'popup' || x[i].getAttribute('class') == 'popup')
		{
			x[i].onclick = function () {
			return winOpen(this.href)
			}
			x[i].title += '別ウィンドウで開きます';
		}
	}
};

function winOpen(url) {
	window.open(
		url,
		'popup'
	);

	return false;
};





//	====================================================
//	クリックで消えるテキストフィールド初期値
//	====================================================
$j(document).ready(function() {
	$j('input[title],textarea[title]').each(function() {
		$j(this).css("color","#888"); 
		if($j(this).val() === '') {
			$j(this).val($j(this).attr('title'));
		}
		
		$j(this).focus(function() {
			if($j(this).val() == $j(this).attr('title')) {
				$j(this).val('').addClass('focused');	
			}
		});
		$j(this).blur(function() {
			if($j(this).val() === '') {
				$j(this).val($j(this).attr('title')).removeClass('focused');	
			}
		});
	});
});





//	====================================================
//	ロールオーバー、カレント表示スクリプト
//
//	class="roll"が指定された要素はロールオーバー効果が適用される。
//	中身のimgは_on付きのものに変わる。
//	class="rollgroup"が指定されていた場合は連動してロールオーバー効果がかかる
//	
//	設定例：
//	別途dummy_over.jpgを同じフォルダに用意する
//	<img src="dummy.jpg" class="roll" /> 
//	
//	カレント表示方法
//	ページヘッダーにリンクと対応したIDを指定
//	<script type="text/javascript">
//		SITE.current='#u001';
//	</script>
//	
//	<li class="nav001" id="u001"><a href="/" title="HOME"><img src="/common/images/nav001.png" alt="HOME" class="roll" /></a></li>
//	
//	====================================================

//共通JS内で定義する変数、functionはこのオブジェクトにまとめる
SITE = {
	basepath : '/',
	preloader : {
		loadedImages: [],
		load: function (url){
			var img = this.loadedImages;
			var l = img.length;
			img[l] = new Image();
			img[l].src = url;
		}
	}
};


$j(function(){
	if (SITE.current){
		$j(SITE.current).addClass('current');
		$j(SITE.current).find('img').each(function(){
			var img = $j(this);
			var crsrc = img.attr('src').replace(/(\.gif|\.jpg|\.png)/, "_current$1");
			img.attr('src', crsrc);
		});
	}
});

$j(function(){
	//class="roll"はロールオーバーを設定 (src属性を_on付きのものに差し替える) 
	$j('img.roll').each(function(){
		this.originalSrc = $j(this).attr('src');
		this.rolloverSrc = this.originalSrc.replace(/(\.gif|\.jpg|\.png)/, "_over$1");
		SITE.preloader.load(this.rolloverSrc);
	});
	//通常ロールオーバー
	$j('img.roll').not($j('.rollgroup .roll, .current .roll')).hover(function(){
		$j(this).attr('src',this.rolloverSrc);
	},function(){
		$j(this).attr('src',this.originalSrc);
	});
	//グループ化されたロールオーバー
	//$j('.rollgroup').hover(function(){
	//	$j(this).find('.roll').each(function(){
	//		$j(this).attr('src',this.rolloverSrc);
	//	});
	//},function(){
	//	$j(this).find('.roll').each(function(){
	//		$j(this).attr('src',this.originalSrc);
	//	});
	//});
	
});




//	====================================================
//	scrollsmoothly.js
//	Copyright (c) 2008 KAZUMiX
//	http://d.hatena.ne.jp/KAZUMiX/20080418/scrollsmoothly
//	Licensed under the MIT License:
//	http://www.opensource.org/licenses/mit-license.php
//	
//	更新履歴
//	2009/02/12
//	スクロール先が画面左上にならない場合の挙動を修正
//	2008/04/18
//	公開
//	====================================================

(function(){
   var easing = 0.25;
   var interval = 20;
   var d = document;
   var targetX = 0;
   var targetY = 0;
   var targetHash = '';
   var scrolling = false;
   var splitHref = location.href.split('#');
   var currentHref_WOHash = splitHref[0];
   var incomingHash = splitHref[1];
   var prevX = null;
   var prevY = null;

   // ドキュメント読み込み完了時にinit()を実行する
   addEvent(window, 'load', init);

   // ドキュメント読み込み完了時の処理
   function init(){
     // ページ内リンクにイベントを設定する
     setOnClickHandler();
     // 外部からページ内リンク付きで呼び出された場合
     if(incomingHash){
       if(window.attachEvent && !window.opera){
         // IEの場合はちょっと待ってからスクロール
         setTimeout(function(){scrollTo(0,0);setScroll('#'+incomingHash);},50);
       }else{
         // IE以外はそのままGO
         scrollTo(0, 0);
         setScroll('#'+incomingHash);
       }
     }
   }

   // イベントを追加する関数
   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 setOnClickHandler(){
     var links = d.links;
     for(var i=0; i<links.length; i++){
       // ページ内リンクならスクロールさせる
       var link = links[i];
       var splitLinkHref = link.href.split('#');
       if(currentHref_WOHash == splitLinkHref[0] && d.getElementById(splitLinkHref[1])){
         addEvent(link, 'click', startScroll);
       }
     }
   }

   function startScroll(event){
     // リンクのデフォルト動作を殺す
     if(event){ // モダンブラウザ
       event.preventDefault();
       //alert('modern');
     }else if(window.event){ // IE
       window.event.returnValue = false;
       //alert('ie');
     }
     // thisは呼び出し元になってる
     setScroll(this.hash);
   }

   function setScroll(hash){
     // ハッシュからターゲット要素の座標をゲットする
     var targetEle = d.getElementById(hash.substr(1));
     if(!targetEle)return;
     //alert(scrollSize.height);
     // スクロール先座標をセットする
     var ele = targetEle;
     var x = 0;
     var y = 0;
     while(ele){
       x += ele.offsetLeft;
       y += ele.offsetTop;
       ele = ele.offsetParent;
     }
     var maxScroll = getScrollMaxXY();
     targetX = Math.min(x, maxScroll.x);
     targetY = Math.min(y, maxScroll.y);
     targetHash = hash;
     // スクロール停止中ならスクロール開始
     if(!scrolling){
       scrolling = true;
       scroll();
     }
   }

   function scroll(){
     var currentX = d.documentElement.scrollLeft||d.body.scrollLeft;
     var currentY = d.documentElement.scrollTop||d.body.scrollTop;
     var vx = (targetX - currentX) * easing;
     var vy = (targetY - currentY) * easing;
     var nextX = currentX + vx;
     var nextY = currentY + vy;
     if((Math.abs(vx) < 1 && Math.abs(vy) < 1)
       || (prevX === currentX && prevY === currentY)){
       // 目標座標付近に到達していたら終了
       scrollTo(targetX, targetY);
       scrolling = false;
       location.hash = targetHash;
       prevX = prevY = null;
       return;
     }else{
       // 繰り返し
       scrollTo(parseInt(nextX), parseInt(nextY));
       prevX = currentX;
       prevY = currentY;
       setTimeout(function(){scroll()},interval);
     }
   }
   
   function getDocumentSize(){
     return {width:Math.max(document.body.scrollWidth, document.documentElement.scrollWidth), height:Math.max(document.body.scrollHeight, document.documentElement.scrollHeight)};
   }

   function getWindowSize(){
     var result = {};
     if(window.innerWidth){
       var box = d.createElement('div');
       with(box.style){
         position = 'absolute';
         top = '0px';
         left = '0px';
         width = '100%';
         height = '100%';
         margin = '0px';
         padding = '0px';
         border = 'none';
         visibility = 'hidden';
       }
       d.body.appendChild(box);
       var width = box.offsetWidth;
       var height = box.offsetHeight;
       d.body.removeChild(box);
       result = {width:width, height:height};
     }else{
       result = {width:d.documentElement.clientWidth || d.body.clientWidth, height:d.documentElement.clientHeight || d.body.clientHeight};
     }
     return result;
   }
   
   function getScrollMaxXY() {
     if(window.scrollMaxX && window.scrollMaxY){
       return {x:window.scrollMaxX, y:window.scrollMaxY};
     }
     var documentSize = getDocumentSize();
     var windowSize = getWindowSize();
     return {x:documentSize.width - windowSize.width, y:documentSize.height - windowSize.height};
   }
   
 }());





//	====================================================
//	アコーディオン
//	ボタンとなるタグに class="acc" を付与
//
//	====================================================
$j(document).ready(function() {
	$j(".acc").hover(function(){
		$j(this).css("cursor","pointer"); 
	},function(){
		$j(this).css("cursor","default"); 
		});
	$j(".acc").click(function(){
		$j(this).next().slideToggle();
		});
});





//	====================================================
//	iframe代用スクリプト
//	<head>
//	<script type="text/javascript">
//	$j(function(){
//		$j('a.iframe').iframe();
//	});
//	</script>
//	</head>
//
//	<a href="myIframe.html" class="iframe w:300 h:300">
//
//  Options:
//  -------
//  width:      	width of iframe (default: 640)			w:640
//  height:      	height of iframe (default: 480)			h:480
//  scrolling:   	auto									sc:auto
//  frameborder:	height of iframe (default: 0)			fb:0
//  marginwidth:	margin of iframe (default: 0)			wm:0
//  marginheight:	margin of iframe (default: 0)			hm:0
//	====================================================

 
 jQuery.fn.iframe = function(options) {
    return this.each(function() {
        var $this = jQuery(this);
        var cls = this.className;
        
        var opts = jQuery.extend({
            frameborder:  ((cls.match(/fb:(\d+)/)||[])[1]) || 0,
            marginwidth:  ((cls.match(/wm:(\d+)/)||[])[1]) || 0,
            marginheight: ((cls.match(/hm:(\d+)/)||[])[1]) || 0,
            width:        ((cls.match(/w:(\d+)/)||[])[1]) || 640,
            height:       ((cls.match(/h:(\d+)/)||[])[1]) || 480,
            scrolling:    ((cls.match(/sc:(\w+)/)||[])[1]) || "auto",
            version:     '1,0,0,0',
            cls:          cls,
            src:          $this.attr('href') || $this.attr('src'),
			id:			  $this.attr('id'),
            caption:      $this.text(),
            attrs:        {},
            elementType:  'div',
            xhtml:        true
        }, options || {});
        
        var endTag = opts.xhtml ? ' />' : '>';

        var a = ['<iframe src="' + opts.src + '"'];
		if(opts.id){
			a.push(' id="' + opts.id + '"');
		}else{
			a.push(' id="content_iframe"');
		}
		a.push(' frameborder="' + opts.frameborder + '"');
		a.push(' marginwidth="' + opts.marginwidth + '"');
		a.push(' marginheight="' + opts.marginheight + '"');
		a.push(' width="' + opts.width + '"');
		a.push(' height="' + opts.height + '"');
		a.push(' scrolling="' + opts.scrolling + '"');
		a.push(endTag);
        
        // convert anchor to span/div/whatever...
        var $el = jQuery('<' + opts.elementType + ' class="' + opts.cls + '"></' + opts.elementType + '>');
        $el.html(a.join(''));
        $this.after($el).remove();
    });
};



/*** 
    Simple jQuery Slideshow Script
    Released by Jon Raasch (jonraasch.com) under FreeBSD license: free to use or modify, not responsible for anything, etc.  Please link out to me if you like it :)
***/

function slideSwitch() {
    var $active = $j('#slideshow img.active');

    if ( $active.length == 0 ) $active = $j('#slideshow img:last');

    // use this to pull the images in the order they appear in the markup
    var $next =  $active.next().length ? $active.next()
        : $j('#slideshow img:first');

    // uncomment the 3 lines below to pull the images in random order
    
    // var $sibs  = $active.siblings();
    // var rndNum = Math.floor(Math.random() * $sibs.length );
    // var $next  = $j( $sibs[ rndNum ] );


    $active.addClass('last-active');

    $next.css({opacity: 0.0})
        .addClass('active')
        .animate({opacity: 1.0}, 2000, function() {
            $active.removeClass('active last-active');
        });
}

$j(function() {
    setInterval( "slideSwitch()", 4000 );
});