/**
*
*	colorio.js
*/


/*============================================================================================
*	リンク制御用クラスの定義
*/
var Link_param = function(arg){
	
	/*----------------------------------------------
	*	コンストラクタを定義
	*/
	var element_id = [];
	var body_id = document.body.id;
	var value_id = arg.url_name;
	
	var re = [];
	for( var i=0; i<$('#'+ arg.elment_id + ' li').length; i++ ){
		element_id[i] = $($('#'+ arg.elment_id + ' li a')[i]);
		re[i] = new RegExp( value_id[i] + '(.*?)\.htm' );
	}
	
	//URLを判別して、カレントを自動切換
	if( location.href.match(re[0]) ){
		element_id[0].attr({
			className: 'cur'
		});
	}
	// 'index.htm' がない場合
	if( location.href.match(/\/$/) ){
		element_id[0].attr({
			className: 'cur'
		});
	}
	// 'index.htm' がなくてかつ、パラメータがある場合
	if( location.href.match(/\/\?(.*?)$/) ){
		element_id[0].attr({
			className: 'cur'
		});
	}
	if( location.href.match(re[1]) ){
		element_id[1].attr({
			className: 'cur'
		});
	}
	if( location.href.match(re[2]) ){
		element_id[2].attr({
			className: 'cur'
		});
	}
	if( location.href.match(re[3]) ){
		element_id[3].attr({
			className: 'cur'
		});
	}
	if(re[4]) if( location.href.match(re[4]) ){
		element_id[4].attr({
			className: 'cur'
		});
	}
}

