//=========================================================================
// INCOM-WEB JavaScript
//=========================================================================

    //--------------------------------------------------------------
    // 関数名   ：createRandomString
    // 機能     ：現在日付を文字列にしランダムな文字列を作成する
    // 引数     ：なし
    // 戻り値   ：文字列
    // 備考     ：キャッシュ対策。 URLの後ろに付加する。
    // 注意事項 ：
    //--------------------------------------------------------------
    function createRandomString()
    {
        return Date.parse(Date());
    }
	function alertRetry()
	{
		alert("ページがすべて表示されてから、やり直してください");
	}
    //--------------------------------------------------------------
    // 関数名   ：forwardPage
    // 機能     ：ページを呼ぶ(キャッシュ対策文字列を付加して)
    // 引数     ：なし
    // 戻り値   ：なし
    // 備考     ：
    // 注意事項 ：
    //--------------------------------------------------------------
    function forwardPage(page)
    {
        var delimit = (page.indexOf("?") == -1) ? "?" : "&";
        location.href = page + delimit + createRandomString();
    }

    //--------------------------------------------------------------
    // 関数名   ：addRandomString
    // 機能     ：ページを呼ぶ(キャッシュ対策文字列を付加して)
    // 引数     ：frm フォーム
    // 戻り値   ：なし
    // 備考     ：
    // 注意事項 ：POST時にしか使えません onsubmitで呼んでください。
    //--------------------------------------------------------------
    function addRandomString(frm)
    {
        var delimit = (frm.action.indexOf("?") == -1) ? "?" : "&";
        frm.action += delimit + createRandomString();
    }

	//--------------------------------------------------------------
	// 関数名   ：changeClass
	// 機能     ：指定したオブジェクトのCLASSを変更する
	// 引数     ：obj オブジェクト className クラス名
	// 戻り値   ：なし
	// 備考     ：
	// 注意事項 ：
    //--------------------------------------------------------------
	function changeClass(obj, className)
	{
		obj.className = className;
	}

	//--------------------------------------------------------------
	// 関数名   ：changeMenuTab
	// 機能     ：各画面の左部 の メニューへ遷移するタブのスタイル変更用
	// 引数     ：obj TAB自身(TABLEのTD) className クラス名(各機能に割り当てられたスタイル)
	// 戻り値   ：なし
	// 備考     ：
	// 注意事項 ：
    //--------------------------------------------------------------
	function changeMenuTab(obj, className, flag)
	{
		obj.className = className;
		obj.id = (flag) ? "MENU_TAB_ACTIVE" : "MENU_TAB";
	}

	//--------------------------------------------------------------
	// 関数名   ：openShowModalDialog
	// 機能     ：モーダルダイアログを開きます。
	// 引数     ：src 開きたいページ win - windowオブジェクト, width - ダイアログ幅 height - ダイアログ高さ
	// 戻り値   ：daialog
	// 備考     ：
	// 注意事項 ：
	//--------------------------------------------------------------
	function openShowModalDialog(src, win, obj, width, height)
	{
		var w = window;
		if(win != null)
		{
			w = win;
		}
		var jspPath = getRoot() + "/Frame.jsp?src=" + encodeURL(src) + "&";
		jspPath += createRandomString();
		var style = "resizable:yes; status:no;";
		style += "dialogheight:" + height + "px; dialogwidth:" + width + "px;"

		return w.showModalDialog(jspPath, obj, style);
    }

	//--------------------------------------------------------------
	// 関数名   ：getRoot()
	// 機能     ：現在URLからJSPのルートを返す(コンテキストパス)
	// 引数     ：
	// 戻り値   ：文字列
	// 備考     ：
	// 注意事項 ：現在URLがincom-web内のサイトでない場合は正しい文字列を返しません
	//--------------------------------------------------------------
	function getRoot()
	{
		// 現在のルートからJSPのルートを作成する
		var rootPath = window.location.toString();
		var subStr = (rootPath.indexOf("/servlet") != -1) ? "/servlet" : "/";
		var endIndex = rootPath.lastIndexOf(subStr);
		rootPath = rootPath.substring(0, endIndex);
		return rootPath;
	}

	//--------------------------------------------------------------
	// 関数名   ：encodeURL
	// 機能     ：文字列をURL用にエンコードする
	// 引数     ：
	// 戻り値   ：エンコード済み文字列
	// 備考     ：
	// 注意事項 ：
	//--------------------------------------------------------------
	function encodeURL(str)
	{
		var i, s, u;
		var encodeStr = "";				// エンコード文字列格納用

		for (i = 0; i < str.length; i++)
		{	// scan the source
			s = str.charAt(i);
			u = str.charCodeAt(i);			// 文字コード取得

			// スペース(ブランク)を "+" に変換
			if (s == " ")
			{
				encodeStr += "+";
			}
			else
			{
				// エスケープが必要かどうか判断する
				if ( u == 0x2a || u == 0x2d || u == 0x2e || u == 0x5f ||
					((u >= 0x30) && (u <= 0x39)) || ((u >= 0x41) && (u <= 0x5a)) ||
					((u >= 0x61) && (u <= 0x7a)))
				{
					encodeStr = encodeStr + s;			// エスケープは必要なし
				}
				else
				{
					// エスケープ
					if ((u >= 0x0) && (u <= 0x7f))
					{	// single byte format
						s = "0"+u.toString(16);
						encodeStr += "%"+ s.substr(s.length-2);
					}
					else if (u > 0x1fffff)
					{	// quaternary byte format (extended)
						encodeStr += "%" + (oxf0 + ((u & 0x1c0000) >> 18)).toString(16);
						encodeStr += "%" + (0x80 + ((u & 0x3f000) >> 12)).toString(16);
						encodeStr += "%" + (0x80 + ((u & 0xfc0) >> 6)).toString(16);
						encodeStr += "%" + (0x80 + (u & 0x3f)).toString(16);
					}
					else if (u > 0x7ff)
					{	// triple byte format
						encodeStr += "%" + (0xe0 + ((u & 0xf000) >> 12)).toString(16);
						encodeStr += "%" + (0x80 + ((u & 0xfc0) >> 6)).toString(16);
						encodeStr += "%" + (0x80 + (u & 0x3f)).toString(16);
					}
					else
					{	// double byte format
						encodeStr += "%" + (0xc0 + ((u & 0x7c0) >> 6)).toString(16);
						encodeStr += "%" + (0x80 + (u & 0x3f)).toString(16);
					}
				}
			}
		}
		return encodeStr;
	}


    function byteCheck(obj, max, itemName)
    {
        var i, work2;
		var count = 0;
		var work1 = obj.value;

        for(i = 0; i < work1.length; i++)
        {
            work2 = work1.charAt(i);
            count += (work2 >= "　" && work2 <= "〜") ? 2 : 1;
        }
        if(count > max)
		{
			alert(itemName + "は " + max + "文字以内 にしてください");
			return false;
		}
		return true;
    }