/**
 * Chocolate & Foam class
 *
 * @author Martin Bartels <martin@apollomedia.nl>
 *
 */

var CAF = new Class({
	Implements : Options,
	
	options : {
		container 	 				: null,
		footer						: {},
		cols 		 				: 1,
		colMargin					: 30,
		
		itemCSSClass 				: null,
		itemContentCSSClass 		: null,
		itemExcerptCSSClass 		: null,
		itemImageCSSClass			: null,
		galleryItemCSSClass 		: null,
		galleryNavCSSClass			: null,
		galleryNextCSSClass 		: null,
		galleryPreviousCSSClass 	: null,
		
		rowMarginLeft				: 0,
		
		itemWidth					: 277,
		itemImageHeight				: 150,
		itemSelectedWidth			: 976,
		itemImageSelectedHeight 	: 300,
		useGallery					: true,
	
	},
	
	ag 	  : $empty,
	items : $empty,
	
	initialize : function(options) {
		this.setOptions(options);
		this.initMenu();
		
		if(this.options.container != null &&
		this.options.itemCSSClass !=null) {
		
			this.items = this.createItems();
			this.initAnimatedGrid(this.options.container, this.options.cols);
			this.addDivider();
			this.addFooter();
			
		}
	},

	sendNewsLetter : function() {
		var req = new Request({
			url: '/wp-content/plugins/meenews/frontconfiguration.php',
			onSuccess : function(sResponse) {
				if(sResponse=="Confirmation has been sent to your mail") {
					$('name').set('value', "");
					$('email').set('value', "");
				}
				$$('.newsletter-message').set('text', sResponse);
			}		
		});
		
		req.send({
		    method: 'post',
		    data: 'listSuscribes=1&show=SaveIns&name='+$('name').get('value')+'&email='+$('email').get('value')
		});

	},
	
	initMenu : function() {
		var position_menu = function() {
			$$('.menu').setStyle('margin-left', 500-($$('.menu ul')[0].getSize().x/2)+'px');
		};
		
		position_menu();
		window.addEvent('resize', position_menu);
	},
	
	initAnimatedGrid : function(sContainer, iCols) {
	
		var me = this;
		$(sContainer).setStyle('visibility', 'hidden');
		
		// Create animated grid of items
		this.ag = new CAFAG({
			container : $(sContainer),
			items : this.items,
			cols : iCols,
			rowMarginLeft : this.options.rowMarginLeft,
			colMargin : this.options.colMargin
		});
		
		$(sContainer).setStyle('visibility', 'visible');
		
	},
	
	createItems : function() {
		
		var items = new Array();
		var me = this;
		
		// Create items
		$$(this.options.itemCSSClass).each(function(post_el,i){
			
			var gallery = this.initGallery(post_el);
			
			var post = new Post(post_el, {
				content 		: post_el.getElement(this.options.itemContentCSSClass).get('html'),
				contentHeight 	: post_el.getElement(this.options.itemContentCSSClass).getSize().y,
				excerpt 		: post_el.getElement(this.options.itemExcerptCSSClass).get('html'),
				excerptHeight 	: post_el.getElement(this.options.itemExcerptCSSClass).getSize().y,
				contentContainer: post_el.getElement(this.options.itemExcerptCSSClass),
				gallery			: gallery,
				galleryNavCSSClass 		: this.options.galleryNavCSSClass,
				galleryNextCSSClass		: this.options.galleryNextCSSClass,
				galleryPreviousCSSClass : this.options.galleryPreviousCSSClass,
				selectedWidth			: this.options.itemSelectedWidth,
				itemImageSelectedHeight : this.options.itemImageSelectedHeight,
				itemImageCSSClass 		: this.options.itemImageCSSClass,
				itemImageHeight			: this.options.itemImageHeight,
				useGallery				: this.options.useGallery
				
			});
			
			post_el.setStyle('z-index', 100+i);
			
			items.push(post);

			post.instance().morpher.addEvent('update', function(){
				 this.resizeThumb.bind(post)(this);
			}.bind(this));
			
		}.bind(this));
		
		$$(this.options.itemGalleryCSSClass).destroy();
		$$(this.options.itemContentCSSClass).destroy();
		
		return items;
	},
	
	addFooter : function() {
		
	
		$(this.options.footer.line).setStyle('position', 'absolute');
		
		var footerline = new Post($(this.options.footer.line));
		footerline.relativeTo = $(this.options.footer.wrapper);
		footerline.offsetY = 170;
		
		var upd_c = function(){
			$(this.options.footer.content).setStyle('height', $(this.options.footer.line).getPosition(this.options.container).y+75);
		}.bind(this);
		
		footerline.mover.addEvent('update', upd_c);
		
		this.ag.vbox.add(footerline, false);
		upd_c();
		
		
		$('footer').setStyle('position', 'absolute');
		var footer = new Post($(this.options.footer.footer));
		this.ag.vbox.add(footer, false);
	},
	
	addDivider : function() {
		
		var pos = 1;
		$$('.divider').each(function(el, i){
			el.setStyle('position', 'absolute');
			el.setStyle('z-index', 10+i);
			
			var divider = new Post(el);
			this.ag.vbox.addAt(divider, pos, false);
			this.ag.addRowAt(divider, pos);
			pos += 2;
		}.bind(this));
	},
	
	initGallery : function(oItem) {
		
		var gallery = new Array();
		oItem.getElements(this.options.galleryItemCSSClass).each(function(item_g, item_i) {
			gallery.push(item_g.getElement('img').src);
		});
		oItem.getElement(this.options.galleryNavCSSClass).hide();
		
		return gallery;
		
	},
	
	resizeThumb : function(me) {

		var w = this.element.getSize().x;
		var r = w/this.getSize().x;
		
		var img = this.element.getElement(me.options.itemImageCSSClass);
		img.setStyle('width', w+'px');

		if(this==this.container.selected) {
			var n = r*me.options.itemImageSelectedHeight;
			if(n < me.options.itemImageHeight) n = me.options.itemImageHeight;
			img.setStyle('height', n+'px');
		} else {
			var n = r*me.options.itemImageHeight;
			if(n > me.options.itemImageSelectedHeight) n = me.options.itemImageSelectedHeight;
			img.setStyle('height', n+'px');
		}
	}
	
});


