document.write('<script type="text/javascript" src="admin/view/parts/js/dvsk_common.js"></script>');

var requestPage = 'parts/SiteRequest.php';
var dvsk_site = {};

dvsk_site.googleMaps = {
    find: function(){
        var ns = dvsk_site.googleMaps;
        ns.gmaps = [];
        ns.isCoords = [];
        $$('.gmap-temp').each(function(tempMap, index){
            index++;
            var coords = /_(.+)_/.exec(tempMap.className)[1];
            var mapId = tempMap.id;
            if (/[a-zA-Z]/.test(coords) === false) {
                coords = ns.getCoords(coords);
                ns.isCoords[index] = true;
            }
            else ns.isCoords[index] = false;
            if (!coords) {
                console.log('No coords for map '+mapId);
                return;
            }
            ns.gmaps[index] = {
                mapId: coords
            };
            tempMap.replace('<div id="gmap'+index+'" class="gmap"></div>')
        });
        this.go();
    },
    go: function(){
        dvsk_site.googleMaps.gIndex = 1;
        dvsk_site.googleMaps.maps = [];
        google.load("maps", "2");
        google.setOnLoadCallback(dvsk_site.googleMaps.init);
    },
    init: function(){
        var ns = dvsk_site.googleMaps;
        ns.maps[ns.gIndex] = new google.maps.Map2(document.getElementById("gmap"+ns.gIndex));
        if (ns.isCoords[ns.gIndex] === true){
            var lat = ns.gmaps[ns.gIndex].mapId.lat;
            var lng = ns.gmaps[ns.gIndex].mapId.lng;
            var point = new google.maps.LatLng(lat, lng);
            ns.maps[ns.gIndex].setCenter(point, 13);
            ns.maps[ns.gIndex].setUIToDefault();
            var marker = new GMarker(point);
            ns.maps[ns.gIndex].addOverlay(marker);
            ns.gIndex++;
            if (ns.gmaps.length > ns.gIndex) {
                ns.init();
            }
            else return;
        }
        var geocoder = new GClientGeocoder();
        var address = ns.gmaps[ns.gIndex].mapId;
        var callback = function(point) {
            if (!point) {
                d(address + " not found");
            } else {
                dvsk_site.googleMaps.maps[dvsk_site.googleMaps.gIndex].setCenter(point, 13);
                dvsk_site.googleMaps.maps[dvsk_site.googleMaps.gIndex].setUIToDefault();
                var marker = new GMarker(point);
                dvsk_site.googleMaps.maps[dvsk_site.googleMaps.gIndex].addOverlay(marker);
                marker.openInfoWindowHtml(address);
                dvsk_site.googleMaps.gIndex++;
                if (dvsk_site.googleMaps.gmaps.length > dvsk_site.googleMaps.gIndex) {
                    dvsk_site.googleMaps.init();
                }
            }
        };
        geocoder.getLatLng(address, callback);
    },
    getCoords: function(coords){
        coords = coords.split(',');
        return {
            'lat': coords[0].strip(),
            'lng': coords[1].strip()
        };
    }
};

dvsk_site.jsScroll = {
    go: function(scrollId, contentId){
        if (!$(scrollId)) return;
        var handleId = scrollId+'-handle';
        var content = $(contentId);
        if (content.scrollHeight > content.offsetHeight) {
            var prop = content.getHeight() / content.scrollHeight;
            $(handleId).style.height = parseInt(content.getHeight() * prop) + 'px';
            $(scrollId).show();
            if (!dvsk_site.jsScroll.slider){
                dvsk_site.jsScroll.slider = {};
            }
            if (dvsk_site.jsScroll.slider[scrollId]) {
                dvsk_site.jsScroll.slider[scrollId].dispose();
            }
            dvsk_site.jsScroll.slider[scrollId] = new Control.Slider(handleId, scrollId, {axis: 'vertical'});
            dvsk_site.jsScroll.slider[scrollId].options.onSlide = function(v) {
                dvsk_site.jsScroll.scrollVertical(v, content, dvsk_site.jsScroll.slider[scrollId]);
            };
            dvsk_site.jsScroll.slider[scrollId].options.onChange = function(v) {
                dvsk_site.jsScroll.scrollVertical(v, content, dvsk_site.jsScroll.slider[scrollId]);
            }
            dvsk_site.jsScroll.slider[scrollId].setEnabled();
            // mozilla
            Event.observe(contentId, 'DOMMouseScroll', function(e){
                dvsk_site.jsScroll.wheel(e, scrollId);
            });
            // IE/Opera
            Event.observe(contentId, 'mousewheel', function(e){
                dvsk_site.jsScroll.wheel(e, scrollId);
            });
        }
        else if (dvsk_site.jsScroll.slider && dvsk_site.jsScroll.slider[scrollId]){
            dvsk_site.jsScroll.slider[scrollId].setDisabled();
            $(scrollId).hide();
        }
    },
    // scroll the element vertically based on its width and the slider maximum value
    scrollVertical: function(value, element, slider) {
        element.scrollTop = Math.round(value/slider.maximum*(element.scrollHeight-element.offsetHeight));
    },
    wheel: function(event, scrollId){
        var delta = 0;
        event = dvsk_common.getEvent(event);
        if (event.wheelDelta) { /* IE/Opera. */
            delta = event.wheelDelta/120;
            /** In Opera 9, delta differs in sign as compared to IE. */
//            if (window.opera)
//                delta = -delta;
        } else if (event.detail) { /** Mozilla case. */
            /** In Mozilla, sign of delta is different than in IE.
             * Also, delta is multiple of 3.
             */
            delta = -event.detail/3;
        }
        /** If delta is nonzero, handle it.
         * Basically, delta is now positive if wheel was scrolled up,
         * and negative, if wheel was scrolled down.
         */
        if (delta)
            dvsk_site.jsScroll.slider[scrollId].setValueBy(-delta/3)

        /** Prevent default actions caused by mouse wheel.
         * That might be ugly, but we handle scrolls somehow
         * anyway, so don't bother here..
         */
        if (event.preventDefault)
            event.preventDefault();

        event.returnValue = false;
    }
};

document.observe("dom:loaded", function(){
    // vertical slider control
    dvsk_site.jsScroll.go('vscroll', 'content-text');
});
