﻿// 2009/9/28 Silverlight Object.
// Louis/ V7Idea Limited.
// 步驟一：參數設定。
// 步驟二：取得XML資料。
// 重新設定地圖的顏色，以及說明部分。

var mapObjDataXML; // 取得XML檔案後儲存的物件。
var mapColorLevelC = '#FF99A0AA';
var mapColorLevelB = '#FFCAD6E4';
var mapColorLevelA = '#FFFFF79A';
var mapColorLevelAA = '#FFFC5698';
var pageSender;

var xmlHttp;
var sourcexmlurl = '/xmlCache/69.xml';
var ifCompleteDownload = 0;
var ifOnDownloadProcess = 0;
var selectArea;


if (!window.Converage)
	Converage = {};

Converage.Page = function() {

    // alert('start!!'); 起始後的相關作業。
    // 第一步驟：取得XML檔案。

    // pageOnload();


    // 第二步驟：置換目前的地圖顏色。



}

Converage.Page.prototype =
{
	handleLoad: function(control, userContext, rootElement) 
	{
		this.control = control;
		
		// Sample event hookup:	
		rootElement.addEventListener("MouseLeftButtonDown", Silverlight.createDelegate(this, this.handleMouseDown));
	},
	
	// Sample event handler
	handleMouseDown: function(sender, eventArgs) 
	{
		// The following line of code shows how to find an element by name and call a method on it.
		// this.control.content.findName("Storyboard1").Begin();
	}
}



function pageOnload(sender, eventArgs) {

    // 整理dateValue[];

    var rootObj = document.getElementById('SilverlightControl');

    //  當頁面已經產生後，要開始進行的動作！

    pageSender = sender;

    /// 產生頁面預設的物件   
    /// 左邊的日期選項將會在此地方呈現出來。

    /// 進行下載作業與重新整理資料

    sendRequest('');
    var rootObj = document.getElementById('SilverlightControl');

    if (rootObj) {

        if (rootObj.content.findName('Storyboard_Opening')) { rootObj.content.findName('Storyboard_Opening').pause(); }
    } 
    

    // alert('完成測試');

}

function createXHR() {

    if (window.XMLHttpRequest) {

        xmlHttp = new XMLHttpRequest();

    } else if (window.ActiveXObject) {

        xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");

    }


    if (!xmlHttp) {
        alert('您使用的瀏覽器不支援 XMLHTTP 物件');
    }

}

function sendRequest(sendValue) {

    //  alert('开始HTTP需求');

    createXHR();
    var nowTime = (new Date()).getFullYear() + '-' + (new Date()).getMonth() + '-' + (new Date()).getDay() + '-' + (new Date()).getHours() + '-' + (new Date()).getMinutes() + '-' + (new Date()).getSeconds() + '-' + (new Date()).getMilliseconds();

    // alert(nowTime);

    var url = sourcexmlurl + '?chnid=49&QDate=' + sendValue + '&NowTime=' + nowTime;

    // alert(url);
    // document.getElementById('marquee').innerHTML = '与系统连结，取得会议室相关资讯中.....';
    xmlHttp.open('GET', url, true);
    xmlHttp.onreadystatechange = catchResult;
    //xmlHttp.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
    xmlHttp.send(null);

}

function catchResult() {

    if (xmlHttp.readyState == 4) {

        //  alert('xmlHttp.readyState');
        //  s = xmlHttp.responseXML;

        if (xmlHttp.status == 200) {

            //     alert('得到资料!!');

            mapObjDataXML = xmlHttp.responseXML;
            initalize();

        }
    }

}

var maxZIndex;

function initalize() {

    var rootObj = document.getElementById('SilverlightControl');
    // alert('completeInit();');

    // 重新設定目前的顏色

    for (var i = 0; i < 23; i++) {

        resetAreaFillColor(i, getAreaLevelType(mapObjDataXML, i));

    }

    var rootObj = document.getElementById('SilverlightControl');

    if (rootObj) {

        if (rootObj.content.findName('Storyboard_Opening')) {
            rootObj.content.findName('Storyboard_Opening').stop();
            rootObj.content.findName('Storyboard_Opening').begin();
         }
    } 


}

// 重新設定各地區的底圖

