var ZOOMER = {						
	currIndex:0,
	oldIndex:0,
	imgArray:[], 				// gets refilled each time the collezione is filtered.
	objXML:null,
	imgPath:'img/collezioni/',
	imageLoaded:false,
	isFirstImg:true,
	isOpen:false,
	isAnimating:false,
	tabIsOpen:false,
	tabOpen:null
};	

ZOOMER.init = function(xmlObj){
	ZOOMER.objXML = xmlObj;
	ZOOMER.imgPath = 'img/collezioni/';
	ZOOMER.createImgArray();
	ZOOMER.isOpen = true;
	ZOOMER.isFirstImg = true;
	ZOOMER.isAnimating = false;
	ZOOMER.tabIsOpen = false;
	ZOOMER.tabOpen = null;
	
	$('#zoomer .secondaryMenuDiv').empty();
	$('#zoomer .varianti').empty();
	//$('#zoomer .content').empty();
	
	$('#zoomer h1').html($(ZOOMER.objXML).attr('nome'));	
	Cufon.replace('h1');
	// empty any divs if necessary
	//$('#zoomer').fadeIn(1000);
	$('html').css({'overflow':'hidden'});
	
	//$('#zoomer').css({'left':$(window).width(), 'opacity':0})
	$('#zoomer').css({'left':$(window).width()})
				.show()
				//.animate({'left':0, opacity:1}, 1000, "easeInOutExpo", function(){
				.animate({'left':0}, 1000, "easeInOutExpo", function(){
						$('html').css({'overflow':'auto'});	
						if(!document.getElementById('galleryStripContainer').fleXcroll){
							try{
								fleXenv.fleXcrollMain("galleryStripContainer");
								fleXenv.updateScrollBars();		
							}catch(e){
								
							}	
						}
				});
	
	$('.chiudiGallery a').unbind('click');
	$('.chiudiGallery a').click(function(e){
		e.preventDefault();		
		ZOOMER.close();
	})
	
	$(window).bind('keydown.zoomer', function(e) {
		e.preventDefault();	
		if(e.keyCode == 32){
			ZOOMER.close();			
		}
		if(e.keyCode == 37){
			ZOOMER.goPrevImg();
		}
		if(e.keyCode == 39){
			ZOOMER.goNextImg();
		}		
	});
	
	
	var list = $('<ul></ul>');
	var counter = 0;
	
	$('#zoomer .tech').empty();
	
	if($(ZOOMER.objXML).find('descrizione').text()!=''){
		$('<li><a href="" id="descrizione-link">' + langObject.descrizione + '</a></li>').appendTo(list);
		counter++;
		
	}
	
	if($(ZOOMER.objXML).find('disegno').length>0){
		if(counter > 0){
			$('<li class="divider"></li>').appendTo(list);
		}
		$('<li><a href="" id="disegni-link">' + langObject.disegni_tecnici + '</a></li>').appendTo(list);
		$(ZOOMER.objXML).find('disegno').each(function(){													   
			var img = new Image();
			$(img)
			.load(function () { 		 	
			 	//			
		  	})		
		  	.error(function () {					// notify the user that the image could not be loaded
				//
		 	 })
		  	.attr('src', ZOOMER.imgPath + $(this).attr('src'))
		 	.appendTo($('#zoomer .tech'));
		});
		counter++;
	}
	
	/**** varianti ***/
	if($(ZOOMER.objXML).find('varianti').length > 0){
		if(counter > 0){
			$('<li class="divider"></li>').appendTo(list);
		}
		$('<li><a href="" id="varianti-link">' + langObject.varianti + '</a></li>').appendTo(list);
		counter++;		
	}
	
	
	/**** schedaTecnica ***/
	if($(ZOOMER.objXML).attr('schedaTecnica') != ''){
		if(counter > 0){
			$('<li class="divider"></li>').appendTo(list);
		}
		$('<li><a href="' + $(ZOOMER.objXML).attr('schedaTecnica') + '" id="scheda_tecnica-link" target="_blank">' + langObject.scheda_tecnica + '</a></li>').appendTo(list);
		counter++;		
	}
	
	
	$('<nav></nav>')
		.appendTo($('#zoomer .secondaryMenuDiv'))
		.append(list);
		
	$('#descrizione-link').click(function(e){
		e.preventDefault();		
		$('#descrizione-link').addClass('selected');
		$('#disegni-link').removeClass('selected');
		$('#varianti-link').removeClass('selected');
		
		$('#zoomer .infoHolder').css({'maxHeight':$(document).height() - (($(document).height()/3) + 200)});

		if (ZOOMER.tabIsOpen){
			$(ZOOMER.tabOpen).slideUp(500, 'easeInOutQuart', function(){
				$('#zoomer .descriptionHolder').slideDown(500, 'easeInOutQuart', function(){
					$('#infoHolderDiv').css({'height':$('#zoomer .description').height()});
					if(!document.getElementById('infoHolderDiv').fleXcroll){
						try{
							fleXenv.fleXcrollMain("infoHolderDiv");	
						}catch(e){
							
						}
					}
					fleXenv.updateScrollBars();												
				});														 
			});
		}else{
			$('#zoomer .descriptionHolder').slideDown(500, 'easeInOutQuart', function(){
				$('#infoHolderDiv').css({'height':$('#zoomer .description').height()});
				if(!document.getElementById('infoHolderDiv').fleXcroll){
					try{
							fleXenv.fleXcrollMain("infoHolderDiv");	
						}catch(e){
							
						}
				}
				fleXenv.updateScrollBars();												
			});	
		}
		ZOOMER.tabIsOpen = true;
		ZOOMER.tabOpen = $('#zoomer .descriptionHolder');
			
		$('#zoomer .closer').click(function(e){
			e.preventDefault();		
			ZOOMER.tabIsOpen = false;
			$('#descrizione-link').removeClass('selected');
			$(ZOOMER.tabOpen).slideUp(500, 'easeInOutQuart');
		})
	});
	
	$('#disegni-link').click(function(e){
		e.preventDefault();		
		$('#disegni-link').addClass('selected');
		$('#descrizione-link').removeClass('selected');
		$('#varianti-link').removeClass('selected');
		$('#zoomer .techHolderDiv').css({'maxHeight':$(document).height() - (($(document).height()/3) + 200)});
		
		if (ZOOMER.tabIsOpen){
			$(ZOOMER.tabOpen).slideUp(500, 'easeInOutQuart', function(){
				$('#zoomer .techHolder').slideDown(500, 'easeInOutQuart', function(){
					$('#techHolderDiv').css({'height':$('#zoomer .tech').height()});
					if(!document.getElementById('techHolderDiv').fleXcroll){
						try{
							fleXenv.fleXcrollMain("techHolderDiv");	
						}catch(e){
							
						}
					}
					fleXenv.updateScrollBars();												
				});																	
																					
			});
				
		}else{
			$('#zoomer .techHolder').slideDown(500, 'easeInOutQuart', function(){
				$('#techHolderDiv').css({'height':$('#zoomer .tech').height()});
				if(!document.getElementById('techHolderDiv').fleXcroll){
					try{
							fleXenv.fleXcrollMain("techHolderDiv");	
						}catch(e){
							
						}
				}
				fleXenv.updateScrollBars();												
			});	
		}
		ZOOMER.tabIsOpen = true;
		ZOOMER.tabOpen = $('#zoomer .techHolder');
			
		$('#zoomer .closer').click(function(e){
			e.preventDefault();			
			$('#disegni-link').removeClass('selected');
			$(ZOOMER.tabOpen).slideUp(500, 'easeInOutQuart');
		})
	});
	
	/****** varianti ******/
	$('#varianti-link').click(function(e){
		e.preventDefault();	
		var counter = 0;
		$('#varianti-link').addClass('selected');
		$('#disegni-link').removeClass('selected');
		$('#descrizione-link').removeClass('selected');
		$('#zoomer .varianti').empty();
		if(document.getElementById('variantiHolderDiv').fleXcroll){
			document.getElementById('variantiHolderDiv').fleXcroll.setScrollPos(0,false);	
		}
		$('#zoomer .varianti').css({'width':155});
		$(ZOOMER.objXML).find('variante').each(function(){
			var img = new Image();
			$(img)
			.load(function () { 		 	
			 	counter++;
				 $('#zoomer .varianti').css({'width':counter*155});
		  	})		
		  	.error(function () {					// notify the user that the image could not be loaded
				//
		 	 })
		  	.attr('src', ZOOMER.imgPath + $(this).attr('src'))
		 	.appendTo($('#zoomer .varianti'));
			
		});
		
		if (ZOOMER.tabIsOpen){
			$(ZOOMER.tabOpen).slideUp(500, 'easeInOutQuart', function(){
				$('#zoomer .variantiHolder').slideDown(500, 'easeInOutQuart', function(){
					$('#variantiHolderDiv').css({'height':$('#zoomer .varianti').height()+10});
					if(!document.getElementById('variantiHolderDiv').fleXcroll){
						try{
							fleXenv.fleXcrollMain("variantiHolderDiv");	
						}catch(e){
							
						}
					}
					document.getElementById('variantiHolderDiv').fleXcroll.setScrollPos(0,false);	
					fleXenv.updateScrollBars();												
				});																	
																					
			});
				
		}else{
			$('#zoomer .variantiHolder').slideDown(500, 'easeInOutQuart', function(){
			  $('#variantiHolderDiv').css({'height':$('#zoomer .varianti').height()+10});
			  if(!document.getElementById('variantiHolderDiv').fleXcroll){
					try{
							fleXenv.fleXcrollMain("variantiHolderDiv");	
						}catch(e){
							
						}
			  }
			 document.getElementById('variantiHolderDiv').fleXcroll.setScrollPos(0,false);	
			  fleXenv.updateScrollBars();												
		  });	
		}
		
		
		
		ZOOMER.tabIsOpen = true;
		ZOOMER.tabOpen = $('#zoomer .variantiHolder');
			
		$('#zoomer .closer').click(function(e){
			e.preventDefault();			
			$('#varianti-link').removeClass('selected');
			$(ZOOMER.tabOpen).slideUp(500, 'easeInOutQuart');
		})
	});
									  
	/**** schedaTecnica ***/
	if($(ZOOMER.objXML).attr('schedaTecnica') != ''){
		$('#scheda_tecnica-link')
			.show()
			.html(langObject.scheda_tecnica)
			.attr('href', $(ZOOMER.objXML).attr('schedaTecnica'));
	}else{
		$('#scheda_tecnica-link').hide();
	}
	
	$('#zoomer .description').html($(ZOOMER.objXML).find('descrizione').text());
	
	$('#galleryStripContainer').css({'width':$(window).width() - 150});
	setTimeout(ZOOMER.checkScrollbars, 2000);

};

