﻿/// <reference path="jquery-1.2.6-vsdoc-cn.js" />

//本在用于与LiveMap(Silverlight)进行交户

//初始化liveMap
document.liveMap = {
    isLoaded: false,
    //此数组用于存储待地图加载完毕时需要执行的方法
    _arrOnReady: [],
    //此方法为调用地图的安全方法, （一般在地图初始化之前调用 isLoaded = false）
    invoke: function(fn) {
        //当地图初始化完毕时直接调用方法
        if (this.isLoaded)
            fn();
        else {
            //当地图还未加载时，将方法写入队列中，待地图加载完毕时调用
            this._arrOnReady[this._arrOnReady.length] = fn;
        }
    }
};

//管理url.hash
document.liveMap.urlHash = {};
(function() {
    var hash = document.location.hash.substring(1);
    var arrHash = hash.split('&');
    if (arrHash && arrHash.length > 0) {
        for (var i = 0; i < arrHash.length; i++) {
            var childHash = arrHash[i];
            if (childHash && childHash.length > 0) {
                var arrChild = childHash.split('=');
                if (arrChild && arrChild.length > 1) {
                    document.liveMap.urlHash[arrChild[0]] = arrChild[1];
                }
            }
        }
    }
})();
//重设url.hash
document.liveMap.resetUrlHash = function() {
    document.location.hash = $.param(document.liveMap.urlHash);
};
//当地图移动时会引发此方法
document._onMapDrag = function(lat, lng, zoom) {
    //document.liveMap.urlHash.lat = lat;
    //document.liveMap.urlHash.lng = lng;
    //document.liveMap.urlHash.zoom = zoom;
    //document.liveMap.resetUrlHash();
};

//此方法由Silverlight调用，旨在Silverlight Map初始化完毕后调用此方法
document._loadLiveMap = function() {
    document.liveMap.isLoaded = true;
    var objsilver = document.getElementById('LiveMapSilverlightHost');
    if (objsilver && objsilver.content && objsilver.content.MapScript) {
        document.liveMap.Map = objsilver.content.MapScript;
    }
    //执行url传值
    //var hash = document.liveMap.urlHash;
    //    if (hash.lat && hash.lng) {
    //        document.liveMap.Map.PanTo(String.format('POINT ({0} {1})', hash.lng, hash.lat));
    //    }
    //    if (hash.zoom) {
    //        document.liveMap.Map.SetZoom(parseFloat(hash.zoom));
    //    }
    //执行在地图初始化之前调用的方法
    if (document.liveMap._arrOnReady && document.liveMap._arrOnReady.length > 0) {
        jQuery.each(document.liveMap._arrOnReady, function(i, n) {
            if (jQuery.isFunction(n))
                n();
        });
    }
};