var slidingPanelStatus = {};
var responseDataSitemap = '';
var responseDataContact = '';

document.observe("dom:loaded", function()
{

	var openClose = function() {

		if (slidingPanelStatus.open == 'closed') {
			new Effect.BlindDown('slidingPanel', {
				'scaleContent': false,
				'scaleX': false,
				'scaleFrom': 0,
				'duration': 0.4,
				'delay': 0.1,
				'transition': Effect.Transitions.sinoidal,
				'afterFinish': function(){
					slidingPanelStatus.open = 'opened';
				}
			});
		}

		if (slidingPanelStatus.open == 'opened') {
			new Effect.BlindUp('slidingPanel', {
				'scaleContent': false,
				'scaleX': false,
				'scaleFrom': 100,
				'duration': 0.4,
				'delay': 0.1,
				'transition': Effect.Transitions.sinoidal,
				'afterFinish': function(){
					slidingPanelStatus.open = 'closed';
				}
			});
		}
	}

	if ($('sitemapButton') && $('contactButton')) {

		document.observe('click', function(e){

			if (!$('slidingPanel') && (e.element() == $('contactButton') || e.element() == $('sitemapButton'))) {
				$('container').insert('<div id="slidingPanel" style="display: none;"><div id="slidingPanelInternals"></div></div>');
			}

			if (e.element() == $('sitemapButton') && slidingPanelStatus.open != 'opened' && slidingPanelStatus.loadedType != 'sitemap') {
				var slidingPanelHeight = $('slidingPanel').getHeight();
				if (slidingPanelHeight != '280') {
					$('slidingPanel').setStyle({ height: '280px' });
				}

				new Ajax.Request(PbLib.getNewURI('c/pageByAlias/sitemap-lite'), {
					method: 'get',
					onComplete: function(resp){

						responseDataSitemap = resp.responseText;
						$('slidingPanelInternals').update(responseDataSitemap);

						slidingPanelStatus.open = 'closed';
						slidingPanelStatus.loadedType = 'sitemap';

						openClose();

					},
					onFailure: function(resp){
						alert("Oops, there's been an error. (Eg. no sitemap mounted or server is down");

						slidingPanelStatus.open = 'failedLoading';
					}
				});
			}
			else if (e.element() == $('contactButton') && slidingPanelStatus.open != 'opened' && slidingPanelStatus.loadedType != 'contact') {
				var slidingPanelHeight = $('slidingPanel').getHeight();
				if (slidingPanelHeight == '280') {
					$('slidingPanel').setStyle({ height: '200px' });
				}

				new Ajax.Request(PbLib.getNewURI('c/pageByAlias/contact-lite'), {
					method: 'get',
					onComplete: function(resp){

						responseDataContact = resp.responseText;
						$('slidingPanelInternals').update(responseDataContact);

						slidingPanelStatus.open = 'closed';
						slidingPanelStatus.loadedType = 'contact';

						openClose();

					},
					onFailure: function(resp){
						alert("Oops, there's been an error. (Eg. no sitemap mounted or server is down");

						slidingPanelStatus.open = 'failedLoading';
					}
				});
			}
			else if (e.element() == $('contactButton') && slidingPanelStatus.open == 'opened' && slidingPanelStatus.loadedType == 'sitemap') {
				var slidingPanelHeight = $('slidingPanel').getHeight();
				if (slidingPanelHeight == '280') {
					new Effect.Morph('slidingPanel', {
						style: {
							height: '200px'
						},
						duration: 0.4
					});
				}

				if (responseDataContact != '') {
					$('slidingPanelInternals').update(responseDataContact);
					slidingPanelStatus.loadedType = 'contact';
				}
				else {
					new Ajax.Request(PbLib.getNewURI('c/pageByAlias/contact-lite'), {
						method: 'get',
						onComplete: function(resp){

							responseDataContact = resp.responseText;
							$('slidingPanelInternals').update(responseDataContact);

							slidingPanelStatus.loadedType = 'contact';

						},
						onFailure: function(resp){
							alert("Oops, there's been an error. (Eg. no sitemap mounted or server is down");

							slidingPanelStatus.open = 'failedLoading';
						}
					});
				}
			}
			else if (e.element() == $('sitemapButton') && slidingPanelStatus.open == 'opened' && slidingPanelStatus.loadedType == 'contact') {
				var slidingPanelHeight = $('slidingPanel').getHeight();
				if (slidingPanelHeight == '200') {
					new Effect.Morph('slidingPanel', {
						style: {
							height: '280px'
						},
						duration: 0.4
					});
				}
				if (responseDataSitemap != '') {
					$('slidingPanelInternals').update(responseDataSitemap);
					slidingPanelStatus.loadedType = 'sitemap';
				}
				else {
					new Ajax.Request(PbLib.getNewURI('c/pageByAlias/sitemap-lite'), {
						method: 'get',
						onComplete: function(resp){

							responseDataSitemap = resp.responseText;
							$('slidingPanelInternals').update(responseDataSitemap);

							slidingPanelStatus.loadedType = 'sitemap';

						},
						onFailure: function(resp){
							alert("Oops, there's been an error. (Eg. no sitemap mounted or server is down");

							slidingPanelStatus.open = 'failedLoading';
						}
					});
				}
			}
			else if (slidingPanelStatus.open == 'opened' && e.element() != $('sitemapButton') && e.element() != $('slidingPanel') && !e.element().descendantOf('slidingPanel')) {
				openClose();
			}
			else if (slidingPanelStatus.open == 'closed' && (e.element() == $('sitemapButton') || e.element() == $('contactButton')) && (slidingPanelStatus.loadedType == 'sitemap' || slidingPanelStatus.loadedType == 'contact')) {
				openClose();
			}
			else if (slidingPanelStatus.open == 'opened' && (e.element() == $('sitemapButton') || e.element() == $('contactButton')) && (slidingPanelStatus.loadedType == 'sitemap' || slidingPanelStatus.loadedType == 'contact')) {
				openClose();
			}


			if ((e.element() == $('sitemapButton') || e.element() == $('contactButton'))) {
				Event.stop(e);
			}
		});
	}
});