$(document).ready(function() {

	updateCalendar();

});

var updateCalendar = function () {
	calendar = $('#shows-list .central .wrap-incalendar').html();
	$('#current-month').html(calendar);

	calWidth = $('#current-month').width();
	lateralWidth = (1200-calWidth)/2  -33;
	$('.place-left, .place-right').css({ width: lateralWidth });

	$('.mycal-link').click(function(e) {
		e.preventDefault();
		trackEvent('Calendario','My Calendar','Open');
		trackPage('/timeline/mycalendar/');
		$('#current-month a:first').trigger('click', 'notrack');
	});
	
	$('#current-month a').click(function(e, track) {
		e.preventDefault();
		if(!track)
			trackEvent('Calendario','Slideshow','Day');
		link = $(this);
		color = '#'+$('#shows-list .central .show-color').text();
		if(link.hasClass('active'))
			return false;
		if($('.events-list table.active').length)
			openedTab = '#'+$('.events-list table.active:first').attr('id');
		else
			openedTab = '#evts-all';
			//openedTab = $('.events-navigator li:not(.no-display) a:first').attr('href');
			
		$('#events-wrapper').addClass('open').animate({ opacity: 0 }, 300, function() {
			$('#calendars').addClass('loader');
			$('#calendars .active').removeClass('active').css({ 'background-color': color, 'color': '#fff' });
			link.addClass('active').css({ 'background-color': '#fff', 'color': color });
			url = link.attr('href');
			$.get(url, function(data) {
				$('#events-wrapper div.float-left::first').html(data);
				//left-back
				$('.left-back').click(function(e) {
					e.preventDefault();
					$('.events-navigator a[href="#evts-all"]').trigger('click');
				});
				if(!$(openedTab).length || openedTab == '#evts-my')
					openedTab = '#evts-all';
				//frecce avanti/indietro giorni
				arwPrev = $('#events-wrapper .arrow-day.prev');
				arwNext = $('#events-wrapper .arrow-day.next');
				if(link.parent().prev().children().length == 0)
					arwPrev.addClass('no-display');
				else
					arwPrev.removeClass('no-display');
				if(link.parent().next().children().length == 0)
					arwNext.addClass('no-display');
				else
					arwNext.removeClass('no-display');
				$('#events-wrapper .arrow-day').click(function(e) {
					e.preventDefault();
					if($(this).hasClass('prev'))
						link.parent().prev().children().trigger('click');
					if($(this).hasClass('next'))
						link.parent().next().children().trigger('click');
				});
				$(openedTab).removeClass('no-display').addClass('active');
				$('.events-navigator a[href='+openedTab+']').addClass('active').css({ 'background-color': color });
				$.get($('#view-my-calendar').attr('href'), function(data) {
			    	$('#evts-my').html(data);
			    });
				elHeight = Math.ceil($('#events-wrapper div.float-left:first').outerHeight(true));
				$('#events-wrapper').animate({ minHeight: elHeight }, 400, function() {
					$(this).find('.hide').removeClass('hide');
					$('#calendars').removeClass('loader');
					$('#events-wrapper').animate({ opacity: 1 }, 400);
					eventify(color);
					updateRemove($('#events-wrapper .remove a'), false);
					
					$('#view-my-calendar').click(function(e) {
						e.preventDefault();
						$('.events-navigator li:last a:first').trigger('click');
					});
	
					$(this).find('.input-txt').each(function() {
						$(this).prev().click(function() {
			    			$(this).addClass('no-display');
					    	$(this).next().focus();
					    });
			    	});

					//url = $('#current-month a.active').attr('href')+'&search='+$('#searchmaisontxt').val();
					searchMaison($('#events-wrapper').find('#shows-maison-form'));
				});
			});
		});
	});
}
						
