/*
 * Common.js
 * 20091029
 * - watermarkを追加
 * 20091019
 * - inputEventsを追加
 * 20091013
 * - 一部の文言を修正
 * 20090507
 * - rolloverをpreloadするものと差し替え
 *
 * depends on jquery.js
 *
 */


// 使いたい物だけ設定
$(document).ready(function(){

	noDottedLines();
	rollOverImages();
	anchorScroller();
	inputEvents();
	externalLink();
	//evenOdd();
	//css3Class();
	localNavAccordion();
	appendPdfMark();

});


// #localnav用アコーディオン
function localNavAccordion(){
	$("#localnav li").has("ul").addClass("toggler");
	$("#localnav li.toggler>a[href^='javascript']").click(function(){
		var activeNav = $($(this).parent("li"));
		if($(activeNav).hasClass("active")){
			$(activeNav).removeClass("active");
		}else{
			$(activeNav).addClass("active");
		}
		$("#localnav li").not(activeNav).removeClass("active");
		$("#localnav li").not(activeNav).not(".current").children("ul").slideUp("fast");
		$(activeNav).not(".current").children("ul").slideToggle("fast");
	});
}

function appendPdfMark(){
	$("a.pdf").append('<span class="pdf_mark"><img src="/images/common/bullet_pdf.gif" width="20" height="10"  alt="PDF"></span>');
}

// noDottedLines()
// IEでリンクに点線が出ないように
function noDottedLines(){
	$("a").focus(function(){
		$(this).blur();
	});
}


/**
 * rollOver on jQuery
 * rollOver tag:img,input
 * rollOver class:Over
 * rollOver FileName:*_over.*
 * Last modify:20081210
 * Licensed:MIT License
 * @author AkiraNISHIJIMA(http://nishiaki.probo.jp/)
 */

function rollOverImages(){
	var preLoad = new Object();
	$('img.rollover,input.rollover').not('[src*="_over\."]').each(function(){
		var imgSrc = this.src;
		var fType = imgSrc.substring(imgSrc.lastIndexOf('.'));
		var imgName = imgSrc.substr(0, imgSrc.lastIndexOf('.'));
		var imgOver = imgName + '_over' + fType;
		preLoad[this.src] = new Image();
		preLoad[this.src].src = imgOver;
		$(this).hover(
			function (){
				this.src = imgOver;
			},
			function (){
				this.src = imgSrc;
			}
		);
	});
}

