// JavaScript Document
/**
 * イベント発生
 */
$(document).ready(function() {
    // TOPページ用検索タブ
    $("#searchMethodTab").tabs();

    $("#searchMethodTab").click(function(){
        $("#address").focus();
    });

    // 路線検索用アコーディオン
    $("#lineListAccordion").accordion({
        collapsible: true,
        autoHeight: false
    });

    // 詳細検索条件表示
    $("#detailFilter").hide();

    $("#filterOpen").click(function () {
        $("#detailFilter").show();
        return false;
    });

    $(".filterClose").click(function () {
        $("#detailFilter").hide();
        return false;
    });

    // 町名選択用アコーディオン
    $("#townListAccordion").accordion({
        collapsible: true,
        autoHeight: false
    });

    $("#townListAccordion div").click(function() {
        $townListTop = $("#townList").position().top;

        $browserTop = getYPosition();

        if ($browserTop > $townListTop) {
            $("html,body").scrollTop($townListTop);
        }
    });

    // リンクを新規ウインドウで開く
    openNewWindow();

    // リンクを新規ウインドウで開く(メニューバーetc無し)
    $(".newSimpleWindow").click(function () {
        window.open($(this).attr('href'), null, 'menubar=no,resizable=yes,scrollbars=yes,status=no,toolbar=no,width=800');

        return false;
    });

    // 郵便番号から、住所を取得
    $("#zip").keyup(function () {
        var $error = false;
        var $inputZip = $(this).val();

        if ($inputZip.length == 7) {
            var $check1 = $inputZip.match(/^\d{7}$/);

            if ($check1) {
                var $zip = $inputZip;
            } else {
                $error = true;
            }
        } else if ($inputZip.length == 8) {
            var $check2 = $inputZip.match(/^\d{3}-\d{4}$/);

            if ($check2) {
                var $zip = $inputZip.replace("-", "");
            } else {
                $error = true;
            }
        } else {
            return false;
        }

        if ($error) {
            return false;
        }

        if ($zip.length != 7) {
            return false;
        }

        /**
         * 最初の3桁毎のファイルになっているので、ファイル名特定し、住所データ取得
         */ 
        var $zip3 = $zip.substr(0,3);

        // JSON取得用URL
        var $url = "http://"+document.domain+"/json/zip/"+$zip3+".json";

        // callback関数定義
        var jsonCallback = function ($data) {
            if (!$data) return;

            setAddressData($data);
        };

        $.getJSON($url, jsonCallback);

        /**
         * 住所を取得し、埋め込む
         */ 
        var setAddressData = function ($data) {
            var $array = $data[$zip];

            // Opera対策
            var $opera = ($zip-0+0xff000000)+"";

            if (!$array && $data[$opera]) {
                $array = $data[$opera];
            }

            if (!$array) {
                return false;
            }

            if (!$array[0]) {
            } else {
                $("#address").val($array[1] + $array[2]);
                $("#address1").val($array[2]);
                $("#prefecturalId").val($array[0]);
            }
        };
    });

    /**
     * 検索条件設定ボックスを表示
     */
    $("#searchBox").hide();

    $("#filterOpen").click(function () {
        $("#searchBox").show();
    });

    $("#filterClose").click(function () {
        $("#searchBox").hide();
    });

    // テキストフォーカス時に全選択にする
    $(":input").focus(function () {
        $(this).select();
    });

    // 数字のみの入力欄では、数字以外をはじく
    $(".digit, .tel, .fax, #zip").blur(function () {
        $char = $(this).val();

        if ($char.match(/[^0-9,.-]/g)) {
            $target = $(this).css({
                                    backgroundColor: "#FF0000",
                                    filter: "alpha(opacity=70)",
                                    mozOpacity:"0.7",
                                    opacity:"0.7",
                                    border:"1px solid #999999"
                                  });

            alert("半角数字のみで入力してください");
        } else {
            $target = $(this).css({
                                    backgroundColor: "#FFFFFF",
                                    filter: "alpha(opacity=100)",
                                    mozOpacity:"1",
                                    opacity:"1",
                                    border:"1px solid #999999"
                                  });
        }
    });

    if ($("div").is("#map")) {
        $cityName   = $(":hidden[name=cityName]").val();
        $address    = $(":hidden[name=address]").val();
        $lat        = $(":hidden[name=centerLat]").val();
        $lng        = $(":hidden[name=centerLng]").val();
        $circleFlag = $(":hidden[name=circleFlag]").val();
        $prefecturalId = $(":hidden[name=prefecturalId]").val();

        if ($(":hidden[name=zoomLevel]").val() == "") {
            $zoomLevel = 15;
        } else {
            $zoomLevel = $(":hidden[name=zoomLevel]").val();
        }

        loadSearchMap($address, $lat, $lng, $zoomLevel, $circleFlag, $cityName);
    }

    $("#searchButton").click(function () {
        $feeFrom = $("select[name=feeFrom]").val();
        $feeTo   = $("select[name=feeTo]").val();

        if (parseInt($feeFrom) > parseInt($feeTo)) {
            alert("賃料を正しく設定してください。");

            return false;
        }
    });

    if ($("div").is("#smallMap")) {
        $lat = $("#smallMap #lat").text();
        $lng = $("#smallMap #lng").text();

        loadSmallMap($lat, $lng);
    }

    if ($("div").is("#corporateMap")) {
        loadCorporateMap();
    }

    $("#addBookmark").click(function() {
        if (window.sidebar) {
            window.sidebar.addPanel("【Parking Point】月極駐車場検索のパーキングポイント", "http://parking-point.net", "");
        } else {
            window.external.AddFavorite("http://parking-point.net", "【Parking Point】月極駐車場検索のパーキングポイント");
        }
    });

    // 契約条件の選択状態により、年齢・国籍と社判の入力表示を切り替える
    if ($(":radio[name=contract_conditions]:checked").val() == 2) {
        $(".personalContract").hide();
        $(".corporateContract").show();
    } else {
        $(".personalContract").show();
        $(".corporateContract").hide();
    }

    $(":radio[name=contract_conditions]").click(function () {
        if ($(this).val() == 2) {
            $(".personalContract").hide();
            $(".corporateContract").show();
        } else {
            $(".personalContract").show();
            $(".corporateContract").hide();
        }
    });

    if ($(":radio[name=pp_1]:checked").val() == "個人") {
        $("#pp_3isMust").hide();
    } else {
        $("#pp_3isMust").show();
    }

    $(":radio[name=pp_1]").click(function () {
        if ($(this).val() == "個人") {
            $("#pp_3isMust").hide();
        } else {
            $("#pp_3isMust").show();
        }
    });

    // 職業の選択状態により、勤務先情報の入力表示を切り替える
    if ($(":radio[name=job]:checked").val() == 1) {
        $(".workData").show();
    } else {
        $(".workData").hide();
    }

    $(":radio[name=job]").click(function () {
        if ($(this).val() == 1) {
            $(".workData").show();
        } else {
            $(".workData").hide();
        }
    });

    // 区画詳細へリンク
    toStallDetail();

    // お気に入り操作
    addFavorite();
    deleteFavorite();

    $(window).unload(function() {
        GUnload();
    });
});

