/********************************/
/* www.nasze-zagle.pl           */
/* author: Tomasz Nabrzeski     */
/* e-mail: tnabrzeski@gmail.com */
/* year:   2008                 */
/********************************/

var Submits = {
    init: function() {
        $("form").submit(Submits.click);
        $("a.logout").click(Submits.logout);
    },

    click: function() {
        $("input[type='submit']", $(this)).addClass('disabled');
        $("input[type='submit']", $(this)).attr('disabled','disabled');
        $("input[type='submit']", $(this)).blur();
    },

    logout: function() {
        return (confirm('Czy chcesz się wylogować?') ? true : false);
    },

    active: function() {
        $("input[type='submit']").removeClass('disabled');
        $("input[type='submit']").attr('disabled','');
    }
}


var Tables = {
    init: function() {
        $('table tr').mouseover( Tables.rowactive );
        $('table tr').mouseout( Tables.rownotactive );
    },

    rowactive: function() {
        $(this).addClass('hover');
    },

    rownotactive: function() {
        $(this).removeClass('hover');
    }
}


var Forms = {
    init: function() {
        $('#loadingOnSubmit').submit(Forms.loading);

        image = new Image();
        image.src = '/images/loading.gif';

        $("input[type=text],input[type=password],textarea").focus(Forms.inputFocus);
        $("input[type=text],input[type=password],textarea").blur(Forms.inputBlur);
    },

    loading: function() {
        $(this).css('display', 'none');
        $(this).after('<div id="loading">Przetwarzanie formularza<br />Proszę czekać</div>');
    },

    inputFocus: function() {
        $(this).addClass('active');
    },

    inputBlur: function() {
        $(this).removeClass('active');
    }
}


var Rejs = {
    mapa:   null,
    click:  null,
    start:  null,
    index:  0,

    init: function(id) {
        if (GBrowserIsCompatible()) {
            Rejs.mapa = new GMap2(document.getElementById("map"));
            Rejs.mapa.addControl(new GLargeMapControl());
            Rejs.mapa.addControl(new GMapTypeControl());
            Rejs.mapa.setMapType(G_SATELLITE_MAP);
            Rejs.mapa.setCenter(new GLatLng(52.749607,15.25677), 3);

            Rejs.start = Rejs.mapa.fromLatLngToDivPixel(Rejs.mapa.getCenter());

            if (id) {
                GEvent.addListener(Rejs.mapa,"singlerightclick",function(p) { Rejs.dodajPunkt(p); });
            }

            Rejs.startMap();
        }
    },

    dodajPunkt: function(p) {
        var srodek = Rejs.mapa.fromLatLngToDivPixel(Rejs.mapa.getCenter());
        var punkt  = Rejs.mapa.fromDivPixelToLatLng(new GPoint(p.x + (srodek.x - Rejs.start.x), p.y + (srodek.y - Rejs.start.y)));

        Rejs.index++;

        $('#trasa').append('<a href="javascript:void(0)" onclick="$(this).remove();Rejs.narysuj()" rel="'+punkt.x+','+punkt.y+'">Punkt '+Rejs.index+'</a>');

        Rejs.narysuj();
    },

    narysuj: function() {
        Rejs.mapa.clearOverlays();

        var punkty = $('#trasa a');

        for (i = 0; i < punkty.length; i++) {
            if (i == 0) {
                var punkt1 = $(punkty[i]).attr('rel').split(",");
                var marker = new GMarker(new GPoint(punkt1[0], punkt1[1]));
                Rejs.mapa.addOverlay(marker);
            } else {
                var punkt1 = $(punkty[i-1]).attr('rel').split(",");
                var punkt2 = $(punkty[i]).attr('rel').split(",");
                var polilinia = new GPolyline([new GPoint(punkt1[0], punkt1[1]),new GPoint(punkt2[0], punkt2[1])],'#ff0000',4,0.8);
                polilinia.maxzoom = 20;
                polilinia.minzoom = 1;
                Rejs.mapa.addOverlay(polilinia);
            }

            if (i == (punkty.length-1) && i > 0) {
                var marker = new GMarker(new GPoint(punkt2[0], punkt2[1]));
                Rejs.mapa.addOverlay(marker);
            }
        }
    },

    zapisz: function() {
        var punkty = $('#trasa a');

        if (punkty.length < 2) {
            alert('Nie wybrano trasy');
            return false;
        }

        $('#trasaForm input[type=button]').attr('disabled', 'disabled');

        for (i = 0; i < punkty.length; i++) {
            $('#trasaForm').append('<input type="hidden" name="punkty[]" value="'+$(punkty[i]).attr('rel')+'" />');
        }

        $('#trasaForm').submit();
    },

    startMap: function() {
        var punkty = $('#trasa a');

        if (punkty.length > 0) {
            var punkt1 = $(punkty[0]).attr('rel').split(",");
            Rejs.mapa.setCenter(new GLatLng(punkt1[1],punkt1[0]), 5);
            Rejs.narysuj();
        }
    },

    przesun: function(gdzie) {
        var punkt = gdzie.split(",");
        Rejs.mapa.panTo(new GLatLng(punkt[1],punkt[0]));
    }
}

var Search = {
    init: function() {
        $('#search a').click(Search.tabClick);
        $('form.search').submit(Search.submit);
    },

    tabClick: function() {
        $('#search a').removeClass('active');
        $(this).addClass('active');
        $(this).blur();

        $('form.search').css('display', 'none');

        $('#search-'+$(this).attr('rel')).css('display', 'block');
        $('#search-results').html('');
    },

    submit: function() {
        $('#search-results').html('<div id="loading">Wyszukiwanie... proszę czekać...</div>');
        $("input[type=text]").removeClass('active');

        $.ajax({
            type: "POST",
            url: $(this).attr('action'),
            data: $(this).serialize(),
            success: function(response){
                $('#search-results').html(response);
                Submits.active();
            },
            error: function(response){
                alert(response);
                Submits.active();
            }
        });


        return false;
    }
}

//execute functions when DOM is ready
$(document).ready(function(){
    Submits.init();
    Tables.init();
    Forms.init();
    Search.init();
    
    $('a[rel*=ext]').attr('target', '_blank');
});