/*
 * 	@author: Fabian Ramirez
 * 	@desc	  : Ajax Ecommerce && XML
 * 	@filename: ecommerce.js
 * 	@depends: mootools.js
 * 
 * 	@extra: Especificaciones de clase en 
 * 				  http://docs.mootools.net/Class/Class.js
 */
	
	// Creamos la clase
	var Ecommerce = new Class({
	
		/**
		 * @desc: Metodo constructor
		 * @param {Ecommerce} direccion
		 */
		initialize: function(direccion){
      						 this.direccion = direccion;
    	}
	});
	
	function showResponse(data) {
	alert(data.responseXML);	
	}
	
	// Funciones de la clase Ecommerce
	Ecommerce.implement({        
	
		/**
		 * @desc: Agregar productos a la session via Ajax
		 * @param {Ecommerce} idProducto
		 * @param {Ecommerce} cantidad
		 */
		
		agregarProducto: function(cantidad, idProducto) {			
			//alert(idProducto + ' con cantidad: ' + cantidad);
			
			 var anticache = '?cache=' + Math.random();
    
			/**
			 * @input		: /ecommerce/add/idProducto/cantidad
			 * @output	: cantidadProductos, Precio 
			 */
			
			
			new Ajax(this.direccion + "ecommerce/add/" + idProducto + '/' + cantidad + '/'  + anticache , 
				{ 
					onComplete: function(){
							
								var respuesta = this.response.xml;
								
								  if(respuesta.firstChild.nodeName == 'xml')
								  	nProduct = respuesta.childNodes.item(1);
								else
									nProduct = respuesta.firstChild;
									
							var cantidadProductos = nProduct.getElementsByTagName("quantity")[0].childNodes[0].nodeValue;
							var precio =  nProduct.getElementsByTagName("price")[0].childNodes[0].nodeValue;
							
							// Actualizamos el carro							
							$('quantityValue').setText(cantidadProductos);
							$('priceValue').setText(precio);											
					}
				}
			).request();			
	  
		},
		
		/* Funcion que me sirve para tomar el valor del formulario de envio */
		dameValor: function() {
			
			if(document.getElementById) {
				
				if (document.getElementById('anotherAddress').checked) {
					return document.getElementById('ReceptorPaisesId').value;
				} else {
					return document.getElementById('ClientePaisesId').value;
				}				
			}
		
		return false;		
		},
		
		toggle: function(valor,idPais, chequeado, cargar) {
				
				
				if(valor == 0)
					valor = true;
				else	
					valor = false;
				
				var camposReceptor = Array('ReceptorNombre','ReceptorTratamiento', 'ReceptorApellido','ReceptorDireccion','ReceptorNumero', 'ReceptorDepartamento','ReceptorCodigo', 'ReceptorCiudad','ReceptorPaisesId','PedidoMensaje');
				
				for(var i=0;i<camposReceptor.length;i++) {
					
					if(valor) {
						document.getElementById(camposReceptor[i]).className = 'disabledInput';
						document.getElementById(camposReceptor[i]).disabled = valor;
					}
					else {
						document.getElementById(camposReceptor[i]).className = 'textBox ';
						document.getElementById(camposReceptor[i]).disabled = valor;
					}
				}
				
				var cargado = false;
				
				// Significa que me lo carge sino simplemente no hace nada
				if(cargar == 1 && valor == true) {
					
						if(document.getElementById('ClientePaisesId')) {
							if(document.getElementById('ClientePaisesId').value != idPais) {
								this.preciosEnvio(document.getElementById('ClientePaisesId').value, false);
								cargado = true;								
							}
						}					
				
						if(!cargado)  {
							
							if(document.getElementById('CountryRembolso'))
								document.getElementById('CountryRembolso').checked = chequeado;
							
							this.preciosEnvio(idPais, chequeado);							
						}					
											
				}
				
				if(valor == false) {
					this.preciosEnvio(document.getElementById('ReceptorPaisesId').value, 0);
					
					if(document.getElementById('CountryRembolso'))
						document.getElementById('CountryRembolso').checked = false;
				}
				
		},
		
		defecto: function(idPais,chequeado) {
			
			this.idPais = idPais;
			this.chequeado = chequeado;
		},
		
		/**
		 * @desc: Actualiza el precio de envio y crea una session con el precio de este
		 * @param {Ecommerce} idPais
		 */
		
		preciosEnvio: function(idPais, chequeado, almacenar) {			 
			 
			 var anticache = '?cache=' + Math.random();			 
			 
			 if(idPais != 0) {			 
			 
			 /*
			  * @desc: Bugfix para evitar problemas y que lo transpase como string
			  */
			 
			 	if(!chequeado)
					chequeado = 0;
				else
					chequeado = 1;
			 
				new Ajax(this.direccion + "ecommerce/precioEnvio/" + idPais+  '/'  + chequeado + '/' + anticache + '&almacenar=' + almacenar, 
					{ 
						onComplete: function(respuesta){							
								
								var respuesta = this.response.xml;
									
								 if(respuesta.firstChild.nodeName == 'xml')
								  	nProduct = respuesta.childNodes.item(1);
								else
									nProduct = respuesta.firstChild;
								
								// Si es rembolso o precio normal										
								if(chequeado == false)
									var precioEnvio =  nProduct.getElementsByTagName("precio")[0].childNodes[0].nodeValue;
								else	
									var precioEnvio =  nProduct.getElementsByTagName("precio_rembolso")[0].childNodes[0].nodeValue;								
								
								
								// Variables
								var reembolso = nProduct.getElementsByTagName("rembolso")[0].childNodes[0].nodeValue ? nProduct.getElementsByTagName("rembolso")[0].childNodes[0].nodeValue : 0;								
								var precioTotal = nProduct.getElementsByTagName("precio_total")[0].childNodes[0].nodeValue;
								var nombrePais = nProduct.getElementsByTagName("nombre_pais")[0].childNodes[0].nodeValue;
								
				
								
								if(reembolso == 1) {
										if(document.getElementById('reembolso'))									
											document.getElementById('reembolso').style.display = 'block';										
								}
								else {	
									
									if(document.getElementById('reembolso'))
										document.getElementById('reembolso').style.display = 'none';										
								}
								
																		
								if(document.getElementById('divCountry'))
										document.getElementById('divCountry').innerHTML = nombrePais;
										
								
								// Actualizamos el carro
								$('priceSend').setText( "AUD " + precioEnvio);								
								
								// Actualizamos el total de los precios
								$('totalPriceAll').setText("AUD "  + precioTotal);
						}
					}
				).request();
			} else 	
				$('priceSend').setText(null);

		},
		/**
		 *  @desc: Cambiar el pais
		 * @param {Ecommerce} valor
		 */
		cambiarPais: function() {
			//this.preciosEnvio(this.idPais, this.chequeado);

		},
		/*
		 * @desc: Procesamos el pago
		 */
		procesarPago: function() {						
			
			var anticache = '?cache=' + Math.random();			
			
			// Desabilitamos el boton correspondiente
			document.getElementById('botonProcesarPagos').disabled = true;
			
			
			// Sabemos que metodo de pago						
			if (document.getElementById('ideal')) {
				if (document.getElementById('ideal').checked)
					idPago = 1;
			}
			
			if(document.getElementById('visa')) {
				if(document.getElementById('visa').checked)
					idPago = 2;
			}
			
			if(document.getElementById('dd')) {
				if (document.getElementById('dd').checked)
					idPago = 3;
			}			
			
			if(document.getElementById('transfer')) {				
				if(document.getElementById('transfer').checked)
					idPago = 5;
			}
			
				if(document.getElementById('cheque')) {				
				if(document.getElementById('cheque').checked)
					idPago = 6;
			}
			
			
			if(document.getElementById('transferAU')) {				
				if(document.getElementById('transferAU').checked)
					idPago = 7;
			}
			
			new Ajax(this.direccion + "ecommerce/generarorden/" + idPago + "/" + anticache , 
				{ 
					onComplete: function(){
							
							var respuesta = this.response.xml;
								
							if(respuesta.firstChild.nodeName == 'xml')
							  	nProduct = respuesta.childNodes.item(1);
							else
								nProduct = respuesta.firstChild;
							
							// Necesitamos tomar el id del invoice del xml generado		
							var idPago = nProduct.getElementsByTagName("invoice")[0].childNodes[0].nodeValue;
							
							// Necesitamos setear el id invoice
							if(document.getElementById('invoiceIdeal'))							
								$('invoiceIdeal').setProperties({ value: idPago});
								
							// Pago con trajeta de credito visa
							if(document.getElementById('invoiceVisa'))							
								$('invoiceVisa').setProperties({ value: idPago});								
														
							// Pago con bancos
							if(document.getElementById('invoicePago'))							
								$('invoicePago').setProperties({ value: idPago});								
								
							// Pago con transferencia bancaria
							if(document.getElementById('invoiceTransferencia'))							
								$('invoiceTransferencia').setProperties({ value: idPago});
								
								
							// Enviamos el formulario correspondiente
							if(document.getElementById('visa')) {
								if(document.getElementById('visa').checked)
									document.getElementById('visaPayment').submit();
							}
							
							if(document.getElementById('dd')) {
								if (document.getElementById('dd').checked)
									document.getElementById('ddPayment').submit();
							}			
							
							if(document.getElementById('transfer')) {				
								if(document.getElementById('transfer').checked)
									document.getElementById('ddTransfer').submit();
							}
							
							if (document.getElementById('ideal')) {
								if (document.getElementById('ideal').checked)
									document.getElementById('idealPayment').submit();
							}
							
							if (document.getElementById('cheque')) {
								if (document.getElementById('cheque').checked)
									document.getElementById('frmcheque').submit();
							}
							
							if(document.getElementById('transferAU')) {				
								if(document.getElementById('transferAU').checked)
									document.getElementById('frmtransferAU').submit();
							}			
					}
				}
			).request();
			
			
			
			
		}

    });
	
	/* Instanciamos el objeto por defecto */
	var Ecommerce = new Ecommerce("/");