// GoogleMap用
var $mapMarker = new Object();


/**
 * 指定の住所or緯度経度を中心として、地図を表示し、地図中にある施設一覧を表示
 *
 * @param string $address
 * @param float  $lat
 * @param float  $lng
 * @param int    $zoomLevel
 * @param string $circleFlag
 * @param string $cityName
 */
function loadSearchMap($address, $lat, $lng, $zoomLevel, $circleFlag, $cityName) {
    $address = $address;
    $zoomLevel = parseInt($zoomLevel);
    $circleFlag = true;

    if (GBrowserIsCompatible()) {
        var $map = new GMap2(document.getElementById("map"));

        $map.addControl(new GMapTypeControl());
        $map.addControl(new GLargeMapControl());

        // 住所にマーカー表示
        var $geocoder = new GClientGeocoder();
        var $point;

        if ($lat != "" && $lng != "") {
            $map.clearOverlays();

            $map.setCenter(new GLatLng($lat, $lng), $zoomLevel);

            if ($(":hidden[name=type]").val() == "around") {
                var $marker;
                var $centerPoint = $map.getCenter();

                $marker = putCenterPoint($map, $lat, $lng, $(":hidden[name=premiseId]").val())

                $(":hidden[name=centerLat]").val($lat);
                $(":hidden[name=centerLng]").val($lng);

                $map.addOverlay($marker);

                $(":hidden[name=zoomLevel]").val($zoomLevel);

                // page無し、位置変更なし
                getPremiseList($map, null, false);
            }

            var $area = $map.getBounds();

            var $northEast = $area.getNorthEast();
            var $southWest = $area.getSouthWest();

            // hiddenへ埋め込み
            $(":hidden[name=centerLat]").val($lat);
            $(":hidden[name=centerLng]").val($lng);
            $(":hidden[name=northEastLat]").val($northEast.lat());
            $(":hidden[name=northEastLng]").val($northEast.lng());
            $(":hidden[name=southWestLat]").val($southWest.lat());
            $(":hidden[name=southWestLng]").val($southWest.lng());
            $(":hidden[name=zoomLevel]").val($zoomLevel);
        } else {
            if ($geocoder) {
                $geocoder.getLatLng(
                    $address,
                    function ($point) {
                        if (!$point) {
                            if ($cityName == "") {
                                var $address = $address.substring(0, $address.length - 1);
                            } else {
                                var $address = $cityName;
                            }

                            loadSearchMap($address, $lat, $lng, $zoomLevel, $circleFlag, $cityName);
                        } else {
                            $map.clearOverlays();

                            if ($lat == "" || $lng == "") {
                                $lat = $point.lat();
                                $lng = $point.lng();
                            }

                            $map.setCenter(new GLatLng($lat, $lng), $zoomLevel);

                            if ($(":hidden[name=type]").val() == "around") {
                                var $marker;
                                var $centerPoint = $map.getCenter();

                                $marker = putCenterPoint($map, $lat, $lng, $(":hidden[name=premiseId]").val())

                                $(":hidden[name=centerLat]").val($lat);
                                $(":hidden[name=centerLng]").val($lng);

                                $map.addOverlay($marker);

                                $(":hidden[name=zoomLevel]").val($zoomLevel);

                                // page無し、位置変更なし
                                getPremiseList($map, null, false);
                            }

                            var $area = $map.getBounds();

                            var $northEast = $area.getNorthEast();
                            var $southWest = $area.getSouthWest();

                            // hiddenへ埋め込み
                            $(":hidden[name=centerLat]").val($lat);
                            $(":hidden[name=centerLng]").val($lng);
                            $(":hidden[name=northEastLat]").val($northEast.lat());
                            $(":hidden[name=northEastLng]").val($northEast.lng());
                            $(":hidden[name=southWestLat]").val($southWest.lat());
                            $(":hidden[name=southWestLng]").val($southWest.lng());
                            $(":hidden[name=zoomLevel]").val($zoomLevel);
                        }
                    }
                );
            }
        }

        GEvent.addListener($map, "zoomend", function ($oldLevel, $newLevel) {
            if ($(":hidden[name=type]").val() == "around") {
            } else {
                $map.clearOverlays();

                var $marker;
                var $centerPoint = $map.getCenter();

                $marker = putPushpin($map, $centerPoint.lat(), $centerPoint.lng());

                if ($(":hidden[name=centerLat]").val() != ""
                    && $(":hidden[name=centerLat]").val() != ""
                        && ($centerPoint.lat() != $(":hidden[name=centerLat]").val()
                            || $centerPoint.lng() != $(":hidden[name=centerLng]").val())) {
                    $changeCenter = true;
                } else {
                    $changeCenter = false;
                }

                $(":hidden[name=centerLat]").val($centerPoint.lat());
                $(":hidden[name=centerLng]").val($centerPoint.lng());

                var $area = $map.getBounds();

                var $northEast = $area.getNorthEast();
                var $southWest = $area.getSouthWest();

                $(":hidden[name=northEastLat]").val($northEast.lat());
                $(":hidden[name=northEastLng]").val($northEast.lng());
                $(":hidden[name=southWestLat]").val($southWest.lat());
                $(":hidden[name=southWestLng]").val($southWest.lng());

                $map.addOverlay($marker);

                $(":hidden[name=zoomLevel]").val($newLevel);

                // page無し、位置変更フラグ次第
                getPremiseList($map, null, $changeCenter);
            }
        });

        GEvent.addListener($map, "dragend", function () {
            if ($(":hidden[name=type]").val() == "around") {
            } else {
                $map.clearOverlays();

                var $marker;
                var $centerPoint = $map.getCenter();

                $marker = putPushpin($map, $centerPoint.lat(), $centerPoint.lng());

                $(":hidden[name=centerLat]").val($centerPoint.lat());
                $(":hidden[name=centerLng]").val($centerPoint.lng());

                var $area = $map.getBounds();

                var $northEast = $area.getNorthEast();
                var $southWest = $area.getSouthWest();

                $(":hidden[name=northEastLat]").val($northEast.lat());
                $(":hidden[name=northEastLng]").val($northEast.lng());
                $(":hidden[name=southWestLat]").val($southWest.lat());
                $(":hidden[name=southWestLng]").val($southWest.lng());

                $map.addOverlay($marker);

                // page無し、位置変更あり
                getPremiseList($map, null, true);
            }
        });

        $("#result > .pager > a, #searchButton > input").live("click", function() {
            $map.clearOverlays();

            var $marker;
            var $centerPoint = $map.getCenter();

            if ($(":hidden[name=type]").val() == "around") {
                $marker = putCenterPoint($map, $(":hidden[name=centerLat]").val(), $(":hidden[name=centerLng]").val(), $(":hidden[name=premiseId]").val());
            } else {                
                $marker = putPushpin($map, $centerPoint.lat(), $centerPoint.lng());

                $(":hidden[name=centerLat]").val($centerPoint.lat());
                $(":hidden[name=centerLng]").val($centerPoint.lng());
            }

            var $area = $map.getBounds();

            var $northEast = $area.getNorthEast();
            var $southWest = $area.getSouthWest();

            $(":hidden[name=northEastLat]").val($northEast.lat());
            $(":hidden[name=northEastLng]").val($northEast.lng());
            $(":hidden[name=southWestLat]").val($southWest.lat());
            $(":hidden[name=southWestLng]").val($southWest.lng());

            $map.addOverlay($marker);

            if ($(this).attr('href') != null && $(this).attr('href') != undefined) {
                $url = "http://" + location.hostname;

                $page = $(this).attr('href').replace($url, "");
            } else {
                $page = null;
            }

            // pageあり、位置変更無し
            getPremiseList($map, $page, false);

            return false;
        });
    }
}


