(function($) {
    jQuery.fn.extend({
        addToCart: function(id, addUrl, removeUrl, date_start, date_stop, urlCart, active, urlForceRemove, urlMail, urlGantt, urlDettaglio) {
            var cart = $("#cart");
            var charging = $("#charging_image");
            var self = $(this);
            var gantt=null;
            var w=null;
            var p=null;

            $(this).click(function() {
                if(active==false) {
                    request=confirm("Vuoi richiedere al gestore di attivare la prenotazione online?");
                    if(request==true){
                        $.ajax({
                            url:  urlMail,
                            data: "sunbrella_id="+id+
                            "&date_start="+date_start+
                            "&date_stop="+date_stop
                        });
                    }
                    return false;
                }

                if($(this).hasClass("disabled")) {
                    alert("Questo elemento risulta disabilitato dal gestore");
                    return false;
                }

                if($(this).hasClass("reserved") || $(this).hasClass("reserved_online")) {
//                    alert("Questo servizio risulta prenotato");
//                    return false;
                    gantt=confirm("Questo servizio risulta prenotato\nVisualizza il piano di occupazione.")
                    if(gantt){
                        w=window.open(urlGantt,'Occupazione','left=100,top=300,width=1200,height=200,location=no,scrollbars=yes,resizable=no,directories=no,status=no,toolbar=no,menubar=no');
                        w.focus();
                        return false;
                    }else{
                        return false;
                    }
                }

                if($(this).hasClass("partial")) {
//                    alert("Questo servizio risulta parzialmente prenotato");
//                    return false;
                    gantt=confirm("Questo servizio risulta prenotato\nVisualizza il piano di occupazione.")
                    if(gantt){
                        w=window.open(urlGantt,'Occupazione','left=100,top=300,width=1200,height=200,location=no,scrollbars=yes,resizable=no,directories=no,status=no,toolbar=no,menubar=no');
                        w.focus();
                        return false;
                    }else{
                        return false;
                    }
                }

                if($(this).hasClass("locked")) {
                    if(confirm("Rimuovi prenotazione")) {
                        $.ajax({
                            url:  removeUrl,
                            data: "sunbrella_id="+id+
                            "&date_start="+date_start+
                            "&date_stop="+date_stop,
                            async: false,
                            start: charging.show(),
                            success: function(){
                                charging.hide();
                                cart.reloadCart(urlCart);
                                self.removeClass("locked");
                                p=window.open(urlDettaglio,'DETTAGLIO','left=50,top=0,width=900,height=700,location=no,scrollbars=yes,resizable=no,directories=no,status=no,toolbar=no,menubar=no');
                                p.focus();
                                return false;
                            },
                            error: function(){
                                charging.hide();
                                force=confirm("Hai iniziato il pagamento presso la banca.\nConfermi l'eliminazione delle prenotazioni non concluse?");
                                if(force){
                                    $.ajax({
                                        url: urlForceRemove,
                                        success: function(){
                                            window.location.reload();
                                        }
                                    });
                                }
                            }
                        });
                    } else {
                        return false;
                    }
                } else {
                    $.ajax({
                        url:  addUrl,
                        data: "sunbrella_id="+id+
                        "&date_start="+date_start+
                        "&date_stop="+date_stop,
                        start: charging.show(),
                        dataType: "text",
                        success: function(result){
                            if(result == true) {
                                charging.hide();
                                cart.reloadCart(urlCart);
                                self.addClass("locked");
                            //alert('Vai al DETTAGLIO in alto, accanto alle DATE, per procedere o aggiungere altri servizi da prenotare');
                            } else {
                                alert("Qualcuno ha prenotato prima di te");
                                cart.reloadCart(urlCart);
                                self.addClass("reserved");
                            }
                        }
                    });
                    var dettaglio=confirm("Vai al DETTAGLIO per procedere con la prenotazione")
                    if(dettaglio) {
                        p=window.open(urlDettaglio,'DETTAGLIO','left=50,top=0,width=900,height=700,location=no,scrollbars=yes,resizable=no,directories=no,status=no,toolbar=no,menubar=no');
                        p.focus();
                    }
                    return false;
                }
            });
        }, //end addToCart

        reloadCart: function(urlCart) { // prenotazioni/updateCart
            var cart = $("#cart");
            var charging = $("#charging_image");
            var carrello = $(".carrello");
            $.ajax({
                url: urlCart,
                start: charging.show(),
                success: function(html){
                    charging.hide();
                    cart.empty();
                    cart.append(html);
                    if(html != "0") {
                        carrello.show("slow");
                    } else {
                        carrello.hide("slow");
                    }
                }
            });
        }, // end reloadCart

        checkCart: function(urlCart, urlMap, beach_id, date_start, date_stop) { // prenotazioni/updateCart
            var cart = $("#cart");
            var carrello = $(".carrello");
            var sClassUpdate = $("#mappa_spiaggia");
            $.ajax({
                url: urlCart,
                success: function(html){
                    cart.empty();
                    cart.append(html);
                    if(html != "0")
                    {
                        carrello.show();
                    } else {
                        carrello.hide();
                    }
                }
            });
            $.ajax({
                url: urlMap,
                data: "beach_id="+beach_id+
                "&date_start="+date_start+
                "&date_stop="+date_stop,
                async: false,
                success: function(html){
                    sClassUpdate.empty();
                    sClassUpdate.append(html);
                }
            });
        }, // end reloadCart


        cal_start: function(sStopElement, customRange, beach_id, urlMap, urlEmpty, urlCart, urlDettaglio, callback) {
            var cart = $("#cart");
            var sClassUpdate = $("#mappa_spiaggia");
            var sClassImgTmp = $("#loading_image");
            var p=null;
            $(this).datepicker({
                dateFormat: "dd-mm-yy",
                showOn: "both",
                monthNames: ["Gennaio", "Febbraio", "Marzo", "Aprile", "Maggio", "Giugno", "Luglio", "Agosto", "Settembre", "Ottobre", "Novembre", "Dicembre"],
                dayNamesMin: ["Dom", "Lun", "Mar", "Mer", "Gio", "Ven", "Sab", "Dom"],
                beforeShow: customRange,
                onSelect: function(date) {
                    var confirm_clear = confirm("Il cambio di data cancellerà le eventuali prenotazioni finora effettuate escluse quelle bloccate prima di iniziare il pagamento presso la banca. Procedere?");
                    if(confirm_clear){
                        cart.emptyCart(urlEmpty, urlCart);
                    }else{
                        return false;
                    }
                    var date_start_parts = $(this).val().split("-");
                    var date_stop_parts = sStopElement.val().split("-");
                    var start = date_start_parts[2] + date_start_parts[1] + date_start_parts[0];
                    var stop = date_stop_parts[2] + date_stop_parts[1] + date_stop_parts[0];
                    if(stop < start)
                        sStopElement.val(date);
                    $.ajax({
                        url: urlMap,
                        data: "beach_id="+beach_id+
                        "&date_start="+$(this).val()+
                        "&date_stop="+sStopElement.val(),
                        async: false,
                        start: sClassImgTmp.show(),
                        success: function(html){
                            sClassImgTmp.hide();
                            sClassUpdate.empty();
                            sClassUpdate.append(html);
                            if(typeof callback == 'function'){
                                callback.call(this);
                            }
                        }
                    });
                }
            });
        }, //end cal_start

        cal_stop: function(sStartElement, customRange, beach_id, urlMap, urlEmpty, urlCart, urlDettaglio, callback) {
            var cart = $("#cart");
            var sClassUpdate = $("#mappa_spiaggia");
            var sClassImgTmp = $("#loading_image");
            var p=null;
            $(this).datepicker({
                dateFormat: "dd-mm-yy",
                showOn: "both",
                monthNames: ["Gennaio", "Febbraio", "Marzo", "Aprile", "Maggio", "Giugno", "Luglio", "Agosto", "Settembre", "Ottobre", "Novembre", "Dicembre"],
                dayNamesMin: ["Dom", "Lun", "Mar", "Mer", "Gio", "Ven", "Sab", "Dom"],
                beforeShow: customRange,
                onSelect: function(date) {
                    var confirm_clear = confirm("Il cambio di data cancellerà le eventuali prenotazioni finora effettuate escluse quelle bloccate prima di iniziare il pagamento presso la banca. Procedere?");
                    if(confirm_clear == false)
                    {
                        return false;
                    } else {
                        cart.emptyCart(urlEmpty, urlCart);
                    };
                    var date_start_parts = sStartElement.val().split("-");
                    var date_stop_parts = $(this).val().split("-");
                    var start = date_start_parts[2] + date_start_parts[1] + date_start_parts[0];
                    var stop = date_stop_parts[2] + date_stop_parts[1] + date_stop_parts[0];
                    if(stop < start)
                        sStartElement.val(date);
                    $j.ajax({
                        url: urlMap,
                        data: "beach_id="+beach_id+
                        "&date_start="+sStartElement.val()+
                        "&date_stop="+$(this).val(),
                        async: false,
                        start: sClassImgTmp.show(),
                        success: function(html){
                            sClassImgTmp.hide();
                            sClassUpdate.empty();
                            sClassUpdate.append(html);
                            if(typeof callback == 'function'){
                                callback.call(this);
                            }
                        }
                    });
                }
            });
        }, //end cal_stop

        setSeasonal: function(date_start, date_stop, beach_id, urlMap, urlEmpty, urlCart) {
            var cart = $("#cart");
            var sClassUpdate = $("#mappa_spiaggia");
            var sClassImgTmp = $("#loading_image");
            cart.emptyCart(urlEmpty, urlCart);
            $j.ajax({
                url: urlMap,
                data: "beach_id="+beach_id+
                "&date_start="+date_start+
                "&date_stop="+date_stop,
                async: false,
                start: sClassImgTmp.show(),
                success: function(html){
                    sClassImgTmp.hide();
                    sClassUpdate.empty();
                    sClassUpdate.append(html);
                }
            });
        }, //end setSeasonal

        emptyCart: function(urlEmpty, urlCart) {
            var cart = $("#cart");
            $.ajax({
                url: urlEmpty,
                async: false,
                success: function(){
                    cart.reloadCart(urlCart);
                }
            });
        } //end cleanCart
	
    });
})(jQuery);

