﻿/* Constant
-------------------------------------------------*/
var FEED_URL_BANNER   = '/bnr/data.xml';
var FEED_URL_ACTIVITY = '/csr/xml/activity.xml';
var FEED_URL_PRODUCT  = '/csr/xml/product.xml';
var FEED_URL_BLOG     = '/csr/info/atom.xml';
var FEED_COUNT        = 3;
var feed_list = [];

/* Process
-------------------------------------------------*/
var binfo = new BrowserInfo();

// page-scrollerの位置調整
if ((binfo.browser.ie && (binfo.browser.version == 6)) || binfo.os.smartphone) {
	adjPosition = 0;
} else {
	adjPosition = -87;
}

$(function() {
	var BANNER_DURATION = 'fast';
	var DETAIL_DURATION = 'fast';

	var BANNER_INIT_EASE = 'easeOutQuart';
	var ROLLOVER_EASE = 'easeOutQuart';
	var ROLLOUT_EASE  = 'easeInCubic';

	// Topバナーの初期化
	loadRssfeed(FEED_URL_BANNER, function(xml) {
		// バナー生成
		createBanner(xml);

		// バナーイベントの初期化
		var count = $('#Top-banner a').size();
		var b_bnrInit = false;

		$('#Top-banner a').each(function() {

			var link = $(this);
			var img = $(this).find('img');

			link.hide().fadeIn(1000, function() {
				count--;
				if (count == 0) {
					b_bnrInit = true;
					$.resume(300);
				}
			});

			link.delay(function() {
				// バナーが縮む処理を追加
				link.animate({width: 22, height: 22}, 500, BANNER_INIT_EASE, function() {
					// バナー画像を隠す（背景画像を表示するため）
					img.hide();
				});
			});

			// rollover & rollout イベントの設定
			link.hover(
				function() {
					if (!b_bnrInit)
						return false;

					// onの場合の処理
					img.show();
					link.stop().animate({width: img.width(), height: img.height()}, BANNER_DURATION, ROLLOVER_EASE);
				},
				function() {
					if (!b_bnrInit)
						return false;

					// outの場合の処理
					link.stop().animate({width: 22, height: 22}, BANNER_DURATION, ROLLOUT_EASE, function() {
						img.hide();
					});
				}
			);
		});

	});

	// "詳細はこちら"ボタンの初期化
	$('a.detail').each(function() {
		$(this).hover(
			function() {
				// onの場合の処理
				var img = $(this).find('img').attr('src');
				$(this).find('img').attr('src', img.replace('_off', '_on'));
				$(this)
					.stop()
					.css({paddingLeft: 21, paddingRight: 35})
					.animate({paddingLeft: 64, paddingRight: 26}, DETAIL_DURATION);
			},
			function() {
				// outの場合の処理
				var img = $(this).find('img').attr('src');
				$(this).find('img').attr('src', img.replace('_on', '_off'));
				$(this)
					.stop()
					.animate({paddingLeft: 21, paddingRight: 35}, DETAIL_DURATION);
			}
		);
	});

	// スライダーの初期化
	$('#product-slider').productSlider();

	// What's New RSSフィードからリストの生成
	loadRssfeed(FEED_URL_ACTIVITY, createActivity);
	loadRssfeed(FEED_URL_PRODUCT, createProduct);
	loadRssfeed(FEED_URL_BLOG, createBlog);


	// 多重スクロールの初期化
	var mc = $('#Main-content');
	var m1 = $('#Message1');
	var m2 = $('#Message2');
	var m3 = $('#Message3');
	var m4 = $('#Message4');
	var m5 = $('#Message5');

	// スマートフォン以外
	if (!binfo.os.smartphone) {
		var mco = getScrollerOption(mc, {defaultTop: -270});
		var mo1 = getScrollerOption(m1, {defaultTop: -80, range: 250, moveTxt: true, txtDefaultTop: -60, txtRange:350});
		var mo2 = getScrollerOption(m2, {defaultTop: -80, range: 250, moveTxt: true, txtDefaultTop: -60, txtRange:350});
		var mo3 = getScrollerOption(m3, {defaultTop: -80, range: 250, moveTxt: true, txtDefaultTop: -60, txtRange:350});
		var mo4 = getScrollerOption(m4, {defaultTop: -80, range: 250, moveTxt: true, txtDefaultTop: -60, txtRange:350});
		var mo5 = getScrollerOption(m5, {defaultTop: -80, range: 250, moveTxt: true, txtDefaultTop: -40, txtRange:350});

		$(window).scroll(function() {
			// スクロール量の取得
			var scroll = $(this).scrollTop();
			// ウィンドウの高さの取得
			var winHeight = $(this).height();

			if (!binfo.browser.ie || (binfo.browser.version != 6)) {
				// Globalナビ
				if (scroll >= 65) {
					$('#Header').css({position: 'fixed', top: -65});
				} else {
					$('#Header').css({position: 'absolute', top: 0});
				}
				// ページ内リンク
				if (scroll >= 460) {
					$('#Page-links').css({position: 'fixed', top: 47});
				} else {
					$('#Page-links').css({position: 'absolute', top: 510});
				}
			}

			// 各メッセージ枠の背景位置、テキスト位置の調整処理
			moveBgImage(mc, mco, scroll, winHeight);
			moveBgImage(m1, mo1, scroll, winHeight);
			moveBgImage(m2, mo2, scroll, winHeight);
			moveBgImage(m3, mo3, scroll, winHeight);
			moveBgImage(m4, mo4, scroll, winHeight);
			moveBgImage(m5, mo5, scroll, winHeight);

		});

	}

});