function resetAreaFillColor(areaNumber, levelType) {

    if (areaNumber != '' && levelType != '') {

        var rootObj = document.getElementById('SilverlightControl');

        switch (levelType) {

            case 'A':

                if (rootObj.content.findName('map_' + areaNumber + '_Copy')) {

                    rootObj.content.findName('map_' + areaNumber + '_Copy').Fill = mapColorLevelA;
                    
                }

                if (rootObj.content.findName('map_' + areaNumber)) {

                    rootObj.content.findName('map_' + areaNumber).Fill = mapColorLevelA;
                    
                }

                

                break;

            case 'B':

                if (rootObj.content.findName('map_' + areaNumber + '_Copy')) {

                    rootObj.content.findName('map_' + areaNumber + '_Copy').Fill = mapColorLevelB;
                }

                if (rootObj.content.findName('map_' + areaNumber)) {

                    rootObj.content.findName('map_' + areaNumber).Fill = mapColorLevelB;
                }

                break;

            case 'C':

                if (rootObj.content.findName('map_' + areaNumber + '_Copy')) {

                    rootObj.content.findName('map_' + areaNumber + '_Copy').Fill = mapColorLevelC;
                }

                if (rootObj.content.findName('map_' + areaNumber)) {

                    rootObj.content.findName('map_' + areaNumber).Fill = mapColorLevelC;
                }

                break;

            case 'AA':

                if (rootObj.content.findName('map_' + areaNumber + '_Copy')) {

                    rootObj.content.findName('map_' + areaNumber + '_Copy').Fill = mapColorLevelAA;
                }

                if (rootObj.content.findName('map_' + areaNumber)) {

                    rootObj.content.findName('map_' + areaNumber).Fill = mapColorLevelAA;
                }

                break;
            
        }  


    }
    

}

// 取得地區的型別

function getAreaLevelType(xmlData, areaNumber) {

    if (xmlData) {

        if (xmlData.getElementsByTagName('areaMap' + areaNumber)) {


            return xmlData.getElementsByTagName('areaMap' + areaNumber)[0].getAttribute('_level');

        } else { return ''; }

    } else return '';

}






function mapMouseEnter(sender, mouseEventArgs) {

    var rootObj = document.getElementById('SilverlightControl');
    var senderName = sender.name;

    //alert(sender.Name);

    if (senderName != selectArea) {

        if (mapObjDataXML) {

            // alert(senderName);

            switch (senderName) {


                case 'map_0_Select':

                    showMapMessage(getAreaLevelType(mapObjDataXML, '0'));
                    break;

                case 'map_1_Group':

                    showMapMessage(getAreaLevelType(mapObjDataXML, '1'));
                    break;

                case 'map_2_Group':

                    showMapMessage(getAreaLevelType(mapObjDataXML, '2'));
                    break;

                case 'map_3_Group':

                    showMapMessage(getAreaLevelType(mapObjDataXML, '3'));
                    break;
                case 'map_4_Group':

                    showMapMessage(getAreaLevelType(mapObjDataXML, '4'));
                    break;

                case 'map_5_Group':

                    showMapMessage(getAreaLevelType(mapObjDataXML, '5'));
                    break;

                case 'map_6_Group':

                    showMapMessage(getAreaLevelType(mapObjDataXML, '6'));
                    break;

                case 'map_7_Group':

                    showMapMessage(getAreaLevelType(mapObjDataXML, '7'));
                    break;

                case 'map_8_Group':

                    showMapMessage(getAreaLevelType(mapObjDataXML, '8'));
                    break;

                case 'map_9_Group':

                    showMapMessage(getAreaLevelType(mapObjDataXML, '9'));
                    break;

                case 'map_10_Group':

                    showMapMessage(getAreaLevelType(mapObjDataXML, '10'));
                    break;

                case 'map_11_Group':

                    showMapMessage(getAreaLevelType(mapObjDataXML, '11'));
                    break;

                case 'map_12_Group':

                    showMapMessage(getAreaLevelType(mapObjDataXML, '12'));
                    break;

                case 'map_13_Group':

                    showMapMessage(getAreaLevelType(mapObjDataXML, '13'));
                    break;

                case 'map_14_Group':

                    showMapMessage(getAreaLevelType(mapObjDataXML, '14'));
                    break;

                case 'map_15_Group':

                    showMapMessage(getAreaLevelType(mapObjDataXML, '15'));
                    break;

                case 'map_16_Group':

                    showMapMessage(getAreaLevelType(mapObjDataXML, '16'));
                    break;

                case 'map_17_Group':

                    showMapMessage(getAreaLevelType(mapObjDataXML, '17'));
                    break;

                case 'map_18_Group':

                    showMapMessage(getAreaLevelType(mapObjDataXML, '18'));
                    break;

                case 'map_19_Group':

                    showMapMessage(getAreaLevelType(mapObjDataXML, '19'));

                    break;

                case 'map_20_Group':

                    showMapMessage(getAreaLevelType(mapObjDataXML, '20'));
                    break;


                case 'map_21_Select':

                    showMapMessage(getAreaLevelType(mapObjDataXML, '21'));
                    break;

                case 'map_22_Group':

                    showMapMessage(getAreaLevelType(mapObjDataXML, '22'));
                    break;

            }

        }

        if (rootObj.content.findName('Storyboard_' + senderName)) {

            rootObj.content.findName('Storyboard_' + senderName).stop();
            rootObj.content.findName('Storyboard_' + senderName).begin();

        }

    }       


}

