 
var CartMovementDuration = 300;
var CartMapInitialized = false;
var CartMap;
var CartLeft;
var geoPointCount = 0;
var CartProductListSelected = 0;
var CartOpened = false;
var CartBounds;
var hashCartGeoPoints = new Hash({});
var mapPoints = new Array();
var countdownID = 0;
if ($$('#session .step1 h2')) var countdownCont = $$('#session .step1 h2');
var countdownDate = new Date();

var cartOffers = $$('#cart-content #cart-info .offer');
var cartCurrOffer = 0;
var cartPrevOfferArrow = $('prevOffer');
var cartNextOfferArrow = $('nextOffer');

function cartNextOffer () {
	cartChangeOffer(cartCurrOffer+1);
}
function cartPrevOffer () {
	cartChangeOffer(cartCurrOffer-1);
}
function cartChangeOffer (newOffer) {
	// Chequeo que haya ofertas
	if (!cartOffers) return false;
	// Oculto la flecha anterior
	cartPrevOfferArrow.setStyle('height', ((newOffer <= 0)? '0.1px' : '16px'));
	// Oculto la flecha siguiente
	cartNextOfferArrow.setStyle('height', ((newOffer >= cartOffers.length-1)? '0.1px' : '16px'));
	// Muestro la nueva oferta
	if ((newOffer >= 0) && (newOffer < cartOffers.length)) {
		cartOffers[cartCurrOffer].addClass('hidden');
		cartOffers[newOffer].removeClass('hidden');
		cartCurrOffer = newOffer;
	}
}

function cartDeleteProduct (uri, item) {
	if (!confirm('Estas seguro que queres eliminar el producto?')) return;

	if (item)
		$(item).dispose();
	// Ejecutamos la funcion que elimina el producto en cart.class.php
	var request = new Request.JSON({
		url: uri
	}).send();
	cartRecalcularTotal();
}

function cartRecalcularTotal () {

	if (!$('cart')) return false;
	var hayProductos = false; 
	var restantes; var total = 0; var currencyCode = ''; var currencyDesc = '';
//alert($$('#cart #cart-left-results .product'));
	if (restantes = $$('#cart #cart-left-results .product')) {
		for (var i = 0; i < restantes.length;++i) {
//			if ( (!restantes[i].hasClass('disabled')) && (restantes[i].getStyle('display') != 'none') ) {
				hayProductos = true;
				total += restantes[i].getElement('.amount').get('text').toInt();
				currencyDesc = restantes[i].getElement('.currency').get('text');
				currencyCode = restantes[i].getElement('.currency').getProperty('code');
//			}
		}

	}
	
	// Seteo el total con su currency
	$('cart-price').getElement('.currency').set('text', currencyDesc);
	$('cart-price').getElement('.currency').setProperty('code', currencyCode);
	$('cart-price').getElement('.amount').set('text', total);
	// Seteo el total de cuotas
	if (total > 0) {
		$('cart-cuotas-total').getElement('.currency').set('text', currencyDesc);
		$('cart-cuotas-total').getElement('.currency').setProperty('code', currencyCode);
		$('cart-cuotas-total').getElement('.amount').set('text', Math.ceil((total*((CartCoef/100)+1))/12));
	}
	else
		$('cart-cuotas-total').setStyle('display', 'none');
}

function countdown (id, type) {

	var countdownCont = $$('#session .step1 h2');

	// Obtengo horas, minutos y segundos del reloj
	params = countdownCont.get('html').toString().split(":");

	// seteo sec, min, hour
	var min = params[0].toInt();
	var sec = params[1].toInt()-1;

	// los segundos pasaron el 0, resto minutos
	if (sec < 0) {
		sec = 59;
		--min;
	}

	// Seteo el nuevo tiempo
	countdownCont.set('html', pad_left(min.toString())+':'+pad_left(sec.toString()));

	// Si no llegue a 00:00:00, sigo llamando la funcion
	if ((min != 0) || (sec !== 0))
		countdownID = setTimeout("countdown('"+id+"', '"+type+"')", 1000);
	else {
		disableProduct(id, type);
		// Oculto el comprar si no hay mas productos para comprar
		toggleCompraButton();
	}
}

function pad_left (str) {
	if (str.length < 2)
		str = '0'+str;
	return str;
}

