jQuery.noConflict();

jQuery(document).ready(function(){
//	slideshow.init(1000,5000);
	jQuery("body#top div#newsArea span").click(function () {
		jQuery("body#top dl#hidden").slideToggle();
		jQuery("body#top span.open").toggle();
		jQuery("body#top span.close").toggle();
	});
 
/* jQuery(document).ready(function(){
    jQuery(".bigtarget .clearfix .fl h3 a").bigTarget();
	 jQuery(".bigtarget h3.link01 a").bigTarget();
  });*/
 
	jQuery("dl#subNavi").each(function () {
		jQuery(this).find('img').addClass('nofade');
	});
	jQuery("dl#subNavi dt a").each(function () {
		jQuery(this).addClass('exparent');
	});

	// ロールオーバー (透明度変え版)
	jQuery('a img:not(.rollover,.nofade)').fadeOver();
	// スムーズスクロール
	jQuery('.smooth a').smoothLink();

	jQuery('dl#subNavi dt').navigation({
		activeClassTarget : 'dt',
		activeParentClassTarget : 'dt'
	});
	jQuery('dl#subNavi dd').navigation({
		activeClassTarget : 'dd',
		activeParentClassTarget : 'dd'
	});

});



(function(jQuery) {
	
	jQuery.fn.navigation = function(options)
	{
		// デフォルト
		var settings = jQuery.extend({
			imgext					: 'gif|jpg|png',	// 画像の拡張子
			imgPostfixOn			: '_on',			// ON画像（有：'_on',無：''）
			imgPostfixIn			: '',				// IN画像（有：'_in',無：''）
			effect					: 'roll',			// エフェクト（画像切替：'roll', 透明度：'fade'）
			activeClass				: 'active',			// 自ページ時のクラス
			activeClassTarget		: 'li',				// 自ページクラス対象
			activeParentClass		: 'activeParent',	// 上位階層時のクラス
			activeParentClassTarget	: 'li',				// 上位階層クラス対象
			exParentClass			: 'exparent',		// 上位階層対象除外クラス
			exParentPath			: '/',				// 上位階層対象除外パス
			fade_speed				: 150,
			fade_opacity			: 0.75,
			onClick					: function(elm){},
			onMouseOver				: function(elm){},
			onMouseOut				: function(elm){},
			callback				: function(){}
		}, options);
		
		var regIndex = new RegExp('(index.html|index.php)$');
		var regOff   = new RegExp('\.('+settings.imgext+')$');
		var regOn    = new RegExp('('+settings.imgPostfixOn+'|'+settings.imgPostfixIn +')\.('+settings.imgext+')$');
		var regIn    = new RegExp(settings.imgPostfixIn+'\.('+settings.imgext+')$');

		function setEffect(elm){
			if(settings.effect == 'roll'){
				rollOver(elm);
			}else if(settings.effect == 'fade'){
				fadeOver(elm);
			}
		}

		function rollOver(elm)
		{
			elm.originalSrc = jQuery(elm).attr('src');
			elm.rolloverSrc = elm.originalSrc.replace(regOff, settings.imgPostfixOn+'.'+'$1');

			// 先読み
			elm.rolloverImg = new Image;
			elm.rolloverImg.src = elm.rolloverSrc;

			if(elm.originalSrc != elm.rolloverSrc){
				jQuery(elm).hover(function() {
					jQuery(elm).attr('src', elm.rolloverSrc);
				}, function() {
					jQuery(elm).attr('src', elm.originalSrc);
				});
			}
		}

		function fadeOver(elm)
		{
			jQuery(elm).hover(function() {
				jQuery(elm)
					.stop(true, false)
					.fadeTo(settings.fade_speed, settings.fade_opacity);
			}, function() {
				jQuery(elm).fadeTo(settings.fade_speed, 1);
			});
		}

		function getLinkType(elm)
		{
			if(elm.getAttribute('href').substr(0,1) == '#'){
				return 'other';
			}

			var href = getUri(elm, elm.getAttribute('href'));
			var setImgFlg = false;
			if((href.absolutePath.replace(regIndex,"") == location.href.replace("#"+location.hash,"").replace(regIndex,"")) && !href.Fragment){
				//そのページ
				jQuery(elm).find('img').each(function(){
					var src = jQuery(this).attr('src');
					if(settings.imgPostfixIn){
						jQuery(this).attr('src',src.replace(regOff, settings.imgPostfixIn+"."+"$1"));
					}else if(settings.imgPostfixOn){
						jQuery(this).attr('src',src.replace(regOff, settings.imgPostfixOn+"."+"$1"));
					}
				});
				if(settings.activeClass && settings.activeClassTarget){
					var t = jQuery(elm).closest(settings.activeClassTarget);
					if(t.length > 0 && !t.hasClass(settings.activeClass)){
						t.addClass(settings.activeClass);
					}
				}
				jQuery(elm).replaceWith(jQuery(elm).html());
				return 'self';

			}else if (0 <= location.href.search(href.absolutePath)){
				if(settings.exParentClass && jQuery(elm).hasClass(settings.exParentClass)){
				}else if(settings.exParentPath && settings.exParentPath == href.Pathname.replace(regIndex,"")){
				}else{
					//上位階層
					jQuery(elm).find('img').each(function(){
						var src = jQuery(this).attr('src');
						if(settings.imgPostfixIn){
							jQuery(this).attr('src',src.replace(regOff, settings.imgPostfixIn+"."+"$1"));
						}else if(settings.imgPostfixOn){
							jQuery(this).attr('src',src.replace(regOff, settings.imgPostfixOn+"."+"$1"));
						}
					});
					if(settings.activeParentClass && settings.activeParentClassTarget){
						var t = jQuery(elm).closest(settings.activeParentClassTarget);
						if(t.length > 0 && !t.hasClass(settings.activeParentClass)){
							t.addClass(settings.activeParentClass);
						}
					}
					return 'parent';
				}
			}

			return 'other';
		}

		function getUri(elm, path)
		{
			elm.originalPath = path;
			elm.absolutePath = (function(){
				var e = document.createElement('span');
				e.innerHTML = '<a href="' + path + '" />';
				return e.firstChild.href;
			})();
			var fields = {'Username' : 4, 'Password' : 5, 'Port' : 7, 'Protocol' : 2, 'Host' : 6, 'Pathname' : 8, 'URL' : 0, 'Querystring' : 9, 'Fragment' : 10};
			var regex = /^((\w+):\/\/)?((\w+):?(\w+)?@)?([^\/\?:]+):?(\d+)?(\/?[^\?#]+)?\??([^#]+)?#?(\w*)/;
			var r = regex.exec(elm.absolutePath);
			for(var f in fields){
				if(typeof r[fields[f]] != 'undefined'){
					elm[f] = r[fields[f]];
				}
			}
			return elm;
		}

		this.each(function() {
			jQuery(this).find('a[href]:first').each(function(){
				var type = getLinkType(this);
				if(type == "self"){
				}else if(type == "parent"){
					if(settings.effect == 'fade'){
						jQuery(this).find('img').each(function(){
							setEffect(this);
						});
					}
					jQuery(this).click(function () {
						settings.onClick(this);
					});
				}else{
					jQuery(this).find('img').each(function(){
						setEffect(this);
					});
					jQuery(this).click(function () {
						settings.onClick(this);
					});
				}

			});
			jQuery(this).hover(function() {
				settings.onMouseOver(this);
			}, function() {
				settings.onMouseOut(this);
			});
		});

		settings.callback();
		
		return this;
	};

})(jQuery);


(function(jQuery) {
	/**
	 * fadeOver
	 * 
	 * 透明度を使ったロールオーバー
	 */
	jQuery.fn.fadeOver = function(options)
	{
		// 初期値
		var setting = jQuery.extend({
			speed	: 150,
			opacity	: 0.75,
			imgPostfixIn	: null
		}, options);
		
		
		var regIn = null;
		if (setting.imgPostfixIn) {
			regIn = new RegExp(setting.imgPostfixIn + '\.(' + neuqp.imgext + ')$');
		}
		
		
		// 実処理
		this.each(function() {
			jQuery(this).hover(function() {
				if (! regIn || ! jQuery(this).attr('src').match(regIn)) {
					jQuery(this)
						.stop(true, false)
						.fadeTo(setting.speed, setting.opacity);
				}
			}, function() {
				if (! regIn || ! jQuery(this).attr('src').match(regIn)) {
					jQuery(this).fadeTo(setting.speed, 1);
				}
			});
		});
		
		return this;
	};

	/**
	 * smoothLink
	 * 
	 * ページ内リンクのスムーズ・スクロール
	 */
	jQuery.fn.smoothLink = function(options)
	{
		// 初期値
		var setting = jQuery.extend({
			speed		: 1200,
			easing		: 'easeOutExpo',
			marginTop	: 0
		}, options);
		
		
		// 実処理
		this.each(function() {
			jQuery(this).click(function() {
				var id = this.href.substring(this.href.indexOf('#'), this.href.length);
				if (id != '#') {
					var t = navigator.appName.match(/Opera/) ? 'html' : 'html, body';
					jQuery(t).animate({
							scrollTop: jQuery(id).offset().top - setting.marginTop
						},
						setting.speed, setting.easing);
				}
				return false;
			});
		});
		
		return this;
	};

})(jQuery);

