﻿/*
 * FaithCreates JavaScript 共通ライブラリ
 */

var FCLibrary = (function() {
  // 公開関数
  var public = {
    // img のホバー画像を設定します。
    // @targetSelector : img 要素を選択するためのセレクタ
    // @overImagePath : マウスオーバーの時に表示する画像のパス
    // @outImagePath : マウスアウトの時に表示する画像のパス
    //                 省略可能。省略した場合は現在の src パスを使用する。
    hoverImg : function(targetSelector, overImagePath, outImagePath) {
      var target = $(targetSelector);

      if (outImagePath === undefined || outImagePath === null || outImagePath === "") {
        outImagePath = target.attr("src");
      }

      private.hoverImage(target,
                         function(target, url) {
                           target.attr("src", url);
                         },
                         overImagePath, outImagePath);
    },

    // HTML 要素の背景画像を使用してホバー画像を設定します。
    // @targetSelector : HTML 要素を選択するためのセレクタ
    // @overImagePath : マウスオーバーの時に表示する画像のパス
    // @outImagePath : マウスアウトの時に表示する画像のパス
    //                 省略可能。省略した場合は現在指定されている背景画像を使用する。
    hoverBackground : function(targetSelector, overImagePath, outImagePath) {
      var target = $(targetSelector);

      if (outImagePath === undefined || outImagePath === null || outImagePath === "") {
        // マウスアウト画像が指定されていない場合、
        // 現在設定されている画像 URL を取得する
        outImagePath =
          target.css("background-image").replace(/^.*?url\("([^"]+)"\).*$/, "$1");
      }

      private.hoverImage(target,
                         function(target, url) {
                           target.css("background-image", "url(" + url + ")");
                         },
                         overImagePath, outImagePath);
    },

    // 整数の文字列を整数値に変換する。
    // 変換できない場合は null を返す。
    stringToInt : function(intString) {
      var ret = null;
      intString = jQuery.trim(intString);

      if (intString.match(/^-?[0-9]+$/)) {
        ret = parseInt(intString, 10);

        if (isNaN(ret)) {
          ret = null;
        }
      }

      return ret;
    },

    // 小数の文字列を小数値に変換する。
    // 変換できない場合は null を返す。
    stringToFloat : function(floatString) {
      var ret = null;
      floatString = jQuery.trim(floatString);

      if (floatString.match(/^-?[0-9.]+$/)) {
        ret = parseFloat(floatString);

        if (isNaN(ret)) {
          ret = null;
        }
      }

      return ret;
    }

  };

  // 非公開関数
  var private = {
    // ホバー画像を設定します。
    // @target : ホバー画像を設定する対象となる jQery オブジェクト
    // @imageSetter : 画像を指定するための関数
    //                第一引数 : 設定対象, 第二引数 : 設定する画像パス
    // @overImagePath : マウスオーバーの時に表示する画像のパス
    // @outImagePath : マウスアウトの時に表示する画像のパス
    hoverImage : function(target, imageSetter, overImagePath, outImagePath) {
      target.hover(
        // over
        function() {
          imageSetter(target, overImagePath);
        },

        // out
        function() {
          imageSetter(target, outImagePath);
        }
      );
    }

  };

  return public;
})();


