var carritoComprasVenta = (function($){	
	var init = function (){			
        var opcionesViewUrl;
        var params = {};          
        opcionesViewUrl = ordenCompraViewUrl;                   
        params.dispositivos = localStorage.getItem("dispositivos");
        var tamannoPantalla = screen.width;
        params.tamannoPantalla = tamannoPantalla;
        cargarInformacionVista(opcionesViewUrl, params, errorCarritoCompras);                     
	};	
	var eventHandlers = function (){			
	
	};			
	return {		
		cargarInformacionVista : cargarInformacionVista,
		cargarModalDetallePlan : cargarModalDetallePlan,
		detallePlanClickEvent : detallePlanClickEvent,
		detalleAccesorioClickEvent : detalleAccesorioClickEvent,
		ocultarPopoverBodyClickEvent : ocultarPopoverBodyClickEvent,
		init: init,	
		eventHandlers : eventHandlers
	};		
})(jQuery);

var cargarInformacionVista = function(url, params, error) {
	$('#loadingModal').modal('show');
    $.ajax({
        url: url,
        type: "POST",
//        dataType: "html",
        data: params
    }).done(function(data, textStatus, jqXHR) {
    	if (jqXHR.responseJSON) {
    		if (data.status == -1) {
                if (data && data.errorMessages && data.errorMessages.length > 0) {
                    for (var i in data.errorMessages) {
                        $("#ulListaMensajesError").append("<li>" + data.errorMessages[i] + "</li>").css('list-style-type', 'none');
                    }
                    $("#divMensajesCarrito").show();                      
                }
                $(window).scrollTop(0);
            }	    		
   	    } else {
	        $("#divCarritoCompras").html(data);
	        $(window).scrollTop(0);
   	    }
    }).fail(function() {
        $("#modalErrorView").modal("show");
        $("#modalErrorView #mensajeModalError").text(error);            
    }).always(function() {
    	$('#loadingModal').modal('hide');
    });
};

var cargarModalDetallePlan = function(url, params, error, topLink) {
    $.ajax({
        url: url,
        type: "POST",
        dataType: "html",
        data: params
    }).done(function(data) {  
   
        $("#divModalDetallePlan").html(data);	         
        //popup tooltip
        $('[data-toggle="popover"]').popover({
            container: 'body',
            html: true,
            trigger: 'manual',
            content: function () {       
            	var clone =  $($(this).data('popover-content')).clone(true).removeClass('hide');       
                return clone;
            }
        }).click(function(e) {
            e.preventDefault(); 
            $('[data-toggle="popover"]').not(e.target).popover("destroy");
            $(".popover").remove();                    
        });  
        var dispositivo = JSON.parse(params.dispositivo);  
        $("#popover"+ params.id).popover("toggle");         
        
        if ($(".popover").offset() != undefined) {
        	var modalHeight = $(".popover").height();
        	var topPopover = topLink-(modalHeight/2)-50;
        	if (topPopover > 0) {
        		$(".popover").css("top", topPopover+"px");
			} else {
				$(".popover").css("top", "30px");
			}
        	
        	if (dispositivo.tipoVenta == TIPO_VENTA_KITPREPAGO && !params.esDetalleDominio && !params.esDetallePaqueteInternet) {
        		$(".popover").addClass("estilosPrepagoDetalleCarrito");
        	} else if (dispositivo.tipoVenta == TIPO_VENTA_KITPREPAGO && (params.esDetalleDominio || params.esDetallePaqueteInternet)) {
        		$(".popover").addClass("otrosEstilosPrepagoDetalleCarrito");
        	} else if (dispositivo.tipoVenta == TIPO_VENTA_CONTADO) {
        		if (dispositivo.esTerminalAccesorio == 'true') {
        			$(".popover").addClass("estilosContadoAccesorioDetalleCarrito");
				} else {
					$(".popover").addClass("estilosContadoDetalleCarrito");
				}
        	} else {
        		$(".popover").addClass("estilosDetalleCarrito");
        	}
        	
        	var topModal = $(".popover").offset().top;
    		var topFinal = (topLink-topModal)-5;
        	if (topFinal < topLink) {	
        		$(".arrow").attr("style","top: "+topFinal+"px; margin-top: 0");
			} else {
				$(".arrow").attr("style","top: 0; margin-top: 0");
			}
		}
       
        //modal
//    	$("#modalDetallePlanView").modal("show");	
    }).fail(function() {
        $("#modalErrorView").modal("show");
        $("#modalErrorView #mensajeModalError").text(error);            
    }).always(function() {    	
    });
};

var detallePlanClickEvent = function() {
	$(".detallePlan").click(function(event) {
		event.preventDefault();				
		//obtiene el dispositivo
		var listaDispositivos = localStorage.getItem("dispositivos");
		var id = $(this).attr("data-id");
		var esDetalleDominio = $(this).attr("data-esDetalleDominio");
		var esDetallePaqueteInternet = $(this).attr("data-esDetallePaqueteInternet");
		var dispositivo;
		if (esDetalleDominio) {
			dispositivo = jsonPath(jQuery.parseJSON(listaDispositivos), "$.dispositivos[?(@.planDispositivo.idServicioDominioAux==" + id + ")]");
		} else if (esDetallePaqueteInternet) {
			dispositivo = jsonPath(jQuery.parseJSON(listaDispositivos), "$.dispositivos[?(@.planDispositivo.idPaqueteInternet==" + id + ")]");
		} else {
			dispositivo = jsonPath(jQuery.parseJSON(listaDispositivos), "$.dispositivos[?(@.id==" + id + ")]");
		}
		var params = {};	
		params.dispositivo = JSON.stringify(dispositivo[0]);
		params.id = id;
		params.esDetalleDominio = esDetalleDominio;
		params.esDetallePaqueteInternet = esDetallePaqueteInternet;
		var topLink = $(this).offset().top;
		cargarModalDetallePlan(modalDetallePlanViewUrl, params, errorCarritoCompras, topLink);
	});	
}

var detalleAccesorioClickEvent = function() {
	$(".detalleAccesorio").click(function(event) {
		event.preventDefault();				
		//obtiene el dispositivo
		var listaDispositivos = localStorage.getItem("dispositivos");
		var idAccesorio = $(this).attr("data-idaccesorio");
		var dispositivo = jsonPath(jQuery.parseJSON(listaDispositivos), "$.dispositivos[?(@.idAccesorio==" + idAccesorio + ")]");
		var params = {};	
		params.dispositivo = JSON.stringify(dispositivo[0]);
		params.id = idAccesorio;
		var topLink = $(this).offset().top;
		cargarModalDetallePlan(modalDetalleAccesorioViewUrl, params, errorCarritoCompras, topLink);
	});	
}

var ocultarPopoverBodyClickEvent = function() {
	$('body').on('click', function (e) {
	    //did not click a popover toggle or popover
	    if ($(e.target).data('toggle') !== 'popover'
	        && $(e.target).parents('.popover.in').length === 0) { 
	        $('[data-toggle="popover"]').popover('hide');
	    }
	});
}

$(document).ready(function() {
	carritoComprasVenta.init();
	carritoComprasVenta.eventHandlers();	
});