// anchorScroller()
// webkit系では動かない
// easeInOutとかやりたいときはeasing.jsが必要
// webkit系とoperaでは動かない（ただのアンカーリンクになる）
// 以下を利用
// http://www.learningjquery.com/2007/10/improved-animated-scrolling-script-for-same-page-links
function anchorScroller() {
	function filterPath(string) {
		return string
		.replace(/^\//,'')
		.replace(/(index|default)\.[a-zA-Z]{3,4}$/,'')
		.replace(/\/$/,'')
	}
	var locationPath = filterPath(location.pathname);
	$('a[href*=#]').not(".noScroll").each(function() {
		var thisPath = filterPath(this.pathname) || locationPath;
		if (locationPath == thisPath && (location.hostname == this.hostname || !this.hostname) && this.hash.replace(/#/,'') ) {
			if(!locationPath || locationPath == "#")
				return false;
			var $target = $(this.hash), target = this.hash;
			if (target) {
				var targetOffset = $target.offset().top;
				$(this).click(function(event) {
					event.preventDefault();
					$('html, body').animate({scrollTop: targetOffset}, {queue:false, duration:250}, function() {
					location.hash = target;
					});
				});
			}
		}
	});
}


// inputEvents()
// 以下を改変して利用
// http://iret-ceo.blogspot.com/2008/11/jquery-focus.html
function inputEvents(){
	$("input[type='text'],input[type='password'],textarea")
	.focus(function(){
		$(this).addClass("focus");
	})
	.blur(function(){
		$(this).removeClass("focus");
		if($(this).val() == ""){
			$(this).removeClass("nonempty");
		}else{
			$(this).addClass("nonempty");
		}
	});
	$("input, textarea, button").not(".rollover").hover(function(){
		$(this).addClass("over");
	},function(){
		$(this).removeClass("over");
	});
};


/*
	Watermark v3.0.1 (September 11, 2009) plugin for jQuery
	http://jquery-watermark.googlecode.com/
	Copyright (c) 2009 Todd Northrop
	http://www.speednet.biz/
	Licensed under GPL 3, see  <http://www.gnu.org/licenses/>
*/
(function(e){var c,j="watermark",g="watermarkClass",b="watermarkFocus",h="watermarkSubmit",d="watermarkMaxLength",f="watermarkPassword",k="watermarkText",a=":data("+j+")",i=":text,:password,:search,textarea";e.extend(e.expr[":"],{data:function(m,l,o,q){var n,p=/^((?:[^=!^$*]|[!^$*](?!=))+)(?:([!^$*]?=)(.*))?$/.exec(o[3]);if(p){n=e(m).data(p[1]);if(n!==c){if(p[2]){n=""+n;switch(p[2]){case"=":return(n==p[3]);case"!=":return(n!=p[3]);case"^=":return(n.slice(0,p[3].length)==p[3]);case"$=":return(n.slice(-p[3].length)==p[3]);case"*=":return(n.indexOf(p[3])!==-1)}}return true}}return false}});e.watermark={version:"3.0",options:{className:"watermark",useNative:true},hide:function(l){e(l).filter(a).each(function(){e.watermark._hide(e(this))})},_hide:function(o,m){if(o.val()==o.data(k)){o.val("");if(o.data(f)){if(o.attr("type")==="text"){var n=o.data(f),l=o.parent();l[0].removeChild(o[0]);l[0].appendChild(n[0]);o=n}}if(o.data(d)){o.attr("maxLength",o.data(d));o.removeData(d)}if(m){o.attr("autocomplete","off");window.setTimeout(function(){o.select()},0)}}o.removeClass(o.data(g))},show:function(l){e(l).filter(a).each(function(){e.watermark._show(e(this))})},_show:function(r){var q=r.val(),p=r.data(k),n=r.attr("type");if(((q.length==0)||(q==p))&&(!r.data(b))){if(r.data(f)){if(n==="password"){var o=r.data(f),m=r.parent();m[0].removeChild(r[0]);m[0].appendChild(o[0]);r=o;r.attr("maxLength",p.length)}}if((n==="text")||(n==="search")){var l=r.attr("maxLength");if((l>0)&&(p.length>l)){r.data(d,l);r.attr("maxLength",p.length)}}r.addClass(r.data(g));r.val(p)}else{e.watermark._hide(r)}},hideAll:function(){e.watermark.hide(i)},showAll:function(){e.watermark.show(i)}};e.fn.watermark=function(o,l){var n=(typeof(o)==="string"),m;if(typeof(l)==="object"){m=(typeof(l.className)==="string");l=e.extend({},e.watermark.options,l)}else{if(typeof(l)==="string"){m=true;l=e.extend({},e.watermark.options,{className:l})}else{l=e.watermark.options}}if(typeof(l.useNative)!=="function"){l.useNative=l.useNative?function(){return true}:function(){return false}}return this.each(function(){var s=e(this);if(!s.is(i)){return}if(s.data(j)){if(n||m){e.watermark._hide(s);if(n){s.data(k,o)}if(m){s.data(g,l.className)}}}else{if(l.useNative.call(this,s)){if(((""+s.css("-webkit-appearance")).replace("undefined","")!=="")&&(s.attr("tagName")!=="TEXTAREA")){if(n){s.attr("placeholder",o)}return}}s.data(k,n?o:"");s.data(g,l.className);s.data(j,1);if(s.attr("type")==="password"){var p=s.wrap("<span>").parent();var r=e(p.html().replace(/type=["']?password["']?/i,'type="text"'));r.data(k,s.data(k));r.data(g,s.data(g));r.data(j,1);r.attr("maxLength",o.length);r.focus(function(){e.watermark._hide(r,true)}).bind("dragenter",function(){e.watermark._hide(r)}).bind("dragend",function(){window.setTimeout(function(){r.blur()},1)});s.blur(function(){e.watermark._show(s)}).bind("dragleave",function(){e.watermark._show(s)});r.data(f,s);s.data(f,r)}else{s.focus(function(){s.data(b,1);e.watermark._hide(s,true)}).blur(function(){s.data(b,0);e.watermark._show(s)}).bind("dragenter",function(){e.watermark._hide(s)}).bind("dragleave",function(){e.watermark._show(s)}).bind("dragend",function(){window.setTimeout(function(){e.watermark._show(s)},1)}).bind("drop",function(t){var u=t.originalEvent.dataTransfer.getData("Text");if(s.val().replace(u,"")===s.data(k)){s.val(u)}s.focus()})}var q=e(this.form);if(!q.data(h)){q.data(h,this.form.submit);q.submit(e.watermark.hideAll);this.form.submit=function(){var t=q.data(h);e.watermark.hideAll();if(t.apply){t.apply(q[0],arguments)}else{t()}}}}e.watermark._show(s)}).end()}})(jQuery);


// externalLink()
// a rel="external"にclass="external"を付ける
// 外部リンクだった場合は新しいウィンドウで開く
function externalLink(){
	$("a[rel='external'],a.external").each(function(){
		$(this).filter(function(){
			if (this.hostname && this.hostname !== location.hostname){
				$(this).click(function(){
					// alert("external link: " + this.hostname);
					window.open(this.href, "_blank");
					return false;
				});
			}
		});
	});
}


// 以下、yuga.js から一部を改変して利用
// Copyright (c) 2009 Kyosuke Nakamura (kyosuke.jp)
// Licensed under the MIT License:
// http://www.opensource.org/licenses/mit-license.php


// evenOdd()
// ul>li、ol>li、table>tbody>tr>tdに奇数・偶数のclassを付ける
function evenOdd(){
	$("ul, ol").each(function(){
		$(this).children("li:odd").addClass("even");
		$(this).children("li:even").addClass("odd");
	});
	$("table>tbody").each(function(){
		$(this).children("tr:odd").addClass("odd");
		$(this).children("tr:even").addClass("even");
	});
}


// css3のfirst-classとかを付加
function css3Class(){
	//:first-child, :last-childをクラスとして追加
	$("body :first-child").addClass("first");
	$("body :last-child").addClass("last");
	//css3の:emptyをクラスとして追加
	$("body :empty").addClass("empty");
}


/**
 * Equal Heights Plugin
 * Equalize the heights of elements. Great for columns or any elements
 * that need to be the same size (floats, etc).
 * 
 * Version 1.0
 * Updated 12/10/2008
 *
 * Copyright (c) 2008 Rob Glazebrook (cssnewbie.com) 
 * 
 */

(function($) {
	$.fn.equalHeights = function(minHeight, maxHeight) {
		tallest = (minHeight) ? minHeight : 0;
		this.each(function() {
			if($(this).height() > tallest) {
				tallest = $(this).height();
			}
		});
		if((maxHeight) && tallest > maxHeight) tallest = maxHeight;
		return this.each(function() {
			$(this).height(tallest).css("overflow","auto");
		});
	}
})(jQuery);