function showCountdown(id, type) {

	if (!$('session')) return; 
	var myProd = $(type+'-'+id);
	var id = id;
	var type = type;
	ProdId = id;

	// Cierro el carrito
	if ($('dashboard')) closeCart(new Event({'type': 'click'})); else alert('no existe');

	// Posiciono el div de session en el producto correspondiente
	$('session').setStyles({'top': myProd.getPosition().y-40, 'display': 'block'});
	// Scrolleo hasta ubicar el div del countdown
	new Fx.Scroll(document, {
		wait: false,
		duration: 1000,
		offset: {'x': -200, 'y': -50},
		transition: Fx.Transitions.Quad.easeInOut
	}).toElement($('session'));
	countdownID = setTimeout("countdown('"+id+"', '"+type+"')", 1000);

	var scrollContent = new Fx.Scroll('scroll-steps', {
		link: 'cancel',
		duration: 800,
//			offset: {'x': -200, 'y': -50}, // some padding
		transition: Fx.Transitions.Quad.easeInOut
	});

	// Scrollers
	if ($$('.session-scrollto'))
		$$('.session-scrollto').each(function(item) {
			item.addEvent('click', function(ev) {
				new Event(ev).stop();
				scrollContent.toElement(item.getProperty('to'));
			});
		});

	$('scroll-cerrar').addEvent('click', function(ev) {
		if (ev) new Event(ev).stop();
		$('session').tween('opacity', 0);
	});

	// No me decidi
	$$('#session .step1 .right .btn-generic').addEvent('click', function(ev) {
		new Event(ev).stop();
		// Desactivo el producto
		disableProduct(id, type);
	});

	function sessionDisposeDivs () {
		if ($('scroll-step2'))
			$('scroll-step2').dispose();
		if ($('scroll-step3'))
			$('scroll-step3').dispose();
	}

	if ($('sesion-nunca-compre-aca') && $('sesion-form-registro-user'))
		$('sesion-nunca-compre-aca').addEvent('blur', function(ev) { $('sesion-form-registro-user').value = this.value });	

	// Form de login en la sesion
	if ($('sesion-form-login'))
		$('sesion-form-login').addEvent('submit', function(ev) {
			if (ev) new Event(ev).stop();

			// Muestro el loading
			$('session-form-login-loader').setStyle('display', 'block');

			var request = new Request.JSON({
				//url: $('sesion-form-login').get('action')+$('session-form-login-user').value+'/'+$('session-form-login-pass').value,
				url: this.action,
				method: 'post',
				onComplete: function(jsonObj) {
					$('session-form-login-error').setStyle('display', 'none');
					// Todo bien, redirecciono al paso correspondiente
					if (jsonObj.res) {
						// Elimino los pasos 2 y 3
						//sessionDisposeDivs();//.delay(3000);
						// Scrolleo al siguiente div
						scrollContent.toElement($('session-scroll-step2-step4').getProperty('to'));
						// Seteo el isLogged como true
						isLogged = true;
					} else 
						$('session-form-login-error').setStyle('display', 'block').set('text', jsonObj.error);
					// Oculto el loading
					$('session-form-login-loader').setStyle('display', 'none');
				}
			}).post(this);

		});

	// Form de registro
	if ($('sesion-form-registro')) 
		$('sesion-form-registro').addEvent('submit', function(ev) {
			if (ev) new Event(ev).stop();

			var error = false;
			// Muestro el loading
			$('sesion-form-registro-loader').setStyle('display', 'block');

			// Valido que esten todos los campos completos
			if (this.getElements('.mandatory'))
				this.getElements('.mandatory').each(function(item) {
					if (item.value == '') {
						$('sesion-form-registro-error').setStyle('display', 'block').set('text', 'Todos los campos con * son obligatorios');
						error = true;
						// Oculto el loading
						$('sesion-form-registro-loader').setStyle('display', 'none');
						error = true;
						return false;
					}
				});
			
			// Chequeo que el user y user2 sean iguales
			if (!error && ($('sesion-form-registro-user').value != $('sesion-form-registro-user2').value) ) {
				$('sesion-form-registro-error').setStyle('display', 'block').set('text', 'Tu usuario y la confirmacion no coinciden');
				error = true;
				// Oculto el loading
				$('sesion-form-registro-loader').setStyle('display', 'none');
				error = true;
				return false;
			}

			// Chequeo que el pass y pass2 sean iguales
			if (!error && ($('sesion-form-registro-pass').value != $('sesion-form-registro-pass2').value) ) {
				$('sesion-form-registro-error').setStyle('display', 'block').set('text', 'Tu clave y la confirmacion no coinciden');
				error = true;
				// Oculto el loading
				$('sesion-form-registro-loader').setStyle('display', 'none');
				error = true;
				return false;
			}

			if (!error) {
				var request = new Request.JSON({
					//url: $('sesion-form-login').get('action')+$('session-form-login-user').value+'/'+$('session-form-login-pass').value,
					url: this.action,
					method: 'post',
					onComplete: function(jsonObj) {
						//if (jsonObj.res) alert('todo bien'); else alert('algo salio mal');
						scrollContent.toElement($('session-scroll-step3-step4').getProperty('to'));
						// Oculto el loading
						$('sesion-form-login-loader').setStyle('display', 'none');
					}
				}).post(this);
			}

		});

	// Form de pasajeros
	if ($('sesion-form-pasajeros')) 
		$('sesion-form-pasajeros').addEvent('submit', function(ev) {
			if (ev) new Event(ev).stop();
			var error = false;

			// Muestro el loading
			$('sesion-form-pasajeros-loader').setStyle('display', 'block');
			// Reinicio el mensaje de error
			$('sesion-form-pasajeros-error').setStyle('display', 'none').set('text', '');

			// Valido que esten todos los campos completos
			if (this.getElements('.mandatory'))
				this.getElements('.mandatory').each(function(item) {
					if (item.value == '') {
						$('sesion-form-pasajeros-error').setStyle('display', 'block').set('text', 'Todos los campos con * son obligatorios');
						error = true;
						// Oculto el loading
						$('sesion-form-pasajeros-loader').setStyle('display', 'none');
						return false;
					}
				});
			
			if (!error) {
				var request = new Request.JSON({
					//url: $('sesion-form-login').get('action')+$('session-form-login-user').value+'/'+$('session-form-login-pass').value,
					url: this.action,
					method: 'post',
					onComplete: function(jsonObj) {
						$('sesion-form-pasajeros-error').set('html', (jsonObj)? 'Pasajeros guardados con exito' : 'Error al guardar pasajeros');
						// Oculto el loading
						$('sesion-form-pasajeros-loader').setStyle('display', 'none');
						scrollContent.toElement($('session-scroll-step4-step5').getProperty('to'));

/*
						// Ejecuto la reserva
						var request = new Request.JSON({
							url: '/ajax/class/Vuelo/pasajeros_reservar_confirmacion/aa[]/'+ProdId
						}).send();
*/
					}
				}).post(this);
			}
		});
}

