//parte NON jQuery
var Months = Array('gen', 'feb', 'mar', 'apr', 'mag', 'giu', 'lug', 'ago' ,'set', 'ott', 'nov', 'dic');

function typeByImages(s, d, cl, st) {
	var i;
	var c;
	var ts = '';
	
	try {
		for (i = 0; i < s.length; i++) {
			c = '<img src="' + d + s.substr(i, 1) + '.gif" alt="' + s.substr(i, 1) + '"';
			
			if (cl != '') c += ' class="' + cl + '"';
			if (st != '') c += ' style="' + st + '"';
			
			c += ' />';
			
			ts += c;
		}
		
		return ts;
	}
	catch(e) {
		return s;
	}
}


//parte jQuery
var $head;
var $menu;
var $title;
var $content;
var $bottom;


//impostazione dei tooltip per corsi, e eventi od entrambi
function prepareCalendarTooltips(){
	$('div#main div#menu div#calendar div#days div.c a, div#main div#menu div#calendar div#days div.e a, div#main div#menu div#calendar div#days div.a a')
		.tooltip({
			delay:		0,
			track:		true,
			showURL:	false,
			opacity:	1,
			fixPNG:		true,
			extraClass:	'pretty fancy',
			bodyHandler:	function(){
				return $.ajax({
					type:		'get',
					url:		$(this).attr('rel'),
					async:		false
				}).responseText;
			}
		});
}

