/*================================
ファイル名：ys.js
作成者：ND&amp;I 徳田 ( tokuda@n-di.co.jp )
=================================*/

$(function(){
	
	var ys = {
		/* bodyのclassを取得 */
		b: $("body").attr("class"),
		/* anchorにclassを振る、
		uri.extを含みかつuri.notを含まないリンクには新しいウィンドウで開くリンクを付加する */
		link: function(){
			var uri = {
				ext: "http://", // を含むリンクに適用するが
				not: "yardstick.co.jp" // を含むリンクは除く
			}
			var img = {
				use: true,
				src: "/img/share/open.gif",
				alt: "新しいウィンドウで開く"
			}
			$("a[href$='.pdf']").addClass("pdf");
			$("a[@href^='"+uri.ext+"']").not("a[@href*='"+uri.not+"']").each(function(){
				if(this.firstChild!=null && this.firstChild.nodeName!="IMG"){
					var newLink;
					if(img.use){
						newLink = document.createElement("img");
						$(newLink).attr({"src":img.src,"alt":img.alt});
					}else{
						newLink = document.createTextNode(img.alt);
					}
					var newLinkAnchor = document.createElement("a");
					$(newLinkAnchor).addClass("external")
					.attr({"href":$(this).attr("href"),"title":"このリンクを新しいウィンドウで開く"})
					.click(function(){
						window.open(this.href,"","");
						return false;
					}).append(newLink).insertAfter(this);
				}
			});
		},
		/* globalNavのclass付加 */
		global: function(){
			if(!ys.b) return false;
			if(ys.b.match(/index/)) $("#home").addClass("location");
			else if(ys.b.match(/products/)) $("#products").addClass("location");
			else if(ys.b.match(/service/)) $("#service").addClass("location");
			else if(ys.b.match(/column/)) $("#column").addClass("location");
			else if(ys.b.match(/shop/)) $("#shopping").addClass("location");
		},
		/* body以下の要素のfirstChild(そのclassにaccessGuideがあれば次の要素)にclass(first-child)を付加 */
		firstChild: function(){
			$("body *:first-child").not("br").each(function(){
				if(this.className.match(/Guide/)){
					$(this).next().addClass("first-child");
				}else if(!this.className.match(/first-child/)){
					$(this).addClass("first-child");
				}
			});
		},
		/* body以下の要素のlastChildにclass(last-child)を付加 */
		lastChild: function(){
			$("body *:last-child").not("br").each(function(){
				$(this).addClass("last-child");
			});
		},
		/* fancyboxのセットアップ */
		fancybox: function(){
			var imgAnchor = $("a[@href$='.jpg'],a[@href$='.gif'],a[@href$='.png']");
			if(!$(imgAnchor)) return false;
			if($(imgAnchor).length>=1){
				$(imgAnchor).fancybox({
					"hideOnContentClick": true
				}).addClass("fancy");
			}
		},
		/* thumnailの調整 - productsのみ*/
		thums: function(){
			if(!ys.b) return false;
			if(!ys.b.match(/products/)) return false;
			$(".thums a:nth-child(4)").addClass("nth-child4");
		},
		/* コラムで不要な要素を取り除く */
		column: function(){
			if(!ys.b) return false;
			if(!ys.b.match(/column/)) return false;
			$("#calendar_wrap").prev().remove();
			if(!$(".entryNav")) return false;
			var imgSrc = {
				prev: "/img/column/prev.gif",
				next: "/img/column/next.gif"
			}
			$(".entryNav a").each(function(){
				var txt = $(this).text();
				var img = document.createElement("img");
				var createImg = function(n){
					$(img).attr({"src":n,"alt":txt});
				}
				if($(this).parent().hasClass("previous"))
					createImg(imgSrc.prev);
				else
					createImg(imgSrc.next);
				$(this).attr("title",txt).text("").append(img);
			});
		},
		/* ショップページの設定 */
		shopNav: function(){
			if(!ys.b) return false;
			if(!ys.b.match(/shop/)) return false;
			$("#shopNav li ul").hide();
			$("li#location ul").show().parent().addClass("active");
			$("#shopNav > li.toggle").hover(function(){
				$(this).addClass("hover");
			},function(){
				$(this).removeClass("hover");
			}).click(function(){
				var thisItem = $("ul",this);
				$("#shopNav li.active").not(this).removeClass("active");
				$("ul:visible","#shopNav li").not(thisItem).animate(
					{height: "toggle"},
					{duration: 450, easing: "swing"}
				);
				$("ul",this).animate(
					{height: "toggle"},
					{duration: 450, easing: "swing"}
				);
				if(this.className.match(/active/)){
					$(this).removeClass("active");
				}else{
					$(this).addClass("active");
				}
			});
		},
		tryForm: function(){
			if(!$("body").attr("id")) return false;
			if(!$("body").attr("id").match(/try/)) return false;
			$("#zip").keyup(function(){
				AjaxZip2.zip2addr(this,"add1","add2");
				setTimeout("$.f.start()",10);
			});
			$("#zip").blur(function(){
				AjaxZip2.zip2addr(this,"add1","add2");
				setTimeout("$.f.start()",10);
			});
			var trySubmit = document.createElement("a");
			var tryImg = document.createElement("img");
			if($("#submit").length>0){
				$(tryImg).attr({"src":"/img/shop/confirm.png","alt":"確認画面へ"});
			}else{
				$(tryImg).attr({"src":"/img/inquiry/submit.png","alt":"上記で送信する"});
			}
			$("input[type='submit']","#cart").replaceWith(trySubmit);
			$(trySubmit).attr("href","#").append(tryImg).click(function(){
				var errTxt = $(".errTxt");
				for(var i=0,n=0;i<errTxt.length;i++){
					n += $(errTxt[i]).text().length;
				}
				if(n>0){
					alert("必須項目を正しく入力してください");
					return false;
				}else{
					$("form").submit();
					return false;
				}
			});
		},
		/* SmoothScroll */
		scroll: function(){
			var getScrollPosition = function(){
				var obj = new Object();
				obj.x = document.body.scrollLeft || document.documentElement.scrollLeft;
				obj.y = document.body.scrollTop || document.documentElement.scrollTop;
				return obj;
			}
			$("p#pageTop a").click(function(){
				var y = getScrollPosition().y;
				var x = getScrollPosition().x;
				var timer = setInterval(
					function(){
						y = y - Math.ceil(y/5);
						x = x - Math.ceil(x/5);
						window.scroll(x,y);
						if(y<1) clearInterval(timer);
					}
				,10);
				return false;
			});
		},
		tooltip: function(){
			if($(".tt").length<1) return false;
			$(".tt").hover(function(){
				tooltip.show($(this).attr("title"));
			},function(){
				tooltip.hide();
			});
		},
		siteSearch: function(){
			if($("#cse-search-box").length<1) return false;
			$("input[name='change']").click(function(){
				$("#cse-search-box").attr("action",$(this).attr("value"));
			});
		},
		/* 実行メソッド */
		init: function(){
			ys.link();
			ys.global();
			ys.firstChild();
			ys.lastChild();
			ys.fancybox();
			ys.thums();
			ys.column();
			ys.shopNav();
			ys.tryForm();
			ys.scroll();
			ys.siteSearch();
			ys.tooltip();
		}
	}
	ys.init();
		
	/* タブ */
	var tabMenu = {
		tabClass : ".tab",
		area : ".tabArea",
		pageLink : true,
		hide : function(e,j){
			if(j){
				$(e).each(function(){
					$(this.hash).hide();
				});
			}else{
				if($(e).hasClass("active")){
					$(e).each(function(){
						if(!$(this).hasClass("active"))
							$(this.hash).hide();
					});
				}else{
					for(var i=0;i<e.length;i++){
						if(i==0) $(e[i]).addClass("active");
						else $(e[i].hash).hide();
					}
				}
			}
		},
		set : function(s){
			if($(s).length<1) return false;
			$(s).each(function(){
				var anchor = $(tabMenu.tabClass+" a",this);
				for(var i=0;i<anchor.length;i++){
					if(!anchor[i].href.match(/#/)){
						delete anchor[i];
						anchor.length = 7;
					}
				}
				for(var j=0;j<anchor.length;j++){
					if(anchor[i]=="undefined") return false;
					tabMenu.hide(anchor,false);
					$(anchor[j]).click(
						function(){
							tabMenu.hide(anchor,true);
							$(anchor).not(this).removeClass("active");
							$(this.hash).show();
							$(this).addClass("active");
							return false;
						}
					);
				}
				if(location.hash && $(location.hash,this).length>0){
					tabMenu.hide(anchor,true);
					$(location.hash).show();
					$("a.active").removeClass("active");
					$("a[href*='"+location.hash+"']").addClass("active");
					window.scroll(0,0);
				}
			});
		}
	}
	tabMenu.set($(tabMenu.area));
	
	var getFeed = {
		clear: function(){
			$("#news").html("").addClass("loading");
			$("#newsProducts").html("").addClass("loading");
			$("#newsColumn").html("").addClass("loading");
		},
		createNode: function(id,elm,index){
			var displayNum = (index<=elm.length) ? index : elm.length;
			for(var i=0;i<displayNum;i++) {
				var upDateYear = elm[i].updated.slice(14, 16);
				var upDateMonth = elm[i].updated.slice(8,11);
				if(upDateMonth=="Jan") upDateMonth="01";
				else if(upDateMonth=="Feb") upDateMonth="02";
				else if(upDateMonth=="Mar") upDateMonth="03";
				else if(upDateMonth=="Apr") upDateMonth="04";
				else if(upDateMonth=="May") upDateMonth="05";
				else if(upDateMonth=="Jun") upDateMonth="06";
				else if(upDateMonth=="Jul") upDateMonth="07";
				else if(upDateMonth=="Aug") upDateMonth="08";
				else if(upDateMonth=="Sep") upDateMonth="09";
				else if(upDateMonth=="Oct") upDateMonth="10";
				else if(upDateMonth=="Nov") upDateMonth="11";
				else if(upDateMonth=="Dec") upDateMonth="12";
				var upDateDay = elm[i].updated.slice(5, 7);
				var upDate = upDateYear + '-' + upDateMonth + '-' + upDateDay;
				var li = document.createElement("li");
				var anchor = document.createElement("a");
				$(anchor).attr({"href":elm[i].link,"title":elm[i].title}).text(elm[i].title);
				var span = document.createElement("span");
				$(span).text(upDate);
				$(li).append(span).append(anchor);
				if(i==0) $(li).addClass("first-child");
				$(id).removeClass("loading").append(li);
			}
		},
		news: function(){
			jQuery.getFeed({
				url: '/news/feed',
				success: function(feed){
					getFeed.createNode("#news",feed.items,3);
				}
			});
		},
		product: function(){
			jQuery.getFeed({
				url: '/products/feed',
				success: function(feed) {
					getFeed.createNode("#newsProducts",feed.items,3);
				}
			});
		},
		column: function(){
			jQuery.getFeed({
				url: '/column/feed',
				success: function(feed) {
					getFeed.createNode("#newsColumn",feed.items,6);
				}
			});
		},
		init: function(){
			if(!ys.b) return false;
			if(!ys.b.match(/index/)) return false;
			getFeed.clear();
			getFeed.news();
			getFeed.product();
			getFeed.column();
			ys.firstChild();
		}
	}
	getFeed.init();
	
	/* 慣性モーメントの計算 */
	var moment = {
		id: "#caluculate",
		caluculate: function(){
			if(!$(moment.id)) return false;
			$("#execute").click(function(){
				/* 結果を表示するinputのID */
				var option = {
					total: "#total",
					moment: "#moment"
				}
				/* それぞれの値を保存 */
				var opt_id = ["#length","#head","#shaft","#grip","#cell"];
				var opt_value = new Array();
				for(var i=0;i<opt_id.length;i++){
					opt_value[i] = $(opt_id[i]).attr("value");
				}
				/* 総重量の計算 */
				for(var j=0,total_value=0,flag=true;j<opt_value.length;j++){
					if(j!=0)
						total_value+=parseFloat(opt_value[j]);
					if(opt_value[j]==undefined){	// ひとつでも未入力があればflagをfalseにする
						flag=false;
					}
				}
				/* flagがfalseでなければ慣性モーメントの計算を行って結果を表示する */
				if(!flag){
					alert("すべての必須項目に値を記入してください");
				}else{
					var a = 12.75*parseFloat(opt_value[0])-292.61;
					var b = 0.4*parseFloat(opt_value[2])+269.89;
					var c = 1.3333*parseFloat(opt_value[1])+33.889;
					var d = Math.ceil((a+b+c-2*293.89)*10000);
					$(option.total).attr("value",total_value);
					$(option.moment).attr("value",d);
					$("#result input").addClass("on");
				}
			});
			$("#reset").click(function(){
				$("input","#caluculate, #result").attr("value","").removeClass("on");
				$.f.start();
			});
		}
	}
	moment.caluculate();
	
});/* jQuery Global Function */