function addToCart(options) {
	
}
/*
  <script src="http://maps.google.com/maps?file=api&amp;async=2&amp;v=2&amp;sensor=false
    &amp;key="
    type="text/javascript">
  </script>
*/

function cargarMapa(){
	if (GBrowserIsCompatible()) {      
		var map = new GMap2(document.getElementById("mapa"));
    map.setCenter(new GLatLng(39.578678,2.646021), 16);
  }
};

/*
$(document).ready(function(){
	
		$('#bCargar').click(function(){
			$('#mapa').show();
			var api='ABQIAAAAQsVmrGjsvoChXHtP4iPwhRQe_iPhLe39tfUXmE3TvfTkICtg7hSCjE8asMRuF70ItpTEHgpyN1l0kQ';
			$.getScript('http://maps.google.com/maps?file=api&v=2.x&key='+api+'&async=2&callback=cargarMapa');
		});
});
*/

function disableProduct (id, type) {

	var myProd = $(type+'-'+id);
	myProd.removeClass('added').addClass('disabled');

	// Oculto el div session (disparo el evento 'cerrar y seguir comprando')
	$('scroll-cerrar').fireEvent('click');

	// Deshabilito el producto
	var request = new Request.JSON({
		url: '/ajax/class/Cart/disableProduct/'+id+'/'+type,
		onComplete: function(res) {

			// Habilito el link de 'volver a buscar'
			myProd.getElement('.dashboard-re-search').setStyle('display', 'block');
			//myProd.getElement('.dashboard-re-search').getElement('a').set('href', '/'+type+'/buscar/volver-a-buscar/'+res);
		}
	}).send();
	toggleCompraButton();
}

function toggleCart(){
	if (CartOpened)
		closeCart(new Event({'type': 'click'}));
	else
		openCart(new Event({'type': 'click'}));
//	CartOpened = !CartOpened;
}

function toggleCartProductList (showClass) {
	var lists = ['added', 'on_target'];
	//var products = $$('#cart-left-results li');
	var products = $('cart-left-results').getChildren('li');
	if (products.length > 0)
		products.each(function(item){
			item.setStyle('display', ((item.hasClass(showClass))? 'block' : 'none'));
		});

	$$('.panel-menu li').each(function(item){
		if (item.getProperty('id') == showClass+'_li') {
			var elementParent = item.getParent();
			var newElement = item.dispose();
			newElement.inject(elementParent).removeClass('first');
		}
		else
			item.addClass('first');
	});
/*
	if (item.hasClass(showClass)) {
		item.addClass('first');
		item.clone().inject($('cart-left-results'), 'bottom');
		//item.dispose();
	}
	else
		item.removeClass('first');
*/
}

