/*	jquery.lh.js
	http://www.lhsalon.jp/sample/jquery/
-------------------------------------------------------------------------- */
jQuery.extend({
	lh: function() {
		alert("Powerd by LionHeart.");
	}
});
jQuery.fn.extend({
	/*	RollOver
	-------------------------------------------------------------------------- */
	rollOver : function(findObj) {
		var _fObj = findObj;
		var tgt = $(this);
		if( _fObj && !$(this).find(_fObj).length )
			return $(this);
		$(this).hover( rOver, rOut ).each( preLoad );
		function rOver() {
			var tgt = changeTgt( $(this) );
			tgt.each( function() {
				if( $(this).attr("src") )
					$(this).attr("src", tgt.attr("src").replace("_off.", "_on."));
			} );
		}
		function rOut() {
			var tgt = changeTgt( $(this) );
			tgt.each( function() {
				if( $(this).attr("src") )
					$(this).attr("src", tgt.attr("src").replace("_on.", "_off."));
			} );
		}
		function changeTgt(tgt) {
			return ( _fObj ) ? tgt.find(_fObj) : tgt;
		}
		function preLoad() {
			var tgt = changeTgt( $(this) );
			tgt.each( function() {
				if( $(this).attr("src") )
					$("<img>").attr("src", $(this).attr("src").replace("_off.", "_on."));
			} );
		}
		return $(this);
	},
	/*	Alpha RollOver
	-------------------------------------------------------------------------- */
	alphaRo : function(opt) {
		var _set = {
			from:1,
			to:0.8,
			fade:false,
			speed:700,
			group:true
		};
		if( opt ) $.extend(_set, opt);

		$(this).css({"opacity":_set.from}).bind("mouseenter", {toNum:_set.to}, toOpacity).bind("mouseleave", {toNum:_set.from}, toOpacity);
		if( $(this).css("display") == "inline" ) $(this).css({display:"inline-block"});
		function toOpacity(e) {
			var tgt = $(this);
			var rel = tgt.attr('rel');
			if( rel && _set.group ) {
				tgt = $("*[rel='"+rel+"']");
			}
			( _set.fade ) ? tgt.queue([]).animate({"opacity":e.data.toNum}, {duration:_set.speed}) : tgt.css("opacity", e.data.toNum);
		}
		return $(this);
	},
	/*	Smooth Scroll
	-------------------------------------------------------------------------- */
	smScroll : function (opt) {
		var _set = {
			speed:700,
			easing:'',
			hash:true
		};
		if( opt ) $.extend(_set, opt);
		
		var _hash, _h, _inH, _flag=true;
		var strUA = navigator.userAgent.toLowerCase();
		var _scrTgt = $('html');
		if( strUA.indexOf("safari") != -1 ) _scrTgt = $('body');

		$(this).click(function() {
			var tgt = $(this).attr('href').substr(1);
			_h = Math.max( document.body.clientHeight , document.body.scrollHeight );  
			_h = Math.max( _h , document.documentElement.scrollHeight );  
			_h = Math.max( _h , document.documentElement.clientHeight );
			_inH = window.innerHeight || document.documentElement.clientHeight || document.body.clientHeight;
			toPos(tgt);
			return false;
		});
		if( _set.hash ) {
			setInterval( function() {
				var sHash = getHash();
				toPosBrowse(sHash);
			}, 200 );
		}
		function toPos(gHash) {
			if( _flag ) {
				_hash = gHash;
				_flag = false;
				_scrTgt.animate({scrollTop:toGetPoint()}, _set.speed, _set.easing, setHash);
			}
		}
		function toPosBrowse(gHash) {
			if( _hash && _hash !== gHash && _flag ) {
				_hash = gHash;
				_scrTgt.queue([]).scrollTop(toGetPoint());
				_flag = true;
			}
		}
		function toGetPoint() {
			var result = 0;
			if(_hash != '') {
				result = $("*[name='"+_hash+"']").offset().top;
				if(result+_inH > _h) result = _h-_inH;
			}
			return result;
		}
		function getHash() {
			if ( typeof window.location.hash !== 'undefined' ) {
				return window.location.hash.substr(1);
			} else {
				return location.hash.substr(1);
			}
		}
		function setHash() {
			if( _set.hash ) {
				if ( typeof window.location.hash !== 'undefined' ) {
					if ( window.location.hash !== _hash ) {
						window.location.hash = _hash;
					}
				} else if( location.hash !== _hash ) {
					location.hash = _hash;
				}
			}
			_flag = true;
		}
		return $(this);
	},
	/*	Popup Window
	-------------------------------------------------------------------------- */
	anotherWin : function(opt) {
		var _set = {
			width:500,
			height:false,
			name:'subWindow',
			scrollbars:'yes',
			resizable:'yes',
			menubar:'yes'
		};
		if( opt ) $.extend(_set, opt);
		
		$(this).click( function() {
			var url = $(this).attr('href');
			var rule = 'width='+_set.width+',scrollbars='+_set.scrollbars+',resizable='+_set.resizable+',menubar='+_set.menubar;
			if( _h ) rule += ',height='+_h;
			window.open(url, _set.name, rule);
			return false;
		});
		return $(this);
	},
	/*	Set Same Height
	-------------------------------------------------------------------------- */
	setHeight : function(child, opt) {
		var _set = {
			outer:false
		};
		if( opt ) $.extend(_set, opt);
		
		$(this).each( function() {
			var sHeight = 0;
			$(this).find( child ).each( function() {
				$(this).css('height', 'auto');
				var gH = _set.outer ? $(this).outerHeight() : $(this).height();
				if( sHeight<gH )
					sHeight = gH;
			} );
			$(this).find( child ).each( function() {
				var lHeight = _set.outer ? sHeight-$(this).outerHeight()+$(this).height() : sHeight;
				$(this).height(lHeight);
			} );
		} );
		return $(this);
	},
	/*	Set Division Anchor
	-------------------------------------------------------------------------- */
	setDivAnchor : function(opt) {
		var _set = {
			not:false,
			force:true
		};
		if( opt ) $.extend(_set, opt);
		
		var _tgt = $(this).filter( getTarget );
		_tgt.css("cursor", "pointer").each( function() {
			var _tgt = $(this);
			_tgt.hover( function() {
				_tgt.addClass("act");
				var img = _tgt.find("img[src*='_off.']");
				if( img.length>0 )
					img.attr("src", img.attr("src").replace("_off.", "_on."));
			}, function() {
				_tgt.removeClass("act");
				var img = _tgt.find("img[src*='_on.']");
				if( img.length>0 )
					img.attr("src", img.attr("src").replace("_on.", "_off."));
			} );
			_tgt.click( function(evt) {
				if( !$(evt.target).closest('a').length ) {
					var a = $(this).find("a").eq(0);
					if( _set.force ) {
						if( a.attr("target") == "_blank" ) {
							window.open( a.attr("href") );
						} else {
							window.location.href = a.attr("href");
						}
					}
					a.trigger("click");
				}
			} );
		} ).find("a").click( function(evt) {
			evt.stopPropagation();
		} ).find("img[src*='_off.']").unbind("mouseenter").unbind("mouseleave");
		function getTarget(result) {
			if( _set.not && $(this).filter(_set.not).length > 0 ) {
				return false;
			} else {
				return true;
			}
		}
		return $(this);
	},
	/*	Default Inputarea
	-------------------------------------------------------------------------- */
	inputDefault : function( opt ) {
		var _set = {
			form:"form",
			toColor:"#999999",
			fromColor:"#333333"
		};
		if( opt ) $.extend(_set, opt);
		
		var exList = $(this);
		$(this).each( function() {
			if( $(this).val() == "" ) {
				$(this).val( $(this).attr("title") ).css("color", _set.toColor).focus( inpFocus ).blur( inpBlur );
			}
		} );
		$(_set.form).submit( function() {
			exList.each( function() {
				if( $(this).val() == $(this).attr("title") ) {
					$(this).val("");
				}
			} );
		} );
		function inpFocus() {
			$(this).css("color", _set.fromColor).val("");
		}
		function inpBlur() {
			if( $(this).val() == "" ) {
				$(this).val( $(this).attr("title") ).css("color", _set.toColor);
				$(this).bind("focus", inpFocus);
			} else {
				$(this).unbind("focus");
			}
		}
	}
});