(function($) {
    jQuery.extend({
        setPosition: function() {
            var mappa=$("#mappa_spiaggia").offset();
            $("#mappa_spiaggia").data("left", mappa.left);
            $("#mappa_spiaggia").data("top", mappa.top);
            
            var objs=$j(".pacchetti");
            objs.each(function(){
                var self=$(this);
                var obj=self.offset();
                self.css({
                    left:parseInt(obj.left)+parseInt(mappa.left),
                    top:parseInt(obj.top)+parseInt(mappa.top)
                });
            });
        }, // end setPosition
        
        redoPosition: function() {
            
            var mappa=$("#mappa_spiaggia").offset();
            $("#mappa_spiaggia").data("left", mappa.left);
            $("#mappa_spiaggia").data("top", mappa.top);
            
            var objs=$j(".pacchetti");
            objs.each(function(){
                var self=$(this);
                var ol=self.data("left");
                var ot=self.data("top");
                var left=parseInt(mappa.left)+parseInt(ol);
                var top=parseInt(mappa.top)+parseInt(ot);
                self.css({
                    left:left,
                    top:top
                });
            });
        } // end redoPosition
    });
})(jQuery);

(function($)
{
    $.sendMailToGestore = function(beach_id, urlMail) {
        alert("Lo Stabilimento Balneare non ha ancora attivato il servizio di prenotazione online");
        $.ajax({
            url: urlMail,
            async: false,
            data: "beach_id="+beach_id
        });
    };
    
    $.refreshCart = function(url) {
        var cart = $("#cart");
        cart.hide();
        cart.html("");
        $.ajax({
            url:  url,
            success: function(html){
                cart.html(html);
                cart.show();
            }
        });
    }
})(jQuery);
