/*
 * JavaScriptユーティリティメソッド
 * JavaScriptを使用するために必要な、ユーティリティ群及び
 *
 * このファイルの利用について
 * このファイルの内容は、個人利用・商用利用に関わらず、一部または全部を、
 * 自由に利用していただいてかまいません。
 * 但し、引用元の表示か、著作者が（有）ワイシステムクリエイトであることを
 * 示す、著作権表示を必ず行ってください。
 * また、このファイルの内容を利用した事により、何らかの不利益を被った場合
 * でも、（有）ワイシステムクリエイトは、一切保証できませんので、利用者ご
 * 自身の責任において、ご利用くださるようお願いします。
 *
 * Copyright (C) 2003-2005 Y System Create Corporation. All Rights Reserved.
 * $Id: com_yscjp_jsutilities.js,v 1.3 2005/04/30 01:36:18 bison Exp $
 */
/*
 * コンストラクタ
 */
function JsUtil() {}

/*
 * イベント取得
 * イベントハンドラに渡されたイベントを、Webブラウザによる違いを吸収し
 * コール元に返す。
 * 正しいイベントが取得できない場合は、例外を投げる。
 */
JsUtil.getTrueEvent = function (e) {

  var rtnEvent = null;

  if (e) {

    rtnEvent = e;
  }
  else {

    if (window.event) {

      rtnEvent = event;
    }
    else {

      throw new JsException("getTrueEvent");
    }
  }
  return rtnEvent;
}

/*
 * イベントソース取得
 * イベントハンドラに渡されたイベントから、イベントを発生させた
 * エレメントを取得し返す。
 * 正しいイベントが取得できない場合は、例外を投げる。
 */
JsUtil.getEventSource = function (e) {

  e = JsUtil.getTrueEvent(e);
  var rtnSource = null;

  if (e.target) {

    rtnSource = e.target;
  }
  else {

    if (e.srcElement) {

      rtnSource = e.srcElement;
    }
    else {

      throw new JsException("getTrueEvent");
    }
  }
  return rtnSource;
}

/*
 * 昇順(ASC)に並べ替えるための、コンペア関数
 * a : オブジェクト : 比較対照のオブジェクト
 * b : オブジェクト : 比較対照のオブジェクト
 */
JsUtil.compAscending = function (a, b) {

    return JsUtil.compCommon(a, b, -1, 1);
}


/*
 * 降順(DESC)に並べ替えるための、コンペア関数
 * a : オブジェクト : 比較対照のオブジェクト
 * b : オブジェクト : 比較対照のオブジェクト
 */
JsUtil.compDescending = function (a, b) {

    return JsUtil.compCommon(a, b, 1, -1);
}


/*
 * コンペア関数の本体
 * a : オブジェクト : 比較対照のオブジェクト
 * b : オブジェクト : 比較対照のオブジェクト
 * bigRtn : 数値 : a < b の時に返す値
 * littleRtn : 数値 : a > b の時に返す値
 */
JsUtil.compCommon = function (a, b, bigRtn, littleRtn) {


    var aStr = a.toString();
    var bStr = b.toString();

    if (aStr == bStr) {
        return 0;
    }
    else if (aStr < bStr) {
        return bigRtn;
    }
    else {
        return littleRtn;
    }
}

/*
 * 別ウィンドウを開いて、そこに指定のuriを読み込みます。
 */
JsUtil.loadUri2Window = function (uri) {
  window.open(uri, "_blank");
}

function JsException () {
}

JsUtil.onoffTable = new Object();
/**
 * 指定の要素を、表示/非表示します。
 * @param ID : 表示/非表示させる要素のID
 * @param 文字列 : 一番最初のアクセスで、指定要素を表示させるか
 *        非表示とするかの指定。
 *        "none"の場合は非表示、それ以外は表示する。
 */
JsUtil.onoff = function (id, display, imgId, noneUri, displayUrl) {

    var target = document.getElementById(id);
    var targetImg = document.getElementById(imgId);

    if (! target) {

        alert("IDに該当する要素が存在しません("+id+")");
        return;
    }

    if (! targetImg) {

        alert("IDに該当する要素が存在しません("+imgId+")");
        return;
    }

    if ("undefined" != typeof JsUtil.onoffTable[id]) {

        display = JsUtil.onoffTable[id];
    }

    var uri;

    if ("none" == display) {

        JsUtil.onoffTable[id] = "";
        uri = noneUri;
    }
    else {

        JsUtil.onoffTable[id] = "none";
        uri = displayUrl;
    }

    target.style.display = display;
    targetImg.src = uri;
}
