//スタイルシート読み込み
jQuery(function () {
var d = document;
var link = d.createElement('link');
link.href = '/css/alert.css';
link.rel = 'stylesheet';
link.type = 'text/css';
var h = d.getElementsByTagName('head')[0];
h.appendChild(link);
});
var overlay_class = 'overlay';
var alert_box = 'alert_box';
//ブラウザの中央にオリジナルのアラートを表示させる
//(GoogleChrome等では画面上部にアラートが出て気付きにくい為)
//mes:表示するメッセージ
//is_confirm:ConfirmかAlertか
//elm:クリックされた要素
//method:アラート処理後に実行したい関数
//メッセージ以外の引数は、必要ない場合は記述しなくても落ちないよう対応
function org_alert(mes, is_confirm, elm, method) {
//bodyへオーバーレイを挿入
if (jQuery('body').find('.' + overlay_class).length == 0)
jQuery('body').append("
");
jQuery('.' + overlay_class).css('display', 'block');
//。の後は改行を入れる
mes = mes.replace('。', '。
');
//アラートボックスを挿入
if (jQuery('body').find("." + alert_box).length == 0) {
jQuery('body').append("");
}
//既にアラートボックスがある場合はメッセージのみ変更
else {
jQuery('.' + alert_box).children('.mes')[0].innerHTML = mes;
//一旦ボタンを削除
jQuery('.' + alert_box).children('.button').remove();
}
if (is_confirm == true)
jQuery('.' + alert_box).append("はいいいえ
");
else
jQuery('.' + alert_box).append("はい");
//アラートボックスの表示位置を調整
changeStampAreaSize();
jQuery('.' + alert_box).css('display', 'block');
jQuery('.yes').bind('click', function () {
alert_end();
yes_function(elm, is_confirm, method);
});
//「いいえ」選択時の処理
jQuery('.no').bind('click', function () {
alert_end();
});
//キーボード押下時の処理
jQuery(window).keydown(function (e) {
//現在選択されているタブ
var select = jQuery('.' + alert_box).children('.button').children('.select');
//選択されているタブがYesかNoか
var is_yes = select[0].className.indexOf('yes') > -1;
//Enter押下時:現在選択されているタブを実行
//Enterキー→13、Escキー→27
if (e.keyCode === 13 || e.keyCode === 27) {
alert_end();
//「はい」選択時若しくはalert時の処理(alert時はEscキーを押してもYes押下時と同じ処理を行う)
if (is_confirm == false || (e.keyCode === 13 && is_yes))
yes_function(elm, is_confirm, method);
}
//Tab押下時:タブを切り替え
//Tabキー:9、←キー:37、→キー:39(alert時は切り替える必要がないのでconfirm時のみ実行)
else if ((e.keyCode === 9 || e.keyCode === 37 || e.keyCode === 39) && is_confirm) {
select.removeClass('select');
if (is_yes)
jQuery('.' + alert_box).children('.button').children('.no').addClass('select');
else
jQuery('.' + alert_box).children('.button').children('.yes').addClass('select');
}
return false;
});
//submitボタンの場合、一旦submitを中止する為input name="xxx"が送信されない。
//その為hiddenで同名のフィールドを追加しPostする。
if (elm != undefined) {
if (elm.type == 'submit' || elm.type == 'image') {
jQuery('').attr({
type: 'hidden',
name: elm.name,
value: 'true'
}).appendTo(jQuery(elm).parents('form'));
}
}
return false;
}
//「はい」選択時の処理
function yes_function(elm, is_confirm, method) {
if (method != undefined)
method();
if (elm != undefined) {
//クリックされた要素がaタグの場合
if (elm.href != undefined) {
var href = elm.href;
//リンク先が取得でき、且つJavascriptで無ければリンク先へ移動
if (href != null && href != "" && href.indexOf("javascript") == -1) {
if (elm.target == '_blank')
window.open(elm.href, '_blank');
else
location.href = elm.href;
}
}
else {
var form = jQuery(elm).parents('form');
if (form != null && is_confirm)
jQuery(elm).parents('form').submit();
}
}
}
//アラート画面終了時
function alert_end() {
jQuery('.' + alert_box).css('display', 'none');
jQuery('.' + overlay_class).css('display', 'none');
//アラート以外のinputやtextエリア等のキーボード入力が無効になっているため、
//有効にする。
jQuery(window).unbind();
}
function changeStampAreaSize() {
//スクロール量と画面サイズから表示中の画面中央の座標を割り出す
var sc = document.documentElement.scrollTop || document.body.scrollTop
var y = window.innerHeight ? window.innerHeight : jQuery(window).height();
var w = window.innerWidth ? window.innerWidth : jQuery(window).width();
var max_height = jQuery(document).height() > jQuery('body').height() ? jQuery(document).height() : jQuery('body').height();
jQuery('.' + overlay_class).height(max_height);
var p = jQuery('.' + alert_box);
var base_height = p.height() / 2;
var base_width = p.width() / 2;
p.css('top', (sc + y / 2) - base_height - 100);
p.css('left', w / 2 - base_width);
}