/* Functions
-------------------------------------------------*/
/*
 * 製品情報スライダー
 */
$.fn.productSlider = function(options) {

	// コンストラクタの取得
	var constructor = $(this);
	// 各セレクタの定義
	var category_selector = '.category a';
	var slider_selector   = '.slider .thumbs';
	var thumbs_selector   = '.slider .thumbs ul';
	var prev_selector     = '.slider .prev a';
	var next_selector     = '.slider .next a';

	// 初期表示するカテゴリIDの取得
	var current_selector = (options && options.init_select)?options.init_select:'#thumbs_all';

	// サムネイル１つ分の幅 (margin含む)
	// ※移動量として使用
	var unit_width = 0;
	var b_move = false;

	// 絞り込みボタンのClickイベント設定
	constructor.find(category_selector).click(function() {
		var id = $(this).attr('href');
		selectCategory(id);

		return false;
	});

	// スライダー部分の初期化（幅計算）
	var i = 0;
	constructor.find(thumbs_selector).each(function() {
		var parent = $(this);
		var width = 0;
		parent.find('li').each(function() {
			width += $(this).outerWidth(true);

			if (i==0) {
				unit_width = $(this).outerWidth(true);
			}
			i++;
		});
		parent.css('width', width);
	});

	// Prevボタンの初期化
	//$(this).find(

	// 初期表示
	selectCategory(current_selector);

	/**
	 * 表示切り替え処理
	 * 
	 */
	function selectCategory(id) {
		var categories, thumbs, link;

		categories = constructor.find(category_selector);
		// 絞り込みボタンのclassをクリア
		categories.removeClass('active');
		// アクティブな絞り込みボタンにclass="active"を設定
		categories.each(function() {
			link = $(this);
			if (link.attr('href') == id) {
				link.addClass('active');
			}
		});
		// スライダーを非表示に
		constructor.find(thumbs_selector).hide();
		thumbs = $(id);
		thumbs.css({left: 0});
		if (thumbs.width() > $(slider_selector).width()) {
			$(prev_selector).addClass('disable').unbind('click').bind('click', clickDisable);
			$(next_selector).removeClass('disable').unbind('click').bind('click', moveNext);
		} else {
			$(prev_selector).addClass('disable').unbind('click').bind('click', clickDisable);
			$(next_selector).addClass('disable').unbind('click').bind('click', clickDisable);
		}
		// アクティブなスライダーを表示
		//thumbs.show();
		thumbs.fadeIn('fast');

		current_selector = id;
	}

	/**
	 * 無効(disable)ボタンクリック時の処理
	 * 
	 */
	function clickDisable() {
		return false;
	}

	/**
	 * Prevボタンクリック時の処理
	 * 
	 */
	function movePrev() {
		if (b_move)
			return false;

		var target = $(current_selector);
		var width = target.width();
		var pos   = target.position();
		var left  = pos.left;

		left = left + unit_width;
		b_move = true;
		target.animate({left: left}, 'normal', 'easeOutQuart', resetPrevNext);

		return false;
	}

	/**
	 * Nextボタンクリック時の処理
	 * 
	 */
	function moveNext() {
		if (b_move)
			return false;

		var target = $(current_selector);
		var width = target.width();
		var pos   = target.position();
		var left  = pos.left;

		left = left - unit_width;
		b_move = true;
		target.animate({left: left}, 'normal', 'easeOutQuart', resetPrevNext);

		return false;
	}

	/**
	 * Prevボタン、Nextボタンの表示・非表示切り替え
	 * 
	 */
	function resetPrevNext() {
		var target = $(current_selector);
		var width = target.width();
		var pos   = target.position();
		var left  = pos.left;

		// Prevボタンの表示制御
		if (left >= 0) {
			$(prev_selector).addClass('disable').unbind('click').bind('click', clickDisable);
		} else {
			$(prev_selector).removeClass('disable').unbind('click').bind('click', movePrev);
		}
		// Nextボタンの表示制御
		if (width + left <= $(slider_selector).width()) {
			$(next_selector).addClass('disable').unbind('click').bind('click', clickDisable);
		} else {
			$(next_selector).removeClass('disable').unbind('click').bind('click', moveNext);
		}

		b_move = false;
	}
}





