gsm  = 0;
edge = 0;
umts = 0;
cur  = 3;
cari = 1;

function addMarker(point) {
    var matches = window.location.search.match('(\\?|;|&|^)rev=([^;&]*)(;|&|$)');

    if (matches) {
        var rev = '&rev='+ matches[2];
    } else {
        var rev = '';
    }

    $.getJSON('/yksityisille/json.php?lon='+point.x+'&lat='+point.y+rev, function(data, status) {
        if (status == 'success') {
            if ($('#kartta-valitsin').css('z-index') == '-1') {
                $('#kartta-valitsin-info').hide();
                $('#kartta-valitsin').css('z-index', '22');
            }

            var baseIcon      = new GIcon(G_DEFAULT_ICON);
            baseIcon.image    = '/yksityisille/assets/img/ico_'+ data.type +'.png';
            baseIcon.shadow   = '';
            baseIcon.iconSize = new GSize(55, 37);
            baseIcon.iconAnchor = new GPoint(55/2, 37);
            baseIcon.infoWindowAnchor = new GPoint(55/2, 37);

            var markpoint = new GLatLng(data.latitude, data.longitude);

            markopts = { icon: baseIcon, clickable: false };

            var marker = new GMarker(markpoint, markopts);

            // map.setCenter(point);
            map.addOverlay(marker);

            switch (data.type) {
                case 'gsm':
                    gsm  = 1;
                    break;
                case 'edge':
                    gsm  = 1;
                    break;
                case 'umts900':
                    gsm  = 0;
                    break;
                case 'umts2100':
                    gsm  = 0;
                    break;
                default:
                    break;
            }

            if (gsm == 1) {
                moveto(0);
            } else {
                moveto(2);
            }
        }
    });
}

function karttacarousel(dir,width,n) {
	if(dir == 'next') { cari++; } else { cari--; }

	$('#kartta-valitsin .c').animate({
		left: -width*cari 
	}, 'fast', function() {

		if(cari >= n) { 
			$('#kartta-valitsin .c').css('left',n*width); 
			$('#kartta-valitsin .c').animate({
				left:0  
			},'fast'); 
			cari = 0;
		} else if(cari <= -1) {
		$('#kartta-valitsin .c').css('left',-n*width); 
			$('#kartta-valitsin .c').animate({ 
				left:-(n-1)*width
			},'fast'); 
			cari = n-1;
		}

	});
}

function moveto(n) {
    var width = $('#kartta-valitsin .c li:eq(0)').width();

	$('#kartta-valitsin .c').animate({
		left: -width*n 
	}, 'fast');

    cari = n;
}

$(document).ready( function() {
	var ie55 = (navigator.appName == "Microsoft Internet Explorer" && parseInt(navigator.appVersion) == 4 && navigator.appVersion.indexOf("MSIE 5.5") != -1);
	var ie6 = (navigator.appName == "Microsoft Internet Explorer" && parseInt(navigator.appVersion) == 4 && navigator.appVersion.indexOf("MSIE 6.0") != -1);
	if (jQuery.browser.msie && (ie55 || ie6)) {
        DD_belatedPNG.fix('#kartta-info, #kartta-haku .btn, #kartta-haku-info, #kartta-valitsin-info, #kartta-bottom, #kartta-tohtori-dropdown, .kartta-graf');
        $('#kartta-haku .btn').css('vertical-align', 'top');
    }

    moveto(2);

    $('#kartta-top .info').mouseover( function() {
        $('#kartta-info').show();
    })
    $('#kartta-info').mouseout( function() {
        $('#kartta-info').hide();
    });
    $('#kartta-valitsin-info a').click( function(e) {
        e.preventDefault();

        $('#kartta-valitsin-info').hide();
        $('#kartta-valitsin').css('z-index', '22');
    })
    $('#kartta-haku .address').mouseover( function() {
        $('#kartta-haku-info').show();
    }).mouseout( function() {
        $('#kartta-haku-info').hide();
    });

    $('#kartta-tohtori-dropdown-select').change( function() {
        var url = $('#kartta-tohtori-dropdown-select option:selected').val();
        if (url != '') {
            window.location=url;
        }
    });
    $('#kartta-tohtori').mouseover( function() {
        if ($('#kartta-tohtori-dropdown').is(':hidden')) {
            $('#kartta-tohtori-dropdown').show();
        }
    });
    $('#kartta-tohtori-dropdown-close').click( function() {
        if ($('#kartta-tohtori-dropdown').is(':visible')) {
            $('#kartta-tohtori-dropdown').hide();
        }
    });

	var width = $('#kartta-valitsin .c li:eq(0)').width();
	var n = $('#kartta-valitsin .c li').size();
	
	if(n <= 1) $('#kartta-valitsin .prev, #kartta-valitsin .next').hide();

	$('#kartta-valitsin .c').css('width', n*width);
	$('#kartta-valitsin .prev, #kartta-valitsin .next').click(function() {
		karttacarousel($(this).attr('class'), width, n);
		return false;
	});

    if (GBrowserIsCompatible()) {
        sw  = new GLatLng(59.753428, 20.547416);
        ne  = new GLatLng(70.092219, 31.586691);
        bounds = new GLatLngBounds(sw, ne);

        map = new GMap2($('#kartta')[0], { mapTypes:[G_NORMAL_MAP], draggableCursor: 'default' });
        map.disableInfoWindow();
        // map.disableDoubleClickZoom();
        if(!$.browser.safari) { map.enableScrollWheelZoom(); }
        map.setCenter(new GLatLng(60.7,25.5), 7);
        map.addControl(new GLargeMapControl3D());
        map.addControl(new GOverviewMapControl());

        $('#kartta-top .reset').click( function(e) {
            e.preventDefault();

            map.clearOverlays();
            map.setCenter(new GLatLng(60.7,25.5), 7);

            moveto(2);
        })

        GEvent.addListener(map, "click", function(overlay, point) {
            if (bounds.contains(point)) {
                addMarker(point);
            }
        });

        $('#kartta-haku form .btn').click( function(e) {
            e.preventDefault();

            if ($('#kartta-haku .address').val() != '') {
                geocoder = new GClientGeocoder();
                geocoder.getLatLng($('#kartta-haku .address').val(), function(point) {
                    if (point) {
                        if (bounds.contains(point)) {
                            map.setCenter(point);

                            addMarker(point);
                        }
                    } else {
                        alert('Osoitetta ei löytynyt');
                    }
                });
            }
        });

        $('#kartta-haku form').submit( function(e) {
            e.preventDefault();

            if ($('#kartta-haku .address').val() != '') {
                geocoder = new GClientGeocoder();
                geocoder.getLatLng($('#kartta-haku .address').val(), function(point) {
                    if (point) {
                        if (bounds.contains(point)) {
                            map.setCenter(point);

                            addMarker(point);
                        }
                    } else {
                        alert('Osoitetta ei löytynyt');
                    }
                });
            }
        });
    }
});

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