
// ログイン処理
var xmlHttp_login;
var url_login;
var url_logout;
var url_check;
var data_cname;
var data_cdate;
var data_cname2;
var data_cdate2;
var data_cname3;

/*
 *  ブラウザ互換を持たせたキーコードの取得
 */
function getKeyCode(e){
	if(document.all)
			return  e.keyCode;
	else if(document.getElementById) 
			return (e.keyCode)? e.keyCode: e.charCode;
	else if(document.layers)
			return  e.which;
}

// cookieの設定
function SetCookieLo(name, value, days) {

	// ローカルパスの取得
	/*
	var strLocal = location.pathname;
	var arrLocal = strLocal.split("/");
	var strPath = "";
	for(var i = 1; i < arrLocal.length && i < 2; i++){
		strPath = strPath + "/" + arrLocal[i];
	}
	strPath = strPath + "/";
	*/

	var strDomain = location.hostname;
	
	// 日刊薬業
	var strPath_nk = "/servlet/";
	// Yakugyo Jiho
	var strPath_yj = "/servlet/";

	//alert(strDomain);
	var arrDomain = strDomain.split(".");
	var strCookieDomain = "";

	
	if (arrDomain.length > 2) {
		strPath_nk += "nk";
		strPath_yj += "yj";
		for(var i = 1; i < arrDomain.length; i++){
			if (i == 1)
				strCookieDomain = arrDomain[i];
			else
				strCookieDomain = strCookieDomain + "." + arrDomain[i];
		}
	}
	
	//alert(strCookieDomain);

	// 形式の変更
	var date = new Date();
	date.setTime(date.getTime() + days*1000);
	days = date.toGMTString();
	
	// jhcs03など、.が足りないと、Domainを指定しても登録してくれない
	// .は2つ以上必要。

	var			temp = name + "=" + value;
	if(days)	temp += "; expires=" + days;
	temp += "; path=" + strPath_nk;
	document.cookie = temp;

	var			temp = name + "=" + value;
	if(days)	temp += "; expires=" + days;
	if(strCookieDomain) temp += "; domain=" + strCookieDomain;
	temp += "; path=" + strPath_yj;

	document.cookie = temp;
	//alert(temp);
}

// cookieの設定
function SetCookieFt(name, value) {
	// 日付の取得
	var dtmDate = new Date();
	if(dtmDate.getHours() >= 5){
		dtmDate.setDate(dtmDate.getDate() + 1);
	}
	dtmDate.setHours(5);
	dtmDate.setMinutes(0);
	dtmDate.setSeconds(0);

	/*
	// ローカルパスの取得
	// 1パスまで有効
	var strLocal = location.pathname;
	//alert(strLocal);
	var arrLocal = strLocal.split("/");
	var strPath = "";
	for(var i = 1; i < arrLocal.length && i < 2; i++){
		strPath = strPath + "/" + arrLocal[i];
	}
	strPath = strPath + "/";
	*/

	// 日刊薬業
	var strPath = "/servlet/nk";
	
	// 形式の変更
	days = dtmDate.toGMTString();

	var			temp = name + "=" + value;
	if(days)	temp += "; expires=" + days;
	temp += "; path=" + strPath;
	document.cookie = temp;

}

// ログインチェックURLの取得
function getCheckUrl(url,cname,cdate,cname2,cdate2,cname3){
	url_check = url;
	data_cname = cname;
	data_cdate = cdate;
	data_cname2 = cname2;
	data_cdate2 = cdate2;
	data_cname3 = cname3;
}