/*
function addOnTarget (obj) {

	beginCartMap();

	toggleCartProductList('on_target');
	obj.product.class = 'on_target';
	prodLeft = addProductLeftList(obj);
	//openCart(new Event({'type': 'click'}));
	new Fx.Scroll(document, {
		wait: false,
		duration: 1000,
		offset: {'x': -200, 'y': -50},
		transition: Fx.Transitions.Quad.easeInOut
	}).toTop();
}
*/

function removeGeoPointPin (key) { 
	if (mapPoints[key])
		mapPoints[key].hide();
}

function delProductLeftList (item, uri) {
	if (!confirm('Estas seguro que queres eliminar el producto?')) return;

	var gps = '';
	var arr_gps;
	var cant;

	if ( (gps = item.get('gp')) && (gps != '')) {
//alert('gps: '+gps);
		if (gps.indexOf('@') == -1)
			arr_gps = new Array(gps);
		else
			arr_gps = gps.split('@');
//alert('arr_gps: '+arr_gps);
		if (arr_gps.length > 0)
			arr_gps.each(function(el) {
//alert(el);
				if ($('geopoint-'+el) && (cant = $('geopoint-'+el).get('cant')) ) {
					cant = cant.toInt();
					--cant;
					if (cant <= 0) {
						$('geopoint-'+el).dispose();
						removeGeoPointPin(el);
					} else
						$('geopoint-'+el).set('cant', cant);
				}
			});
	}

	item.dispose();
	// Ejecutamos la funcion que elimina el producto en cart.class.php
	var request = new Request.JSON({
		url: uri/*,
		onComplete: function(jsonObj) {
		}*/
	}).send();

	// Oculto el comprar si no hay mas productos para comprar
	toggleCompraButton();
}

function toggleCompraButton () {

	if (!$('dashboard')) return false;
	var hayProductos = false; 
	var restantes; var total = 0; var currencyCode = ''; var currencyDesc = '';
	if (restantes = $$('#dashboard .left .panel ul.results .added')) {
		for (var i = 0; i < restantes.length;++i) {
//			if ( (!restantes[i].hasClass('disabled')) && (restantes[i].getStyle('display') != 'none') ) {
				hayProductos = true;
				total += restantes[i].getElement('.amount').get('text').toInt();
				currencyDesc = restantes[i].getElement('.currency').get('text');
				currencyCode = restantes[i].getElement('.currency').getProperty('code');
//			}
		}

	}
	
	// Seteo el total con su currency
	$('dashboard-leftlist-total-price').getElement('.currency').set('text', currencyDesc);
	$('dashboard-leftlist-total-price').getElement('.currency').setProperty('code', currencyCode);
	$('dashboard-leftlist-total-price').getElement('.amount').set('text', total);
	// Muestro/oculto los divs de comprar y su alternativo
	$('dashboard-leftlist-total-price').setStyle('display', (hayProductos? 'block' : 'none'));
	$('dashboard-leftlist-total-price-noshow').setStyle('display', (!hayProductos? 'block' : 'none'));
}

// Agrega un producto a la lista de la izquierda
function addProductLeftList (obj) {
	var product = obj.product;
	// Creo el li	
//	firstLi = $$('#dashboard .left .panel ul.results li')[0];//.getFirst();//.setStyle('opacity', '0');
	firstLi = $('cart-left-results-li-template');
//	newLi = firstLi.clone();
	var newLi = new Element('li', {'html': firstLi.get('html')});

	if (!product.clase) product.clase = product.type
	if (product.clase) newLi.addClass(product.clase);
	newLi.setStyle('display', 'block');

//	newLi.getElement('h4').addClass(product.clase).set('html', product.title);
	newLi.getElement('h4').set('html', '<span class="'+product.clase+'">&nbsp;</span>'+product.title);
	newLi.getElement('.product_date').set('html', product.product_date);
	newLi.getElement('.product .price .currency').set('html', currencyTable[product.currency].symbol);
	newLi.getElement('.product .price .currency').setProperty('code', product.currency);
	newLi.getElement('.product .price .amount').set('html', product.price).setProperty('val', product.price);
	newLi.getElement('.description').getElement('p').set('html', product.desc);
	newLi.inject($('cart-left-results'), 'bottom');

	// Cambio el currency para que lo muestre como pidio verlo
	setCurrency(currencyDefault);

/*
	newLi.getElement('.cart-modify-product').addEvent('click', function(ev) {
		new Event(ev).stop();
		var key = this.getParent('.cart-left-results-li').getProperty('key');
		alert(key);
	});
	newLi.getElement('.cart-view-product').addEvent('click', function(ev) {
		new Event(ev).stop();
		var key = this.getParent('.cart-left-results-li').getProperty('key');
		alert(key);
	});
*/
	return newLi;
}

var addGeoPointsList;

