/*============================================================================
    Author and Copyright
        製作者: IVP CO,LTD（http://www.ivp.co.jp/）
        作成日: 2009-03-06
        修正日: 2009-03-06

各関数の最初に下記のようなコメントをつけています。
コメントではその関数が行っている処理と、使用されているページを記載しています。

例）
 処理の内容（使用ページ：そのページのファイル名）
 ---------------------------------------------------------------- 

その他、処理内にも適宜コメントをつけていますので参考ください。
============================================================================*/

//onloadイベントの設定
$(document).ready(function(){
	var ersObj = ErsCommon();
	ersObj.welcome();
	ersObj.imgChange();
	ersObj.inputFocus();
	ersObj.sideCateMenu();
	ersObj.smoothScroll();
});


/* ErsCommonオブジェクト生成コンストラクタ */
var ErsCommon = function(){

	var that = {};

	/* ヘッダー部分・ようこそ表示
	 ---------------------------------------------------------------- */
	that.welcome = function(){
		var objNicknameDiv;		//nicknameが入るdivタグオブジェクト
		var strNickname;		//Nickname文字列

		//cookieからNicknameを取得
		try{
//			strNickname = ErsLib.UnescapeSJIS(ErsLib.getCookie()[sp_name]["nickname"]);
		}catch(e){
			return false
		}

		objNicknameDiv = $("#ERS_header h2 span");
		if(strNickname !=  "" && objNicknameDiv.size() != 0){
			objNicknameDiv.html("ようこそ！　" + strNickname + "&nbsp;さん！");
		}
	}

	/* ロールオーバーイメージ表示
	 ---------------------------------------------------------------- */
	that.imgChange = function(){
		var img_out; //mouseout時のsrc属性を格納
		var img_in; //mouseover時のsrc属性を格納
		var objChangeImg = $(".change");
		var hoverDom = {	//マウスオーバーされているDOM要素
			"tarDom":"",
			"img_out":""
		};

		objChangeImg.hover(function(){
			//mouseover時の処理
			img_out = $(this).attr("src");
			img_in = img_out.replace("_off.gif","_on.gif");
			$(this).attr("src",img_in);
			hoverDom = {
				"tarDom":$(this),
				"img_out":img_out
			};
		},
		function(){
			//mouseout時の処理
			$(this).attr("src",img_out);
		});

		//ページ移動時にロールオーバーを戻す
		$(window).unload(function(){
			//ブラウザバックの時にエラーになるため、try〜catch
			try{
				hoverDom["tarDom"].attr("src",hoverDom["img_out"]);
			}catch(e){
				//何もしない
			}
		});
	}

	/* inputフォーカス時に背景色変更
	 ---------------------------------------------------------------- */
	that.inputFocus = function(){
		var bgColor = "#ffF4e1"
		var tarDom = $("input[type='text'],input[type='password'],textarea");

		tarDom.focus(function(){
			$(this).css("backgroundColor",bgColor);
		});

		tarDom.blur(function(){
			//EFOで制御するため、コメントアウト
			// $(this).css("backgroundColor","");
		});
	}

	/* sidemenuカテゴリプルダウン
	 ---------------------------------------------------------------- */
	that.sideCateMenu = function(){

		$("div[id^=cate1]").each(function(){
			$("[href="+ $(this).attr("id") + "] img").css("display","inline");
		});

		$(".btn a").click(function(){
			var tarId = $(this).attr("href");
			var domImg = $("img",$(this));

			if($(".menu_on",$(this).parent()).size() === 1){
				//すでに開いてる場合は閉じるのみ
				$("#" + tarId).slideUp("normal").removeClass("menu_on");
				$(this).removeClass("menu_on");

				//アイコン画像の置換
				var imgSrc = domImg.attr("src").replace("_on.gif",".gif");
				domImg.attr("src",imgSrc);

			}else{
				//いったんすべて閉じる
				$("[id^=cate1_]").slideUp("normal").removeClass("menu_on");
				$(".btn a img").each(function(){
					$(this).attr("src",$(this).attr("src").replace("_on.gif",".gif"))
				})


				//開く
				$(this).addClass("menu_on");
				$("#" + tarId).slideDown("normal").addClass("menu_on");
				//アイコン画像の置換
				var imgSrc = domImg.attr("src").replace(".gif","_on.gif");
				domImg.attr("src",imgSrc);
			}

			return false;
		})


	}

	/* スムーススクロール
	 ---------------------------------------------------------------- */
	that.smoothScroll = function(){
		var a_list = $("a[href^='#']").click(function(e){
			var end = $(this).attr("href");
			ahead = end.substr(1);
			start_scroll(ahead);
			return false;
		});

		function start_scroll(end){
			//出発地、到着地の要素取得
			var end_posi;
			try{
				end_posi = $("#" + end).get(0);
			}catch(e){
				try{
					end_posi = $("@name=" + end).get(0);
				}catch(e){
					return false;
				}
			}

			//出発地、到着地の座標取得処理
			var start_co;
			var screen_size;
			var doc_height = document.body.offsetHeight;
			var end_co = end_posi.offsetTop;

			if(ErsLib.isIE()){ // IE判別
				start_co = document.documentElement.scrollTop;
				screen_size = document.documentElement.clientHeight;
			}
			else{
				start_co = window.pageYOffset;
				screen_size = window.innerHeight;
			}
		
			if(doc_height - end_co < screen_size){
				end_co = doc_height - screen_size;
			}

			var sabun = end_co - start_co;
			if(sabun == 0) return false;

			//スクロールスピードとかの設定
			var speed = Math.round(sabun/10);//スクロールスピードの設定
			var riding = Math.round(sabun*1/2);//着地の設定
			var scroll = window.scrollBy;
			var page_ck; //ページ下まで行った時のチェック用
			var doc_ele = document.documentElement;
			// マウス操作でスクロールストップ
				if (window.addEventListener) window.addEventListener("DOMMouseScroll", scroll_stop , false);
				window.onmousewheel = document.onmousewheel = scroll_stop;
				function scroll_stop(){
					window.clearInterval(scroll_trigger);
				}

			// スクロールスタートのトリガー
			if(sabun<0){ // 下から上へ移動する場合
				if(ErsLib.isIE()){ // IE用処理
					var scroll_trigger = setInterval(up_timer_ie,2);
				}
				else{
					var scroll_trigger = setInterval(up_timer,2);
				}
			}
			else{ // 上から下へ移動する場合
				if(ErsLib.isIE()){ // IE用処理
					var scroll_trigger = setInterval(bottom_timer_ie,2);
				}
				else{
					window.clearInterval(scroll_trigger);
					var scroll_trigger = setInterval(bottom_timer,2);
				}
			}

			// スクロールさせる関数
			// 下から上へスクロールさせる場合（InternetEXplorer用）
			function up_timer_ie(){ // 
				if(end_co - doc_ele.scrollTop < riding){
					scroll(0,speed);
				}
				else if((end_co - doc_ele.scrollTop)/10 < -1){
					scroll(0,(end_co - doc_ele.scrollTop)/10);
				}
				else{
					scroll(0,-1);
					if(end_co - doc_ele.scrollTop == 0)window.clearInterval(scroll_trigger);
				}
			}

			// 下から上へスクロールさせる場合（IE以外のモダンブラウザ用）
			function up_timer(){
				if(end_co - window.pageYOffset < riding){
					scroll(0,speed);
				}
				else if((end_co - window.pageYOffset)/10 < -1){
					scroll(0,(end_co - window.pageYOffset)/10);
				}
				else{
					scroll(0,-1);
					if(end_co - window.pageYOffset == 0)window.clearInterval(scroll_trigger);
				}
			}

			// 上から下へスクロールさせる場合（InternetEXplorer用）
			function bottom_timer_ie(){
				if(end_co - doc_ele.scrollTop > riding){
					page_ck =end_co - doc_ele.scrollTop;
					scroll(0,speed);
					if(page_ck == end_co - doc_ele.scrollTop)window.clearInterval(scroll_trigger);
				}
				else if((end_co - doc_ele.scrollTop)/10 > 1){
					page_ck =end_co - doc_ele.scrollTop;
					scroll(0,page_ck/10);
					if(page_ck == end_co - doc_ele.scrollTop)window.clearInterval(scroll_trigger);
				}
				else{
					scroll(0,1);
					if(end_co - doc_ele.scrollTop == 0)window.clearInterval(scroll_trigger);
				}
			}

			// 上から下へスクロールさせる場合（IE以外のモダンブラウザ用）
			function bottom_timer(){
				if(end_co - window.pageYOffset > riding){
					page_ck =end_co - window.pageYOffset;
					scroll(0,speed);
					if(page_ck == end_co - window.pageYOffset)window.clearInterval(scroll_trigger);
				}
				else if((end_co - window.pageYOffset)/10 > 1){
					page_ck =end_co - window.pageYOffset;
					scroll(0,page_ck/10);
					if(page_ck == end_co - window.pageYOffset)window.clearInterval(scroll_trigger);
				}
				else{
					scroll(0,1);
					if(end_co - window.pageYOffset == 0)window.clearInterval(scroll_trigger);
				}
			}
		}
	}

	return that;

}


