﻿var lastAddedVerId = -1;

var jsc_text_shopping_cart = 'carro de compra';
var jsc_text_discount = 'descuento: ';
var jsc_text_charge = 'recargo: ';
var jsc_text_total = 'total: ';
var jsc_text_shipping = 'gastos de env&iacute;o: ';
var jsc_text_go = 'proceder a la compra!';
var jsc_text_confirm_delete = 'Se va a eliminar el producto del carrito. ¿Estás seguro?';
var jsc_text_tax = '+ IVA';
var jsc_text_tax_label = 'IVA: ';

var MRW_IsActive = false;
var MRW_Coste = 0;
var MRW_Shipping_Saturday = false;

function loadShoppingCart() {

    ShippingCostMRW();

	var oAjax = new WBE_AjaxClass();
	xmlObj = oAjax.throwEventXML('com_get_shopping_cart_xml');
	
	if (xmlObj) {
		printShoppingCart(xmlObj);
	} else {
		cleanShoppingCart(xmlObj);
	}
}

function cleanShoppingCart(xmlObj) {
	var oElem = document.getElementById('carrito'); 
	cleanDiv(oElem);
	oElem.style.display = 'none';
}

function printShoppingCart(xmlObj) {

	var oElem = document.getElementById('carrito'); 
	cleanDiv(oElem);
	
	if (xmlObj.childNodes[0].childNodes.length <= 0) // Carrito vacio
	{
		oElem.style.display = 'none';
	}
	else
	{
		oElem.style.display = 'block';
	}
	
	if (xmlObj.childNodes[0].childNodes.length > 0) {

		var oTemp = document.createElement('h3');
		oTemp.innerHTML = jsc_text_shopping_cart;
		oElem.appendChild(oTemp);
		
		//var oWrapDiv = document.createElement('div');
		//oWrapDiv.id = 'carrito_wrap';

			var oTable = document.createElement('table');
			//oTableLines.cellPadding = '0';
			//oTableLines.cellSpacing = '0';

			//var oTableLines = document.createElement('tbody');

			append_order_lines(oTable);

			//oTable.appendChild(oTableLines);

			var oTableFooter = oTable.createTFoot();

			append_order_resume(oTableFooter, xmlObj);

			oTable.appendChild(oTableFooter);
				
			oElem.appendChild(oTable);

			
		//oElem.appendChild(oWrapDiv);

		var oActPed = document.createElement('div');
		oActPed.id = 'actualizarPedido';
		oActPed.className = 'floatright';

		append_btn_comprar(oActPed);
		
		oElem.appendChild(oActPed);

		highlightItem();
	}
//	alert(oElem.innerHTML);
}

function append_order_lines(oTableLines)
{
	var oAjax = new WBE_AjaxClass();
	for (var i = 0; i < xmlObj.childNodes[0].childNodes.length; i++) {
		var oNode = xmlObj.childNodes[0].childNodes[i];
		var verId = oAjax.getXMLNodeValue(oNode, 'ver_id');
		var prodName = oAjax.getXMLNodeValue(oNode, 'name');
		var price = oAjax.getXMLNodeValue(oNode, 'price');
		var qty = oAjax.getXMLNodeValue(oNode, 'qty');
		var cntId = oAjax.getXMLNodeValue(oNode, 'cnt_id');
		var lineNum = oAjax.getXMLNodeValue(oNode, 'number');

		var oRow = oTableLines.insertRow(i);
		oRow.id = 'line_' + verId;

			append_td_delete(oRow, lineNum);
			append_td_price(oRow, price);
			append_td_title(oRow, cntId, prodName);
			append_td_Qty(oRow, lineNum, qty);
	}
}