function mapMouseLeave(sender, mouseEventArgs) {

    var rootObj = document.getElementById('SilverlightControl');
    var senderName = sender.name;

    if (senderName != selectArea) {

        if (rootObj.content.findName('Storyboard_' + senderName)) {

            rootObj.content.findName('Storyboard_' + senderName).stop();
            // rootObj.content.findName('Storyboard_map23').begin();

        }

    }


}




function mapMouseClick(sender, mouseEventArgs) {


    var rootObj = document.getElementById('SilverlightControl');
    var senderName = sender.name;

    if (selectArea != senderName) {

        if (mapObjDataXML) {

            // alert(senderName);

            switch (senderName) {


                case 'map_0_Select':

                    showAreaReort(mapObjDataXML, '0', senderName );

                    break;

                case 'map_1_Group':

                    showAreaReort(mapObjDataXML, '1', senderName);


                    break;

                case 'map_2_Group':

                    showAreaReort(mapObjDataXML, '2', senderName);


                    break;

                case 'map_3_Group':

                    showAreaReort(mapObjDataXML, '3', senderName);


                    break;
                case 'map_4_Group':

                    showAreaReort(mapObjDataXML, '4', senderName);


                    break;

                case 'map_5_Group':

                    showAreaReort(mapObjDataXML, '5', senderName);


                    break;

                case 'map_6_Group':

                    showAreaReort(mapObjDataXML, '6', senderName);

                    break;

                case 'map_7_Group':

                    showAreaReort(mapObjDataXML, '7', senderName);

                    break;

                case 'map_8_Group':

                    showAreaReort(mapObjDataXML, '8', senderName);


                    break;

                case 'map_9_Group':

                    showAreaReort(mapObjDataXML, '9', senderName);

                    break;

                case 'map_10_Group':

                    showAreaReort(mapObjDataXML, '10', senderName);

                    break;

                case 'map_11_Group':

                    showAreaReort(mapObjDataXML, '11', senderName);

                    break;

                case 'map_12_Group':

                    showAreaReort(mapObjDataXML, '12', senderName);

                    break;

                case 'map_13_Group':

                    showAreaReort(mapObjDataXML, '13', senderName);

                    break;

                case 'map_14_Group':

                    showAreaReort(mapObjDataXML, '14', senderName);

                    break;

                case 'map_15_Group':

                    showAreaReort(mapObjDataXML, '15', senderName);

                    break;

                case 'map_16_Group':
                    showAreaReort(mapObjDataXML, '16', senderName);

                    break;

                case 'map_17_Group':

                    showAreaReort(mapObjDataXML, '17', senderName);
                    break;

                case 'map_18_Group':

                    showAreaReort(mapObjDataXML, '18', senderName);

                    break;

                case 'map_19_Group':

                    showAreaReort(mapObjDataXML, '19', senderName);

                    break;

                case 'map_20_Group':

                    showAreaReort(mapObjDataXML, '20', senderName);

                    break;


                case 'map_21_Select':

                    showAreaReort(mapObjDataXML, '21', senderName);
                    break;

                case 'map_22_Group':

                    showAreaReort(mapObjDataXML, '22', senderName);

                    break;

            }

        }

    }

    
    //alert(senderName);

//    if (rootObj.content.findName('Storyboard_' + senderName)) {

//        rootObj.content.findName('Storyboard_' + senderName).stop();
//        // rootObj.content.findName('Storyboard_map23').begin();

//    }

}


