/*
 * jQuery Easing v1.3 - http://gsgd.co.uk/sandbox/jquery/easing/
 *
 * Uses the built in easing capabilities added In jQuery 1.1
 * to offer multiple easing options
 *
 * TERMS OF USE - jQuery Easing
 * 
 * Open source under the BSD License. 
 * 
 * Copyright © 2008 George McGinley Smith
 * All rights reserved.
 * 
 * Redistribution and use in source and binary forms, with or without modification, 
 * are permitted provided that the following conditions are met:
 * 
 * Redistributions of source code must retain the above copyright notice, this list of 
 * conditions and the following disclaimer.
 * Redistributions in binary form must reproduce the above copyright notice, this list 
 * of conditions and the following disclaimer in the documentation and/or other materials 
 * provided with the distribution.
 * 
 * Neither the name of the author nor the names of contributors may be used to endorse 
 * or promote products derived from this software without specific prior written permission.
 * 
 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY 
 * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
 * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
 *  COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
 *  EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
 *  GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED 
 * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
 *  NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED 
 * OF THE POSSIBILITY OF SUCH DAMAGE. 
 *
*/

// t: current time, b: begInnIng value, c: change In value, d: duration
jQuery.easing['jswing'] = jQuery.easing['swing'];

jQuery.extend( jQuery.easing,
{
	def: 'easeOutQuad',
	swing: function (x, t, b, c, d) {
		//alert(jQuery.easing.default);
		return jQuery.easing[jQuery.easing.def](x, t, b, c, d);
	},
	easeInQuad: function (x, t, b, c, d) {
		return c*(t/=d)*t + b;
	},
	easeOutQuad: function (x, t, b, c, d) {
		return -c *(t/=d)*(t-2) + b;
	},
	easeInOutQuad: function (x, t, b, c, d) {
		if ((t/=d/2) < 1) return c/2*t*t + b;
		return -c/2 * ((--t)*(t-2) - 1) + b;
	},
	easeInCubic: function (x, t, b, c, d) {
		return c*(t/=d)*t*t + b;
	},
	easeOutCubic: function (x, t, b, c, d) {
		return c*((t=t/d-1)*t*t + 1) + b;
	},
	easeInOutCubic: function (x, t, b, c, d) {
		if ((t/=d/2) < 1) return c/2*t*t*t + b;
		return c/2*((t-=2)*t*t + 2) + b;
	},
	easeInQuart: function (x, t, b, c, d) {
		return c*(t/=d)*t*t*t + b;
	},
	easeOutQuart: function (x, t, b, c, d) {
		return -c * ((t=t/d-1)*t*t*t - 1) + b;
	},
	easeInOutQuart: function (x, t, b, c, d) {
		if ((t/=d/2) < 1) return c/2*t*t*t*t + b;
		return -c/2 * ((t-=2)*t*t*t - 2) + b;
	},
	easeInQuint: function (x, t, b, c, d) {
		return c*(t/=d)*t*t*t*t + b;
	},
	easeOutQuint: function (x, t, b, c, d) {
		return c*((t=t/d-1)*t*t*t*t + 1) + b;
	},
	easeInOutQuint: function (x, t, b, c, d) {
		if ((t/=d/2) < 1) return c/2*t*t*t*t*t + b;
		return c/2*((t-=2)*t*t*t*t + 2) + b;
	},
	easeInSine: function (x, t, b, c, d) {
		return -c * Math.cos(t/d * (Math.PI/2)) + c + b;
	},
	easeOutSine: function (x, t, b, c, d) {
		return c * Math.sin(t/d * (Math.PI/2)) + b;
	},
	easeInOutSine: function (x, t, b, c, d) {
		return -c/2 * (Math.cos(Math.PI*t/d) - 1) + b;
	},
	easeInExpo: function (x, t, b, c, d) {
		return (t==0) ? b : c * Math.pow(2, 10 * (t/d - 1)) + b;
	},
	easeOutExpo: function (x, t, b, c, d) {
		return (t==d) ? b+c : c * (-Math.pow(2, -10 * t/d) + 1) + b;
	},
	easeInOutExpo: function (x, t, b, c, d) {
		if (t==0) return b;
		if (t==d) return b+c;
		if ((t/=d/2) < 1) return c/2 * Math.pow(2, 10 * (t - 1)) + b;
		return c/2 * (-Math.pow(2, -10 * --t) + 2) + b;
	},
	easeInCirc: function (x, t, b, c, d) {
		return -c * (Math.sqrt(1 - (t/=d)*t) - 1) + b;
	},
	easeOutCirc: function (x, t, b, c, d) {
		return c * Math.sqrt(1 - (t=t/d-1)*t) + b;
	},
	easeInOutCirc: function (x, t, b, c, d) {
		if ((t/=d/2) < 1) return -c/2 * (Math.sqrt(1 - t*t) - 1) + b;
		return c/2 * (Math.sqrt(1 - (t-=2)*t) + 1) + b;
	},
	easeInElastic: function (x, t, b, c, d) {
		var s=1.70158;var p=0;var a=c;
		if (t==0) return b;  if ((t/=d)==1) return b+c;  if (!p) p=d*.3;
		if (a < Math.abs(c)) { a=c; var s=p/4; }
		else var s = p/(2*Math.PI) * Math.asin (c/a);
		return -(a*Math.pow(2,10*(t-=1)) * Math.sin( (t*d-s)*(2*Math.PI)/p )) + b;
	},
	easeOutElastic: function (x, t, b, c, d) {
		var s=1.70158;var p=0;var a=c;
		if (t==0) return b;  if ((t/=d)==1) return b+c;  if (!p) p=d*.3;
		if (a < Math.abs(c)) { a=c; var s=p/4; }
		else var s = p/(2*Math.PI) * Math.asin (c/a);
		return a*Math.pow(2,-10*t) * Math.sin( (t*d-s)*(2*Math.PI)/p ) + c + b;
	},
	easeInOutElastic: function (x, t, b, c, d) {
		var s=1.70158;var p=0;var a=c;
		if (t==0) return b;  if ((t/=d/2)==2) return b+c;  if (!p) p=d*(.3*1.5);
		if (a < Math.abs(c)) { a=c; var s=p/4; }
		else var s = p/(2*Math.PI) * Math.asin (c/a);
		if (t < 1) return -.5*(a*Math.pow(2,10*(t-=1)) * Math.sin( (t*d-s)*(2*Math.PI)/p )) + b;
		return a*Math.pow(2,-10*(t-=1)) * Math.sin( (t*d-s)*(2*Math.PI)/p )*.5 + c + b;
	},
	easeInBack: function (x, t, b, c, d, s) {
		if (s == undefined) s = 1.70158;
		return c*(t/=d)*t*((s+1)*t - s) + b;
	},
	easeOutBack: function (x, t, b, c, d, s) {
		if (s == undefined) s = 1.70158;
		return c*((t=t/d-1)*t*((s+1)*t + s) + 1) + b;
	},
	easeInOutBack: function (x, t, b, c, d, s) {
		if (s == undefined) s = 1.70158; 
		if ((t/=d/2) < 1) return c/2*(t*t*(((s*=(1.525))+1)*t - s)) + b;
		return c/2*((t-=2)*t*(((s*=(1.525))+1)*t + s) + 2) + b;
	},
	easeInBounce: function (x, t, b, c, d) {
		return c - jQuery.easing.easeOutBounce (x, d-t, 0, c, d) + b;
	},
	easeOutBounce: function (x, t, b, c, d) {
		if ((t/=d) < (1/2.75)) {
			return c*(7.5625*t*t) + b;
		} else if (t < (2/2.75)) {
			return c*(7.5625*(t-=(1.5/2.75))*t + .75) + b;
		} else if (t < (2.5/2.75)) {
			return c*(7.5625*(t-=(2.25/2.75))*t + .9375) + b;
		} else {
			return c*(7.5625*(t-=(2.625/2.75))*t + .984375) + b;
		}
	},
	easeInOutBounce: function (x, t, b, c, d) {
		if (t < d/2) return jQuery.easing.easeInBounce (x, t*2, 0, c, d) * .5 + b;
		return jQuery.easing.easeOutBounce (x, t*2-d, 0, c, d) * .5 + c*.5 + b;
	}
});

