// HTTP通信用、共通関数
function createXMLHttpRequest(cbFunc)
{
	var XMLhttpObject = null;
	try{
		XMLhttpObject = new XMLHttpRequest();
	}catch(e){
		try{
			XMLhttpObject = new ActiveXObject("Msxml2.XMLHTTP");
		}catch(e){
			try{
				XMLhttpObject = new ActiveXObject("Microsoft.XMLHTTP");
			}catch(e){
				return null;
			}
		}
	}
	if (XMLhttpObject) XMLhttpObject.onreadystatechange = cbFunc;
	return XMLhttpObject;
}

// document.getElementById
function $(tagId)
{
	return document.getElementById(tagId);
}

// ログインタグの内容セット
function SetLogin(sendVar)
{
    var baseURL = document.form_hidden.base_url.value;
    
    var httpObj_login = createXMLHttpRequest(displayData);
    
    if (httpObj_login)
    {
        httpObj_login.open("POST", baseURL + "/common/login.php", true);
        httpObj_login.setRequestHeader('Content-Type','application/x-www-form-urlencoded; charset=UTF-8');
        httpObj_login.send(sendVar);
    }

    function displayData()
    {
        if ((httpObj_login.readyState == 4) &&
            (httpObj_login.status == 200))
        {   
            $('login').innerHTML = httpObj_login.responseText;
            
            // リロードタグがあったら画面リロード（予約状況画面）
            if ($('reload')) 
            {
                location.reload();
            }
            
            // show_reserve で予約状況ページへジャンプ（Fログイン）
            if ($('show_reserve')) 
            {
                location.href = baseURL + "/reserve/reserve_status.php";
            }
        }
    }
}

// ログインボタンクリック
function LoginClick()
{
    var user_id = document.form_login.user_id.value;
    var password = document.form_login.password.value;
    
    var sendVar = "user_id=" + encodeURI(user_id).replace(/&/g , "%26") + 
                  "&password=" + encodeURI(password).replace(/&/g , "%26") + 
                  "&act=" + encodeURI("login");
    
    SetLogin(sendVar);
}

// ログアウトボタンクリック
function LogoutClick()
{
    var sendVar = "act=" + encodeURI("logout");
    
    SetLogin(sendVar);
}

// ログインパスワード欄でエンターキーでログイン
function PressEnter(key)
{
    if (key == 13)
    {
        LoginClick();
    } 
}

// イベント詳細タグの内容セット
function ShowEventDetail(event_code)
{
    var baseURL = document.form_hidden.base_url.value;
    
    var httpObj_event_detail = createXMLHttpRequest(displayData);
    
    if (httpObj_event_detail)
    {
        httpObj_event_detail.open("GET", baseURL + "/common/event_detail.php?event_code=" + event_code, true);
        httpObj_event_detail.send(null);
    }

    function displayData()
    {
        if ((httpObj_event_detail.readyState == 4) &&
            (httpObj_event_detail.status == 200))
        {   
            $('event_detail').innerHTML = httpObj_event_detail.responseText;
            
            // ページ最上部へ移動
            location.href = "#top";
            
            // MAP表示
            var form = document.form_map_info;
            
            if (form.lat.value == "")
            {
                document.getElementById('event_detail_map').style.height = "auto";
                $('event_detail_map').innerHTML = '地図情報が登録されていません';
            }
            
            if (form.lat.value != "")
            {
                CreateMap(false, true, false, form, 'event_detail_map');
            }
        }
    }
}

// カレンダーナビで月移動
function SetMonth(year, month, id)
{
    var baseURL = document.form_hidden.base_url.value;
    
    // 対象インプット名を取得
    input = document.getElementsByName("mini_calendar_target")[0].value;
    
    httpObj_mini_calendar = createXMLHttpRequest(displayData);
    
    if (httpObj_mini_calendar)
    {
        httpObj_mini_calendar.open("GET", baseURL + "/common/mini_calendar.php" +
        "?year=" + year + "&month=" + month + "&id=" + id + "&input=" + input, true);
        httpObj_mini_calendar.send(null);
    }

    function displayData()
    {
        if ((httpObj_mini_calendar.readyState == 4) && 
            (httpObj_mini_calendar.status == 200))
        {  
            $(id).innerHTML = httpObj_mini_calendar.responseText;
        }
    }
}

// ミニカレンダー表示
function ShowMiniCalendar(id, input)
{
    var baseURL = document.form_hidden.base_url.value;
    
    
    var inputDate = document.getElementsByName(input)[0].value
    
    if (inputDate != "")
    {
        var dateArray = inputDate.split("-");
        var year = dateArray[0];
        var month = dateArray[1];
    }
    
    httpObj_mini_calendar = createXMLHttpRequest(displayData);
    
    if (httpObj_mini_calendar)
    {
        httpObj_mini_calendar.open("GET", baseURL + "/common/mini_calendar.php" +
        "?year=" + year + "&month=" + month + "&id=" + id + "&input=" + input, true);
        httpObj_mini_calendar.send(null);
    }

    function displayData()
    {
        if ((httpObj_mini_calendar.readyState == 4) && 
            (httpObj_mini_calendar.status == 200))
        {  
            $(id).innerHTML = httpObj_mini_calendar.responseText;
        }
    }
}

