
/*

JavaScript
FrameWork - Jquery
NOVEMBRO S.L.
2009/01/22

mail.js

*/

host = 'http://www.bodega-capricho.com';

$(document).ready(function() {

	// INICIALES
	var lg = $('#lang').text();
	var id_form; var peso_og; var precio_og;

	// FOTOS
	$('.foto-dialog').click( function () {
		var img = new Image();
		img.src = $(this).attr('src');
		var titulo = $(this).attr('alt');
		$(img).css({
			'border':'8px solid white',
			'padding': '0px',
			'margin-left': '10px'
			});

		$(img).dialog({
			title: titulo,
			modal:true,
			height: img.height,
			width: img.width,
			dialogClass: '',
			close:function() { $(this).dialog('destroy')}
			});
		// GOOGLE ANALYTICS
		pageTracker._trackEvent('click img tienda', ''+img.src, ''+lg );
		});

        /* Modificacion Carrito 2010-04*/
        $(document).ready(function(){
            $("#form-datos-personales").validate({
                rules: {
                        'nombre-contacto': {required:true},
                        'mail': { required: true, email: true },
                        'direccion': "required",
                        'telefono': "required",
                        'localidad': "required",
                        'zip': "required"
                },
                messages: {
                        'nombre-contacto': "Debe ingresar su nombre",
                        'mail': "Debe ingresar un e-mail correcto",
                        'direccion': "Debe ingresar su dirección",
                        'telefono': "Debe ingresar su teléfono",
                        'localidad': "Debe ingresar su localidad",
                        'zip': "Debe ingresar su código postal"
                }
            })
        })

        // GASTOS DE ENVIO
        $('#lugar-envio').change(function () {
            Carrito.refreshOtrosGastos();
        });

        // REMOVE ITEM
        $('.remove-cart-item').click(function() {
		Carrito.removeItem($(this).attr('rel'));
		Carrito.refreshCart();
		// GOOGLE ANALYTICS
		pageTracker._trackEvent('click remover item', ''+$(this).attr('rel'),''+lg );
		return false;
        });

        // CERRAR CARRITO
        $('.boton-close-carrito').click(function() {
		$('#carrito').dialog('destroy');
		// GOOGLE ANALYTICS
		pageTracker._trackEvent('click cerrar carrito', '',''+lg );
        });

        // MOSTRAR DATOS PERSONALES
        $('.boton-confirm-carrito').click(function() {

            try {
                var xml = Carrito.getCarritoCookieXML();

                var item = xml.find('bloque-tarifa');
                if (item.text() == "-1") {
                    throw new Error("bloque-tarifa");
                }
                // GOOGLE ANALYTICS
		pageTracker._trackEvent('click confirmar carrito', ''+document.location,''+lg );
		
            } catch (e) {
                $('#dialog').empty();
                $('#dialog')
                        .html('<div class="mail-message">'+msg['bloque-tarifa-empty-'+ lg]+'</div>')
                        .dialog({modal:true,width:500})
                        .unbind('dialogclose');
                return;
            }


            $('#carrito').dialog('destroy');
            Carrito.showDatosPersonales();
        });

        // ENVIAR DATOS PERSONALES
        $('.boton-enviar-datos-personales').click(function() {
        	// GOOGLE ANALYTICS
		pageTracker._trackEvent('click enviar compra', ''+document.location,''+lg );
		
            var form = $(this).parent('form');
            if (!$("#form-datos-personales").valid()){
                $("#form-datos-personales").validate();
                return false;
            }
            var xml = Carrito.getCarritoCookieXML();
            
            var item = xml.find('personales');
            item[0].parentNode.removeChild(item[0]);

            var nombreContacto = form.find('input[name="nombre-contacto"]').attr('value');
            var mail = form.find('input[name="mail"]').attr('value');
            var provincia = xml.find("lugar-envio").text();
            var localidad = form.find('input[name="localidad"]').attr('value');
            var zip = form.find('input[name="zip"]').attr('value');
            var direccion = form.find('input[name="direccion"]').attr('value');
            var telefono = form.find('input[name="telefono"]').attr('value');
            var consultas = form.find('textarea[name="consultas"]').val();

            var item = "<personales>";
            item += "<nombre-contacto>"+nombreContacto+"</nombre-contacto>";
            item += "<mail>"+mail+"</mail>";
            item += "<provincia>"+provincia+"</provincia>";
            item += "<localidad>"+localidad+"</localidad>";
            item += "<zip>"+zip+"</zip>";
            item += "<direccion>"+direccion+"</direccion>";
            item += "<telefono>"+telefono+"</telefono>";
            item += "<consultas>"+consultas+"</consultas>";
            item += "</personales>";
            try {
                var item_obj = $.xmlDOM(item);
                xml.find('xml').append(item_obj.find("personales")[0]);
            } catch(e) {
                xml.find('xml').append($(item));
                xml.find('personales').removeAttr("xmlns");
            }

            Carrito.saveCarritoCookieXML(xml);

            // abrir el formulario de pago
            $('#carrito-datos-personales').dialog('destroy');
            //Carrito.showPago();
            location.href='/web/php/conexion_sis.php';
        });

        // VOLVER A VER EL CARRITO
        $('.boton-volver-datos-personales').click(function() {
            $('#carrito-datos-personales').dialog('destroy');
            Carrito.showCart();
        });

        // VOLVER A DATOS PERSONALES
        $('.boton-volver-pago').click(function() {
            $('#carrito-pago').dialog('destroy');
            Carrito.showDatosPersonales();
        });

        // VER EL CARRITO
        $('.boton-ver-carrito').click(function() {
            Carrito.showCart();
        });


        // ADD CARRITO
        $('.boton-add-carrito').click(function(){
            $('#dialog').empty();
            $('#dialog')
                    .html('<div class="mail-message">'+msg['addingcart-'+ lg]+'</div>')
                    .dialog({modal:true,width:500})
                    .unbind('dialogclose');
            var m = "";
            try {
                Carrito.addItem($(this).parent('form'));
                $('#dialog').dialog('destroy');
                $(id_form).dialog('destroy');
                $('#dialog').removeClass('mail-message');
                Carrito.showCart();
            } catch (e) {
                $('#dialog').html('<div class="mail-message">'+msg['addingcart-error-'+ lg]+'</div>')
            }

            return false;
        })

	// PEDIDOS
	$('.bt-tienda').click(function() {
		id_form = '#'+$(this).attr('rel');
		peso_og =  $(id_form).find('input[name="embalaje"]').attr('value').split(' ')
		precio_og =  $(id_form).find('input[name="precio"]').attr('value').split(' ')

		$('#'+$(this).attr('rel')).dialog({
			modal:true,
			width:500,
			height:300,
			open: function () {},
			close : function () { $(this).dialog('destroy')}
			})
		// GOOGLE ANALYTICS
		pageTracker._trackEvent('formulario de compra', ''+document.location,''+id_form, ''+lg );

		return false
		});

        /* FIN Modificacion Carrito 2010-04*/

	// PETICION
	$('.boton-tienda').click(function(){

		// GOOGLE ANALYTICS
		pageTracker._trackEvent('enviar compra', ''+document.location, ''+lg );

		$('#dialog').empty();
		peticion = host + '/web/mailsender.py?' + $(this).parent('form').serialize();
		//alert(peticion);

		$.ajax({
			url: host + '/web/py/mailsender.py',
			type: 'GET',
			cache: false,
			dataType: 'text',
			data: peticion.replace('?','&') ,
			beforeSend: function(){
				$('#dialog')
					.html('<div class="mail-message">'+msg['nd-'+ lg]+'</div>')
					.dialog({modal:true,width:500})
					.unbind('dialogclose');
				},
			error: function(event, XMLHttpRequest, ajaxOptions, thrownError){
	    			$('#dialog').html('<div class="mail-message">'+msg['er-'+ lg]+'</div>');
				},
			success: function(data){
				// cerra modal
				$('#dialog').dialog('close');
				// formatear data
				data = data
					.replace(/\[bad_mail\]/, msg['bad_mail-'+ lg])
					.replace(/\[over_char\]/, msg['over_char-'+ lg])
					.replace(/\[msg\]/, msg['msg-'+ lg])
					.replace(/\[msg_ok\]/, msg['msg_ok-'+ lg]);

				// abrir modal

				$('#dialog')
					.dialog('option','height',500)
					.dialog('option','width',500)
					.html('<div class="mail-message">'+data+'</div>')
					.dialog('open')
					.bind('dialogclose', function(event, ui) {
						$('#dialog').dialog('destroy')
						$(id_form).dialog('destroy')
						$('#dialog').removeClass('mail-message')
						});
				}
			});
		return false
		})

	// CANTIDADES

	$('input[name="cantidad"]').keyup( function(e){
		var n = $(this).attr('value');
		n = n+'';
		n = parseFloat(n.replace(/,/,'.'));
		
		if (n>0) {
			$(id_form).find('input[name="embalaje"]').attr({'value': (peso_og[0]*n)+' '+peso_og[1]})
			$(id_form).find('input[name="precio"]').attr({'value': (precio_og[0]*n)+' '+precio_og[1]})
			}
		});

});

