var index = 0;
var overlay;

var Overlay = new Class({
	  
	  Implements: [Options,Events],
	  
	  options:  {
	    id: 'overlay',
	    color: '#000',
	    duration: 500,
	    opacity: 0.5,
	    zIndex: 1000/*,
	    onClick: $empty,
	    onClose: $empty,
	    onHide: $empty,
	    onOpen: $empty,
	    onShow: $empty
	    */
	  },
	  
	  initialize: function(container,options) {
	    this.setOptions(options);
	    this.container = document.id(container);
	    this.overlay = new Element('div',{
	      id: this.options.id,
	      opacity: 0,
	      styles: {
	        position: 'absolute',
	        background: this.options.color,
	        left: 0,
	        top: 0,
	        'z-index': this.options.zIndex
	      },
	      events: {
	        click: function() {
	          this.fireEvent('click');
	        }.bind(this)
	      }
	    }).inject(this.container);
	    this.tween = new Fx.Tween(this.overlay,{ 
	      duration: this.options.duration,
	      link: 'cancel',
	      property: 'opacity',
	      onStart: function() {
	        var size = this.container.getScrollSize();
	        this.overlay.setStyles({
	          width: size.x,
	          height: size.y
	        });
	      }.bind(this),
	      onComplete: function() {
	        this.fireEvent(this.overlay.get('opacity') == this.options.opacity ? 'show' : 'hide');
	      }.bind(this)
	    });
	  },
	  open: function() {
	    this.fireEvent('open');
	    this.tween.start(this.options.opacity);
	  },
	  close: function() {
	    this.fireEvent('close');
	    this.tween.start(0);
	  }
	});

var Site = {
	
	start: function()
	{
		var carousel = ($('carousel-list'));
		if(carousel)
		{
			sized = false;
			images = $$('#carousel-list img');
			items =  $$('#carousel-list li');
			
			
			images.each(function(element, i)
			{
				items[i].hide();
				image = new Asset.image(element.src, 
				{
					'onload' :function()
					{
						if(!sized)
						{
							var morph = new Fx.Morph('carousel', {duration: 'long', transition: Fx.Transitions.Sine.easeOut});
							 
							morph.start({
							    'height': '290px',
							    'border': '0',
							    'background-color': '#FFF'
							});
							
							$('loadingbox').hide();
							sized = true;
							items[i].show();
							
							pcarousel();
							
						}
						
					},
					
					'onerror' : function(){
					   if("function" === $type(error)){
					                        error(i, imgs[i], imgs);
					                    }
					                }
				});


			});
		}
		
		lbxs = $$('.lightbox');
		if(lbxs.length > 0)
		{
			var slimbox_js = new Asset.javascript('/assets/default/scripts/library/slimbox.js',
			{
				id: 'slimbox-js'
			});
			
			var slimbox_css = new Asset.css('/assets/default/styles/library/slimbox/slimbox.css', 
			{
				id: 'slimbox-css',
				title: 'slimbox CSS'
			});
		}
		
		datepickers = $$('.datepicker');
		if(datepickers.length > 0)
		{
			var calendar_js = new Asset.javascript('/assets/default/scripts/library/calendar.js',
			{
				id: 'calendar-js',
				onload:function()
				{
					datepickers.each(function(element, index)
					{
						new Calendar({ id: element.id, format: 'd/m/Y' }, {direction: 1 }); 
					});
				}
			});
			
			var calendar_css = new Asset.css('/assets/default/styles/library/calendar/calendar.css', 
			{
				id: 'calendar-css',
				title: 'calendar CSS'
			});
			
			
			
		}
		
		var formcheck = null;
		
		buttons = $$('.moveform');
		if(buttons.length > 0)
		{
			buttons.each(function(element, index)
			{
				element.addEvent('click',function()
				{
					curelements = $$('#' + element.get('current') + ' .required');
					
					errors = false;
					curelements.each(function(el,i)
					{
						if(el.value.length == 0)
						{
							el.addClass('warning');
							errors = true;
						}
						else
						{
							el.removeClass('warning');
						}
					});
					
					if(!errors)
					{
						if(element.id == 'details_complete')
						{
							if($('business').value == 'No')
							{
								$$('fieldset').addClass('hide');
								$(element.get('or')).removeClass('hide');
							}
							else
							{
								$$('fieldset').addClass('hide');
								$(element.get('element')).removeClass('hide');
							}
						}
						else
						{
							$$('fieldset').addClass('hide');
							$(element.get('element')).removeClass('hide');
						}
					}

					
				});
			})
		}
		
		var ajaxlinkbox = new Element('div', {
		    styles: {
		        position: 'absolute',
		        left: '-3000px',
		        width: '325px',
		        border: '1px solid #CCC',
		        backgroundColor: '#E8E8E8',
		        fontSize: '11px',
		        padding: '10px'
		    }
		});
		
		$(document.body).adopt(ajaxlinkbox);

		
		$$('.ajaxlink').each(function(element,index)
		{
			element.addEvent('mouseover',function(event)
			{
				coords = element.getPosition();
				ajaxlinkbox.setStyle('left',coords.x+10 + 'px');
				ajaxlinkbox.setStyle('top',coords.y + 'px');
				ajaxlinkbox.innerHTML = 'Loading...';
				
				var request = new Request({method: 'get', url: element.href, onSuccess: function(response,r2)
				{
					ajaxlinkbox.innerHTML = response;
				}});
				request.send();
				
				

			});
			
			element.addEvent('mouseout',function(event)
			{
				ajaxlinkbox.setStyle('left','-3000px');
			});
		});
		
		if($('contactus-hover'))
		{
			$('contactus-hover').addEvent("click",function(event)
			{
				event.stop();
				overlay.open();
				$('contactus-hover').setStyle('z-index','1002');
				$('contactus-box').setStyle('z-index','1001');
				$('contactus-box').setStyle('display','block');
			});
			
			if($('newsletter-hover'))
			{
				$('newsletter-hover').addEvent("click",function(event)
				{
					event.stop();
					overlay.open();
					$('newsletter-hover').setStyle('z-index','1002');
					$('newsletter-box').setStyle('z-index','1001');
					$('newsletter-box').setStyle('display','block');
				});
			}
			
			$$('.hover-area input').each(function(element)
			{
				element.value = element.get('title');
				element.addEvent('focus',function()
				{
					if(element.value == element.title)
					{
						element.value = '';
					}
				});
			});
		}
	}

};

Carousel = function()
{
	imgs = $$('#carousel-list li');
	count = imgs.length;
	
	var fx = new Fx.Tween(imgs[index])
	fx.start('opacity', 0).chain(function()
	{
		this.set('display','none');
		this.callChain();
	}).chain(function()
	{
		index++;
		if(index >= count)
		{
			index = 0;
		}
		
		var fx2 = new Fx.Tween(imgs[index]);
		fx2.set('opacity',0).chain(function()
		{
			this.set('display','');	
			this.callChain();
		}).chain(function()
		{
			this.start('opacity', 1);
		});
		fx2.callChain();
	});
	
}

pcarousel = Carousel.create(
{
	periodical: 5000
});

window.addEvent('domready', function(){
	
	overlay = new Overlay(document.body,{
		  id: 'overlay',
		  color: '#000',
		  duration: 300,
		  opacity: 0.4,
		  onClick: function() {
		    this.close();
$$('.hover-area a').setStyle('z-index','999');
$$('.hover-box').setStyle('display','none');
		  }
		});
	Site.start();
});