// ミニカレンダーの日付クリック
function CalendarDateClick(year, month, day, id)
{
    // 対象インプット名を取得
    input = document.getElementsByName("mini_calendar_target")[0].value;
    var date_str = FormatDate(year, month, day);
    
    // 日付の値比較
    var flg_alert = false;
    
    if (input == "date_from" || input == "date_to")
    {
        flg_alert = true;
        
        if (input == "date_from")
        {
            date_from_value = date_str.replace("-", "", "g");
            date_to_value = (document.getElementsByName("date_to")[0].value).replace("-", "", "g");
            
            if (date_to_value == "")
            {
                flg_alert = false;
            }
        }
        
        if (input == "date_to")
        {
            date_from_value = (document.getElementsByName("date_from")[0].value).replace("-", "", "g");
            date_to_value = date_str.replace("-", "", "g");
            
            if (date_from_value == "")
            {
                flg_alert = false;
            }
        }
        
        if (date_from_value <= date_to_value)
        {
                flg_alert = false;
        }
        
        if (flg_alert)
        {
            alert("「～から」の日付が「～まで」の日付より未来になっています。");
        }
    }
    
    if (!flg_alert)
    {
        
        // 対象インプットに値セット
        document.getElementsByName(input)[0].value = date_str;
    }
    
    if (input == "reserve_date")
    {
        reset_select_option();
    }
    
    // カレンダーを非表示
    $(id).innerHTML = "";
}

// 引数のID内容クリア
function ClearContent(id)
{
    $(id).innerHTML = "";
}

// 引数のID内容とインプットの内容クリア
function ClearTarget(id, input)
{
    $(id).innerHTML = "";
    document.getElementsByName(input)[0].value = "";
}

// 日付フォーマット(YYYY/MM/DD)
function FormatDate(year, month, day)
{
    if (month < 10) { month = "0" + month; }
    if (day < 10) { day = "0" + day; }
    return (year + "-" + month + "-" + day);

}

// マップ作成
function CreateMap(get_center, place_marker, search, form, id)
{
    if (GBrowserIsCompatible())
    { 
        var lat = form.lat.value;
        var lng = form.lng.value;
        var zoom = form.zoom.value;
        var place = form.place.value;
        
        var map = new GMap2(document.getElementById(id));
        
    	map.addControl(new GScaleControl());
        map.addControl(new GLargeMapControl());
        map.addControl(new GMapTypeControl());
        map.addControl(new GOverviewMapControl());
        map.setCenter(new GLatLng(lat, lng), Number(zoom));
        map.enableDoubleClickZoom();
        map.enableContinuousZoom();
        
        if (get_center == true)
        {
            var marker = new GMarker(map.getCenter());
            map.addOverlay( marker );

            GEvent.addListener( map , "move" , function(){
            	marker.setPoint ( map.getCenter() );
            } );
            var center = map.getCenter();
            var zoom = map.getZoom();
            form.lat.value = center.lat();
            form.lng.value = center.lng();
            form.zoom.value = zoom;
            GEvent.addListener( map, 'move',
                function()
                {
                    center = map.getCenter();
                    zoom = map.getZoom();
                    form.lat.value = center.lat();
                    form.lng.value = center.lng();
                    form.zoom.value = zoom;
                }
            );
        }
        
        if (place_marker == true)
        {
            var marker = new GMarker(map.getCenter());
            map.addOverlay(marker);
            var html = '<div style="width: 200px;"><strong>' + place + '</strong></div>';
            marker.openInfoWindowHtml(html);
        }
        
        if (search == true)
        {
            return map;
        }
    }
}

// 詳細を表示したい施設のコードをセレクトから取得して詳細を表示
function ShowFacilityDetailPre()
{
    var facility_code = $('facility_select').value;
    if (facility_code == "")
    {
        alert("施設を選択してください。");
        return 0;
    }
    
    ShowFacilityDetail(facility_code);
}

// 施設詳細タグの内容セット
function ShowFacilityDetail(facility_code)
{
    var baseURL = document.form_hidden.base_url.value;
    
    var httpObj_facility_detail = createXMLHttpRequest(displayData);
    
    if (httpObj_facility_detail)
    {
        httpObj_facility_detail.open("GET", baseURL + "/reserve/facility_detail.php?facility_code=" + facility_code, true);
        httpObj_facility_detail.send(null);
    }

    function displayData()
    {
        if ((httpObj_facility_detail.readyState == 4) &&
            (httpObj_facility_detail.status == 200))
        {   
            $('facility_detail').innerHTML = httpObj_facility_detail.responseText;
            
            // ページ最上部へ移動
            location.href = "#top";
            
            // MAP表示
            var form = document.form_map_info;
            
            if (form.lat.value == "")
            {
                document.getElementById('facility_detail_map').style.height = 0;
                $('facility_detail_map').innerHTML = "地図情報が登録されていません";
            }
            
            if (form.lat.value != "")
            {
                CreateMap(false, true, false, form, 'facility_detail_map');
            }
        }
    }
}

// ポップアップ２の表示ファンクション
function ShowText(id)
{
    $(id).style.display = "block";
}

// ポップアップ２の非表示ファンクション
function HideText(id)
{
    $(id).style.display = "none";
}

// 利用者名を代表者名にコピー
function CopyToRep()
{
    $("rep_name").value = $("user_name").value;
    $("rep_name_kana").value = $("user_name_kana").value;
}

// 利用者名を申請者にコピー
function CopyToApp()
{
    $("app_name").value = $("user_name").value;
    $("app_name_kana").value = $("user_name_kana").value;
}