function addProduct (obj) {
	//var msg = $('error-msg');
	if (!obj || !obj.product) {alert('no no'); return;}
	var product = obj.product;
	var geopoints = (obj && obj.geopoints)? obj.geopoints : '';

	var geopoints = new Hash(geopoints);
	//addGeoPointsList = geopoints;
	addGeoPointsList = new Hash({});

//	toggleCartProductList('added');
	//product.clase = 'added';
	var newLi = addProductLeftList(obj);
	newLi.addClass('added');

	// Hago el request y obtengo el id
	var request = new Request.JSON({
		url: obj.url,
		onComplete: function(jsonObj) {
			var new_id = (jsonObj.new_id)? jsonObj.new_id : jsonObj;
			newLi.set('key', new_id);
			newLi.set('id', product.type+'-'+new_id);

			// Si es un vuelo y no hay countdown todavia, le asigno el countdown
			if ((product.type == 'vuelos') && (countdownID == 0)) 
				setTimeout("showCountdown('"+new_id+"', '"+product.type+"')",10000);

			// Si tiene productos a eliminar, los quito
			if (jsonObj.disable)
				for (var i = 0; i < jsonObj.disable.length; i++) {
					if ($(product.type+'-'+jsonObj.disable[i]))
						//alert($(product.type+'-'+jsonObj.disable[i]).getElement('.cart-remove-product').get('tag'));
						$(product.type+'-'+jsonObj.disable[i]).dispose();
					//else alert(product.type+'-'+jsonObj.disable[i]+' no existe);
				}

			// Seteo las acciones
			newLi.getElement('.cart-remove-product').set('href', obj.urlDel).addEvent('click', function(ev) {
				new Event(ev).stop();
				var key = this.getParent('.cart-left-results-li').get('key');
				delProductLeftList(newLi, this.getProperty('href')+key);
			});
		}
	}).post($(obj.form));

	jQuery(newLi.getElement('.product')).bindProductDetails();

//	addGeoPointsList.set('city', new Hash({}));
//	addGeoPointsList2 = 

//	var cont = 0;
	var cont = ($$('.geopoint'))? $$('.geopoint').length-1 : 0;
	cartGeoPoints = new Hash(cartGeoPoints);
	
//alert('aa');
//	if (!cartGeoPoints.has('city'))
	if (geopoints.getLength() > 0) {
		geopoints.each(function(gp2,key2) {
			gp2 = new Hash(gp2);
			if (!cartGeoPoints.has(key2)) cartGeoPoints.set(key2, new Hash({}));
			master = new Hash(cartGeoPoints.get(key2));
			cartGeoPoints.has(key2);
			gp2.each(function(gp, key){
				if (!master.has(key)) {
					++cont;
					var liGeoPoint = $('geographic-points-ul-li-template').clone().setStyle('display', 'block').set('id', 'geopoint-'+key2+'-'+key).inject('geographic-points-ul', 'bottom');
					liGeoPoint.getElement('div').getElement('h4').getElement('a').set('html', gp.title).set('id','geopoint-'+(geoPointCount+cont));
					liGeoPoint.getElement('div').getElement('p').set('html', gp.desc).set('id', 'geopoint-'+(geoPointCount+cont));
					//cartGeoPoints.city.extend(set(key, gp);
					//addGeoPointsList.set(key, gp);
					master.set(key, gp);
					//addGeoPoint(gp)
				}
			});
			cartGeoPoints.set(key2, master);
		});
	}
//	if (!gMaps) {
//          gMapsLoad('addProduct');
//          gMapsLoad('addGeoPoints');
//	  //return;
//	}

//	beginCartMap();

	if (!CartOpened) {
		CartOpened = true;
		CartMovementDuration = 600;
		openCart(new Event({'type': 'click'}));
		new Fx.Scroll(document, {
			wait: false,
			duration: 700,
			offset: {'x': -200, 'y': -50},
			transition: Fx.Transitions.Quad.easeInOut
		}).toElement($('dashboard'));
		CartMovementDuration = 300;

		$('dashboard').addEvent('close', function(ev){ top.location.href='/'; });
	}

	// Muestro el comprar del carrito
	toggleCompraButton();
}

function resize(){}