ZOOMER.goNextImg = function(){
	if(ZOOMER.isAnimating || ZOOMER.currIndex == ZOOMER.imgArray.length-1){
		return;				  
	}
	ZOOMER.oldIndex = ZOOMER.currIndex;
	ZOOMER.currIndex++;
	if(ZOOMER.currIndex == ZOOMER.imgArray.length){
		ZOOMER.currIndex = 0;			
	}
	ZOOMER.loadImg();
}

ZOOMER.goPrevImg = function(){
	if(ZOOMER.isAnimating || ZOOMER.currIndex == 0){
		return;				  
	}
	ZOOMER.oldIndex = ZOOMER.currIndex;
	ZOOMER.currIndex--;
	if(ZOOMER.currIndex < 0){
		ZOOMER.currIndex = ZOOMER.imgArray.length-1;			
	}
	ZOOMER.loadImg();
}

ZOOMER.createImgArray = function(){
	ZOOMER.currIndex = 0;
	ZOOMER.imgArray = [];
	$(ZOOMER.objXML).find('img').each(function(){
		ZOOMER.imgArray.push($(this).attr('src'));
	});
	ZOOMER.loadImg();
	ZOOMER.createGallery();
}

ZOOMER.close = function(){
	 ZOOMER.isOpen = false;
	 ZOOMER.isFirstImg = true;
	 $(window).unbind('.zoomer');
	 $('html').css({'overflow':'hidden'});
	 $('#zoomer').animate({'left':-$(window).width()}, 1000, "easeInOutExpo", function(){
			$('html').css({'overflow':'auto'});	
			$('#zoomer div.container').find('img.fullscreen').remove();
			$('#zoomer .galleryContainer').empty();	
			$('#zoomer').hide();	
	});
	 if ( $('#zoomer .techHolder').is(':visible')){
			$('#zoomer .techHolder').slideUp(500, 'easeInOutQuart')
	 }
	 if ( $('#zoomer .descriptionHolder').is(':visible')){
			$('#zoomer .descriptionHolder').slideUp(500, 'easeInOutQuart')
	 }
	 if ( $('#zoomer .variantiHolder').is(':visible')){
			$('#zoomer .variantiHolder').slideUp(500, 'easeInOutQuart')
	 }
	 $.address.value("/" + lang + "/" + PO.newSection + "/" + PO.subSection + "/");
}