function append_td_Qty(oRow, lineNum, qty){
	var oColQty = oRow.insertCell(0);
	oColQty.className = 'cantidad';
	
		var oQtyInput = document.createElement('input');
		oQtyInput.id = 'input_qty_' + lineNum;
		oQtyInput.type = 'text';
		oQtyInput.value = qty;
		addEvent(oQtyInput, 'change', clickQty);

	oColQty.appendChild(oQtyInput);
}
function append_td_title(oRow, cntId, prodName){
	var oColTitle = oRow.insertCell(0);
	oColTitle.className = 'nombre';
	
		var oTitleA = document.createElement('a');
		if (cntId) {
			oTitleA.href = lngUrlNotDefLng('producto_' + cntId + '.html');
			//oTitleA.alt = prodName;
			//oTitleA.title = prodName;
		}
		oTitleA.innerHTML = prodName;

	oColTitle.appendChild(oTitleA);
}
function append_td_price(oRow, price){
	var oColPrice = oRow.insertCell(0);
	oColPrice.className = 'precio';
	
	/*
		var oPriceStrong = document.createElement('strong');
		oPriceStrong.innerHTML = price + '&#8364;';

	oColPrice.appendChild(oPriceStrong);
	*/
	oColPrice.innerHTML = price + '&#160;&#8364;';
}
function append_td_delete(oRow, lineNum){
	var oColDel = oRow.insertCell(0);
	oColDel.className = 'eliminar';
	
		var oDelA = document.createElement('a');
		oDelA.href = '#sc';
		oDelA.id = 'a_del_' + lineNum;
		oDelA.innerHTML = '<img src="/config/skin/00_xpress_common/images/ico_borrar.gif" alt="Papelera"/>';
		addEvent(oDelA, 'click', clickDel);

	oColDel.appendChild(oDelA);
}

function append_order_resume(oTableFooter, xmlObj)
{
	//var oTotalCompr = document.createElement('div');
	//oTotalCompr.id = 'totalCompra';


	
	var oRow = oTableFooter.insertRow(0);
	oRow.id = 'totalCompra';

	var oCol = oRow.insertCell(0);
	oCol.className = 'txtright';
	oCol.colSpan = '4';
		
		var ooTotalCompr1 = document.createElement('small');
		ooTotalCompr1.innerHTML = jsc_text_total;
	
		var ooTotalCompr2 = document.createElement('strong');
		ooTotalCompr2.className = 'colored';
		//ooTotalCompr2.innerHTML = ' ' + xmlObj.childNodes[1].firstChild.data + ' &#8364;' + ' ';
		ooTotalCompr2.innerHTML = ' ' + xmlObj.childNodes[3].firstChild.data + ' &#8364;' + ' ';
	
		/*var ooTotalCompr3 = document.createElement('small');
		ooTotalCompr3.innerHTML = jsc_text_tax;*/
		
		oCol.appendChild(ooTotalCompr1);
		oCol.appendChild(ooTotalCompr2);
		//oCol.appendChild(ooTotalCompr3);


	//price total 3
	
	//	charge
	var charge = xmlObj.childNodes[6].firstChild.data;
	if (charge && charge != '0') 
	{
		oRow = oTableFooter.insertRow(0);
		oRow.id = 'totalCompra2';

		var oCol0 = oRow.insertCell(0);
		oCol0.className = 'txtright';
		oCol0.colSpan = '4';

		var ooTotalComprDisc1 = document.createElement('small');
		ooTotalComprDisc1.innerHTML = jsc_text_charge;

		var ooTotalComprDisc2 = document.createElement('strong');
		ooTotalComprDisc2.className = 'colored';
		ooTotalComprDisc2.innerHTML = '' + charge + ' &#8364;';
		
		var oBR = document.createElement('br');

		oCol0.appendChild(ooTotalComprDisc1);
		oCol0.appendChild(ooTotalComprDisc2);
		oCol0.appendChild(oBR);
	}

	//tax 4
	var tax = xmlObj.childNodes[4].firstChild.data;
	if (tax && tax != '0') 
	{
		oRow = oTableFooter.insertRow(0);
		oRow.id = 'totalCompra2';

		var oCol0 = oRow.insertCell(0);
		oCol0.className = 'txtright';
		oCol0.colSpan = '4';

		var ooTotalComprDisc1 = document.createElement('small');
		ooTotalComprDisc1.innerHTML = jsc_text_tax_label;

		var ooTotalComprDisc2 = document.createElement('strong');
		ooTotalComprDisc2.className = 'colored';
		ooTotalComprDisc2.innerHTML = tax + ' &#8364;';
		
		var oBR = document.createElement('br');

		oCol0.appendChild(ooTotalComprDisc1);
		oCol0.appendChild(ooTotalComprDisc2);
		oCol0.appendChild(oBR);
	}
	
	//shipping 5
	var shipping = xmlObj.childNodes[5].firstChild.data;
	if (shipping && shipping != '0') 
	{
		oRow = oTableFooter.insertRow(0);
		oRow.id = 'totalCompra2';

		var oCol0 = oRow.insertCell(0);
		oCol0.className = 'txtright';
		oCol0.colSpan = '4';

		var ooTotalComprDisc1 = document.createElement('small');
		ooTotalComprDisc1.innerHTML = jsc_text_shipping;

		var ooTotalComprDisc2 = document.createElement('strong');
		ooTotalComprDisc2.className = 'colored';
		ooTotalComprDisc2.innerHTML = shipping + ' &#8364;';
		
		var oBR = document.createElement('br');

		oCol0.appendChild(ooTotalComprDisc1);
		oCol0.appendChild(ooTotalComprDisc2);
		oCol0.appendChild(oBR);
	}
	
	//	discount
	var discount = xmlObj.childNodes[2].firstChild.data;
	if (discount && discount != '0') 
	{
		oRow = oTableFooter.insertRow(0);
		oRow.id = 'totalCompra2';

		var oCol0 = oRow.insertCell(0);
		oCol0.className = 'txtright';
		oCol0.colSpan = '4';

		var ooTotalComprDisc1 = document.createElement('small');
		ooTotalComprDisc1.innerHTML = jsc_text_discount;

		var ooTotalComprDisc2 = document.createElement('strong');
		ooTotalComprDisc2.className = 'colored';
		ooTotalComprDisc2.innerHTML = '-' + discount + ' &#8364;';
		
		var oBR = document.createElement('br');

		oCol0.appendChild(ooTotalComprDisc1);
		oCol0.appendChild(ooTotalComprDisc2);
		oCol0.appendChild(oBR);
	}
	
}

