/*
 * common.js
 * 共通JS
 */
(function($) {

	//=====================================Main Routine
	$(function() {
		initScrollLnkPgtop();
		initScrollLnkInternal();
		initToggleFollowList();
		initPropertiesMapLink();
	});

	//====================================Functions for Calling Plugins

	var initScrollLnkPgtop = function() {
		$("div.localscroll").localScroll({speed: 900, easing: "easeOutExpo"});
	};

	var initScrollLnkInternal = function() {
		$("div.internal").localScroll({speed: 900, easing: "easeOutExpo"});
	};

	// Toggle 'See More' List
	var initToggleFollowList = function() {
		var selectorToggle      = "div.stretch";
		var selectorButtonShow  = "div.stretch_bt_close";
		var selectorButtonHide  = "div.stretch_bt_open";
		
		//開閉部分
		var $toggles = $(selectorToggle);

		$toggles.each(function(indx){
			var $toggle     = $(this);
			var $buttonShow       = $toggle.find(selectorButtonShow);
			var $buttonHide      = $toggle.find(selectorButtonHide);
			
			$buttonShow.click(function(e){
				animateFollowList($toggle, "slideDown");
				e.preventDefault();
				return false;
			});
			$buttonHide.click(function(e){
				animateFollowList($toggle, "slideUp");
				e.preventDefault();
				return false;
			});

			//初期化
			animateFollowList($toggle, "init");
		});
	};

	// animation follow list (init, show, hide, slideUp, slideDown)
	var animateFollowList = function($toggle, mode){
		var selectorContents    = "div.stretch_contents";
		var slideDuration       = 250;
		var classToggleOpen     = "open";
		var classToggleClose    = "close";

		var $contents   = $toggle.find(selectorContents);
		if(mode == "init"){
			//IE8, Windows7の場合、googlemapが含まれていれば開いた状態とする
			if($.browser.msie && $.browser.version >= 8 && navigator.userAgent.indexOf("Windows NT 6.1") != -1){
				if($.googlemapSimpleViews){
					for(var n in $.googlemapSimpleViews){
						var $m = $contents.find("#" + n);
						if($m.size()){
							animateFollowList($toggle, "show");
							break;
						}
					}
				}
			}
		}else if(mode == "slideDown"){
			$contents.slideDown(slideDuration, function(){
				animateFollowList($toggle, "show");
			});
		}else if(mode == "slideUp"){
			$contents.slideDown(slideDuration, function(){
				animateFollowList($toggle, "hide");
			});
		}else if(mode == "show"){
			$toggle.removeClass(classToggleOpen + " " + classToggleClose).addClass(classToggleOpen);
			//追加されるdisplay:blockを削除
			$contents.removeAttr("style");
			//googlemapを閉じている場合は、markerをクリックしてバルーンが見える位置に移動させる
			try {
				if($.googlemapSimpleViews){
					for(var n in $.googlemapSimpleViews){
						var $m = $contents.find("#" + n);
						if($m.size() && $.googlemapSimpleViews[n].markers[0]){
							GEvent.trigger($.googlemapSimpleViews[n].markers[0],'click');
						}
					}
				}
			} catch (e){
			}
			//IE7、IE7互換モードの場合はzoom:1をセット（relative要素の影響）
			if($.browser.msie && ($.browser.version.match(/^7/) || (document.documentMode && document.documentMode == 7))) {
				$contents.css({"zoom": 1});
			}
		}else if(mode == "hide"){
			$toggle.removeClass(classToggleOpen + " " + classToggleClose).addClass(classToggleClose);
			//追加されるdisplay:noneを削除
			$contents.removeAttr("style");
			//safariの場合は強制再描画
			if($.browser.safari){
				var sTop=$(document).scrollTop();
				$(document).scrollTop(0).scrollTop(sTop);
			}
		}
	}

	// properties map link
	var initPropertiesMapLink = function(){
		//propertiesのページかどうか
		if(!$("body").hasClass("properties")){
			return;
		}
		var mapHash = "g_map";
		var $linkMap = $("a[href=#" + mapHash + "]");
		var $ancMap = $("a#" + mapHash);
		var $strechMap = $ancMap.next(".stretch");
		if(!$ancMap.size() || !$strechMap.size() || !$linkMap.size()){
			return;
		}
		$linkMap.click(function(e){
			animateFollowList($strechMap, "show");
		});
		if(location.hash == "#" + mapHash){
			animateFollowList($strechMap, "show");
			$(document).scrollTop($ancMap.offset().top);
		}
	}
})(jQuery)