/*============================================================================================
*	ローカルナビゲーションの制御
*/
$(function(){
	
	/*----------------------------------------------
	*	ローカルナビゲーション
	*	header部分のカレント制御
	*/
	//id="colorio_contents_local_header_link" がある場合
	if( document.getElementById('colorio_contents_local_header_link') ){
		//new header
		var header_link_param = new Link_param({
			elment_id: 'colorio_contents_local_header_link',
			url_name: [ 'index', 'tokucho', 'kinou', 'shiyo', 'supply' ]
		});
	}

	//id="colorio_contents_local_header_link_2011" がある場合
	if( document.getElementById('colorio_contents_local_header_link_2011') ){
		//new header
		var header_link_param = new Link_param({
			elment_id: 'colorio_contents_local_header_link_2011',
			url_name: [ 'index', 'kinou', 'shiyo', 'supply' ]
		});
	}


	/*----------------------------------------------
	*	ローカルナビゲーション
	*	footer部分のカレント制御
	*/
	//id="colorio_contents_local_footer_link" がある場合
	if( document.getElementById('colorio_contents_local_footer_link') ){
		(function(arg){
			var url_path = arg.url_path;
			var url_name = arg.url_name;

			var rtn_html = function(e){
				return '<span style="font-weight: bold;">'+ url_name[e] +'</span>' + "\n";
			}
			
			var element = [];
			var rtn_cur = function(e){
				element[e] = $($('#'+ arg.element_id + ' li')[e]);
				element[e].html( rtn_html(e) );
			}
			var re = [];
			var element_id = [];
			for( var i=0; i<$('#'+ arg.element_id + ' li').length; i++ ){
				element_id[i] = $($('#'+ arg.element_id + ' li a')[i]);
				re[i] = new RegExp( url_path[i] + '\.htm' );
			}
			if( location.href.match(re[0]) ){rtn_cur(0)}
			if( location.href.match(/\/$/) ){rtn_cur(0)}
			if( location.href.match(/\/\?(.*?)$/) ){rtn_cur(0)}
			if( location.href.match(re[1]) ){rtn_cur(1)}
			if( location.href.match(re[2]) ){rtn_cur(2)}
			if( location.href.match(re[3]) ){rtn_cur(3)}
			if( location.href.match(re[4]) ){rtn_cur(4)}
			
		})({
			element_id: 'colorio_contents_local_footer_link',
			url_path: [ 'index', 'tokucho', 'kinou', 'shiyo', 'supply' ],
			url_name: [ '概要', '特長', '機能一覧', '仕様', '消耗品' ]
		});
	}

	//id="colorio_contents_local_footer_link_2011" がある場合
	if( document.getElementById('colorio_contents_local_footer_link_2011') ){
		(function(arg){
			var url_path = arg.url_path;
			var url_name = arg.url_name;

			var rtn_html = function(e){
				return '<span style="font-weight: bold;">'+ url_name[e] +'</span>' + "\n";
			}
			
			var element = [];
			var rtn_cur = function(e){
				element[e] = $($('#'+ arg.element_id + ' li')[e]);
				element[e].html( rtn_html(e) );
			}
			var re = [];
			var element_id = [];
			for( var i=0; i<$('#'+ arg.element_id + ' li').length; i++ ){
				element_id[i] = $($('#'+ arg.element_id + ' li a')[i]);
				re[i] = new RegExp( url_path[i] + '\.htm' );
			}
			if( location.href.match(re[0]) ){rtn_cur(0)}
			if( location.href.match(/\/$/) ){rtn_cur(0)}
			if( location.href.match(/\/\?(.*?)$/) ){rtn_cur(0)}
			if( location.href.match(re[1]) ){rtn_cur(1)}
			if( location.href.match(re[2]) ){rtn_cur(2)}
			if( location.href.match(re[3]) ){rtn_cur(3)}
			
		})({
			element_id: 'colorio_contents_local_footer_link_2011',
			url_path: [ 'index', 'kinou', 'shiyo', 'supply' ],
			url_name: [ '概要・特長', '機能一覧', '仕様', '消耗品' ]
		});
	}

	//id="colorio_contents_local_footer_link_supply" がある場合
	if( document.getElementById('colorio_contents_local_footer_link_supply') ){
		(function(arg){
			var url_path = arg.url_path;
			var url_name = arg.url_name;

			var rtn_html = function(e){
				return '<span style="font-weight: bold;">'+ url_name[e] +'</span>' + "\n";
			}
			
			var element = [];
			var rtn_cur = function(e){
				element[e] = $($('#'+ arg.element_id + ' li')[e]);
				element[e].html( rtn_html(e) );
			}
			var re = [];
			var element_id = [];
			for( var i=0; i<$('#'+ arg.element_id + ' li').length; i++ ){
				element_id[i] = $($('#'+ arg.element_id + ' li a')[i]);
				re[i] = new RegExp( url_path[i] + '\.htm' );
			}
			if( location.href.match(re[0]) ){rtn_cur(0)}
			if( location.href.match(/\/$/) ){rtn_cur(0)}
			if( location.href.match(/\/\?(.*?)$/) ){rtn_cur(0)}
			if( location.href.match(re[1]) ){rtn_cur(1)}
			if( location.href.match(re[2]) ){rtn_cur(2)}
			if( location.href.match(re[3]) ){rtn_cur(3)}
			if( location.href.match(re[4]) ){rtn_cur(4)}
			
		})({
			element_id: 'colorio_contents_local_footer_link_supply',
			url_path: [ 'fine_art', 'koutaku', 'photo', 'photo_mat', 'super_fine', 'variety', 'etc' ],
			url_name: [ 'ファインアート紙', '光沢紙', '写真用紙', 'フォトマット紙', '普通紙／スーパーファイン紙', 'バラエティー用紙', 'その他' ]
		});
	}


});


