var Site = new Class (
{	
	lang: null,
	trad: null,
	email_saved: null,
	name_saved: null,
	friend_email_saved: null,
	sender_email_saved: null,
	
	initialize: function(obj)
	{				
		window.addEvent
		(
			'domready',
			function()
			{
				if(obj.lang != null) lang = obj.lang;	
				email_saved = '';
				name_saved = '';
				friend_email_saved = '';
				sender_email_saved = '';
				trad = obj.trad;
				if(obj.section == 'home') this.displaySlideShow();
			}.bind(this)
		);
	},
	
	join: function()
	{	
		var div_join = $('join');
		
		var input_name = div_join.getElement('input[name=name]');
		var name = input_name.value;
		
		var input_email = div_join.getElement('input[name=email]');
		var email = input_email.value;
		
		var input_lang = div_join.getElement('input[name=lang]');
		var lang = input_lang.value;
		
		var valid = true;
		
		if(!this.checkName(name.toUpperCase()) || name == trad.wrong_name) 
		{
			valid = false;
			if(name != trad.wrong_name) name_saved = name;	
			input_name.value = trad.wrong_name;			
		}
		
		
		if(!this.checkEmail(email.toUpperCase())) 
		{
			valid = false;
			if(email != trad.wrong_email) email_saved = email;	
			input_email.value = trad.wrong_email;			
		}
			
		if(valid)
		{
			var url = 'join_json.php?name='+name+'&email='+email+'&lang='+lang;

			//window.location = url;
			
			var request = new Request.JSON
			(
				{
					url: url,
					onComplete: function(jsonObj) 
					{
						this.joinResponse(jsonObj.exist);
					}.bind(this)
				}
			).send();
		}
	},
	
	joinResponse: function (exist)
	{
		var msg = trad.join_success;
		
		if(exist == 1) msg = trad.already_exists;
		else 
		{
			var div_join = $('join');
			var input_name = div_join.getElement('input[name=name]');
			input_name.value = '';
			var input_email = div_join.getElement('input[name=email]');
			input_email.value = '';
		} 
		
		var div_response = $('response');
		
		div_response.set('html', msg);
		this.setAlpha(div_response, 0);
		div_response.tween('opacity', 1);
	},
	
	checkName: function (search)
	{
		var pattern = /^[A-ZÑÁÉÍÓÚª` \-]{2,50}$/;

		var valid = false;

		if (pattern.test(search)) valid = true;

		return valid;
	},
	
	downloadSend: function()
	{	
		var div_download = $('download_send');
		
		var input_friend_email = div_download.getElement('input[name=friend_email]');
		var friend_email = input_friend_email.value;
		
		var input_sender_email = div_download.getElement('input[name=sender_email]');
		var sender_email = input_sender_email.value;
		
		var input_lang = div_download.getElement('input[name=lang]');
		var lang = input_lang.value;
		
		var input_download_link = div_download.getElement('input[name=download_link]');
		var download_link = input_download_link.value;
		
		var valid = true;
		
		if(!this.checkEmail(friend_email.toUpperCase())) 
		{
			valid = false;
			if(friend_email != trad.wrong_email) friend_email_saved = friend_email;	
			input_friend_email.value = trad.wrong_email;			
		}
		
		if(!this.checkEmail(sender_email.toUpperCase())) 
		{
			valid = false;
			if(sender_email != trad.wrong_email) sender_email_saved = sender_email;	
			input_sender_email.value = trad.wrong_email;			
		}
			
		if(valid)
		{
			var url = 'download_send_json.php?friend_email='+friend_email+'&sender_email='+sender_email+'&download_link='+download_link+'&lang='+lang;

			//window.location = url;
			
			var request = new Request.JSON
			(
				{
					url: url,
					onComplete: function(jsonObj) 
					{
						this.downloadSendResponse(jsonObj);
					}.bind(this)
				}
			).send();
		}
	},
	
	downloadSendResponse: function (exist)
	{
		var msg = trad.download_send_success;

		var div_download = $('download_send');
			
		var input_friend_email = div_download.getElement('input[name=friend_email]');
		input_friend_email.value = '';
		var input_sender_email = div_download.getElement('input[name=sender_email]');
		input_sender_email.value = '';
		
		var div_response = $('response');
		
		div_response.set('html', msg);
		this.setAlpha(div_response, 0);
		div_response.tween('opacity', 1);
	},
	
	checkEmail: function (search)
	{
		var pattern = /^[A-Z0-9._%\-]+@[A-Z0-9.\-]+\.(?:[A-Z]{2}|AERO|BIZ|CAT|COM|COOP|EDU|GOV|INFO|INT|JOBS|MIL|MOBI|MUSEUM|NAME|NET|ORG|PRO|TEL|TRAVEL)$/;

		var valid = false;

		if (pattern.test(search)) valid = true;

		return valid;
	},
	
	onFocusIn: function(input) 
	{
		var value = input.value;
		var name = input.name;

		input.style.backgroundColor = '#EEEEEE';
		
		if(name == "email" && value == trad.wrong_email) input.value = email_saved;
		else if(name == "name" && value == trad.wrong_name) input.value = name_saved;
		//else input.value = '';	
	},

	onFocusOut: function(input)
	{
		input.style.backgroundColor = 'transparent';
	},
	
	displaySlideShow: function()
	{
		var imgs = [];
		
		for(var i = 1; i < 19; i++)
		{
			imgs.push("home" + i + ".jpg");
		}
		
		new SlideShow('medias/home/'+lang+'/', imgs);
	},
	
	setAlpha: function(element, alpha)
	{
		element.setStyle('opacity', alpha);
	}
}
);

var SlideShow = new Class(
{	
	folder: null, 
	imgs: null,
	ini: 0,
	delay: 2000,
	t: 0,
	nextImg: null,
	lastImg: null,
	pause: false, 
	interval: null,
	
	initialize: function(folder, imgs)
	{
		this.folder = folder;
		this.imgs = imgs;
		this.t = this.delay;
		this.loadImg();
	},
	
	loadImg: function()
	{
		if($chk(this.nextImg)) this.lastImg = this.nextImg;
		this.nextImg = new Asset.image
					(	
						this.folder + this.imgs[this.ini], 
						{ 
		  					onload: function() 
							{         
								this.nextImg.store('state', 'loaded');
								if(!this.pause) this.change();
		  					}.bind(this)
						}
					);
		//this.nextImg.setStyle('opacity', 0);
		this.nextImg.setStyle('position', 'absolute')
	},
	
	change: function()
	{
		if(this.ini < this.imgs.length - 1) this.ini++;
		else this.ini = 0;
		
		this.pause = true;
		if(this.imgs.length > 1) this.interval = this.timer.periodical(500, this);
		
		this.transition();		
	},
	
	timer: function()
	{
		if(this.t > 0) this.t -= 500;
		else 
		{
			this.pause = false;
			this.t = this.delay;
			$clear(this.interval);
			if(this.nextImg.retrieve('state') == 'loaded') this.change();
		}
	},
	
	transition: function()
	{
		var slideshow = $('slideshow');
		//slideshow.empty();
		
		this.nextImg.inject(slideshow); 
		if($chk(this.lastImg)) this.lastImg.destroy();
		this.loadImg();
		
		/*
		var fx = new Fx.Morph(this.nextImg, 
				{
					duration: 500, 
					transition: Fx.Transitions.Sine.easeOut,
					onComplete: function()
					{
						if($chk(this.lastImg)) this.lastImg.destroy();
						this.loadImg();
					}.bind(this)
				});
			
		fx.start({'opacity': 1});
		*/
	}
}
);