ZOOMER.checkScrollbars = function(){
	if(!document.getElementById('galleryStripContainer').fleXcroll){
		try{
			fleXenv.fleXcrollMain("galleryStripContainer");	
		}catch(e){
			
		}
	}
	fleXenv.updateScrollBars();
}

ZOOMER.createGallery = function(){
	var galleryContainer = $('#zoomer .galleryContainer');
	galleryContainer.empty();
	galleryContainer.show();
	$('.galleryStrip').css({'width':(ZOOMER.imgArray.length)*75});
	ZOOMER.loadGalleryImage(0);
}

ZOOMER.loadGalleryImage = function(index){
	var img = new Image();
	var src=ZOOMER.imgPath + ZOOMER.imgArray[index];
	$(img)
		.hide()
		.addClass('galleryThumbnail')
		.appendTo($('#zoomer .galleryContainer'))
		.load(function () {
			//$(this)(500, function(){
			$(this).show();
				try{
					fleXenv.fleXcrollMain("galleryStripContainer");
					fleXenv.updateScrollBars();		
				}catch(e){
					
				}
			//});
			if(index < ZOOMER.imgArray.length-1){
				ZOOMER.loadGalleryImage(index+1);
			}
			fleXenv.updateScrollBars();		
		})
		.error(function(e){
			//	
		})
		.attr('src', src)
		.bind('click', function(){
			if(ZOOMER.currIndex == $(this).attr('data-id') || ZOOMER.isAnimating){
				return;	
			}
			ZOOMER.oldIndex = ZOOMER.currIndex;
			ZOOMER.currIndex = $(this).attr('data-id');
			ZOOMER.loadImg();
		})
		.attr('data-id', index);
}