/*
 *
 * TERMS OF USE - EASING EQUATIONS
 * 
 * Open source under the BSD License. 
 * 
 * Copyright © 2001 Robert Penner
 * All rights reserved.
 * 
 * Redistribution and use in source and binary forms, with or without modification, 
 * are permitted provided that the following conditions are met:
 * 
 * Redistributions of source code must retain the above copyright notice, this list of 
 * conditions and the following disclaimer.
 * Redistributions in binary form must reproduce the above copyright notice, this list 
 * of conditions and the following disclaimer in the documentation and/or other materials 
 * provided with the distribution.
 * 
 * Neither the name of the author nor the names of contributors may be used to endorse 
 * or promote products derived from this software without specific prior written permission.
 * 
 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY 
 * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
 * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
 *  COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
 *  EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
 *  GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED 
 * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
 *  NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED 
 * OF THE POSSIBILITY OF SUCH DAMAGE. 
 *
 */


/*
 * Stardogs JavaScript framework 
 * Copyright (c) Stardogs co.ltd.
 * @date 2008-12-24
 * @category jQuery plugin
 * 
 */

(function($){  

	// Debug
	if ( !$.browser.safari && typeof window.console !== 'undefined' && typeof window.console.log === 'function' )
	{	// Use window.console
		$.log = window.console.log;
	}
	else
	{	// Don't use anything
		$.log = function ( ) { };
	}

	jQuery.fn.stardogs = function( settings ){
		settings = $.extend({
			update: {
				'pass':		'7', // 更新後何日まで "New" を表示するか
				'class':		'update' // 'New'を表示する要素に付加する class
			},
			files: {
				framework:	'js/stardogs.framework.js',
				update:		'js/update.js'
			},
			nav: {
				category:	['whats', 'about', 'column', 'know-how', 'case-study', 'question-answer'],
				element:		'#pageNav .mainNav li'
			},
			home: {
				category:	['whats', 'about', 'know-how', 'case-study', 'question-answer'],
				element:		'div.articleContents .section'
			}
		}, settings);

		stardogsFn(settings);

		
		function stardogsFn( settings ) {
			var s = settings;
			// 基準となるpassを定義
			this.src = $('script[src*='+s.files.framework+']:first').attr('src');
			this.baseurl = this.src.substring(0, this.src.indexOf(s.files.framework));
	
			// -------------------
			// ページ属性の読取り

			var pageType = $('#pageWrapper').attr('class'); 
			var updateEl = '';

			if (pageType.indexOf('mail') != -1) {
				if ($('#pageTop').attr('class') == 'confirm') {
					if ($('#formArea table span').attr('class').indexOf('notice') != -1) {
						$('input#mail_post').css('display','none');
						$('#pageTop').addClass('error');
					}
				}
			}
			
			// -------------------
			// トップへのリンクを書換え（暫定）

			// $('p.site-title a').attr('href','http://www.stardogs.co.jp/index2.html');


			// -----------------
			// search results
			if(pageType.indexOf('search-result') != -1) {
				//var str = '?IncludeBlogs=1&limit=10&search=と';
				var locationStr = location.search;
				var locationStrReg = locationStr.match(/limit=(\d{2})/g);
				// 1ページあたりの表示数
				var limitN = RegExp.$1;
		
				// 検索にヒットした件数
				var resultsN = '0';
				resultsN = $('#statusCount span.resultCount').text();
		
				// 現在のページ
				var pageN = $('p.contentsNav strong.thisPage').text();
		
				var $maxResults = $('#statusCount span.maxResults');
		
				if (resultsN == 0 || null) {
					$maxResults.html('0');
				} else if (resultsN == 1) {
					$maxResults.html('1');
				} else if (resultsN <= limitN || resultsN < 10) {
					$maxResults.html('1 - '+ resultsN);
				} else {
					if (pageN == 1) {
						$maxResults.html('1 - '+ limitN);
					} else if (limitN*pageN >= resultsN) {
						$maxResults.html(limitN*(pageN -1) +' - '+ (limitN*pageN-(limitN*pageN-resultsN)));
					} else {
						$maxResults.html(limitN*(pageN -1) +' - '+ limitN*pageN);
					}
				}

				$('#countItems').val(limitN);

				// -----------------
				// 表示数の変更
				$('#countItems').bind('change', function(){

					/*
					var count = $(this).val();
					var keyword = $('#search').val();
					var keyReg = locationStr.match(/search=(.[^&]*)/g);
					var keyword = unescape(RegExp.$1);
					var queryStr = "";
					queryStr = "http://www.stardogs.co.jp/cgi-bin/mt4/mt-search.cgi?search="+ keyword +"&limit="+ count;
					alert(queryStr);
					window.location(queryStr);
					*/

					$('#search-form')[0].submit();
				});

			}

			// -------------------
			// 更新データを読込み
			var bodyEl = document.getElementsByTagName('head')[0];
			var scriptEl = document.createElement('script');
			scriptEl.type = 'text/javascript';
			scriptEl.src = this.baseurl+s.files.update;
			bodyEl.appendChild(scriptEl);

			// Cleanup
			delete bodyEl;
			delete scriptEl;

			setTimeout(function() {
				if ($.updateData !== undefined) {
					// json 
					var data = $.updateData;
		
					// -------------------
					// ナビゲーションのリストにクラスを付加
					if (pageType.indexOf('home') != -1) {
						$(s.home.element).each(function(i){
							$(this).addClass(s.home.category[i]);
						});
					} else {
						$(s.nav.element).each(function(i){
							$(this).addClass(s.nav.category[i]);
						});
					}
		
					// 現在時刻の取得
					var currentDate = new Date();
					var update = new Array;
		
					$.each(data, function(i) {
						var tmp = "";
						tmp = data[i].update;
						tmp = tmp.replace(/年|月|日|時|分/g,':');
						tmp = tmp.replace(/\s|秒.*/g,'');
						var time = tmp.split(":");
						var entryDate = new Date(time[0], time[1]-1, time[2], time[3], time[4], time[5]);
						var now = (currentDate.getTime() - entryDate.getTime())/(60*60*1000); 
						now = Math.ceil(now);
	
						var category = '';
						category = data[i].category;
						
						if (pageType.indexOf('home') != -1) {
							if (category != 'column') {
								updateEl = $('div.articleContents div[class*='+category+']');
							}
						} else {
							updateEl = $('#pageNav .mainNav li[class*='+data[i].category+'] a');
						}
			
						if(now <= s.update.pass*24) {
							updateEl.addClass('update');
						}
					});
				}
			}, 100);
			return this;
		};
	}; // We have finished extending/defining

	$(function() {
		$.fn.stardogs();

		$('input#btn-search, .mail .submitArea input').hover(
		 	function() {$(this).addClass('submit');},
		 	function() {$(this).removeClass('submit');}
		 );
	
		$('.articleNav p.btn-submit input').hover(
		 	function() {$(this).addClass('move');},
		 	function() {$(this).removeClass('move');}
		 );

		$('a[href*=#]').click(function() {
			if (location.pathname.replace(/^\//,'') == this.pathname.replace(/^\//,'') && location.hostname == this.hostname) {
				var target = $(this.hash);
				target = target.length && target;
				if (target.length) {
					var sclpos = 30;
					var scldurat = 800;
					var targetOffset = target.offset().top - sclpos;
					$('html,body').animate({ scrollTop: targetOffset }, { duration: scldurat, easing: "easeOutExpo" });
					return false;
				}
			}
		});

	});

})(jQuery);