var updateRemove = function(el, isMyCalendar) {
	if(isMyCalendar)
		el.unbind();
		
	el.click(function(e) {
		e.preventDefault();
		if(isMyCalendar)
		{
			tr = $(this).parent().parent();
			if(tr.next().hasClass('options'))
				closeOptions(tr.next(),wrapper,50);
		}
		a = $(this);
		$.get(a.attr('href'), function() {
			split = a.attr('href').split('/');
			split.pop();
			id = split[split.length-1];
			if(isMyCalendar)
		    {
		   		tr.animate({ opacity: 0 }, 200, function() {
		   			$('.events-list tr.hl-'+id).css({ backgroundColor: '' }).removeClass('hl');
			    	$(this).remove();
				});
		    }
		    else
		    {
			    if(a.hasClass('do-add'))
			    {
			    	trackEvent('Calendario','My Calendar','Add'); 
			    	$('.events-list tr.hl-'+id).css({ backgroundColor: color }).addClass('hl');
		    	}
		    	if(a.hasClass('do-remove'))
		    	{
			    	trackEvent('Calendario','My Calendar','Remove'); 
		   	 		$('.events-list tr.hl-'+id).css({ backgroundColor: '' }).removeClass('hl');
		   	 	}
		    }
		});
		//aggiorna la tabella evts-my
		if(!isMyCalendar)
		{
			$.get($('#view-my-calendar').attr('href'), function(data) {
			    $('#evts-my').html(data);
			});
		}
	});
}

var moreOptions = function(el, wrapper) {
	el.click(function(e) {
		e.preventDefault();
		trackEvent('Calendario','My Calendar','Options'); 
		if($(this).hasClass('active'))
			return false;
		if($('.events-list table:not(.no-display) tr.active').length)
			closeOptions($('.events-list table:not(.no-display) tr.active'),wrapper,200);

		$(this).addClass('active');
		url = $(this).attr('href');
		divH = $(this).next();
		accrediti = (divH).parent().hasClass('accrediti') ? true : false;
		array = divH.find('.form-action').attr('href').split('/');
		array.pop();
		id = array[array.length-1];
		tr = $('<tr />').addClass('options').css({ height: 0 }).append('<td colspan="5" class="lines"></td>');
		$(this).parent().parent().after(tr);
		td = tr.children().first();
		if(divH.find('.periodates').length)
			td.addClass('big');
		map = $('<div />').addClass('wrap-map loading');
		show = $('<div />').addClass('wrap-show');
		closeBtn = $('<a />').addClass('close-box').attr('href','#').html('<img src="'+divH.find('.close-image').attr('href')+'" alt="chiudi" title="chiudi" />').click(function(e) {
			e.preventDefault();
			$(this).next().validationEngine('hide');
			closeOptions(tr,wrapper,200);
		});
		//immagine
		if(divH.find('.url-image').length)
			show.append('<a href="'+divH.find('.url-gallery').attr('href')+'" class="photo-gall"><img src="'+divH.find('.url-image').attr('href')+'" alt="" title="" /></a><a href="'+divH.find('.url-gallery').attr('href')+'" class="photo-gall"><span>SHOW</span></a>');		
		if(divH.find('.periodates').length)
			show.append('<span>'+divH.find('.periodates').html()+'</span>');	
		formW = $('<div />').addClass('wrap-form');
		form = $('<form />').attr('action',divH.find('.form-action').attr('href')).attr('id', 'remindme-form-'+id);
		if(accrediti)
			form.addClass('hidden');
		
		if(divH.find('.press-release-event').length)
			formW.append('<a href="'+divH.find('.press-release-event').attr('href')+'" class="'+divH.find('.press-release-event').attr('class')+'">'+divH.find('.press-release-event').html()+'</a>');
			
		formW.append(form).prepend(closeBtn);
		
		form.append('<label>REMIND ME</label><input type="text" class="validate[required,custom[email]] input-txt" id="remindme-email-'+id+'" />');
		form.append('<button class="send" type="submit"><span>INVIA</span></button>');
		//console.log($(wrapper).children());
		wrapperHeight = wrapper.height();
		
		if(wrapperHeight < 0)
		{
			$.each(wrapper.children(), function(index, value) {
				wrapperHeight += $(value).outerHeight();
			})
		}
		wrapperHeight += 220;
		//console.log(wrapperHeight);
		wrapper.animate({ height: wrapperHeight }, 150);
		tr.addClass('active').animate({ height: 220 }, 150, function() {	
			td.append(map).append(show).append(formW).css({ opacity: 0 }).animate({ opacity: 1 }, 200);
			//form2
			validate(tr.find('.wrap-form form'), "topRight", false);
			$('.wrap-form form').submit(function() {
				form = $(this);
				filter = /^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/;
				email = $('.input-txt', $(this)).val();
				form = $(this);
				if(email != '' && filter.test(email))
				{
					$.get($(this).attr('action'), { email: email }, function(data) {
						if(data == 'OK')
					    {
					    	trackEvent('Calendario','My Calendar','Options Remind');
					    	form.animate({ opacity: 0 }, 200, function() {
					    		form.html('<label>REMINDED</label>');
					    		$(this).animate({ opacity: 1 }, 200);
					    	});
					    }
					});
				}
				return false;
			});
			//mappa
			address = 'Milano,'+tr.prev().find('.address').text().replace(/\s/g,'+');
			getCoords(map, url, address);
			tr.find(".photo-gall").fancybox({
				'type': 'iframe',
				'width': 780,
				'height': 655,
				'padding': 3,
				'titleShow': false,
				'showCloseButton': true,
				'hideOnContentClick': false,
				'onStart': function() {
					trackEvent('Calendario','My Calendar','Options Show'); 
				}
			});		
		});
	});
};