function append_btn_comprar(oActPed) {
	var oProcBtn = document.createElement('div');
	oProcBtn.className = 'btn';
	
		var aProc = document.createElement('a');
		aProc.href = lngUrlNotDefLng('proceso_compra_1.html');
		aProc.innerHTML = jsc_text_go;

		oProcBtn.appendChild(aProc);

	oActPed.appendChild(oProcBtn);
	
	var oProcBr = document.createElement('br');
	oProcBr.clear = 'all';
	
	oActPed.appendChild(oProcBr);
}


function clickDel(e) {
	var sNum = this.id.substring('a_del_'.length, this.id.length);
	if(confirm(jsc_text_confirm_delete)) {
		var objShoppingCart = new JSObj_shopping_cart();
		objShoppingCart.savePost = savePostExt;
		objShoppingCart.RemoveFromShoppingCart(sNum);
		objShoppingCart = null;
	}
}

function clickQty(e) {
	var sNum = this.id.substring('input_qty_'.length, this.id.length);
	var objShoppingCart = new JSObj_shopping_cart();
	objShoppingCart.savePost = savePostExt;
	objShoppingCart.UpdateQuantityOnShoppingCartLine(sNum, this.value);
	objShoppingCart = null;
}

function AddToCart(sVerId)
{
	lastAddedVerId = sVerId;
	
	var objShoppingCart = new JSObj_shopping_cart();
	objShoppingCart.savePost = savePostExt;
	objShoppingCart.AddToShoppingCart(sVerId);
	objShoppingCart = null;
}

// Comprueba si esta activo el modulo de MRW
function MRWIsActive() {
	
	var result = false;
	
    $j.ajax({
        type: "GET",
        url: "XML_DOCUMENT.wbe?event=config_get_module_parameter&module=mrw_settings&code=active",
        cache: false,
        dataType: "xml",
        async: false,
        success: function(data) {
            if ($j(data).find('value').text() == '1') result = true;
        }
    });
	
	return result;
}