function openLoginForm(urlin, urlout) {
	// 遷移先のURLを保持
	url_login = urlin;
	url_logout = urlout;

	// IE6 の場合はスクロールを無効にする
	if (isIE6) {
		$("body","html").css({
			"height": "100%", 
			"width": "100%"
		});
		$("html").css("overflow","hidden");

		// 親HTMLにSELECTがある場合は、表示を隠す（IEのバグ対応）
		$("select").css("visibility","hidden");
	}

	if (!obScreen) {
		obScreen = document.createElement("div");
		obScreen.id = SCREEN_ID;
		$("body").append(obScreen);
	}

	if (!obForm) {
		obForm = document.createElement("div");
		obForm.id = FORM_ID;
		$("body").append(obForm);
		$(obForm).attr("class", "overlayform");
	} else {
		// 回覧フォームから呼び出された場合。
		obForm.id = FORM_ID;
	}

	var html = "<div class='header'></div>";
	html += "<div class='body'>";
	html += "<h2>ログイン</h2>";
	html += "<form name='loginform'>";
	html += "<p class='loginerror'></p>";
	html += "<p class='name'>";
	html += "<label for='loginname'>ログインID</label>";
	html += "<input type='text' id='loginname' name='loginname' value='' onfocus='this.select();' />";
	html += "</p>";
	html += "<p class='password'>";
	html += "<label for='loginpass'>パスワード</label>";
	html += "<input type='password' id='loginpass' name='loginpass' value='' onfocus='this.select();' />";
	html += "</p>";
	html += "<p class='auto'>";
	html += "<input type='checkbox' id='chkAuto' name='chkAuto' value='' /><label for='chkAuto'>次回から自動的にログインする</label>";
	html += "</p>";
	html += "<p class='button'>";
	//html += "<a href='javascript:loadLoginData(document.loginform.loginname.value, document.loginform.loginpass.value, document.loginform.chkAuto.checked);' class='loginBtn'>ログインする</a>";
	html += "<a href='javascript:void(0);' class='loginBtn' onClick='return loadLoginData(document.loginform.loginname.value, document.loginform.loginpass.value, document.loginform.chkAuto.checked);' >ログインする</a>";
	html += "<a href='javascript:startReminder();'>&raquo;&nbsp;パスワードを忘れた方はこちら</a>";
	html += "</p>";
	html += "</form>";
	html += "</div>";
	html += "<div class='footer'></div>";
	html += "<a id='overlayclosebtn' href='javascript:closeLoginForm()'>閉じる</a>";

	$(obForm).html(html);

	var formHeight = $(obForm)[0].offsetHeight;
	var setHeight = "";
	if (isIE6) {
		var srl = getScrollPosition();
		setHeight = (srl.y - Math.floor(formHeight / 2)) + "px";
	} else {
		setHeight = "-" + Math.floor(formHeight / 2) + "px";
	}
	$(obForm).css({"margin-top": setHeight, "visibility": "visible"});

	// 背景部にクリックイベントを付加する
	$(obScreen).click(function() {
		closeLoginForm();
	});
	
	// 入力箇所にキー押下イベントを付加する
	$("#loginname").keydown(function(e) {
	 	e = e || window.event;
	 	if(getKeyCode(e)==13){ // リターンキー
			loadLoginData(document.loginform.loginname.value,
					document.loginform.loginpass.value,
					document.loginform.chkAuto.checked);
			return false;
		}	
	});
	$("#loginpass").keydown(function(e) {
	 	e = e || window.event;
	 	if(getKeyCode(e)==13){ // リターンキー
			loadLoginData(document.loginform.loginname.value,
					document.loginform.loginpass.value,
					document.loginform.chkAuto.checked);
			return false;
		}	
	});

	$("#loginname")[0].focus();
}

// 二重リクエストチェックフラグ
var wr = false;
function OnFlgReq(){
	wr = true;
}
function OffFlgReq(){
	wr = false;
}