var getMap = function(lat,long,el) {
    var latlng = new google.maps.LatLng(lat,long);
    var map = new google.maps.Map(el[0], {
      zoom: 15,
      center: latlng,
      mapTypeId: google.maps.MapTypeId.ROADMAP
    });
    el.removeClass('loading');
	var marker = new google.maps.Marker({
		position: new google.maps.LatLng(lat,long),
		map: map
	});
}

var searchMaison = function(el) {
	el.submit(function(e) {
	    e.preventDefault();
	    if(!$('#searchmaisontxt').val())
	    	return false;
	    url = $('#current-month a.active').attr('href')+'&search='+$('#searchmaisontxt').val();
		$('#search-txt-search').text($('#searchmaisontxt').val());
	    color = '#'+$('#shows-list .central .show-color').text();
	    $('#calendars').addClass('loader');
	    trackEvent('Calendario','My Calendar','Search');
	    $('#events-wrapper').animate({ opacity: 0 }, 200, function() {
	    	
			$('#events-wrapper .left').add('hidden1');
			$('#events-wrapper .left .day-cont').addClass('no-display');
			$('#events-wrapper .left .mycal-cont').addClass('no-display');
			$('#events-wrapper .left .search-cont').removeClass('no-display');
			
	    	$.get(url, function(data) {
	    		$('#calendars').removeClass('loader');
	    		wrapper = $('#events-wrapper .right');
	    		$('#evts-search').html(data);
	    		
	    		updateRemove($('#evts-search .remove a'));
	    		moreOptions($('#evts-search .more a'), wrapper);
	    		
				$('#evts-my .remove a').click(function(e) {
				    e.preventDefault();
				    tr = $(this).parent().parent();
				    if(tr.next().hasClass('options'))
				    	closeOptions(tr.next(),wrapper,200);
				    $.get($(this).attr('href'), function() {
				    	tr.animate({ opacity: 0 }, 200, function() {
				    		$(this).remove();
				    	});
				    });
				});
						
	    		$('.events-navigator a[href="#evts-search"]').trigger('click');
				$('#events-wrapper').animate({ opacity: 0 }, 300, function(){
				    //$('.events-navigator a.active').parent().removeClass('no-display');
				    $('#events-wrapper').animate({ opacity: 1 }, 300);
				});
	    	});
	    });
	    
	});
}
					