/**
 * 検索された住所の中心地を表示
 * @param object $map
 * @param double $lat
 * @param double $lng
 */
function putPushpin($map, $lat, $lng) {
    var $markerIcon = new GIcon();

    $markerIcon.image = "http://maps.google.co.jp/mapfiles/ms/icons/blue-pushpin.png";
    $markerIcon.shadow = "http://maps.google.co.jp/mapfiles/ms/icons/pushpin_shadow.png";
    $markerIcon.iconSize = new GSize(32, 32);
    $markerIcon.iconAnchor=new GPoint(16,32);
    $markerIcon.infoWindowAnchor = new GPoint(16, 0);

    return new GMarker(new GLatLng($lat, $lng), {icon:$markerIcon});
}

/**
 * 検索された住所の中心地を表示
 * @param object $map
 * @param double $lat
 * @param double $lng
 */
function putCenterPoint($map, $lat, $lng, $id) {
    var $markerIcon = new GIcon();

    $markerIcon.image = "/images/parking-only.png";
    $markerIcon.iconSize = new GSize(27, 40);
    $markerIcon.iconAnchor = new GPoint(13.5, 40);
    $markerIcon.infoWindowAnchor = new GPoint(13.5, 0);

    var $marker = new GMarker(new GLatLng($lat, $lng), {icon:$markerIcon});

    GEvent.addListener($marker, "click", function() {
        displayDetailInfoBox($id);
    });

    return $marker;
}

