//utility.js
/* 20110830 jun fujimura */
(function(){
	$(function(){
		//scrollTo
		$("a:not(.js-positive a)").filter(function(){
			return $(this).attr('href').match(/^#[a-z]/);
		}).click(function(){
			var target;
			target = $( $(this).attr('href') );
			if (target.length == 0) return;
			$('html,body').animate({scrollTop: $(target).offset().top }, 450, "easeOutQuart");
			return false;
		});
	});

	function fontSizeManager(){
		//cookie check
		if( document.cookie.match( /fontsize=/g ) ){
			document.cookie.match(/fontsize=([^;]*)/);
			var size = RegExp.$1;

			if(size === 'normal') {
				$('html').addClass('font-normal');
			} else if( size === 'large' ) {
				$('html').addClass('font-large');
			} else if( size === 'xlarge' ) {
				$('html').addClass('font-xlarge');
			} else {
				$('html').addClass('font-normal');
			}
		} else {
			$('html').addClass('font-normal');
		}

		$(function(){
			var $html    = $('html'),
				$control = null,
				$normal  = null,
				$large   = null,
				$xlarge  = null,
				imgarr   = [],
				button   = {
					normal : {
						normal : '/cmn/img/font-control/btn_normal.gif',
						over   : '/cmn/img/font-control/btn_normal_r.gif',
						fault  : '/cmn/img/font-control/btn_normal_f.gif'
					},
					large : {
						normal : '/cmn/img/font-control/btn_large.gif',
						over   : '/cmn/img/font-control/btn_large_r.gif',
						fault  : '/cmn/img/font-control/btn_large_f.gif'
					},
					xlarge : {
						normal : '/cmn/img/font-control/btn_xlarge.gif',
						over   : '/cmn/img/font-control/btn_xlarge_r.gif',
						fault  : '/cmn/img/font-control/btn_xlarge_f.gif'
					}
				},
				control  = '<div id="font-size-changer" class="control"><p class="vanish">文字サイズ</p><div class="normal"><input type="image" src="' + button.normal.normal + '" value="標準" /></div><div class="large"><input type="image" src="' + button.large.normal + '" value="大" /></div><div class="xlarge"><input type="image" src="' + button.xlarge.normal + '" value="特大" /></div></div>';


/*
<div id="font-size-changer" class="control">
<p class="vanish">文字サイズ</p>
<div class="normal"><input type="image" src="' + button.normal.normal + '" value="標準" /></div>
<div class="large"><input type="image" src="' + button.large.normal + '" value="大" /></div>
<div class="xlarge"><input type="image" src="' + button.xlarge.normal + '" value="特大" /></div>
</div>
*/

			// init buttons
			$('#header .nav.global').before(control);
			$control = $('#header #font-size-changer');
			$normal  = $('#header #font-size-changer .normal input');
			$large   = $('#header #font-size-changer .large input');
			$xlarge  = $('#header #font-size-changer .xlarge input');
			$input   = $('#header #font-size-changer input');

			//cookie check
			if( document.cookie.match( /fontsize=/g ) ){
				document.cookie.match(/fontsize=([^;]*)/);
				var size = RegExp.$1;

				if(size === 'normal') {
					setFontNormal();
				} else if( size === 'large' ) {
					setFontLarge();
				} else if( size === 'xlarge' ) {
					setFontXLarge();
				} else {
					setFontNormal();
				}
			} else {
				setFontNormal();
			}
			setFontSizeTransition();

			function setFontNormal(){
				$html.addClass('font-normal');
				$normal.attr( 'src', button.normal.fault );
				$large.attr( 'src', button.large.normal);
				$xlarge.attr( 'src', button.xlarge.normal );
			}
			function setFontLarge(){
				$html.addClass('font-large');
				$normal.attr( 'src', button.normal.normal );
				$large.attr( 'src', button.large.fault );
				$xlarge.attr( 'src', button.xlarge.normal );
			}
			function setFontXLarge(){
				$html.addClass('font-xlarge');
				$normal.attr( 'src', button.normal.normal );
				$large.attr( 'src', button.large.normal );
				$xlarge.attr( 'src', button.xlarge.fault );
			}

			function removeFontSizeClass(t){
				t.removeClass('font-normal');
				t.removeClass('font-large');
				t.removeClass('font-xlarge');
			}

			function changeFont() {
				document.cookie = "fontsize=;expires=" + new Date().toUTCString();
				document.cookie = 'fontsize=' + $(this.parentNode).attr('class') + '; path=/; expires=' + new Date(2030, 1).toUTCString();
				//cookie check
				if( document.cookie.match( /fontsize=/g ) ){
					document.cookie.match(/fontsize=([^;]*)/);
					var size = RegExp.$1;

					if(size === 'normal') {
						removeFontSizeClass($html);
						setFontNormal();
					} else if( size === 'large' ) {
						removeFontSizeClass($html);
						setFontLarge();
					} else if( size === 'xlarge' ) {
						removeFontSizeClass($html);
						setFontXLarge();
					}
				} else {
					setFontLarge();
				}
			}

			function resetFont() {
				removeFontSizeClass($html);
				setFontNormal();
			}


			function setFontSizeTransition() {
				$('html').animate( {top:0} , 1 ).addClass( 'font-transition' );
			}
			function inputOnMouseOverHandler(){
				var inputClass = $(this.parentNode).attr('class');
				if($(this).attr('src') === button[inputClass].fault) return false;
				this.setAttribute('src',button[inputClass].over);
			}
			function inputOnMouseOutHandler(){
				var inputClass = $(this.parentNode).attr('class');
				if($(this).attr('src') === button[inputClass].fault) return false;
				this.setAttribute('src',button[inputClass].normal);
			}


			function setFontButtons(){
				$input.click( changeFont );
				$input.hover( inputOnMouseOverHandler, inputOnMouseOutHandler );
			}

			new ImageLoader( button, 6000, setFontButtons, setFontButtons );
		});
	}
	fontSizeManager();
})();

// ImageLoader
function ImageLoader ( target, timeout, fnSuccess, fnTimeout ){
	var _arrObjPath    = [],
		_arrPathLength = 0,
		_arrPathLoader = [],
		_arrPath       = [],
		_cnt           = 0,
		timeid         = 0,
		updatekey      = '';

	if(typeof fnSuccess !== 'function') return false;
	if(typeof fnTimeout === 'function' && !isNaN(timeout)) timeid = setTimeout(_timeout,timeout);
	// object -> array
	function object_change_array( t , a ){
		for( var i in t ) {
			if( typeof t[i] == 'object' ) {
				a.concat(object_change_array( t[i] , a ));
			} else {
				a.push(t[i]);
			}
		}
		return a;
	}
	_arrPath = object_change_array( target, _arrPath );
	_arrPathLength = _arrPath.length-1;

	//set updatekey
	if(navigator.userAgent.toLowerCase().indexOf('msie') != -1){
		updatekey = '?key=' + new Date().getTime();
	}
	for(var i=0, l=_arrPathLength; l>=i; i++){
		_arrPathLoader[i] = new ImageLoader(_arrPath[i]);
	}
	function ImageLoader(src){
		var image = new Image();
		image.src = src + updatekey;
		image.onload = onLoad;
		_arrObjPath[_arrObjPath.length] = image;
	}
	function onLoad(){
		_cnt++;
		if( _arrPathLength === _cnt ) _success();
	}
	function _success(){
		clear();
		fnSuccess(_arrObjPath);
	}
	function _timeout(){
		clear();
		fnTimeout(_arrObjPath);
	}
	function clear(){
		clearTimeout(timeid);
	}
	return _arrObjPath;
}
ImageLoader.prototype = {};