ZOOMER.loadImg = function(){
	if(ZOOMER.isAnimating){
		return;				  
	}
	ZOOMER.isAnimating = true;
	
	var div = $('#zoomer div.container');
	var src = this.imgPath + this.imgArray[this.currIndex].replace(".png", ".jpg").replace("mini", "zoom");
	if(ZOOMER.isFirstImg){
		this.imageLoaded = false;
		$(div).find('img.fullscreen').remove();
	};
	var img = new Image();
	// wrap our new image in jQuery, then:
	$(img)
		.load(function () { 
			ZOOMER.imageLoaded = true;
			$(this).hide();
			$(this).addClass('fullscreen');
										 
			$(div).append(this);
			
			PO.doResize();						// resize the newly-loaded image
			
			if(ZOOMER.isFirstImg){
				$(this).show();
			 // $(this).fadeIn(1000, function(){
				  $(this).parent().find('img.fullscreen').not(':last').remove();
				  ZOOMER.isAnimating = false;
			 // });				// anim ate in the image
			}else{
				var oldTargetLeft = -$(document).width();
				if(parseInt(ZOOMER.currIndex) > parseInt(ZOOMER.oldIndex)){
					$(this).css('left', $(document).width());	
				}else{
					$(this).css('left', -$(document).width());
					oldTargetLeft = $(document).width();
				}
				$(this).show();
				$(this).animate({
					left: 0					
				  }, 1000, 'easeInOutExpo', function() {
					ZOOMER.isAnimating = false;
				  });
				  $(this).parent().find('img.fullscreen').not(':last').animate({
					left: oldTargetLeft
				  }, 1000, 'easeInOutExpo', function() {
					// Animation complete.
				  });
			}
			
			ZOOMER.isFirstImg = false;
			
		})		
		.error(function () {
					// notify the user that the image could not be loaded
		})
		.attr('src', src)
		.bind('click', function(){
			//			
		});
		$('#galleryStripMarker').animate({left:ZOOMER.currIndex*75}, 500, "easeInOutExpo");
		var num = parseInt(ZOOMER.currIndex)+1;
		num = "00" + num.toString();
		num = num.substr(num.length-2, 2);
		$('#galleryNumbers').html(num);
		Cufon.replace('#galleryNumbers');
}