function loadLoginData(login_id, login_pass, check_box){

	// 二重リクエストチェック
	if(wr){
		return false;
	}
	OnFlgReq();

	var login_id = $("#loginname").val();
	var login_pass = $("#loginpass").val();

	if(login_id == ""){
		// idのチェック
		failureLogin("ログインIDを入力してください。");
		$("#loginname")[0].focus();
		OffFlgReq();
		return false;
	} else if(login_pass == ""){
		// passwordのチェック
		failureLogin("パスワードを入力してください。");
		$("#loginpass")[0].focus();
		OffFlgReq();
		return false;
	}

	failureLogin("ログイン中...");

	// ブラウザに対応したオブジェクトを取得
	xmlHttp_login = null;
	if(window.XMLHttpRequest){
		xmlHttp_login = new XMLHttpRequest();
	}else if(window.ActiveXObject){
		try{
			xmlHttp_login = new ActiveXObject("Msxml2.XMLHTTP");
		}catch(e){
			xmlHttp_login = new ActiveXObject("Microsoft.XMLHTTP");
		}
	}

	// オブジェクトの取得のチェック
	if(xmlHttp_login != null) {
		// URLの作成
		//var strReqUrl = url_check + "?" + "post_login_id=" + login_id + "&post_login_pass=" + login_pass + "&post_check_box=" + check_box;
		var strReqUrl = url_check;
		//strReqUrl = strReqUrl.replace("?", "/?");

		// 乱数の作成
		var numRand = Math.floor(Math.random() * 100000);
		var strRand = "";
		if(numRand < 10){
			strRand = "00000" + numRand;
		}else if(numRand < 100){
			strRand = "0000" + numRand;
		}else if(numRand < 1000){
			strRand = "000" + numRand;
		}else if(numRand < 10000){
			strRand = "00" + numRand;
		}else if(numRand < 100000){
			strRand = "0" + numRand;
		}else{
			strRand = "" + numRand;
		}
		// ダミーパラメータの付与
		strReqUrl += "&dparam=" + strRand;

		// データ取得完了時のイベント設定
		xmlHttp_login.onreadystatechange = eventLoginData;
		xmlHttp_login.open("POST", strReqUrl, true);
		xmlHttp_login.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded; charset=UTF-8'); 
		xmlHttp_login.send("post_login_id=" + login_id + "&post_login_pass=" + login_pass + "&post_check_box=" + check_box);
		//xmlHttp_login.open("GET", strReqUrl, true);
		//xmlHttp_login.send(null);
	}else{
		failureLogin("サーバーとの通信に失敗しました。");
		OffFlgReq();
		return false;
	}
	
	/*
	// URLの作成
	//var strReqUrl = url_check + "?" + "post_login_id=" + login_id + "&post_login_pass=" + login_pass + "&post_check_box=" + check_box;
	var strReqUrl = url_check;
	strReqUrl = strReqUrl.replace("?", "/?");

	// サーバーとXML通信を行う。
	$.ajax({ 
		url:		strReqUrl,
		type:	   'POST',
		dataType:   'xml',
		timeout:	connectTimeout,
		data:	   "post_login_id=" + login_id  + 
					"&post_login_pass=" + login_pass + 
					"&post_check_box=" + check_box,
		success: function(xml) {	// POSTに成功した場合の処理
			var getCode = "";
			var getMess = "";
			$(xml).find('code').each(function() {
				getCode = $(this).text();
			});
			$(xml).find('message').each(function() {
				getMess = $(this).text();
			});
			dipslayReminderResult(getCode, getMess);
		},
		error: function() {	// POSTに失敗した場合の処理
			failureLogin("サーバーとの通信に失敗しました。");
			OffFlgReq();
		}
	});
	*/
}