//DOM PRONTO
$(document).ready(function(){
	//costante indicatore di caricamento ajax
	var loaderHTML	= '<div class="loading"><img src="/images/ajax-loader.gif" /><br />Caricamento...<br /><br /></div>';
	
	//riferimenti ai principali div
	$head		= $('div#main div#head');
	$menu		= $('div#main div#menu');
	$title		= $('div#main div#title');
	$content	= $('div#main div#content');
	$bottom		= $('div#main div#bottom');
	
	//lista di tutti i box ajax
	var $ajaxBoxes	= Array(
		$('div#main div#menu div#categories'),
		$('div#main div#menu div#calendar')
	);
	
	//per tutti i box ajax 
	$.each($ajaxBoxes, function(i, $o){
		//aggiungo una proprieta che ne determina l'effettivo stato di caricamento
		$.extend($o, {ajaxReady: false});
		//inserisco l'icona di caricamento in corso
		$o.html(loaderHTML);
		
		//aggiungo un handler all'evento di fine caricamento
		$o.bind('ajaxComplete', function(){
			//indico nella proprieta che e realmente pronto
			$o.ajaxReady = true;
			
			//identifico se tutti i box sono effettivamente pronti
			var allAjaxBoxesReady = true;
			$.each($ajaxBoxes, function(i, $o2){
				allAjaxBoxesReady = allAjaxBoxesReady && $o2.ajaxReady;
			});
			
			//se tutti i box sono effettivamente pronti
			if (allAjaxBoxesReady)
				//lancio l'evento
				$(document).trigger('allAjaxBoxesReady');
		});
	});
	
	
	//caricamento voci del menu di sinistra
	$('div#main div#menu div#categories')
		.load('/ajax.menu.asp', function(){
			//inizializzazione del sistema accordion
			$('div#main div#menu div#categories ul.drawers')
				.accordion({
					header:		'h2.drawer-handle',
					navigation:	true,
					selectedClass:	'open',
					collapsible:	true,
					active:		false
				})
				.one('accordionchange', function(event, ui){
					pos();
				});
		});
		
	//caricamento del calendario
	$('div#main div#menu div#calendar')
		.load('/ajax.calendar.asp', function(){
			//preparazione dei tooltip associati
			prepareCalendarTooltips();
		});
	
	//sostituzione link mesi e "oggi" con chiamate ajax
	$('div#main div#menu div#calendar div#month a, div#main div#menu div#calendar a#gototoday').live('click', function(){
		$('div#main div#menu div#calendar')
			.html(loaderHTML)
			.load($(this).attr('href'), prepareCalendarTooltips);
		
		return false;
	});
	
	//scrittura della data con i caratteri grafici
	d = new Date($('div#main div#menu div#today div').text());
	$('div#main div#menu div#today div').html(
		typeByImages(Months[d.getMonth()], '/images/typewriter/letters/', '', '') + '<br />' +
		typeByImages((d.getDate() < 10 ? '0' : '') + d.getDate().toString(), '/images/typewriter/bignumbers/', '', '') + '<br />' +
		typeByImages(d.getFullYear().toString(), '/images/typewriter/smallnumbers/', '', '')
	);
	
	
	//queste non sono presenti dovunque
	//inizializzazione del sistema carousel (gallerie immagini)
	try {
		$('.mycarousel').jcarousel({
			vertical:	false,
			scroll:		1
		});
	}
	catch (e) {
	}
	
	//inizializzazione del sistema accordion (sezioni ad espansione)
	/*
	try {
		$('ul.drawers').accordion({
			header:		'h2.drawer-handle',
			navigation:	true,
			selectedClass:	'open'
		});
	}
	catch (e) {
	}
	*/
	
	//sostituzione link "aggiungi al carrello" con chiamate ajax
	$('a.addtocart:not(.multi)').click(function() {
		var $this = $(this);
		
		if ($this.attr('href')) {
			$this
				.css('background-image', 'url(/images/ajax-loader.gif)');
			
			$.get($this.attr('href'), function(data, textStatus) {
				var success = data.substr(0, 1);
				
				if(success == '1')
					$this
						.css('background-image', 'url(/images/act-incart.png)')
						.css('cursor', 'default')
						.removeAttr('href');
				else {
					$this
						.css('background-image', 'url(/images/act-addtocart.png)');
					
					//NICOLA: vedere se sostituire con i modalDialog piu belli
					alert ('Errore durante l\'inserimento nel carrello');
				}
			},
			'text');
		}
		
		return false;
	});
	
	//sostituzione link "aggiungi al carrello" per preventivo multiplo con chiamata in finestra modale
	$('a.addtocart.multi').click(function() {
		$.nyroModalManual({
			url:	$(this).attr('href'),
			width:	550,
			height:	300,
			endShowContent:	function(elts, settings){
				$('div#nyroModalContent form :submit').click(function() {
					$('div#nyroModalContent form :checked').each(function(i, o) {
						var $o = $(o);
						
						$.get($('div#nyroModalContent form').attr('action'), 'idprodotto=' + $o.val().toString(), function(data, textStatus) {
							var parts = data.split('|');
							
							if(parts[0] == '1') {
								$o.attr('disabled', 'disabled');
							}
							else {
								alert('Errore imprevisto. Impossibile aggiungere l\'articolo ' + parts[1]);
							}
							
						});
					});
					
					$('#closeBut').click();
					
					return false;
				});
				
				$('div#nyroModalContent form :button').click(function() {
					$('#closeBut').click();
				});
			}
    		});
		
		return false;
	});
});

//PAGINA COMPLETAMENTE PRONTA COMPRESE TUTTE LE CHIAMATE AJAX
$(document).bind('allAjaxBoxesReady', pos);

function pos(){
	$bottom.css('visibility', 'hidden');
	
	//determino l'effetiva altezza del menu e gliela assegno
	$menu.height(
		$('div#main div#menu div#today').outerHeight(true) +
		$('div#main div#menu div#categories').outerHeight(true) +
		$('div#main div#menu div#calendar').outerHeight(true)
	);
	
	//riposizionamento del div bottom in base all'altezza di menu e content
	//il numero fisso e la quota iniziale che e la medesima sia per menu che per content + una spaziatura
	if ($menu.outerHeight() > $content.outerHeight())
		$content.height($menu.outerHeight() - $title.outerHeight());
	else
		$menu.height($content.outerHeight() + $title.outerHeight());
	
	$bottom.css('top', $menu.height() + 115);
	$bottom.css('visibility', 'visible');
}