/*============================================================================================
*	カラリオ グローバルナビ
*	
*	自動カレント制御
*	エプソンショップバナーURL切り替え
*/
$(function(){
	(function(){
		if( document.getElementById('colorio_global_menu') ){
			
			var colorio_header_bnr = $('#colorio_header_bnr a');
			var bnr_link = colorio_header_bnr.attr('href').match(/http:\/\/shop\.epson\.jp\/redirect\/iltoshop\/index-mk\.asp\?urlid=102a000/);
			
			//プリンターカテゴリ
			if(( location.href.match(/colorio\/printer/) )||( location.href.match(/colorio\/epsoncolor/) )||( location.href.match(/colorio\/tsuyoink/) )){
				$('#nav_cgm_printer a').addClass('cur');
				colorio_header_bnr.attr({href: bnr_link + '1'});
			}
			//スキャナーカテゴリ
			if( location.href.match(/colorio\/scanner/) ){
				$('#nav_cgm_sccaner a').addClass('cur');
				colorio_header_bnr.attr({href: bnr_link + '2'});
			}
			//フォトビューワーカテゴリ
			if( location.href.match(/colorio\/photoviewer/) ){
				$('#nav_cgm_photoviewer a').addClass('cur');
				colorio_header_bnr.attr({href: bnr_link + '3'});
			}
			//デジタルカメラカテゴリ
			if( location.href.match(/colorio\/digitalcamera/) ){
				$('#nav_cgm_camera a').addClass('cur');
				colorio_header_bnr.attr({href: bnr_link + '4'});
			}
			//消耗品カテゴリ
			//URLが拾えないため、bodyのclassNameを参照する
			if( document.body.className == 'supply' ){
				$('#nav_cgm_printer a').addClass('cur');
				colorio_header_bnr.attr({href: bnr_link + '6'});
			}
		}
	})();
});

/*============================================================================================
*	カラリオ 左ナビのオープンカレント制御
*/
$(function(){
	(function(){
		
		/*----------------------------------------------
		*	親カテゴリのオープンと子である製品名を
		*	カレントに制御する関数
		*/
		var product_search = function(arg){
			var product_list = $('#'+ arg +' ul li', colorio_left_navi_list);
			var product_parent = $('#'+ arg);
			for( var i = 0; i < product_list.length; i++ ){
				if( $(product_list[i]).attr('id').match(re) ){
					$('a', $(product_list[i])).addClass('cur');
					product_parent.show();
				}
			}
		}
		
		//自動制御実行
		if( document.getElementById('colorio_left_navi_list') ){
			
			//まず、全モデルの子要素を非表示にする
			var colorio_left_navi_list = $('#colorio_left_navi_list');
			$('dd', colorio_left_navi_list).hide();
			
			//現在ページのパラメータを取得
			var cur_id = document.body.id;
			var re = new RegExp( 'nav_' + cur_id );
			
			//取得したパラメータIDとマッチするリストIDを検索し、
			//親カテゴリ内の子要素をオープンにし、
			//現在ページの製品のカレントを表示する
			var ca = ['div_multi_feature','div_single_feature','div_compact_feature','div_quority_feature','div_biz_feature'];
			for( var i = 0; i < ca.length; i++ ){
				if( document.getElementById( ca[i] ) ){product_search( ca[i] )};
			}
		}
		
		//消耗品コンテンツ部分をデフォルト非表示
		if( document.getElementById('colorio_left_navi_utility') ){
			$('#colorio_left_navi_utility li ul li').hide();
		}
		
		
		/*----------------------------------------------
		*	製品以外のカレント制御
		*/
		if( document.getElementById('colorio_left_navi_list') ){
			var nav_name = [ 'left_all', 'left_feature', 'left_inc', 'left_down', 'left_biz', 'left_navi', 'left_lineup', 'left_guide', 'left_cm', 'left_support' ];

			for( var i = 0; i < nav_name.length; i++ ){
				if( document.body.id == nav_name[i] ){
					$('#nav_'+ nav_name[i] +' a').addClass('cur');
					$('#nav_'+ nav_name[i] +' ul li a').removeClass('cur');
				}
			}
		}
		
		/*----------------------------------------------
		*	消耗品紹介（インク・用紙）
		*	カレント制御
		*/
		if( document.getElementById('colorio_left_navi_list') ){
			
			if( document.getElementById( 'left_inc' ) ){
				for( var a = 0; a < $( '#nav_left_inc ul li' ).length; a++ ){
					$( '#nav_left_inc ul li' ).show();
				}
			}
			else{
				var nav_name_supply = [ 'left_select_inc', 'left_select_paper', 'left_select_printer' ];
				for( var i = 0; i < nav_name_supply.length; i++ ){
					if( document.body.id == nav_name_supply[i] ){
						$( '#nav_' + nav_name_supply[i].slice(12) +' a' ).addClass('cur');
						for( var a = 0; a < nav_name_supply.length; a++ ){
							$( '#nav_' + nav_name_supply[a] ).show();
						}
					}
				}
			}
		}
		
		
		/*----------------------------------------------
		*	製品カテゴリトップページ、子階層メニュー
		*	オープン制御
		*/
		if( document.getElementById( 'left_multi' ) ){
			$('#div_multi_feature').show();
		}
		if( document.getElementById( 'left_single' ) ){
			$('#div_single_feature').show();
		}
		if( document.getElementById( 'left_me' ) ){
			$('#div_compact_feature').show();
		}
		if( document.getElementById( 'left_pro' ) ){
			$('#div_quority_feature').show();
		}
		if( document.getElementById( 'left_biz' ) ){
			$('#div_biz_feature').show();
		}
		if( document.getElementById( 'left_inc' )||document.getElementById( 'left_select_inc' )||document.getElementById( 'left_select_paper' )||document.getElementById( 'left_select_printer' ) ){
			$('#div_supply_feature').show();
		}
		/*----------------------------------------------
		*	製品特長トップページ、子階層メニュー
		*	オープン制御
		*/
		if( document.getElementById( 'multi_feature_tokucho' ) ){
			$('#div_multi_feature').show();
			$('#head_multi_feature a').addClass('cur');
		}
		if( document.getElementById( 'me_feature_tokucho' ) ){
			$('#div_compact_feature').show();
			$('#head_compact_feature a').addClass('cur');
		}
		if( document.getElementById( 'pro_feature_tokucho' ) ){
			$('#div_quority_feature').show();
			$('#head_quority_feature a').addClass('cur');
		}
		
	})();
});