/**
 * 施設一覧のマーカーとhtmlを取得
 * @param object $map
 */
function getPremiseList($map, $page, $changeCenter) {
    var $centerPoint = $map.getCenter();
    var $area = $map.getBounds();

    var $northEast = $area.getNorthEast();
    var $southWest = $area.getSouthWest();
    var $query     = $("input, select").serialize();

    var $params = "/northEastLat/" + $northEast.lat()
                    + "/northEastLng/" + $northEast.lng()
                    + "/southWestLat/" + $southWest.lat()
                    + "/southWestLng/" + $southWest.lng()
                    + "/centerLat/" + $centerPoint.lat()
                    + "/centerLng/" + $centerPoint.lng()
                    + "?" + $query;

    var $getJsonUrl;
    var $getHtmlUrl;

    if ($page === null) {
        $getJsonUrl = "/search/premise-list/format/json" + $params;
        $getHtmlUrl = "/search/premise-list/format/html" + $params;
    } else {
        $getJsonUrl = "/search/premise-list/format/json" + $page + "?" + $query;
        $getHtmlUrl = "/search/premise-list/format/html" + $page + "?" + $query;
    }

    var $data;

    $.ajaxSetup({scriptCharset:'utf-8'});

    $("#result").load($getHtmlUrl);

    $.ajax({
            url: $getJsonUrl,
            dataType: 'json',
            beforeSend: function() {
                $("#main").block({message: '<h3><img src="/images/loading.gif" />&nbsp;Now Loading...</h3>'});
            },
            success: function($data) {
                $premiseList = $data['premiseList'];
                $totalCount = $data['totalCount'];

                if ($changeCenter) {
                    $(".centerAddress").text($data['centerAddress']);
                }

                $("#totalCount").text($totalCount);

                if ($totalCount == 0) {
                    $("#offsetAndLimit").hide();

                    $("#main").unblock();

                    $("#map").block({message: $("#noDataBox"), css: {width: '700px'}});

                    $("#ok").click(function() {
                                                $('#map').unblock();
                                              });
                    return false;
                } else {
                    for ($i=$premiseList.length-1; $i>=0; $i--) {
                        var $array = $premiseList[$i];

                        var $markerPoint = new GLatLng($array['lat'], $array['lng']);

                        $params = new Array();

                        $params['id'] = $array['id'];
                        $params['no'] = $i + 1;
                        $params['type'] = $array['type'];

                        var $marker = createMarker($markerPoint, $params);
                        $map.addOverlay($marker);
                    }

                    $("#offset").text($data['offset']);
                    $("#limit").text($data['limit']);
                    $("#offsetAndLimit").show();

                    $("#main").unblock();
                }
            },
            complete: function() {
            },
            error: function() {
            }
    });
}