function showMapMessage(levelType) {

    var messageText = '';

    switch (levelType) {

        case 'AA':

            messageText = 'messageText4';
            break;

        case 'A':

            messageText = 'messageText3';
            break;

        case 'B':

            messageText = 'messageText2';
            break;

        case 'C':

            messageText = 'messageText1';
            break;

    }



    if (messageText != '') {

        var rootObj = document.getElementById('SilverlightControl');

        rootObj.content.findName('messageText1').Visibility = 'Collapsed';
        rootObj.content.findName('messageText2').Visibility = 'Collapsed';
        rootObj.content.findName('messageText3').Visibility = 'Collapsed';
        rootObj.content.findName('messageText4').Visibility = 'Collapsed';

        rootObj.content.findName(messageText).Visibility = 'Visible';


    }


}




function showAreaReort(dataXML, areaNumber, senderName) {

    var mainTarget;
    var subAreaNum;
    var rootObj = document.getElementById('SilverlightControl');
    //alert('areaMap' + areaNumber);
    //alert(selectTarget);

//    if (dataXML) {  showMapMessage(getAreaLevelType(dataXML, areaNumber)); }
                
    if (dataXML.getElementsByTagName('areaMap' + areaNumber)) {

        mainTarget = dataXML.getElementsByTagName('areaMap' + areaNumber)[0];
        subAreaNum = mainTarget.getElementsByTagName('area').length;
        
    }

    if (subAreaNum > 0) {

        // 表示有找到這個縣市的資料，所以要顯示相關的訊息。
        // 步驟一：先將顯示視窗關閉
        
        if (document.getElementById('areaList')) {  // 關閉列表

            document.getElementById('areaList').style.display = 'none';

        }

        if (rootObj.content.findName('memo')) { // 關閉說明

            rootObj.content.findName('memo').Visibility = 'Collapsed';

        }

        // 步驟二：重整列表內容

        // 更換顯示的縣市標題

        if (document.getElementById('areaTitleBanner')) {

            document.getElementById('areaTitleBanner').src = 'images/map_' + areaNumber  + '_Title.gif';

        }

        var newTableHTML = '';

        newTableHTML += '<table width="350" cellpadding="0" cellspacing="0" border="0" >';

        for (var i = 0; i < subAreaNum; i++) {

            newTableHTML += '<tr><td  class="areaListCol1">' + mainTarget.getElementsByTagName('area')[i].getAttribute('_areaName') + '</td><td class="areaListCol1" >';
            var starNum = mainTarget.getElementsByTagName('area')[i].getAttribute('_star');

            for (var j = 0; j < starNum; j++) {

                newTableHTML += '<img border="0" alt="" src="images/star.png" />';
                
            }

            newTableHTML += '</td></tr>';

            i += 1;

            if (i < subAreaNum) {

                newTableHTML += '<tr><td  class="areaListCol2">' + mainTarget.getElementsByTagName('area')[i].getAttribute('_areaName') + '</td><td  class="areaListCol2">';
                var starNum = mainTarget.getElementsByTagName('area')[i].getAttribute('_star');

                for (var j = 0; j < starNum; j++) {

                    newTableHTML += '<img border="0" alt="" src="images/star.png" />';

                }

                newTableHTML += '</td></tr>';

            }

        }

        newTableHTML += '</table>';

        if (document.getElementById('aresListCotent')) {  // 打開列表

            document.getElementById('aresListCotent').innerHTML = newTableHTML;

        }
             

        if (document.getElementById('areaList')) {  // 打開列表

            document.getElementById('areaList').style.display = 'block';

        }


        if (rootObj.content.findName('Storyboard_' + selectArea)) {

            rootObj.content.findName('Storyboard_' + selectArea).stop();
            // rootObj.content.findName('Storyboard_map23').begin();

        }


        selectArea = senderName; 


    }
    
}