/*============================================================================================
*	「搭載している機能」一覧の自動表示制御
*/
$(function(){
	(function(){
		
		/*----------------------------------------------
		*	param.jsより、param_kinouを取得し、
		*	機能の有無を判別し、機能があるものは
		*	アイコンを表示し、ないものはグレーアウト
		*	する関数を定義
		*/
		var get_spec_icon = function(arg){
			
			//var
			var src = [];
			var alt = [];
			var IE = '\v'=='v'
			
			//loop
			for( var i = 0; i < param_kinou[arg.type][arg.name].length; i++ ){
				//モデルカテゴリに合わせて、搭載機能を全表示
				arg.icon_id[i].css({display: 'inline'});
				
				//モデル各種に合わせて、アイコンの有効無効をセット
				if( param_kinou[arg.type][arg.name][i] ){
					var statusName = 'on';
					if( param_kinou[arg.type][arg.name][i] == 1 ){
						statusName = 'opt';
					} else
					if( param_kinou[arg.type][arg.name][i] == 3 ){
						statusName = 'note';
					} 
					//srcマッチ
					arg.icon_id[i].html().match(/src=\"(.*?)\.gif\"/);
					src[i] = RegExp.$1 + '_'+statusName+'.gif';
					//altマッチ
					if(IE){
						arg.icon_id[i].html().match(/alt=(.+?) /);
					}
					else{
						arg.icon_id[i].html().match(/alt=\"(.+?)\"/);
					}
					alt[i] = RegExp.$1;
					//imgセット
					arg.icon_id[i].html('<img src="'+ src[i] +'" alt="'+ alt[i] +'" />');
				}
				if( i == (param_kinou[arg.type][arg.name].length - 1) ){
					arg.icon_id[i].css({
						marginRight: 0
					});
				}
			}
		}
		
		if( document.getElementById('feature_list') ){
			
			//全アイコンリスト要素を取得
			var feature_list_icon = $('#feature_list_icon');
			
			//現在ページのパラメータを取得
			var cur_id = document.body.id;
			
			//アイコンIDを取得
			var icon_id_multi = [
				$('#fli_printer'),
				$('#fli_scanner'),
				$('#fli_copy'),
				$('#fli_direct'),
				$('#fli_infrared'),
				$('#fli_wireless_lan'),
				$('#fli_fax')
			];
			var icon_id_single = [
				$('#fli_printer'),
				$('#fli_wireless_lan')
			];
			var icon_id_compact = [
				$('#fli_printer'),
				$('#fli_direct'),
				$('#fli_infrared'),
				$('#fli_wireless_lan'),
				$('#fli_slide'),
				$('#fli_keybord')
			];
			var icon_id_quority = [
				$('#fli_printer'),
				$('#fli_wireless_lan')
			];
			
			//現在ページの製品の搭載している機能のアイコンを表示する
			//関数を実行
			if( location.href.match(/\/products\/colorio\/printer\/multi/) )  {get_spec_icon({ type: 'multi', name: cur_id, icon_id: icon_id_multi });}
			if( location.href.match(/\/products\/colorio\/printer\/single/) ) {get_spec_icon({ type: 'single', name: cur_id, icon_id: icon_id_single });}
			if( location.href.match(/\/products\/colorio\/printer\/me/) ){get_spec_icon({ type: 'compact', name: cur_id, icon_id: icon_id_compact });}
			if( location.href.match(/\/products\/colorio\/printer\/pro/) ){get_spec_icon({ type: 'quority', name: cur_id, icon_id: icon_id_quority });}
		}
		
	})();
});


/*============================================================================================
*
*	消耗品、用紙ページ
*	フッターリンクカレント制御
*/

$(function(){
	(function(){
		
		/*------------------------------------------------------------
		*	カレントを制御する関数を定義
		*/
		var cur_chenge = function(e){
			$('#'+ e +' a span').css({
				color: '#333',
				fontWeight: 'bold'
			});
			$('#'+ e +' a span').mouseover(function(){
				$('#'+ e +' a span').css({
					color: '#f30'
				});
			});
			$('#'+ e +' a span').mouseout(function(){
				$('#'+ e +' a span').css({
					color: '#333'
				});
			});
		}
		
		/*
		*	用紙の種類から探す
		*/
		if( document.getElementById('supply_kind_footer_link') ){
			if( location.href.match(/paper\/kind\/photo_mat/) ){
				cur_chenge('cur_kind_photo_mat');
			}
			else if( location.href.match(/paper\/kind\/photo/) ){
				cur_chenge('cur_kind_photo');
			}
			else if( location.href.match(/paper\/kind\/koutaku/) ){
				cur_chenge('cur_kind_koutaku');
			}
			else if( location.href.match(/paper\/kind\/super_fine/) ){
				cur_chenge('cur_kind_super_fine');
			}
			else if( location.href.match(/paper\/kind\/variety/) ){
				cur_chenge('cur_kind_variety');
			}
			else if( location.href.match(/paper\/kind\/fine_art/) ){
				cur_chenge('cur_kind_fine');
			}
			else if( location.href.match(/paper\/kind\/etc/) ){
				cur_chenge('cur_kind_etc');
			}
		}
		
		/*
		*	用紙を用途から探す
		*/
		if( document.getElementById('supply_use_footer_link') ){
			if( location.href.match(/paper\/use\/print/) ){
				cur_chenge('cur_use_print');
			}
			else if( location.href.match(/paper\/use\/postcard/) ){
				cur_chenge('cur_use_postcard');
			}
			else if( location.href.match(/paper\/use\/report/) ){
				cur_chenge('cur_use_report');
			}
			else if( location.href.match(/paper\/use\/practical/) ){
				cur_chenge('cur_use_practical');
			}
			else if( location.href.match(/paper\/use\/pro/) ){
				cur_chenge('cur_use_pro');
			}
		}
	})();
});


/*============================================================================================
*	サイトルートの抽出
*/
var siteRoot = getSiteRoot('common_wide/js/colorio.js');

function getSiteRoot(path) {
	var elms = document.getElementsByTagName('script');
	for (var i = elms.length - 1; i >= 0; i--) {
		var src = elms[i].src;
		if (new RegExp(path + '([\?].*)*$').test(src)) return src.split(path)[0];
	}
	return false;
}


/*============================================================================================
*	ユーザーエクスペリエンスの拡張
*/
var ux = {

	/*----------------------------------------------
	*	初期化
	*/
	init: function() {
		var self = this;
		if (this.isIE6) this.pngfix.load();
		$(function() {
			self.rollover('.rollover', '_ov');
			if (self.isIE6) self.pngfix.fix();
		});
	},

	/*----------------------------------------------
	*	ロールオーバーの制御
	*/
	rollover: function(selector, over, on, onOver) {
		$(selector).each(function() {
			var src = this.src;
			var ext = new RegExp('\.(gif|jpg|png)([\?].*)*$').exec(src)[0];
			var hasOn = on && new RegExp(on + ext).test(src);
			if (hasOn && !onOver) return;
			var search = (hasOn && onOver) ? on + ext : ext;
			var replace = (hasOn && onOver) ? onOver + ext : over + ext;
			var overSrc = src.replace(search, replace);
			new Image().src = overSrc;
			$(this).mouseout(function() {
				this.src = src;
			}).mouseover(function() {
				this.src = overSrc;
			});
		});
	},

	/*----------------------------------------------
	*	PNG Fix
	*/
	pngfix: {
		// 読み込み
		load: function() {
			var d = document;
			var src = [
				'<script type="text/javascript" src="' + siteRoot + 'common_wide/lib/DD_belatedPNG/DD_belatedPNG.js"></script>',
				'<script type="text/javascript" src="' + siteRoot + 'common_wide/lib/ifixpng/jquery.ifixpng.js"></script>'
			].join('');
			d.open();
			d.write(src);
			d.close();
		},

		// 実行
		fix: function() {
			DD_belatedPNG.fix('.belatedpng');
			$.ifixpng(siteRoot + 'common_wide/lib/ifixpng/pixel.gif');
			$('img[src$=.png]:not(.nopngfix)').ifixpng().filter('.rollover').mouseout(function() {
				$(this).ifixpng();
			}).mouseover(function() {
				$(this).ifixpng();
			});
		}
	},

	/*----------------------------------------------
	*	スクローラー
	*/
	scroller: {
		// 設定
		conf: {
			selector: 'a[href^="#"]:not(.noscroll)',
			pitch: 10,
			interval: 10
		},

		// 初期化
		init: function(conf) {
			var self = this;
			var temp = this.conf;
			for (var key in conf) temp[key] = conf[key];
			this.conf = temp;
			$(this.conf.selector).each(function() {
				if (!this.hash || this.hash == '#') return;
				$(this).click(function(e) {
					e.preventDefault();
					this.blur();
					self.scroll(this.hash);
				});
			});
		},

		// スクロール
		scroll: function(id, margin) {
			if (this.timer) clearInterval(this.timer);
			var self = this;
			var pitch = this.conf.pitch;
			var interval = this.conf.interval;
			var top = $(id + ', a[name="' + id.replace(/^#/, '') + '"]').eq(0).offset().top;
			if (margin) top += margin;
			var win = window;
			var $win = $(win);
			var scrollLeft = $win.scrollLeft();
			var limit = $(document).height() - $win.height();
			if (limit < 0) limit = 0;
			if (top > limit) top = limit;
			if (top < 0) top = 0;
			var dir = (top > $win.scrollTop()) ? 1 : -1;
			var math = (dir > 0) ? Math.ceil : Math.floor;
			top = math(top);
			this.timer = setInterval(function() {
				var scrollTop = $win.scrollTop();
				if (scrollTop == top || scrollTop == self.scrollTop) {
					clearInterval(self.timer);
					return;
				}
				self.scrollTop = scrollTop;
				scrollTop += math((top - scrollTop) / pitch);
				if (dir > 0 && scrollTop > top || dir < 0 && scrollTop < top) scrollTop = top;
				win.scrollTo(scrollLeft, scrollTop);
			}, interval);
		}
	},

	/*----------------------------------------------
	*	IE6判定フラグ
	*/
	isIE6: /msie ([0-9]+)/.test(navigator.userAgent.toLowerCase()) && RegExp.$1 == 6
}
ux.init();