function openCart(ev) {
	//new Event(ev).stop();
	// inicializo el mapa
    
	if ($('currency'))
    	$('currency').setStyle('z-index', 1);
    
	if ((!$('dashboard')) || !$('dashboard-container'))
		return false;

	$('carrito-arrow').setProperty('src', '/images/ui/carrito-arrow-right.png');
	$('toggle-cart').getElement('a').set('text', 'Click para cerrar');
    
/*
	$('dashboard').addEvent('open', function(ev){
		beginCartMap();
	});
*/	
//	$('toggle-cart').removeEvents('click').addEvent('click', closeCart);
	$('dashboard-container').setStyles({'z-index': '999'});
//	$('dashboard').setStyles({'z-index': '9999'});

	// Fondo obscuro
	$('lbOverlay').setStyles({'display': 'block'});

	var morph = new Fx.Morph('lbOverlay', {
		'duration': CartMovementDuration, 
		'link': 'chain'
	});
	//morph.start({'background-color': '#000000', opacity: 0.3});
	morph.start({opacity: 0.3});
	//window.addEvents({'scroll': resize, 'resize': resize});
	//resize();

	$('dashboard-container').removeEvents('click');
	//$('dashboard-container').removeEvents('click').addEvent('click', closeCart);
//	$('lbOverlay').removeEvents('click').addEvent('click', closeCart);

	// muevo el carrito
	$('dashboard').setStyles({'position': 'absolute'});

    var offsetLeft = $('wrapper').offsetLeft;  

	var morph = new Fx.Morph('dashboard', {
		'duration': CartMovementDuration, 
		'link': 'chain', 
		onComplete: function() { 
			$('dashboard').fireEvent('open'); 
			if (!CartMapInitialized) beginCartMap();
		} 
	}).start({'left': offsetLeft + 39}); // 45

	document.removeEvents('keydown').addEvent('keydown', function(ev){ 
		// Cierro el carrito con el boton escape
		if (ev.key == 'esc')
			closeCart(new Event({'type': 'click'}));
	});
	$('close-cart').removeEvents('click').addEvent('click', closeCart);
//	$('toggle-cart').removeEvents('click').addEvent('click', closeCart);
	CartOpened = true;
}

function closeCart(ev) {
//alert(ev.type);
	//new Event(ev).stop();
//	$('toggle-cart').removeEvents('click');
	document.removeEvents('keydown');
	
	if ($('currency'))
		$('currency').setStyle('z-index', 2);
	
	
	$('carrito-arrow').setProperty('src', '/images/ui/carrito-arrow-left.png');
	$('toggle-cart').getElement('a').set('text', 'Click para desplegar');

	var morph = new Fx.Morph('lbOverlay', {'duration': CartMovementDuration, 'link': 'chain', onComplete: function() {
		$('dashboard-container').setStyles({'z-index': ''});} //0
	});
	morph.start({
		'background-color': '#ffffff', 
		opacity: 0,
		onComplete: function (){
				$('lbOverlay').setStyle('display', 'none');
		}
	});
	//window.addEvents({'scroll': resize, 'resize': resize});
	
	// muevo el carrito
	$('dashboard').setStyles({'position': 'absolute'});
	var morph = new Fx.Morph('dashboard', {
		'duration': CartMovementDuration, 
		'link': 'chain', 
		onComplete: function() { 
			$('dashboard').fireEvent('close'); 
		} 
	}).start({'left': CartLeft});
//	$('toggle-cart').removeEvents('click').addEvent('click', openCart);


/*
$('dashboard-container').setStyles({'z-index': '0'});
$('toggle-cart').removeEvents();
$('toggle-cart').addEvent('click', openCart);
*/
	CartOpened = false;
}

function resize () {
	var N=window.getScroll(), O=window.getSize();
		$('lbOverlay').setStyles({left:N.x,top:N.y,width:O.x,height:(O.y)})
}

/************************ BEGIN CART MAPS ***************************/
    //<![CDATA[
		//document.addEvent('domready', beginCartMap);
		
function addGeoPoints(gps) {

  if (!CartMapInitialized) {
    showCartMap('addGeoPoints'); return;
  }

  if (!gps)
    gps = addGeoPointsList;
//alert('GPS: '+gps);
//alert('LEN: '+gps.length);
  if (gps.length)
    gps.each(function(item, index){
//	if (!cartGeoPoints.has(key))
      	  addGeoPoint(item);
//alert('ITEM: '+item);
    });
  addGeoPointsList.empty();
}