function createActivity(xml) {
	var title = '【アンファーの活動】';
	setLastestItem(xml, title);
}
function createProduct(xml) {
	var title = '【製品に関するお知らせ】';
	setLastestItem(xml, title);
}
function createBlog(xml) {
	var title = '【広報ブログ】';
	setLastestItem(xml, title, true);
}

function setLastestItem(xml, title, b_blog) {
	var code = '';
	var list = parseRssfeed(xml);

	if (list && list.length > 0) {
		if (list[0].link && (list[0].link != ''))
			// ターゲットが指定されている場合
			if (list[0].target)
				// モーダル表示の指定がある場合
				if (list[0].target == 'modal')
					code += '<li>' + title + '<span class="date">' + list[0].date + '</span><a href="' + list[0].link +'?keepThis=true&TB_iframe=true&height=480" class="thickbox">' + list[0].title + '</a></li>';
				// 通常のターゲット指定の場合
				else
					code += '<li>' + title + '<span class="date">' + list[0].date + '</span><a href="' + list[0].link +'" target="' + list[0].target + '">' + list[0].title + '</a></li>';
			// 広報ブログの場合
			else if (b_blog)
				code += '<li>' + title + '<span class="date">' + list[0].date + '</span><a href="' + list[0].link +'" target="blog">' + list[0].title + '</a></li>';
			// ターゲットが指定されていない場合
			else
				code += '<li>' + title + '<span class="date">' + list[0].date + '</span><a href="' + list[0].link +'">' + list[0].title + '</a></li>';
		// リンク先がない場合
		else
			code += '<li>' + title + '<span class="date">' + list[0].date + '</span>' + list[0].title + '</li>';
	}

	feed_list.push(code);
	FEED_COUNT--;
	if (FEED_COUNT == 0) {
		createWhatsNew();
		tb_init('a.thickbox');
	}
}

/**
 * What's Newスライダーの初期化
 *
 */
function createWhatsNew() {

	// リストの取得
	var count = 0;
	var code = '';

	if (feed_list && (feed_list.length > 0)) {

		for (var i=0,max=feed_list.length; i<max;i++) {
			code += feed_list[i];
		}

		var interval = 6000;
		var count = 0;
		var ul = $('#News-block');
		var li = $(code);

		li.hide();
		li.eq(count).show();

		/**
		 * swap処理
		 */
		function swap() {
			li.eq(count).fadeOut('fast', function() {
				count++;
				if (count >= li.size())
					count = 0;

				li.eq(count).fadeIn('normal', function() {
					ul.delay(swap);
					$.resume(interval);
				});
			});
		}
		// 初期表示
		if (li.size() > 1) {
//			ul.delay(swap);
//			$.resume(interval);
			setTimeout(swap, 6000);
		}

		ul.empty().append(li);
	}
}

/**
 * Topバナー用タグの生成
 */
function createBanner(xml) {
	var bnrList = $('#Top-banner ul');
	bnrList.empty();
	if (xml) {
		$('entry', xml).each(function() {
			// XMLから値の取得
			var item   = $(this);
			var title  = $('title', item).text();
			var link   = $('link', item);
			var href   = link.attr('href');
			var target = link.attr('target');
			var bnr = $('img', item);

			// <img>タグの生成
			var img = '<img src="' + bnr.attr('src') + '" width="210" height="51" alt="' + title + '" />';
			// <a>タグの生成
			var a = $('<a></a>');
			a.attr({'href': href, 'target': target, 'display': 'none'});
			a.html(img);

			// <li>タグの生成
			var li = $('<li></li>');
			li.append(a);

			// <ul>タグに追加
			bnrList.append(li);
		});
	}
}