/* Modificacion Carrito 2010-04*/
var Carrito = {

    initCarritoCookie : function () {
        var xml = "<xml><items><total-carrito>0 €</total-carrito></items><personales></personales></xml>";
        $.cookie("carritoxml",xml,{ path: '/'});
        return xml;
    },

    getCarritoCookieXML : function () {
        var xml = $.cookie("carritoxml");
        if (!xml) {
            xml = Carrito.initCarritoCookie();
        }
        var xml_err = '%3C%3Fxml+version%3D%221.0%22%3F%3E%0A';
        if (xml.indexOf('xml+version') != -1) {
            xml = xml.substring(22,xml.length);
        }
        return $.xmlDOM(xml);
    },

    saveCarritoCookieXML : function (xml) {
        var xmltext = (new XMLSerializer()).serializeToString(xml.find("xml")[0]);
        try {
            var p1 = xmltext.indexOf('xmlns')-1;
            var p2 = xmltext.indexOf('"',p1+8)+1;
            if (p1 != -1) {
                xmltext = xmltext.substring(0,p1) + xmltext.substring(p2,xmltext.length);
            }
        } catch (e) {}
        $.cookie("carritoxml",xmltext,{ path: '/'});
    },

    addItem : function (form) {
        var xml = Carrito.getCarritoCookieXML();
        
        // elimino el producto si esta
        var ref = form.find('input[name="referencia"]').attr('value');
        
        $("referencia",xml).each(function(i) {
            if($(this).text() == ref) {
                var a = $(this).parent();
                a[0].parentNode.removeChild(a[0]);
            }
        });

		var cantidad = form.find('input[name="cantidad"]').attr('value');
		cantidad = isNaN(Number(cantidad)) ? "1" : cantidad;
        var item = "<item>";
        item += "<nombre-producto>"+form.find('input[name="nombre-producto"]').attr('value')+"</nombre-producto>";
        item += "<embalaje>"+form.find('input[name="embalaje"]').attr('value')+"</embalaje>";
        item += "<precio>"+form.find('input[name="precio"]').attr('value')+"</precio>";
        item += "<precio-relativo>"+form.find('input[name="precio-relativo"]').attr('value')+"</precio-relativo>";
        item += "<referencia>"+ref+"</referencia>";
        item += "<cantidad>"+cantidad+"</cantidad>";
        item += "</item>";
        try {
            var item_obj = $.xmlDOM(item);
            xml.find('items').append(item_obj.find("item")[0]);
        } catch (e) {
            xml.find('items').append($(item));
            xml.find('item').removeAttr("xmlns");
        }
        
        Carrito.saveCarritoCookieXML(xml);
    },

    removeItem : function (ref) {
        var xml = Carrito.getCarritoCookieXML();
        $("referencia",xml).each(function(i) {
            if($(this).text() == ref) {
                var a = $(this).parent();
                a[0].parentNode.removeChild(a[0]);
            }
        });
        Carrito.saveCarritoCookieXML(xml);
    },
    
    showPago : function () {
        $('#carrito-pago').dialog({
			modal:true,
			width:500,
			height:500,
			open: function () {},
			close : function () { $(this).dialog('destroy')}
			});
    },

    showDatosPersonales : function () {
        Carrito.rellenarDatosPersonales();
        $('#carrito-datos-personales').dialog({
			modal:true,
			width:500,
			height:600,
			open: function () {},
			close : function () { $(this).dialog('destroy')}
			});
    },

    showCart : function () {
        Carrito.refreshCart();
        $('#carrito').dialog({
			modal:true,
			width:500,
			height:300,
			open: function () {},
			close : function () { $(this).dialog('destroy')}
			});
    },

    rellenarDatosPersonales : function () {
        var xml = Carrito.getCarritoCookieXML();
        $('input[name="nombre-contacto"]').val(xml.find("nombre-contacto").text());
        $('input[name="mail"]').val(xml.find("mail").text());
        $('input[name="direccion"]').val(xml.find("direccion").text());
        $('input[name="telefono"]').val(xml.find("telefono").text());
        $('textarea[name="consultas"]').val(xml.find("consultas").text());
        $('#provincia-seleccionada')[0].innerHTML=xml.find("lugar-envio").text();
        $('input[name="localidad"]').val(xml.find("localidad").text());
        $('input[name="zip"]').val(xml.find("zip").text());
    },

    refreshCart : function () {

        var xml = Carrito.getCarritoCookieXML();

        var total = 0.0;
        var n = 0;
        var tbody = $("#carrito").find("tbody");
        tbody.empty();

        $("item",xml).each(function(i){

                var tr = document.createElement("tr");
                tbody.append(tr);

                var td = document.createElement("td");
                td.innerHTML = $(this).find('nombre-producto').text();
                tr.appendChild(td);

                var td = document.createElement("td");
                td.innerHTML = $(this).find('referencia').text();
                tr.appendChild(td);

                var td = document.createElement("td");
                td.innerHTML = $(this).find('precio-relativo').text();
                tr.appendChild(td);

                var td = document.createElement("td");
                td.innerHTML = $(this).find('embalaje').text();
                tr.appendChild(td);

                var td = document.createElement("td");
                td.innerHTML = $(this).find('cantidad').text();
                tr.appendChild(td);

                var td = document.createElement("td");
                td.innerHTML = $(this).find('precio').text();
                tr.appendChild(td);

                var td = document.createElement("td");
                td.innerHTML = '<a href="#" rel="'+ $(this).find('referencia').text() +'" class="remove-cart-item" onclick="Carrito.removeItem(this.rel);Carrito.refreshCart();return false;">X</a>';
                tr.appendChild(td);

                // sumar total
                total += Number($(this).find('precio').text().split(' ')[0]);

                n += 1;
	})

        total = redondear(total,2);
        
        $('#total-carrito').html(total + " €");

        var item = xml.find('total-carrito');
        item[0].parentNode.removeChild(item[0]);
        var item = "<total-carrito>" + total + " €</total-carrito>";
        try {
            var item_obj = $.xmlDOM(item);
            xml.find('items').append(item_obj.find("total-carrito")[0]);
        } catch(e) {
            xml.find('items').append($(item));
        }

        Carrito.saveCarritoCookieXML(xml);

        if (n == 0) {
            $('#carrito-content').addClass('oculto');
            $('#carrito-empty').removeClass('oculto');
        } else {
            $('#carrito-content').removeClass('oculto');
            $('#carrito-empty').addClass('oculto');
        }
        Carrito.refreshLugarEnvio();
        Carrito.refreshOtrosGastos();
    },
    
    refreshLugarEnvio : function () {
        
            var xml = Carrito.getCarritoCookieXML();
            var item = xml.find('idlugar-envio').text();
            $('#lugar-envio')[0].getElementsByTagName('option')[Number(item)].selected=true;
        
    },

    refreshOtrosGastos : function () {

        d = {};
        $("option",$('#lugar-envio')).each(function(i){
            if($(this)[0].selected) {
               d = {bloque:$(this)[0].value,
               idlugarenvio:i,
               lugar:$(this)[0].innerHTML};
            }
        });
        
        d['kg'] = 0;
        d['factura'] = 0;
        var xml = Carrito.getCarritoCookieXML();
        $("item",xml).each(function(i){
            var peso = $(this).find('embalaje').text();
            if (peso.indexOf('gr') != -1) {
                d['kg'] += Number(peso.split(' ')[0])/1000;
            } else {
                d['kg'] += Number(peso.split(' ')[0]);
            }
            d['factura'] += Number($(this).find('precio').text().split(' ')[0]);
        });

        $.ajax({
            url: host + '/web/php/calcula_gastos_envio.php',
            type: 'GET',
            cache: false,
            dataType: 'xml',
            data: d ,
            success: function(data){
                    var xml = Carrito.getCarritoCookieXML();
                    try {
                        var item = xml.find('otros-gastos');
                        item[0].parentNode.removeChild(item[0]);
                    } catch (e) {}

                    var t = Number($(data).find('gastos-envio').text()) + Number($(data).find('gastos-aduanas').text());
                    t += Number($('total-carrito',xml).text().split(' ')[0]);

                    t = redondear(t,2);
                    var item = "<otros-gastos>";
                    item += "<idlugar-envio>" + d["idlugarenvio"] + "</idlugar-envio>";
                    item += "<lugar-envio>" + d["lugar"] + "</lugar-envio>";
                    item += "<bloque-tarifa>" + d["bloque"] + "</bloque-tarifa>";
                    item += "<gastos-envio>" + $(data).find('gastos-envio').text() + "</gastos-envio>";
                    item += "<gastos-aduanas>" + $(data).find('gastos-aduanas').text() + "</gastos-aduanas>";
                    item += "<total-carrito-sum>" + t + "</total-carrito-sum>";
                    item += "</otros-gastos>"
                    try {
                        var item_obj = $.xmlDOM(item);
                        xml.find('xml').append(item_obj.find("otros-gastos")[0]);
                    } catch(e) {
                        xml.find('xml').append($(item));
                    }

                    Carrito.saveCarritoCookieXML(xml);
                    Carrito.showOtrosGastos();
            }
        });
    },

    showOtrosGastos : function () {
        var xml = Carrito.getCarritoCookieXML();
        $('#gastos-envio').html($('gastos-envio',xml).text() + " €");
        $('#gastos-aduanas').html($('gastos-aduanas',xml).text() + " €");
        $('#total-carrito-sum').html($('total-carrito-sum',xml).text() + " €");
    }

}

function redondear(cantidad, decimales) {
    var cantidad = parseFloat(cantidad);
    var decimales = parseFloat(decimales);
    decimales = (!decimales ? 2 : decimales);
    return Math.round(cantidad * Math.pow(10, decimales)) / Math.pow(10, decimales);0
}

/* FIN Modificacion Carrito 2010-04*/