function beginCartMap() {
	if (gMaps)
		showCartMap();
	else
		gMapsLoad('showCartMap');
}

		function showCartMap() {
//			if (CartMapInitialized) return CartMap;
			//gMapsLoad();
			if (!CartMapInitialized) {
				CartMapInitialized = true;
				//alert('carga');
				var IE = document.all ? true : false;
				var normalProj = G_NORMAL_MAP.getProjection();	
				
				var lat = -34.5761256318848;
				var lng = -58.4088134765625;
				var startMarker = null;
				var endMarker = null;
				var routes = new Array();
				var map;
				var centerPoint = new GLatLng(0.0, 0.0);
	
				// Inicializo el gMap
	      if (GBrowserIsCompatible()) {
	
	        CartMap = new GMap2($("cart-map"));
	        CartMap.addControl(new GSmallMapControl());
	        //CartMap.setCenter(new GLatLng(-34.5761256318848, -58.4088134765625), 2);
					CartMap.setCenter(new GLatLng(0,0),0);
					CartMap.enableContinuousZoom();
					CartMap.enableDoubleClickZoom();
	      			CartBounds = new GLatLngBounds();
	
					var openMapStatus = { 0: {'title': 'Agrandar', 'height': '200px'}, 1: {'title': 'Achicar', 'height': '400px'} };
				}
			
				// Marco todos los puntos en el mapa 
				i = 0;
				cartGeoPoints = (cartGeoPoints != '')? new Hash(cartGeoPoints) : new Hash({});
				if (cartGeoPoints.getLength() > 0)
					cartGeoPoints.each(function(gpoints, tpoint) {
						var pointsHash = new Hash(gpoints);
						pointsHash.each(function(gp, key){
//alert(gp.lat);
							mk = addGeoPoint(gp);
							mapPoints[tpoint+'-'+key] = mk;

							pointsHash.erase(key);
						});
					});
				//else alert('no geopoints');

        // ===== determine the zoom level from the bounds =====
        CartMap.setZoom(CartMap.getBoundsZoomLevel(CartBounds));
        //CartMap.setZoom(8);

        // ===== determine the centre from the bounds ======
        CartMap.setCenter(CartBounds.getCenter());
	  
				return CartMap;
      }

			document.addEvent('unload', function(){
				GUnload();
			});
	  	if (fn) eval(fn + '()');

		}

   function createMarker(point,html, icon) {
     //var marker = new GMarker(point, icon);
     var marker = new GMarker(point, icon);
     GEvent.addListener(marker, "click", function() {
       marker.openInfoWindowHtml(html);
     });
     return marker;
   }

function addGeoPoint(gp, thisMap) {
	if (!thisMap) thisMap = CartMap;
//if (!$('geopoint-'+geoPointCount))return;
//alert(geoPointCount);

      ++geoPointCount;
      var point = new GLatLng(gp.lat, gp.lng);
      var marker = createMarker(point,'<div style="width:240px">'+gp.title+'<\/div><div class=""><ul><li><a href="#" onClick="javascript:zoomInCart('+gp.lat+', '+gp.lng+');return false;">zoom in</a></li><li><a href="#" onClick="javascript:zoomOutCart();return false;">zoom out</a></li></ul></div>');
      thisMap.addOverlay(marker);
if ($('geopoint-'+geoPointCount)) {
      $('geopoint-'+geoPointCount).addEvent('click', function(ev){
      	new Event(ev).stop();
		new Fx.Scroll(document, {
			wait: false,
			duration: 1000,
			offset: {'x': -200, 'y': -50},
			transition: Fx.Transitions.Quad.easeInOut
		}).toElement(thisMap);
//		}).toTop();
		GEvent.trigger(marker,'click'); 
      });
}
//else alert(geoPointCount);
  	CartBounds.extend(point);
	return marker;
}

function resizeCargBG() {
return;
	var N=window.getScroll(), O=window.getSize(), M=document.getSize();
//alert(M.y);
	// Redimensiono el fondo
	$('lbOverlay').setStyles({left:N.x,top:N.y,width:O.x,height:(O.y)})

}

function resizeCart() {
resizeCargBG();
    if ($('dashboard')) {
        CartLeft = $('container').getPosition().x + 780 + 99; // offset + ancho de la pagina + margen
        $('dashboard').setStyle('left', CartLeft);
        $('dashboard-container').setStyle('width', CartLeft + 60 + 105); // CartLeft + parte visible del carrito

    }
}

/*
*/ 

window.addEvent('resize', function() {      

    if(CartOpened) {
        closeCart(new Event({'type': 'click'}));
        setTimeout(function() { resizeCart(); }, 800);
    } else {
        resizeCart();
    }       
    
});