// データの取得完了時
function eventLoginData(){
	// データの取得が完了した場合
	if (xmlHttp_login.readyState == 4 && xmlHttp_login.status == 200){

		xotree = new XML.ObjTree();
		xml = xmlHttp_login.responseText;
		tree = xotree.parseXML(xml);
		if(tree.login_data.login_result == "0"){

			// 期限の設定
			var strDate = "";
			if(tree.login_data.cookie_del == "true"){
				strDate = "0";
			}else{
				strDate = data_cdate;
			}
			if(tree.login_data.cookie_id != undefined){
				// クッキーの設定
				SetCookieLo(data_cname,tree.login_data.cookie_id,strDate);
			}

			if(tree.login_data.ticket_id != undefined){
				// クッキーの設定
				SetCookieLo(data_cname2,tree.login_data.ticket_id,data_cdate2);
			}

			successLogin();
		}else{
			if(tree.login_data.cookie_fcnt != undefined){
				// クッキーの設定
				SetCookieFt(data_cname3,tree.login_data.cookie_fcnt);
			}

			failureLogin("ログインに失敗しました。");
			OffFlgReq();
		}
	}
}

// ログイン成功時の処理
function successLogin(){
	//alert("ログインに成功しました。");
	closeLoginForm();
	window.open(url_login, '_self');
//	window.location.reload(true);	//ページをリロード
}

// ログイン失敗時の処理
function failureLogin(message){
	//alert("ログインに失敗しました。");
	//closeLoginForm();
	//window.open(url_logout, '_self');
	$(".loginerror", ".body").html(message);
	$("#loginname")[0].blur(); //　フォーカス済みの場合を考えて一旦はずす
	$("#loginname")[0].focus();
}

// ログアウト処理
var xmlHttp_logout;
var url_logout_logout;
var url_logout_check;
var data_cnameOut;

// ログアウトURLの取得
function setLogoutUrl(url,cname){
	url_logout_check = url;
	data_cnameOut = cname;
}

// ログアウト処理
function loadLogoutData(urlout){
	// ログアウト後のURL
	url_logout_logout = urlout;

	// ブラウザに対応したオブジェクトを取得
	xmlHttp_logout = null;
	if(window.XMLHttpRequest){
		xmlHttp_logout = new XMLHttpRequest();
	}else if(window.ActiveXObject){
		try{
			xmlHttp_logout = new ActiveXObject("Msxml2.XMLHTTP");
		}catch(e){
			xmlHttp_logout = new ActiveXObject("Microsoft.XMLHTTP");
		}
	}

	// オブジェクトの取得のチェック
	if(xmlHttp_logout != null) {
		// URLの作成
		var strReqUrl = url_logout_check;

		// 乱数の作成
/*
		var numRand = Math.floor(Math.random() * 100000);
		var strRand = "";
		if(numRand < 10){
			strRand = "00000" + numRand;
		}else if(numRand < 100){
			strRand = "0000" + numRand;
		}else if(numRand < 1000){
			strRand = "000" + numRand;
		}else if(numRand < 10000){
			strRand = "00" + numRand;
		}else if(numRand < 100000){
			strRand = "0" + numRand;
		}else{
			strRand = "" + numRand;
		}
*/
		// ダミーパラメータの付与
//		strReqUrl += "?dparam=" + strRand;

		// データ取得完了時のイベント設定
		xmlHttp_logout.onreadystatechange = eventLogoutData;
		xmlHttp_logout.open("POST", strReqUrl, true);
		xmlHttp_logout.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded; charset=UTF-8'); 
		xmlHttp_logout.send("");
	}else{
		alert("error");
	}
}

// データの取得完了時
function eventLogoutData(){
	// データの取得が完了した場合
	if (xmlHttp_logout.readyState == 4 && xmlHttp_logout.status == 200){

		xotree = new XML.ObjTree();
		xml = xmlHttp_logout.responseText;
		tree = xotree.parseXML(xml);
		if(tree.logout_data.logout_result == "0"){
			successLogout();
		}else{
			failureLogout();
		}
	}
}

// ログアウト成功時の処理
function successLogout(){
	// クッキーの解放
	SetCookieLo(data_cnameOut,"","0");
	//alert("ログアウトしました。");
	window.open(url_logout_logout, '_self');
//	window.location.reload(true);	//ページをリロード
}

// ログアウト失敗時の処理
function failureLogout(){
	//alert("ログアウトに失敗しました。");
}

