/**
 * @fileOverview *************************
 * @version 0.0.5
 */
/* ----------------------------------------------------------------------------------- */

var JXHDLIB = {};


JXHDLIB.previewWindowName = "ContentPrintPreviewWindow";



/* ----------------------------------------------------------------------------------- */


JXHDLIB.SmoothScroll = function () {

	this.selector    = $('a[href^=#], area[href^=#]');

	this.goToPageTop = "#headerContainer";

	this.speed       = 600;

	this.easing      = "easeOutExpo";

	this.noScrollCName    = "no-scroll";

	if (this.selector.length && window.name != JXHDLIB.previewWindowName) {
		this.init();
	}
}

JXHDLIB.SmoothScroll.prototype.init = function () {
	var _this = this;
	this.selector.each(function () {
		if (!$(this).hasClass(_this.noScrollCName)) {
			var fi = $(this).attr("href");
			if (fi == "#") return false;
			var el = ($(fi).length) ? $(fi) : $("a[name="+fi.replace(/#/,"")+"]");
			if (el.length) {
				$(this).click(function() {
					//e.preventDefault();
					var target = el[0];
					$.scrollTo(target, {
						speed: _this.speed,
						easing: _this.easing/*,
						onAfter: function() {
							return (fi == _this.goToPageTop) ? false : true;
						}*/
					});
					return (fi == _this.goToPageTop) ? false : true;
				});
			}
		}
	});
}

/* ----------------------------------------------------------------------------------- */

JXHDLIB.SearchPlaceholder = function () {

	this.d_fcolor = "#8a8a8a";

	this.fcolor = "#555555";

	this.formData = [
						{
							target : "#bizsearchAspQuery",
							defaultKeyword : "サイト内検索"
						},
						{
							target : "#content-search",
							defaultKeyword : "サイト内検索"
						}
					];
//	if () {
		this.init();
//	}
}

JXHDLIB.SearchPlaceholder.prototype.init = function () {
	var _this = this;
	$.each(_this.formData, function (i) {
		var d_key = this.defaultKeyword;
		$(this.target).each(function () {
			var el = $(this);
			el.css({"color" : _this.d_fcolor})
				.attr({"value"  : d_key});

			el.focus(function () {
				if (el.attr("value") == d_key) {
					el.attr({"value" : ""});
				}
				el.css({"color" : _this.fcolor});
			});

			el.blur(function () {
				if (el.attr("value") == "") {
					el.css({"color" : _this.d_fcolor})
						.attr({"value"  : d_key});
				}
			});
		});

	});
}


/* ----------------------------------------------------------------------------------- */
$(function() {

	if (jQuery.browser.msie && jQuery.browser.version == 6) {
		try {
			document.execCommand("BackgroundImageCache", false, true);
		} catch(err) {}
	}

	var roi = new RolloverImages('rollover', 'on');

	for (module in JXHDLIB) {
		var obj = JXHDLIB[module];
		if (obj && typeof obj == "function") {
			new JXHDLIB[module]();
		}
	}

});


/*---------------------------------------------------------------------------*/
if(typeof StyleSwitcher != 'undefined') {
	FONTSIZE_SELECTOR_ENABLED = true;
	FONTSIZE_SELECTOR         = null;
	
	
	if (FONTSIZE_SELECTOR_ENABLED) {
	
		$(function() {
			var config = {
				className      : "fontsize",
				blockId        : "fontsize-selector",
				buttonsSetting : {
						"default" : {
									styleId       : "fontsize-default",
									buttonId      : "fontsize-btn-default"
						},
						"large" : {
									styleId       : "fontsize-large",
									buttonId      : "fontsize-btn-large"
						}
				}
				,rollover : new RolloverImages("rollover-fsbutton", "on", "on")
			};
	
			FONTSIZE_SELECTOR = new FontSizeSelector(config);
		});
	
		// 
		document.write(''
		+ '<style  type="text/css" media="screen,print">'
		+ '#fontsize-selector {display: block !important;}'
		+ '</style>');
	}
	
	

}











/* 納品前に必ず削除
---------------------------------------------------------------------------------------- */
/* preUrlLinker
 * h.endo
 * last update 2009.12.05
-------------------------------------------------------- */
// init

$(function(){

	$().preUrlLinker({domain:	'192.168.192.199:2808',link_short_cut_key:	'Ctrl+Shift+R',open_short_cut_key:	'Q'});
	
});

// fnc
(function() {
	jQuery.fn.preUrlLinker = function(config){
		config = jQuery.extend({
			domain			:	'',
			file_path		:	'/common/utility/js/url_list.txt',
			css_path		:	'/common/utility/css/pre_url_linker.css',
			suggest_path:	'/common/utility/js/suggest.js',
			error_txt		:	'URLリストの読み込みに失敗しました。',
			error_ms_js	:	'JavaScriptファイルの読み込みに失敗しました。格納場所を確認してください。',
			next_short_cut_key	:	'N',
			pre_short_cut_key		:	'P',
			link_short_cut_key	:	'R',
			open_short_cut_key	:	'Q'
		},config);
		
		if(!config.domain) {
			alert('開発環境のドメインを指定して下さい。');
			return false;
		}else if(config.domain != location.host){
			return false;
		}
		
		$.ajax({
			url				:	'http://' + config.domain + config.file_path,
			dataType	:	'text',
			cache			:	false,
			error			:	function() {
										alert(config.error_txt);
									},
			success		: function(data, status) {
										//console.log('success!');
										var arr_newURL,arr_preURL;
										var target;
										var targetURL;
										var url = location.href.substr(location.href.lastIndexOf('/')) == '/' ? location.href+'index.html':location.href;
										var arr = data.split(/\r\n/);
										var index,tpl;
										
										/* IE6のsplitの正規表現まわりのバグ解消 */
										if (navigator.userAgent.match(/msie/i)) {
											/* Cross-Browser Split 1.0.1
											(c) Steven Levithan <stevenlevithan.com>; MIT License
											An ECMA-compliant, uniform cross-browser split method */
											
											var cbSplit;
											
											// avoid running twice, which would break `cbSplit._nativeSplit`'s reference to the native `split`
											if (!cbSplit) {
											
											cbSplit = function (str, separator, limit) {
													// if `separator` is not a regex, use the native `split`
													if (Object.prototype.toString.call(separator) !== "[object RegExp]") {
															return cbSplit._nativeSplit.call(str, separator, limit);
													}
											
													var output = [],
															lastLastIndex = 0,
															flags = (separator.ignoreCase ? "i" : "") +
																			(separator.multiline  ? "m" : "") +
																			(separator.sticky     ? "y" : ""),
															separator = RegExp(separator.source, flags + "g"), // make `global` and avoid `lastIndex` issues by working with a copy
															separator2, match, lastIndex, lastLength;
											
													str = str + ""; // type conversion
													if (!cbSplit._compliantExecNpcg) {
															separator2 = RegExp("^" + separator.source + "$(?!\\s)", flags); // doesn't need /g or /y, but they don't hurt
													}
											
													/* behavior for `limit`: if it's...
													- `undefined`: no limit.
													- `NaN` or zero: return an empty array.
													- a positive number: use `Math.floor(limit)`.
													- a negative number: no limit.
													- other: type-convert, then use the above rules. */
													if (limit === undefined || +limit < 0) {
															limit = Infinity;
													} else {
															limit = Math.floor(+limit);
															if (!limit) {
																	return [];
															}
													}
											
													while (match = separator.exec(str)) {
															lastIndex = match.index + match[0].length; // `separator.lastIndex` is not reliable cross-browser
											
															if (lastIndex > lastLastIndex) {
																	output.push(str.slice(lastLastIndex, match.index));
											
																	// fix browsers whose `exec` methods don't consistently return `undefined` for nonparticipating capturing groups
																	if (!cbSplit._compliantExecNpcg && match.length > 1) {
																			match[0].replace(separator2, function () {
																					for (var i = 1; i < arguments.length - 2; i++) {
																							if (arguments[i] === undefined) {
																									match[i] = undefined;
																							}
																					}
																			});
																	}
											
																	if (match.length > 1 && match.index < str.length) {
																			Array.prototype.push.apply(output, match.slice(1));
																	}
											
																	lastLength = match[0].length;
																	lastLastIndex = lastIndex;
											
																	if (output.length >= limit) {
																			break;
																	}
															}
											
															if (separator.lastIndex === match.index) {
																	separator.lastIndex++; // avoid an infinite loop
															}
													}
											
													if (lastLastIndex === str.length) {
															if (lastLength || !separator.test("")) {
																	output.push("");
															}
													} else {
															output.push(str.slice(lastLastIndex));
													}
											
													return output.length > limit ? output.slice(0, limit) : output;
											};
											
											cbSplit._compliantExecNpcg = /()??/.exec("")[1] === undefined; // NPCG: nonparticipating capturing group
											cbSplit._nativeSplit = String.prototype.split;
											
											} // end `if (!cbSplit)`
											
											// for convenience...
											String.prototype.split = function (separator, limit) {
													return cbSplit(this, separator, limit);
											};

										}/* /IE6のsplitの正規表現まわりのバグ解消 */
										
										$('head').append('<link href="'+config.css_path+'" type="text/css" rel="stylesheet" media="screen" />');
										arr_number = $.map(arr, function(row){
												row = row.split(/\t/);
												return row[0];
										})
										arr_newURL = $.map(arr, function(row){
												row = row.split(/\t/);
												return row[1];
										})
										
										arr_preURL = $.map(arr, function(row){
												row = row.split(/\t/);
												return row[2];
										})
										index = jQuery.inArray(url, arr_newURL);
										targetURL = arr_preURL[jQuery.inArray(url, arr_newURL)];
										
										// add print css style
										$('head').append('<style>@media print {#jquery-pre-url-linker a,#jquery-pre-url-linker span,#jquery-pre-url-linker p {	display: none !important;}</style>');
										/* html */
										/*
										<div id="jquery-pre-url-linker">
											[合判]　<span id="pre-url-nav"><a href="前のURL">前</a>　<a href="次のURL">次</a></span><br />
											<a href="URL" target="_blank">現状ページを開く<br />
											（ショートカットキー）</a>
											<p style="font-size:80%; margin:0;">合判で検索（ショートカットキー）</p>
										</div>
										*/
										
										
										if(index == -1){
											
											tpl = '<div id="jquery-pre-url-linker"><span>リストにこのページが<br>見つかりません！</span><p style="font-size:80%; margin:0;">合判で検索（'+config.open_short_cut_key+'）</p></div>';
											
										}else if(!targetURL){
											// tpl ='<div id="jquery-pre-url-linker">['+arr_number[index]+']<br /><span>現状ページがありません</span></div>';
											tpl =  '<div id="jquery-pre-url-linker">['+arr_number[index]+']　';
											if(index > 0){	// 前がある
												tpl += displayNav('前['+config.pre_short_cut_key+']',arr_newURL[index-1]);//
												bindShortCutKey(config.pre_short_cut_key,arr_newURL[index-1]);
											}
											if(index < arr.length-1){//	次がある
												tpl += displayNav('次['+config.next_short_cut_key+']',arr_newURL[index+1]);//
												bindShortCutKey(config.next_short_cut_key,arr_newURL[index+1]);
											}
											
											tpl += '<br /><span>現状ページがありません</span><br />（'+config.link_short_cut_key+'）</a><p style="font-size:80%; margin:0;">合判で検索（'+config.open_short_cut_key+'）</p></div>';
											
											
										}else {
											tpl =  '<div id="jquery-pre-url-linker">['+arr_number[index]+']　';
											if(index > 0){	// 前がある
												tpl += displayNav('前['+config.pre_short_cut_key+']',arr_newURL[index-1]);//
												bindShortCutKey(config.pre_short_cut_key,arr_newURL[index-1]);
											}
											if(index < arr.length-1){//	次がある
												tpl += displayNav('次['+config.next_short_cut_key+']',arr_newURL[index+1]);//
												bindShortCutKey(config.next_short_cut_key,arr_newURL[index+1]);
											}
											tpl += '<br /><a href="'+targetURL+'" target="_blank">現状ページを開く<br />（'+config.link_short_cut_key+'）</a><p style="font-size:80%; margin:0;">合判で検索（'+config.open_short_cut_key+'）</p></div>';
										}
										
										function displayNav(txt,linkUrl){
												return ' <a href="'+linkUrl+'" class="nav">'+txt+'</a>';
										}
										
										$('body').append(tpl);
										
										target = $('#jquery-pre-url-linker');
										target.css({
											'position'	:	'absolute',
											'top'				:	document.body.scrollTop  || document.documentElement.scrollTop +'px',
											'right'			:	0,
											'padding'		:	'3px 5px',
											'border'		:	'solid 1px #cccccc',
											'background':	'#efefef url(null)'
										}).children('span').css({
											'color'			:	'#ff0000'
										});
										
										$(window).scroll(function() {
											fixedElement(target);
										});
										$(window).resize(function() {
											fixedElement(target)
										});
										$(document).bind('keydown', config.link_short_cut_key, function(e){
												var newWin = window.open(targetURL);
												return false;
										});
										
										function bindShortCutKey(key,url) {
												$(document).bind('keydown', key, function(e){
													location.href =url;
												});
										}

										function fixedElement(ele,l,t){
											
											var _scrollTop  = document.body.scrollTop  || document.documentElement.scrollTop;
											if(!l) l = ele.css('left');
											if(jQuery.browser.msie){
												ele.css({
													'top'		:	_scrollTop+'px',
													'left'	:	l
												});
											}else {
												ele.css({
													'top'	:	0,
													'position':'fixed'
												});
											}
										}



										$.ajax({
											url				:	'http://' + config.domain + config.suggest_path,
											dataType	:	'script',
											cache			:	false,
											error			:	function(){
																		alert(config.error_ms_js+'\n'+config.suggest_path);
																	},
											success		:	function(){
																		// console.log('second step success!');
																		$(document).bind('keydown', config.open_short_cut_key, function(e){
																				openNumberBox();
																				return false;
																		});
																		var openNumberBox = function(){
																			var html,openBtn,closeBtn,inputEle,layerEle,boxEle,scrollTimer;
																			/*	open html
																			<div id="numbering-linker-layer">
																				<div id="numbering-linker-box">
																					<fieldset>
																						<legend>合番リンクJS</legend>
																						<p id="numbering-linker-close">×</p>
																						<h1>合番を入力してください。</h1>		
																						<input type="text" id="numbering-linker-input" autocomplete="off" />
																						<div id="numbering-linker-suggest"></div>
																						<p id="numbering-linker-open">ページを開く</p>
																						<p>※半角スペースで複数入力可能</p>
																						<p>※Ctrl+↓で一覧表示</p>
																					</fieldset>
																				</div>
																			</div>
																			*/
																			
	
																			html = '<div id="numbering-linker-layer" style="display:none;"></div>';
																			html += '<div id="numbering-linker-box" style="display:none;">';
																			html += '<form id="numbering-linker-form"><fieldset>';
																			html += '<legend>合番リンクJS</legend>';
	//																		html += '<p id="numbering-linker-close">×</p>';
																			html += '<h1>合番を入力してください。</h1>';
																			html += '<input type="text" id="numbering-linker-input" autocomplete="off" />';
																			html += '<div id="numbering-linker-suggest"></div>';
																			html += '<p>※半角スペースで複数入力可能</p>';
																			html += '<p>※Ctrl+↓で一覧表示</p>';
																			html += '</fieldset></form>';
																			html += '</div>';
																			$('body').append(html);
																			var layerEle = $('#numbering-linker-layer');
																			var boxEle = $('#numbering-linker-box');
																			var _boxWidth = boxEle.width();
																			var _boxHeight = boxEle.height();																		
																			var _scrollTop  = document.body.scrollTop  || document.documentElement.scrollTop;																		
/*																			
																			layerEle.css({
																				'height'	:	$().height(),
																				'width'	:	$().width()
																			}).animate({opacity:0.5},400);
																			*/
																			layerEle.css({
																				'display'	:	'block',
																				'height'	:	$('body').height(),
																				'width'		:	$(window).width(),
																				'background':'#ffffff'
																			}).animate({
																				'opacity'	:0.7
																			},400);
																			
																			boxEle.css({
																				'top'  : _scrollTop + $(window).height()/2 - _boxHeight/2 +'px',
																				'left' : $(window).width()/2 - _boxWidth/2 +'px'
																			}).fadeIn();
																			
																			// bind suggest
																			new Suggest.LocalMulti("numbering-linker-input", "numbering-linker-suggest", arr_number, {dispAllKey: true});
																			inputEle = $('#numbering-linker-input');
	//																		openBtn = $('#numbering-linker-open');
																			layerEle.click(function(){
																				$(this).fadeOut();
																				boxEle.fadeOut(function(){
																					$(this).remove();
																				});
																			});
																			
																			inputEle.focus();
																			$('#numbering-linker-form').submit(function(){
																				var arr_input_number = inputEle.attr('value').split(/\s/);
																				var arr_input_length = arr_input_number.length;
																				
																				var tmp;
																				for( var i=0; i<arr_input_length; i++ ){
																					tmp = arr_input_number[i];
																					if(tmp.length != 0){
																						
																						for( var j=0; j<arr_number.length; j++ ){
																							if(tmp == arr_number[j]){
																								window.open(arr_newURL[j]);
																								//$('body').prepend('<p>------------------<br>'+arr_newURL[j]+'</p>');
																							}// end if
																						}// end for
																					}// end if
																				}// end for
																				return false;
																			});// end submit func
																			
																			$(window).scroll(function(){
																			 if(scrollTimer){
																				clearTimeout(scrollTimer);
																			 }
																			 var tmp = document.body.scrollTop  || document.documentElement.scrollTop;
																			 scrollTimer = setTimeout(function(){
																					boxEle.animate({
																							'top'	:	tmp + $(window).height()/2 - _boxHeight/2 +'px'
																					},300);
																				},100); // callback time
																			});
/*																			
																			$(window).scroll(function(){
																				var tmp = document.body.scrollTop  || document.documentElement.scrollTop;	
																				
																				boxEle.animate({
																						'top'	:	tmp + $(window).height()/2 - _boxHeight/2 +'px'
																				},100);
																				
																			});// end fnc scroll
																			*/
																			
																		}// end func openNumberBox
																		
																	}// end success loaded suggest.js
										});// end $.ajax

									}// end success loaded url_list.txt

		});// end $.ajax

	};// end fn preUrlLinker
})(jQuery);

/**
 * js-hotkeys
 * jquery.hotkeys-0.7.9.min.js
 * http://code.google.com/p/js-hotkeys/
 */
(function(jQuery){jQuery.fn.__bind__=jQuery.fn.bind;jQuery.fn.__unbind__=jQuery.fn.unbind;jQuery.fn.__find__=jQuery.fn.find;var hotkeys={version:'0.7.9',override:/keypress|keydown|keyup/g,triggersMap:{},specialKeys:{27:'esc',9:'tab',32:'space',13:'return',8:'backspace',145:'scroll',20:'capslock',144:'numlock',19:'pause',45:'insert',36:'home',46:'del',35:'end',33:'pageup',34:'pagedown',37:'left',38:'up',39:'right',40:'down',109:'-',112:'f1',113:'f2',114:'f3',115:'f4',116:'f5',117:'f6',118:'f7',119:'f8',120:'f9',121:'f10',122:'f11',123:'f12',191:'/'},shiftNums:{"`":"~","1":"!","2":"@","3":"#","4":"$","5":"%","6":"^","7":"&","8":"*","9":"(","0":")","-":"_","=":"+",";":":","'":"\"",",":"<",".":">","/":"?","\\":"|"},newTrigger:function(type,combi,callback){var result={};result[type]={};result[type][combi]={cb:callback,disableInInput:false};return result;}};hotkeys.specialKeys=jQuery.extend(hotkeys.specialKeys,{96:'0',97:'1',98:'2',99:'3',100:'4',101:'5',102:'6',103:'7',104:'8',105:'9',106:'*',107:'+',109:'-',110:'.',111:'/'});jQuery.fn.find=function(selector){this.query=selector;return jQuery.fn.__find__.apply(this,arguments);};jQuery.fn.unbind=function(type,combi,fn){if(jQuery.isFunction(combi)){fn=combi;combi=null;}
if(combi&&typeof combi==='string'){var selectorId=((this.prevObject&&this.prevObject.query)||(this[0].id&&this[0].id)||this[0]).toString();var hkTypes=type.split(' ');for(var x=0;x<hkTypes.length;x++){delete hotkeys.triggersMap[selectorId][hkTypes[x]][combi];}}
return this.__unbind__(type,fn);};jQuery.fn.bind=function(type,data,fn){var handle=type.match(hotkeys.override);if(jQuery.isFunction(data)||!handle){return this.__bind__(type,data,fn);}
else{var result=null,pass2jq=jQuery.trim(type.replace(hotkeys.override,''));if(pass2jq){result=this.__bind__(pass2jq,data,fn);}
if(typeof data==="string"){data={'combi':data};}
if(data.combi){for(var x=0;x<handle.length;x++){var eventType=handle[x];var combi=data.combi.toLowerCase(),trigger=hotkeys.newTrigger(eventType,combi,fn),selectorId=((this.prevObject&&this.prevObject.query)||(this[0].id&&this[0].id)||this[0]).toString();trigger[eventType][combi].disableInInput=data.disableInInput;if(!hotkeys.triggersMap[selectorId]){hotkeys.triggersMap[selectorId]=trigger;}
else if(!hotkeys.triggersMap[selectorId][eventType]){hotkeys.triggersMap[selectorId][eventType]=trigger[eventType];}
var mapPoint=hotkeys.triggersMap[selectorId][eventType][combi];if(!mapPoint){hotkeys.triggersMap[selectorId][eventType][combi]=[trigger[eventType][combi]];}
else if(mapPoint.constructor!==Array){hotkeys.triggersMap[selectorId][eventType][combi]=[mapPoint];}
else{hotkeys.triggersMap[selectorId][eventType][combi][mapPoint.length]=trigger[eventType][combi];}
this.each(function(){var jqElem=jQuery(this);if(jqElem.attr('hkId')&&jqElem.attr('hkId')!==selectorId){selectorId=jqElem.attr('hkId')+";"+selectorId;}
jqElem.attr('hkId',selectorId);});result=this.__bind__(handle.join(' '),data,hotkeys.handler)}}
return result;}};hotkeys.findElement=function(elem){if(!jQuery(elem).attr('hkId')){if(jQuery.browser.opera||jQuery.browser.safari){while(!jQuery(elem).attr('hkId')&&elem.parentNode){elem=elem.parentNode;}}}
return elem;};hotkeys.handler=function(event){var target=hotkeys.findElement(event.currentTarget),jTarget=jQuery(target),ids=jTarget.attr('hkId');if(ids){ids=ids.split(';');var code=event.which,type=event.type,special=hotkeys.specialKeys[code],character=!special&&String.fromCharCode(code).toLowerCase(),shift=event.shiftKey,ctrl=event.ctrlKey,alt=event.altKey||event.originalEvent.altKey,mapPoint=null;for(var x=0;x<ids.length;x++){if(hotkeys.triggersMap[ids[x]][type]){mapPoint=hotkeys.triggersMap[ids[x]][type];break;}}
if(mapPoint){var trigger;if(!shift&&!ctrl&&!alt){trigger=mapPoint[special]||(character&&mapPoint[character]);}
else{var modif='';if(alt)modif+='alt+';if(ctrl)modif+='ctrl+';if(shift)modif+='shift+';trigger=mapPoint[modif+special];if(!trigger){if(character){trigger=mapPoint[modif+character]||mapPoint[modif+hotkeys.shiftNums[character]]||(modif==='shift+'&&mapPoint[hotkeys.shiftNums[character]]);}}}
if(trigger){var result=false;for(var x=0;x<trigger.length;x++){if(trigger[x].disableInInput){var elem=jQuery(event.target);if(jTarget.is("input")||jTarget.is("textarea")||jTarget.is("select")||elem.is("input")||elem.is("textarea")||elem.is("select")){return true;}}
result=result||trigger[x].cb.apply(this,[event]);}
return result;}}}};window.hotkeys=hotkeys;return jQuery;})(jQuery);

