init = function()
{
	var page_size = get_page_size();

	$('newsletter_tab').style.top = (page_size.window_height/2)-($('newsletter_tab').getHeight()/2) + 'px';
}

newsletter_show = function()
{
	var page_size = get_page_size();
	var newsletter = $('newsletter').cleanWhitespace();
	
	newsletter.style.height = page_size.page_height + 'px';
	newsletter.style.display = 'block';
	newsletter.setOpacity(0);
	
	newsletter.childNodes[0].style.left = (page_size.page_width/2)-(newsletter.childNodes[0].getWidth()/2) + 'px';
	newsletter.childNodes[0].style.top = (page_size.window_height/2)-(newsletter.childNodes[0].getHeight()/2) + 'px';
	newsletter.childNodes[1].style.left = (page_size.page_width/2)-(newsletter.childNodes[0].getWidth()/2) + 'px';
	newsletter.childNodes[1].style.top = (page_size.window_height/2)-(newsletter.childNodes[0].getHeight()/2) + 'px';
	
	newsletter.style.display = 'none';
	newsletter.setOpacity(1);
	
	newsletter.appear();
}

newsletter_close = function()
{
	$('newsletter').fade();
}

newsletter_subscribe = function()
{	
	error = false;
	
	var form = document.forms['newsletter'];
	var newsletter = $('newsletter').cleanWhitespace();

	if(form.name.value.empty() || form.email.value.empty())
	{
		error = true;
		alert('Please make sure both fields are filled in.');
	}

	if(!error)
	{
		new Ajax.Request('/scripts/php/newsletter_subscribe.php', {
			parameters: {name:form.name.value, email:form.email.value},
			onSuccess: function(response)
			{
				response = response.responseText.evalJSON();
				
				if(response.status == 'error')
				{
					switch(response.error)
					{
						case 'email_exists':
							alert('Your email address has already been added to our newsletter.');
							newsletter_close();
							break;
					}
				}
				else
				{
					newsletter.childNodes[0].style.display = 'none';
					newsletter.childNodes[1].style.display = 'block';	
				}
			}
		});
	}
	
	return false;
}

get_page_size = function()
{
	var xscroll, yscroll;
		
	if (window.innerHeight && window.scrollMaxY) 
	{	
		xscroll = document.body.scrollWidth;
		yscroll = window.innerHeight + window.scrollMaxY;
	} 
	else if(document.body.scrollHeight > document.body.offsetHeight) // all but Explorer Mac
	{ 
		xscroll = document.body.scrollWidth;
		yscroll = document.body.scrollHeight;
	} 
	else // Explorer Mac...would also work in Explorer 6 Strict, Mozilla and Safari
	{
		xscroll = document.body.offsetWidth;
		yscroll = document.body.offsetHeight;
	}
	
	var windowwidth, windowheight;
	
	if(self.innerHeight) // all except Explorer
	{
		windowwidth = self.innerWidth;
		windowheight = self.innerHeight;
	} 
	else if(document.documentElement && document.documentElement.clientHeight)// Explorer 6 Strict Mode
	{
		windowwidth = document.documentElement.clientWidth;
		windowheight = document.documentElement.clientHeight;
	} 
	else if(document.body) // other Explorers
	{
		windowwidth = document.body.clientWidth;
		windowheight = document.body.clientHeight;
	}	
	
	var pageheight, pagewidth;
	
	// for small pages with total height less then height of the viewport
	if(yscroll < windowheight)
	{
		pageheight = windowheight;
	} 
	else
	{ 
		pageheight = yscroll;
	}

	// for small pages with total width less then width of the viewport
	if(xscroll < windowwidth)
	{	
		pagewidth = windowwidth;
	} 
	else 
	{
		pagewidth = xscroll;
	}

	return {page_width:pagewidth, page_height:pageheight, window_width:windowwidth, window_height:windowheight};
}

document.observe('dom:loaded', init);