window.addEvent('domready', function() {

	//if ($('dashboard')) CartLeft = $('dashboard').getStyle('left');
	//alert($('dashboard'));//.getStyle('left'));
	
	// Fix ubicacion (Alan R.)
	    resizeCart();
    // Fin Fix

	// Muestro/Oculto el boton de comprar
	toggleCompraButton();

	var countdownDelay = 0;
	// Si hay countDowns, seteo la funcion
	if (typeof arrCountdown != "undefined" && arrCountdown != null)
		for (var i = 0; i < arrCountdown.length; i++) {
			countdownDelay = ((arrCountdown[i].remaining.toInt() < 0)? 0 : arrCountdown[i].remaining.toInt())*1000;
			setTimeout("showCountdown('"+arrCountdown[i].key+"', '"+arrCountdown[i].type+"')",countdownDelay);
		}

// SOLO para probar
//if ($('vuelos-1182')) showCountdown('1182', 'vuelos');

	var body = $$('body');
	if (!$('lbOverlay'))
		new Element('div', {'id': 'lbOverlay'}).inject($('container'), 'top');

	if($$('.cart-remove-product'))
		$$('.cart-remove-product').each(function(item){
			item.addEvent('click', function(ev){
				if (ev) new Event(ev).stop();
				delProductLeftList(item.getParent('.cart-left-results-li'), 
				item.getProperty('href')+item.getParent('.cart-left-results-li').get('key'));
				});
		});

	if ($('cart-list-show-on-target'))
		$('cart-list-show-on-target').addEvent('click', function(ev){
			new Event(ev).stop();
			toggleCartProductList('on_target');
		});

	if ($('cart-list-show-added'))
		$('cart-list-show-added').addEvent('click', function(ev){
			new Event(ev).stop();
			toggleCartProductList('added');
		});

//addProductLeftList();

                        var newProd = {
                                "urlDel": "/ajax/class/Cart/delVuelo/", 
                                "urlView": "/ajax/class/Cart/delVuelo/",
                                "form": "form-pasajeros",
                                "url": "/ajax/class/Vuelo/addProduct/4",
                                "product" : {
                                        "type": "flight",
					"clase": "flight",
                                        "title":"prueba",
                                        "product_date":"lala",
                                        "desc":"pepe",
                                        "currency":"USD",
                                        "price":"850"
                                        }
                        };
//addProductLeftList(newProd);
//addProduct(newProd);

	if ($('toggle-cart') && $('dashboard'))
		$('toggle-cart').addEvent('click', toggleCart);

	// Activo las solapas del carrito (calendar, map, lastsearch)
	if ((list = $$('.flaps li a')))
		// Reccorro todos los href de las solapas
		list.each(function(item) {
			// Para cada una, capturo su click
			item.addEvent('click', function(ev) {
				new Event(ev).stop();
				// Oculto los contenidos de todas las solapas
				$$('.flap-show').each(function(myDiv) {
					myDiv.setStyle('display', 'none');
				});
				// Quito la clase current del que la tenia
				$$('.flaps li.current').removeClass('current');
				// Le asigno la clase current al correspondiente
				item.getParent().addClass('current');
				// Muestro el div contenido correspondiente
				$(item.getProperty('show-div')+'-view').setStyle('display', 'inline');
			});
		});


});
function zoomInCart(lat,lng) {
	thisMap = CartMap;
	var zoom = thisMap.getZoom();
	zoom = Math.min(15,zoom+1);
	zoom = Math.max(13,zoom);
	thisMap.setCenter(new GLatLng(lat,lng),zoom);
}

function zoomOutCart() {
	thisMap = CartMap;
	thisMap.setZoom(thisMap.getBoundsZoomLevel(CartBounds));
	thisMap.setCenter(CartBounds.getCenter());
}

/* ya se que es jQuery, y el archivo es cart_mootools, pero sepan disculpar
	- Pablo Rigazzi */
jQuery.fn.bindProductDetails = function()
{
	return this.each(function()
	{		
		jQuery(this)
		.bind('open', function() {
		$product = jQuery(this);
		params = $product.parent().attr('id').split('-');
		openCart(new Event({'type': 'click'}));
		jQuery.ajax({
			url: '/ajax/class/Cart/productDetailHTML/',
			type: 'POST',
			data: 'params[0][' + params[0] + '][0]=' + params[1],
			success: function(data) {
				jQuery('#dashboard-container')
				.one('click', function(e){
					e.preventDefault();
					$product.trigger('click');
				});
			
				jQuery('#product-detail').remove();
				jQuery('<div id="product-detail"></div>')
				.hide()
				.appendTo('#dashboard-container')
				.html(data)
				.prepend(
					jQuery('<a class="close-detail" href="#">[ Cerrar ]</a>')
					.unbind('click').click(function(e){ 
						e.preventDefault();
						$product.trigger('click');
						return false;
					})
				)
				.slideDown('fast');
			},
			dataType: 'json'
		});
	})
	.bind('close', function(){
		jQuery('#dashboard-container').unbind('click');
		jQuery('#product-detail').slideUp('fast', function(){
			//closeCart(new Event({'type': 'click'}));
		});
	})
	.toggle(function(e){
		jQuery(this).trigger('open');
	}, function(e){
		jQuery(this).trigger('close');
	})
	.css('cursor', 'pointer');	
	});

}

jQuery(document).ready(function($){
	$('div.product').bindProductDetails();
});