/**
 * 緯度経度から、ポインタを表示
 * @param $lat
 * @param $lng
 */
function loadSmallMap($lat, $lng) {
    var $marker = "";

    if (GBrowserIsCompatible()) {
        //地図を作成
        var $map = new GMap2(document.getElementById("smallMap"));
        $map.addControl(new GSmallMapControl());
        $map.addControl(new GMapTypeControl(true));

        $map.clearOverlays();
        $map.setCenter(new GLatLng($lat, $lng), 18);

        //マーカーを作成
        $marker = putCenterPoint($map, $lat, $lng, null)

        //マーカーを地図上に配置
        $map.addOverlay($marker);
    }
}

function displayDetailInfoBox($id) {
    $("html,body").animate({scrollTop: 200}, 'show');
    $("div#map").block({message: '<h3><img src="/images/loading.gif" />&nbsp;Now Loading...</h3>'});

    $("#detailInfoBox").load("/detail/index/premiseId/" + $id, null, function($data) {
        $('div#map').unblock();

        $("div#map").block({message: $data, css: {width: '700px'}});

        $("#closeInfo").click(function(){
                                            $('div#map').unblock();
                                            return false;
                                        });
    });
}

/**
 * マーカーを作成
 * @param string $markerPoint
 * @param array $params
 */
function createMarker($markerPoint, $params) {
    var $markerIcon = new GIcon();

    if ($params['type'] == 0) {
        $markerIcon.image = "/images/points/green/" + $params['no'] + ".png";
    } else if ($params['type'] == 1) {
        $markerIcon.image = "/images/points/orange/" + $params['no'] + ".png";
    }

    $markerIcon.iconSize = new GSize(27, 40);
    $markerIcon.iconAnchor = new GPoint(13.5, 40);
    $markerIcon.infoWindowAnchor = new GPoint(13.5, 0);

    var $marker = new GMarker($markerPoint, {icon:$markerIcon});

    GEvent.addListener($marker, "click", function() {
        displayDetailInfoBox($params['id']);
    });

    return $marker;
}

/**
 * pseudoGCircle （擬似-円描画）
 * @param point   中心地 google.maps.LatLng
 * @param radius  半径 km
 * @param color   google.maps.Polylineに渡される（省略可）
 * @param weight  google.maps.Polylineに渡される（省略可）
 * @param opacity google.maps.Polylineに渡される（省略可）
 * @return google.maps.Polyline
 */