var eventify = function(color) {
	var heightLeft = $('#events-wrapper .left').height();
	var tableRight = $('#events-wrapper .right').outerHeight();
	var navigatorHeight = $('.events-navigator').outerHeight(true);
	var wrapper = $('#events-wrapper .right');
	$('.events-list table:not(.active)').css({ opacity: 0 });

	$('.events-navigator a').mouseenter(function(e) {
		$(this).css({ 'background-color': color });
	});
	$('.events-navigator a:not(.my-cal-menu)').mouseleave(function(e) {
		if(!$(this).hasClass('active'))
			$(this).css({ 'background': 'none' });
	});
	
	$('.dwnl-calendario').click(function() {
		trackEvent('Calendario','My Calendar','Download');
		trackPage('/timeline/mycalendar/download/');
	});
/*
	$('.events-navigator a.remove-search').click(function(e) {
		e.preventDefault();
	    url = $('#current-month a.active').attr('href');
	    $('#events-wrapper .right').animate({ opacity: 0 }, 200, function() {
	    	$.get(url, function(data) {
	    		$('#events-wrapper div.float-left::first').html(data);
	    		eventify(color);
	    		validate($('#events-wrapper form'));
	    		$('#events-wrapper .right').animate({ opacity: 1 }, 200);
	    		searchMaison($('#events-wrapper').find('#shows-maison-form'));
	    	});
	    });
	});
*/
	$('.events-navigator a').click(function(e) {
		e.preventDefault();
		if($(this).hasClass('active'))
			return false;
		//if($('.events-navigator a.active').attr('href') == '#evts-search')
		//	$('.events-navigator a.active').parent().addClass('no-display');
			
		if($(this).attr('href') != '#evts-my' && $('#events-wrapper .left').hasClass('hidden1'))
		{
			$('#events-wrapper').animate({ opacity: 0 }, 300, function(){
				$('#events-wrapper .left').removeClass('hidden1');
				$('#events-wrapper .left .day-cont').removeClass('no-display');
				$('#events-wrapper .left .mycal-cont').addClass('no-display');
				$('#events-wrapper .left .search-cont').addClass('no-display');
			    $('#events-wrapper').animate({ opacity: 1 }, 300);
			});
		}
		if($(this).hasClass('my-cal-menu'))
		{
			trackEvent('Calendario','My Calendar','View');
			
			wrapper = $('#events-wrapper .right');
			$.get($('#view-my-calendar').attr('href'), function(data) {
			    $('#evts-my').html(data);
			    moreOptions($('#evts-my .more a'), wrapper);
			    updateRemove($('#evts-my .remove a'), true);
			});
			$('#events-wrapper').animate({ opacity: 0 }, 300, function(){
			    $('#events-wrapper .left').addClass('hidden1');
			    $('#events-wrapper .left .day-cont').addClass('no-display');
			    $('#events-wrapper .left .search-cont').addClass('no-display');
			    $('#events-wrapper .left .mycal-cont').removeClass('no-display');
			    $('#events-wrapper').animate({ opacity: 1 }, 300);
			});
		}
		if($(this).hasClass('search-btn'))
		{
			$('#searchmaisontxt').val('');
			$('#searchmaisontxt').prev().removeClass('no-display');
			$('#events-wrapper').animate({ opacity: 0 }, 300, function(){
			    $('#events-wrapper .left').addClass('hidden1');
			    $('#events-wrapper .left .day-cont').addClass('no-display');
			    $('#events-wrapper .left .search-cont').removeClass('no-display');
			    $('#events-wrapper .left .mycal-cont').addClass('no-display');
			    $('#events-wrapper').animate({ opacity: 1 }, 300);
			});
		}
		//else
		$('.events-navigator :not(.my-cal-menu).active').css({ 'background': 'none' });
		$('.events-navigator .active').removeClass('active');
			
		$(this).addClass('active').css({ 'background-color': color });
		target = $(this).attr('href');
		$(target).addClass('absolute').removeClass('no-display');
		tableRight = $(target).outerHeight();
//		console.log(tableRight);
//		console.log($('#evts-search').outerHeight());
		/*
		console.log($(target));
		console.log(tableRight);
		console.log(navigatorHeight);
		*/
		//opacity a 0 alla tabella attiva vecchia
		$('.events-list table.active').animate({ opacity: 0 }, 200, function() {
		    $(this).removeClass('active').addClass('no-display');
		    //cambia altezza contenitore se è maggiore
		    if((tableRight + navigatorHeight) > heightLeft)
		    	newHeight = tableRight + navigatorHeight;
		    else
		    	newHeight = heightLeft;
//		    	console.log(newHeight);
		    $('#events-wrapper').animate({ minHeight: newHeight }, 400);
		    wrapper.animate({ height: newHeight }, 400, function() {
		    	$(target).removeClass('absolute').addClass('active');
			    //opacity a 1 alla tabella attiva nuova
			    $(target).animate({ opacity: 1 }, 200);
		    });
		});
	});
	
	//more options
	moreOptions($('.more a'), wrapper);

	//opacity labels
	$('#shows-maison-form').each(function() {

	    $(this).mouseover(function() {
	    	$(this).children().first().animate({ 'opacity': 0.5 }, 200);
	    });

	    $(this).mouseleave(function() {
	    	$(this).children().first().animate({ 'opacity': 1 }, 200);
	    });
	});
}

closeOptions = function(el,w, speed) {
	el.parent().find('.more a.active').removeClass('active');
	el.animate({ opacity: 0 }, speed, function() {
	    $(this).children().addClass('no-display');
	    $(this).animate({ height: 0 }, 200, function() {
	    	$(this).remove();
	    	w.animate({ height: parseInt(w.height() -220) }, 200);
	    }).removeClass('active');
	});
}

getCoords = function(el, url, address) {
	$.getJSON(url, { address: address }, function(data) {
	    if(data.status == 'OK')
	    {
	    	lat = data.results[0].geometry.location.lat;
	    	lng = data.results[0].geometry.location.lng;
	    	getMap(lat,lng, el);
	    }
	});
}
