window.addEvent('domready', init);

function init() {
	
	$('body').getElements('.slideshow').each(function(elm, i) {
		
		var z = 1;
		var mh = 0;
		var mw = 0;
		var currentSlide = 0;
		var slideShowItems = new Array();
		
		var navItemSize = 66;
		var slidesDimentions = new Hash({'x': 0, 'y': 0});
		var targetPrev = elm.getElement('.slideshow_prev');
		var targetNext = elm.getElement('.slideshow_next');
		
		elm.getElements('li').each(function(elm_y, y) {
			
			var cw = elm_y.getElement('img').get('width').toInt();
			var ch = elm_y.getElement('img').get('height').toInt();
					
			if(cw > mw) mw = cw;
			if(ch > mh) mh = ch;
			slideShowItems.push(elm_y.get('html'));
		
		});
		
		slidesDimentions.x = mw;
		slidesDimentions.y = mh;
		
		elm.setStyles({
			'width': slidesDimentions.x,
			'height': slidesDimentions.y
		});
		
		elm.getElement('ul').setStyles({
			'width': slidesDimentions.x,
			'height': slidesDimentions.y
		}).empty();		
		
		targetPrev.setStyles({
			'left': 10,
			'top': ((slidesDimentions.y - navItemSize) / 2)
		});
		
		targetNext.setStyles({
			'left': slidesDimentions.x - navItemSize - 10,
			'top': ((slidesDimentions.y - navItemSize) / 2)
		});
		
		elm.addEvents({
			'mouseenter': function() {
				
				if(slideShowItems.length > 1) {
				
					targetPrev.setStyle('display', 'block');
					targetNext.setStyle('display', 'block');
				
				}
				
			},	
			'mouseleave': function() {
				
				targetPrev.setStyle('display', 'none');
				targetNext.setStyle('display', 'none');
				
			}
		});
		
		targetNext.addEvent('click', function(evt) {
			
			if(evt) clearInterval(animSlideshow);
			
			currentSlide++;
			if(currentSlide >= slideShowItems.length) currentSlide = 0;
			animSlide(currentSlide);
		
		});
		
		targetPrev.addEvent('click', function(evt) {
			
			currentSlide--;
			if(currentSlide < 0) currentSlide = slideShowItems.length - 1;
			animSlide(currentSlide);
		
		});
			
		$$('.thumbs_details li a').each(function(elm_y, y) {
			
			elm_y.addEvent('click', function(evt) {
				
				if(evt) clearInterval(animSlideshow);
				animSlide(y);
								
			});
			
		});
		
		function animSlide(show) {
			
			var newItem = new Element('li', {
				'id': 'item_slide_' + i + '_' + z,
				'html': slideShowItems[show]
			}).inject(elm.getElement('ul'), 'top');
			
			new Fx.Tween(newItem, {
				duration: 1000, 
				transition: Fx.Transitions.Quart.easeOut,
				link: 'cancel',
				onStart: function(evt) {
					
					newItem.setStyles({
						'z-index': z,
						'height': slidesDimentions.y,
						'display': 'block'
					});
					
					var itemSpan = newItem.getElement('span');
					
					if(itemSpan) {
					
						itemSpan.setStyles({
							'width': newItem.getElement('img').get('width').toInt() - 20,
							'top': newItem.getElement('img').get('height').toInt() - itemSpan.getHeight(),
							'visibility': 'visible'	
						});
					
					}
										
					if($('item_slide_' + i + '_' + (z - 3))) $('item_slide_' + i + '_' + (z - 3)).destroy();
					
					z++;				
					
				}
			}).set('opacity', 0).start('opacity', 0, 1);
			
		}
		
		var animSlideshow = (function() {
			
			targetNext.fireEvent('click');
			
		}).periodical(3000);
		
		animSlide(0);
	
	});
		
	$$('.item_realisation').each(function(elm, i) {
		
		elm.getElement('.item_realisation_title h2').setStyle('padding-top', ((104 - elm.getElement('.item_realisation_title').getHeight()) / 2));
		
	});
	
	var showingParent = false;
	
	$(document.body).addEvent('click', function(e) {
		
		if(showingParent) {
		
			if(showingParent && !e.target || !$(e.target).getParents().contains(showingParent)) {
				 
				$$('.select').getElement('input').removeClass('dropon');
				showingParent.getElement('.select_custom_drop').setStyle('display', 'none');
				
			}
		
		}
		
	});
	
	$$('.select').each(function(elm, i) {
		
		var sel = elm.getElement('select');
				
		var drop = new Element('div', {
			'class': 'select_custom'	
		}).adopt(
			new Element('input', {
				'id' : sel.get('id'),
				'name' : sel.get('name'),
				'class' : sel.get('class'),
				'type': 'text',
				'readonly': 'readonly',
				'value': sel.getElement('option').get('html'),
				'events': {
					'click': function(evt) {
						
						showingParent = elm;
						
						$$('.select').getElement('input').removeClass('dropon');
						$$('.select').getElement('.select_custom_drop').setStyle('display', 'none');
					
						if(drop.getElement('.select_custom_drop').getStyle('display') !== 'block') {
							
							this.addClass('dropon');
							drop.getElement('.select_custom_drop').setStyle('display', 'block');
						
						} else {
							
							this.removeClass('dropon');
							drop.getElement('.select_custom_drop').setStyle('display', 'none');
							
						}
						
					}	
				}
			}),
			new Element('div', {
				'class': 'select_custom_drop'	
			}).adopt(
				new Element('ul')
			)
		).inject(elm);
		
		var incudeUl = drop.getElement('ul');
		elm.getElement('.select_custom_drop').setStyle('top', drop.getElement('input').getHeight());
		
		elm.getElements('option').each(function(opt, opt_i) {
						
			var currentLi = new Element('li').adopt(
				new Element('a', {
					'href': 'javascript:;',
					'html': opt.get('html'),
					'events': {
						'click': function(evt) {
						
							drop.getElement('input').removeClass('dropon');
							drop.getElement('input').set('value', this.get('html'));
							drop.getElement('input').setStyle('border', '1px solid #CCC');
							drop.getElement('.select_custom_drop').setStyle('display', 'none');
							
						}	
					}
				})
			).inject(incudeUl);
			
		});
		
		sel.destroy();
		
	});
	
	if($('form_contact')) {
			
		var target = $('form_contact');
						
		new Form.Validator(target, {
			evaluateFieldsOnBlur: false,
			onElementFail: function(elm, err) {
				elm.setStyle('border', '1px solid #ff0000');
			},
			onElementPass: function(elm) {
				elm.setStyle('border', '1px solid #CCC');
			}
		});
		
		Form.Validator.add('required', {
			errorMsg: 'This field is required',
			test: function(element){
				if (element.value == null || element.value.trim().length == 0) return false;
				else return true;
			}
		});
		
	}
	
}
