﻿// URL指定のプレフィックス(テスト環境のみ"/dstar-test")
var url_pre = '';

var jsId = 0;

// HTMLのヘッダ部にjavascriptを強引に吊る処理
function loadFile(fileName){
    var elementScript = document.createElement("script");

    document.acsync = false;
    elementScript.id = "forDynamicJSFileLoad" + jsId++;  // ID名は一意であれば何でもよい
    elementScript.src = fileName;
    elementScript.type= "text/javascript";
    elementScript.charset = "utf-8";
    document.getElementsByTagName("head").item(0).appendChild(elementScript);
}

//XMLHttpRequestオブジェクト生成
function createHttpRequest() {
    //Win ie用
    if(window.ActiveXObject){
        try {
            //MSXML2以降用
            return new ActiveXObject("Msxml2.XMLHTTP") //[1]'
        } catch (e) {
            try {
                //旧MSXML用
                return new ActiveXObject("Microsoft.XMLHTTP") //[1]'
            } catch (e2) {
                return null
            }
        }
    } else if(window.XMLHttpRequest){
        //Win ie以外のXMLHttpRequestオブジェクト実装ブラウザ用
        return new XMLHttpRequest() //[1]'
    } else {
        return null
    }
}

//シンプルにリクエストを送ってJSを貰う処理
function sendSimpleRequest(filePath,callbackFunction,async) {
    var request = createHttpRequest();

    if (arguments.length == 2) {
        async = true;
    }

   //指定のファイルを読み込みます
    request.open("GET", filePath , async);

    var param = new Array();
    if (arguments.length > 3) {
        for (var i=3; i<arguments.length; i++) {
            param[i-3] = arguments[i];
        }
    }

    // 呼び先でこのオブジェクトの事を判断する。
    request.onreadystatechange = function() {
      if (request.readyState == 4) {
        // 呼び戻し処理
        callbackFunction(request,param);
      }
    }
    request.send(null);

	// 同期通信時は、onreadystatechangeが発生しないので
	// 直接callbackFunctionを実行する
	if (!async) {
		callbackFunction(request,param);
	}
}

// Safari 対策のXMLパース
function jsonParse(req) {
	var text = req.responseText;
	// Safari対策
/*
	if ( navigator.appVersion.indexOf( "KHTML" ) > -1 ) {
		var esc = escape( text );
		if ( esc.indexOf("%u") < 0 && esc.indexOf("%") > -1 ) {
			text = decodeURIComponent( esc );
		}
	}
*/
	return eval(text);
}

// onloadに指定の処理をattachする処理
function addOnload(func) {
	if(window.attachEvent) {
		window.attachEvent("onload", func);
		return true;
	} else if(window.addEventListener) {
		window.addEventListener("load",func,false);
		return true;
	}

	return false;
}

// あるINPUT項目のイベントに指定の処理をattachする処理
var objFuncMap = {
	"onfocus"    : "focus",
	"onblur"     : "blur",
	"onclick"    : "click",
	"onselect"   : "select",
	"onchange"   : "change",
	"onkeydown"  : "keydown",
	"onkeyup"    : "keyup",
	"onkeypress" : "keypress"
}
function addOnEvent(obj, name, func) {
	// 必ず小文字
	name = name.toLowerCase();

	if(obj.attachEvent) {
		obj.attachEvent(name, func);
		return true;
	} else if(obj.addEventListener) {
		obj.addEventListener(objFuncMap[name], func, false);
		return true;
	}

	return false;
}

// objに指定したフォームに表示制御を付与する処理
function investIndicate(obj,objType) {
	// 指定なしの場合はHTMLのまんまで
	if (typeof(objType) == "undefined" && (obj.type)) { 
		objType = obj.type;
	}
	// 付与出来ないタイプのオブジェクトは弾く。
	if (typeof(objType) == "undefined"
		&& objType != "text"
		&& objType != "textarea"
		&& objType != "password") {
		return;
	}

	// フォーカス時の処理
	// IE と それ以外で処理を変える必要あり(IEのform.typeは読取専用)
	if (navigator.appName.indexOf("Microsoft") >= 0) {
		var classEmpty = obj.className;
		var classIntext  = classEmpty + "_f";

		obj.onfocus=function() {
			if (this.value == this.defaultValue) {
				this.value = '';
				if (objType == "password") {
					this.className = classIntext;
				}
			}
			this.style.color='#333';
		}

		// フォーカスアウト時の処理
		obj.onblur=function() {
			if (this.value == '') {
				this.value = this.defaultValue;
				if (objType == "password") {
					this.className = classEmpty;
				}
			}
			this.style.color='#999';
		}
	} else {
		obj.onfocus=function() {
			if (this.value == this.defaultValue) {
				this.value = '';
				if (objType == "password") {
					obj.type = "password";
				}
			}
			this.style.color='#333';
		}

		// フォーカスアウト時の処理
		obj.onblur=function() {
			if (this.value == '') {
				this.value = this.defaultValue;
				if (objType == "password") {
					obj.type = "text";
				}
			}
			this.style.color='#999';
		}
	}
}

////////////////////////////////////////////////////////////
// ディーナビXMLApiと通信するための処理クラス
////////////////////////////////////////////////////////////
function DnaviApi(){};
DnaviApi.prototype =
{
	url : "",
	xml : "",
	loading  : function(){},
	complete : function(){},

	send : function (){
		var request = createHttpRequest();
		var loading = this.loading;
		var complete = this.complete;

		//呼び先URLを指定します
		request.open("POST", this.url , true);

		// 呼び先でこのオブジェクトの事を判断する。
		request.onreadystatechange = function() {
			if (request.readyState == 1) {
				// 呼び出し開始
				loading(request);
			} else if (request.readyState == 4) {
				// 呼び戻し処理
				complete(request);
			}
		}
		request.send(this.xml);
	}
}
////////////////////////////////////////////////////////////
// JSONをXMLに変換
function parseNestedJSON(json) {
	var rtnVal = "";
	var tag = "";

	for (tag in json) {
		if (json[tag] != "" ) {
			rtnVal += "<" + tag + ">";
			if (json[tag] instanceof Array) {
				var tmpJson = json[tag];
				for (i=0; i <  tmpJson.length; i++) {
					rtnVal += parseNestedJSON(tmpJson[i]);
				}
			} else {
				rtnVal += json[tag];
			}
			rtnVal += "</" + tag + ">";
		}
	}

	return rtnVal;
}
////////////////////////////////////////////////////////////

//企業管理ページのフォーム用の背景色変更処理
function companyFocus(obj){
	obj.style.backgroundColor = "#F8FAFB";
}

function companyBlur(obj){
	obj.style.backgroundColor = "#FFFFFF";
}