function createCircle($point, $radius, $color, $weight, $opacity) {
    // 頂点の数
    var $vertex = 120;

    // 赤道半径 (m)
    var $equatorialRadius = 6378137;

    // 扁平率の逆数
    var $f = 298.257223563;          

    // 離心率の２乗
    var $e = ((2 * $f) -1) / Math.pow($f, 2);

    // π * 赤道半径
    var $equatorialRadiusPi = Math.PI * $equatorialRadius;

    // 1 - e^2 sin^2 (θ)
    var $tmp = 1 - $e * Math.pow(Math.sin($point.latRadians()), 2);

    // 経度１度あたりの長さ(m)
    var $arcLat = ($equatorialRadiusPi * (1 - $e)) / (180 * Math.pow($tmp, 3/2)); 

    // 緯度１度あたりの長さ(m)
    var $arcLng = ($equatorialRadiusPi * Math.cos($point.latRadians())) / (180 * Math.pow($tmp, 1/2)); 

    // 半径をｍ単位に
    var $r = $radius * 1000;

    var $points = new Array($vertex);

    for ($i = 0; $i <= $vertex; $i++) {
        var $rad = ($i / ($vertex / 2)) * Math.PI;
        var $lat = ($r / $arcLat) * Math.sin($rad) + $point.lat();
        var $lng = ($r / $arcLng) * Math.cos($rad) + $point.lng();

        $points[$i] = new GLatLng($lat, $lng);
    }

    return new GPolyline($points, $color, $weight, $opacity);
}


/**
 * 会社の地図を表示
 */
function loadCorporateMap() {
    var $address = "東京都練馬区小竹町１丁目５５－７";
    var $marker;
    var $point;

    if (GBrowserIsCompatible()) {
        //地図を作成
        var $map = new GMap2(document.getElementById("corporateMap"));
        $map.addControl(new GSmallMapControl());
        $map.addControl(new GMapTypeControl());

        var $geocoder = new GClientGeocoder();

        if ($geocoder) {
            $geocoder.getLatLng($address, function($point) {
                if (!$point) {
                    return false;
                } else {
                    $map.clearOverlays();
                    $map.setCenter($point, 17);

                    //マーカーを作成
                    $marker = new GMarker($point);

                    $map.addOverlay($marker);
                }
            });
        }
    }
}

/**
 * 金額を、3桁区切りのカンマ表示
 */
function setGroupSeparator($inputMoney) {
    var $money = new String($inputMoney).replace(/,/g, "");
    while ($money != ($money = $money.replace(/^(-?\d+)(\d{3})/, "$1,$2")));

    return $money;
}

/**
 * 新規ウインドウで開く
 */
function openNewWindow() {
    $(".newWindow").click(function () {
        window.open($(this).attr('href'), null, 'width=1024,height=600,resizable=yes,menubar=yes,location=yes,directories=yes,toolbar=yes,scrollbars=yes');

        return false;
    });
}

/**
 * 区画詳細を開く
 */
function toStallDetail() {
    $(".toStallDetail").click(function () {
        location.href="/detail/stall/stallId/" + $(this).attr('id');

        return false;
    });
}


/**
 * お気に入り追加
 */
function addFavorite() {
    $(".addFavorite > a").live("click", function() {
        $.ajax({
            url: $(this).attr("href"),
            beforeSend: function() {
                $.blockUI({message: '<h3><img src="/images/loading.gif" />&nbsp;Now Loading...</h3>'});
            },
            success: function($data) {
                $.unblockUI();
                $.blockUI({message: $data, css: {
                                                    width: '600px',
                                                    left: ($(window).width() - 600) /2 + 'px'
                                                }
                });
            },
            complete: function() {
                $("body").click(function(){
                    $.unblockUI();
                });
            }
        });
        return false;
    });
}

/**
 * お気に入り削除
 */
function deleteFavorite() {
    $("#favoriteList .delete > a").live("click", function() {
        $.ajax({
            url: $(this).attr("href"),
            beforeSend: function() {
                $.blockUI({message: '<h3><img src="/images/loading.gif" />&nbsp;Now Loading...</h3>'});
            },
            success: function($data) {
                $.unblockUI();
                $.blockUI({message: $data, css: {
                                                    width: '600px',
                                                    left: ($(window).width() - 600) /2 + 'px'
                                                }
                });
            },
            complete: function() {
                $("body").click(function(){
                    $.unblockUI();
                    location.reload();
                    return false;
                });
            }
        });
        return false;
    });
}

/**
 * 現在のブラウザ表示位置の上端の値を取得
 */
function getYPosition() {
    var $y1 = document.documentElement.scrollTop;
    var $y2 = document.body.scrollTop;

    if ($y1 > $y2) {
        $y = $y1
    } else {
        $y = $y2
    }

    return $y
}