// Calcula los gastos de envio con MRW
function ShippingCostMRW(showMsg) {

    // Comprobamos si está activada la gestion con MRW
    MRW_IsActive = MRWIsActive();

    if (MRW_IsActive) {

        var bValidate = true;
        var provDest = '';
        var paisDest = '';
        var paisDestNom = '';
        var provAlm = '';
        var paisAlm = '';
        var producto = 'E-Commerce';
        var cuadroTarifaNacional = '';
        var peso = 0;
        var entregaEnSabado = '';
        var volumenEnvio = 0;
        var costeMRW = 0;

        MRW_Coste = 0;

        // Carga la direccion de envio del usuario
        var objXML = null;
        $j.ajax({
            type: "GET",
            url: "XML_DOCUMENT.wbe?event=get_shipping_address",
            cache: false,
            dataType: "xml",
            async: false,
            success: function(data) { objXML = data; }
        });
        var oAddress = $j(objXML).find('address[type=envio]');
        if (oAddress && oAddress.length > 0) {
            provDest = $j(oAddress).find('province_code').text();
            paisDest = $j(oAddress).find('country_code').text();
            paisDestNom = $j(oAddress).find('country').text();
        } else bValidate = false;

        // Cargamos el resto de datos para el calculator
        objXML = null;
        $j.ajax({
            type: "GET",
            url: "XML_DOCUMENT.wbe?event=get_mrw_calculator", //&time=" + new Date().getSeconds(),
            cache: false,
            dataType: "xml",
            async: false,
            success: function(data) { objXML = data; }
        });
        if (objXML) {
            cuadroTarifaNacional = $j(objXML).find('Tarifa').text();
            provAlm = $j(objXML).find('ProvinciaAlmacen').text();
            paisAlm = $j(objXML).find('PaisAlmacen').text();
            entregaEnSabado = $j(objXML).find('EntregaSabado').text();
            peso = $j(objXML).find('Peso').text();
            volumenEnvio = $j(objXML).find('Volumen').text();
        } else bValidate = false;


        // buscamos los codigos de provincia equivalentes de MRW
        objXML = null;
        $j.ajax({
            type: "GET",
            url: obj_MRW_Envios.MRW_UrlXmlFiles + "/ProvinciasProductos.xml",
            cache: false,
            dataType: "xml",
            async: false,
            success: function(data) { objXML = data; }
        });
        var xml_provAlm = $j(objXML).find('Provincia[ClientCode=' + provAlm + ']').attr('Name');
        var xml_provDest = $j(objXML).find('Provincia[ClientCode=' + provDest + ']').attr('Name');
        if (typeof (xml_provAlm) != 'undefined') provAlm = xml_provAlm;
        if (typeof (xml_provDest) != 'undefined') provDest = xml_provDest;


        // buscamos los codigos de provincia equivalentes de MRW
        objXML = null;
        $j.ajax({
            type: "GET",
            url: obj_MRW_Envios.MRW_UrlXmlFiles + "/PaisesProductos.xml",
            cache: false,
            dataType: "xml",
            async: false,
            success: function(data) { objXML = data; }
        });
        var xml_paisAlm = $j(objXML).find('Pais[ClientCode=' + paisAlm + ']').attr('Name');
        var xml_paisDest = $j(objXML).find('Pais[ClientCode=' + paisDest + ']').attr('Name');
        if (typeof (xml_paisAlm) != 'undefined') paisAlm = xml_paisAlm;
        paisDest = (typeof (xml_paisDest) != 'undefined') ? xml_paisDest : paisDestNom;


        // validamos los datos
        if (!(peso && peso != '' && peso != '0')) bValidate = false;
        MRW_Shipping_Saturday = (entregaEnSabado == '1') ? true : false;


        // CALCULA LOS PORTES DE MRW
        if (bValidate)
            costeMRW = obj_MRW_Envios.CalcularCosteMRW(provDest, paisDest, provAlm, paisAlm, cuadroTarifaNacional, producto, peso, MRW_Shipping_Saturday, volumenEnvio, showMsg);

        if (typeof (costeMRW) == 'undefined') costeMRW = 0;

        // RECARGAMOS EL CARRITO PARA ENVIAR LOS PORTES
        $j.ajax({
            type: "GET",
            url: "XML_DOCUMENT.wbe?event=com_recalculate_shopping_cart&mrw_cost=" + costeMRW,
            cache: false,
            dataType: "xml",
            async: false
        });

        // Guardamos el peso para comprobar si el pedido es valido.
        MRW_Coste = costeMRW;

        /*alert("DEBUG\n\n" +
        "CalcularCosteMRW=" + MRW_Coste +
        "\npeso=" + peso +
        "\nvolumen=" + volumenEnvio +
        "\ntaria=" + cuadroTarifaNacional +
        "\nsabado=" + MRW_Shipping_Saturday +
        "\nprovDest=" + provDest + "\npaisDest=" + paisDest +
        "\nprovOrigen=" + provAlm + "\npaisOrigen=" + paisAlm);*/
    }

}


function savePostExt(xmlObj) {
	var oAjax = new WBE_AjaxClass();
	//var oNode = xmlObj.childNodes[0];
	if (xmlObj){
		var sAlert = oAjax.getXMLNodeValue(xmlObj, 'alert');
		if (sAlert && sAlert != "" && sAlert != " ")
			alert(sAlert);
	}
	loadShoppingCart();
};

function highlightItem() {	
	return;
	if (lastAddedVerId != -1) {
		//para evitar conflictos con la prototype.js
		var $j = jQuery.noConflict();
		$j('#line_' + lastAddedVerId).colorBlend([
			{toColor:"#FFCC00", param:"background-color", duration:3000, cycles:1}]);
	}
	lastAddedVerId = -1;
}

function cleanDiv(oDiv) {
	if (oDiv) {
		while (oDiv.childNodes.length > 0) {
			var oTmp = oDiv.childNodes[0];
			cleanDiv(oTmp)
			oDiv.removeChild(oTmp);
		}
	}
}


function addEvent( obj, type, fn )
{
	if (obj.addEventListener)
		obj.addEventListener( type, fn, false );
	else if (obj.attachEvent)
	{
		obj["e"+type+fn] = fn;
		obj[type+fn] = function() { obj["e"+type+fn]( window.event ); }
		obj.attachEvent( "on"+type, obj[type+fn] );
	}
}

function removeEvent( obj, type, fn )
{
	if (obj.removeEventListener)
		obj.removeEventListener( type, fn, false );
	else if (obj.detachEvent)
	{
		obj.detachEvent( "on"+type, obj[type+fn] );
		obj[type+fn] = null;
		obj["e"+type+fn] = null;
	}
}

function showSCStepHelp(i) {
	if (document.getElementById('pc_1')) {
		document.getElementById('pc_1').style.display = 'none';
		document.getElementById('pc_2').style.display = 'none';
		document.getElementById('pc_3').style.display = 'none';
		document.getElementById('pc_' + i).style.display = '';
	}
}

function toggleCat1(i) {
	var oElem = document.getElementById('ul_sl_' + i);
	if (oElem) {
		if (oElem.style.display == 'none') oElem.style.display = '';
		else oElem.style.display = 'none';
	}
}

function toggleCat2(i) {
	var oElem = document.getElementById('ul_tl_' + i);
	if (oElem) {
		if (oElem.style.display == 'none') oElem.style.display = '';
		else oElem.style.display = 'none';
	}
}

function openCatInTree(i) {
	var oElem = document.getElementById('a_cat_' + i);
	if (oElem) oElem.style.fontWeight = 'bold';
	oElem = document.getElementById('li_cat_' + i);
	while (oElem) {
		if (oElem.id) {
			if ((oElem.id.indexOf('ul_sl_') == 0) || (oElem.id.indexOf('ul_tl_') == 0)) oElem.style.display = '';
			if (oElem.id.indexOf('ul_sl_') == 0) break;
		}
		oElem = oElem.parentNode;
	}
	toggleCat1(i);
	toggleCat2(i);
}

function showCurrenciesLink(sCurr) {
	var oAjax = new WBE_AjaxClass();
	oAjax.addPostParameter('value', sCurr);
	xmlObj = oAjax.throwEventXML('currency_get_value_in_active_currencies');

	if (xmlObj && xmlObj.childNodes[0] && xmlObj.childNodes[0].childNodes.length > 0) {
		document.getElementById('a_currencies').style.display = '';

		var oTable = document.getElementById('t_currency_msg');
		for (var i = 0; i < xmlObj.childNodes.length; i++) {
			var oNode = xmlObj.childNodes[i];
		
			var oRow = oTable.insertRow(parseInt(i) + 1);
			oRow.id = 'curr_row_' + i;

			var oCell1 = oRow.insertCell(0);
			oCell1.innerHTML = oNode.childNodes[2].firstChild.data;

			var oStrong = document.createElement('strong');
			oStrong.className = 'colored';
			oStrong.innerHTML = oNode.childNodes[3].firstChild.data + ' ' + oNode.childNodes[1].firstChild.data;

			var oCell2 = oRow.insertCell(1);
			oCell2.appendChild(oStrong);
		}
	}
}

function showCurrencies() {
	document.getElementById('p_currency_msg').style.display = '';
	document.getElementById('t_currency_msg').style.display = '';
	document.getElementById('a_currencies').style.display = 'none';
	document.getElementById('p_price').style.display = 'none';
}
function reloadProductData(elem) {
	var sId = elem.options[elem.selectedIndex].value;
	if (sId != '') document.location.href = lngUrlNotDefLng('producto_' + sId + '.html');
}