var textSize = 1;
var pageName;
var accordion;
var requestedItem;
var cookieDuration = 0;
var flashRequiredVersion = 7;
var homeContentState = ['the_school','education','student_services','sixth_form','sports_college','media_and_publications','calendar','letters','community', 'parent_teacher_association'];
var homeBarState = ['contact','latest_news','vacancies','portal'];
var urlEmblems = 'http://media.wilmslowhigh.com/Images/Emblems/';

var decreaseTextSize = function()
{
	if (textSize < 0.8) return;
	
	textSize -= 0.06;
	
	setTextSize();
	setCookie('format', 'textSize', textSize);
};

var increaseTextSize = function()
{
	if (textSize > 1.4) return;
	
	textSize += 0.06;
	
	setTextSize();
	setCookie('format', 'textSize', textSize);
};

var resetTextSize = function()
{
	textSize = 1;
	setTextSize();
	setCookie('format', 'textSize', 1);
};

var setTextSize = function()
{
	document.body.style.fontSize = textSize+'em';
};


var getCookie = function(pCookieID, pKey)
{
	var cookie = new Hash.Cookie(pCookieID, {duration: cookieDuration});
	
	if (pKey)
	{
		return cookie.get(pKey);
	}
	else
	{
		return cookie;
	}
};

var setCookie = function(pCookieID, pKey, pValue)
{
	var cookie = getCookie(pCookieID);
	cookie.set(pKey, pValue);
};

var eraseCookie = function(pCookieID)
{
	var cookie = getCookie(pCookieID);
	cookie.erase();
};

window.addEvent('domready', function()
{
	/*
	 * ------------------------------
	 * Set TextSize based on cookie
	 * ------------------------------
	 */
	var t;
	
	
	window.scrollTo(0,0);

	
	if (t = getCookie('format', 'textSize'))
	{
		textSize = t;
		setTextSize();
	}
	
	if (Browser.Plugins.Flash.version < flashRequiredVersion)
	{
		var media = $$('#bar .media');
		media.destroy();
	}
	
	
	$$('#bar ul.panels li.panel').each(function(element)
	{
		var fx = new Fx.Slide(element.getElement('div.body'), {mode: 'vertical', duration: 500});
		
		element.getElement('div.title').addEvent('dblclick', function()
		{
			fx.toggle();
		});
	});
	
	
	var barElements = $$('#bar .panels');
	
	var barPanels = new Sortables(barElements,
	{
		clone: true,
		opacity: 0.2,
		revert: { duration: 700, transition: 'elastic:out' },
		handle: 'div.title',
		onComplete: function(){ savePanelState(pageName + ' bar', barPanels.serialize()); }
	});
	
	var contentElements = $$('#content .panels');
	
	var contentPanels = new Sortables(contentElements,
	{
		clone: true,
		opacity: 0.2,
		revert: { duration: 700, transition: 'elastic:out' },
		handle: 'div.title',
		onComplete: function(){ savePanelState(pageName + ' content', contentPanels.serialize()); }
	});
	
	
	
	/*
	 * Handles layout defaults for pages based on pageName.
	 */
	switch (pageName)
	{
		case 'Home':
			loadPanelState(pageName + ' bar', barElements, barPanels, homeBarState);
			loadPanelState(pageName + ' content', contentElements, contentPanels, homeContentState);

			/* Exceptions for Home Page */
			// alert('﻿We are currently experiencing difficulties with the delivery of email messages sent to the school.\nFor the time being we recommend that you use telephone or post for communication with the school.');
			break;
	}
});

var doAccordion = function()
{
	var a = new Accordion($$('#content h3.contentHeading'), $$('#content .contentItem'), 
	{
		opacity: false,
		onActive: function(toggler, element)
		{
			toggler.setStyle('background-image', 'url("'+urlEmblems+'gif/down1.gif")');
			toggler.setStyle('color', 'red');
		},
		onBackground: function(toggler, element)
		{
			toggler.setStyle('background-image', 'url("'+urlEmblems+'gif/right1.gif")');
			toggler.setStyle('color', 'black');
		}
	});
	
	
	a.togglers.each(function(element)
	{
		element.addEvent('click', function(e)
		{
			doScrollToItem(element.get('html'));
		});
	});
	
	
	a.togglers.each(function(element, index)
	{
		if (requestedItem && element.get('html') == requestedItem)
		{
			a.display(index);
		}
	});
};

var doParagraphTogglers = function()
{
	var dToggleOpen = '<img src="'+urlEmblems+'toggleOpen.png" alt="[Open]" />';
	var dToggleClosed = '<img src="'+urlEmblems+'toggleClosed.png" alt="[Closed]" />';
	
	var aToggles = $$('.toggler');
	
	aToggles.each(function(d)
	{
		/* get title */
		var dTitle = d.getFirst('p').get('html');
		var dImage = dToggleClosed;
		
		var spanSwitch = new Element('span', {'class': 'toggleSwitch', 'html': dImage+'&nbsp;'+dTitle});
		var spanContent = new Element('span', {'class': 'toggleContent'});
		
		d.getFirst('p').destroy();
		spanContent.adopt(d.getChildren());
		
		d.adopt(spanSwitch);
		d.adopt(spanContent);
		
		var s = new Fx.Slide(d.getFirst('span.toggleContent'), {onComplete: function(){ (d.getFirst('div').setStyle('height', 'auto')); }});
		s.hide();
		
		d.getElement('span.toggleSwitch').addEvent('click', function(event)
		{
			event = new Event(event);
			
			if (s.wrapper.offsetHeight > 0)
			{
				dImage = dToggleClosed;
			}
			else
			{
				dImage = dToggleOpen;
			}
			
			d.getFirst('span.toggleSwitch').set('html', dImage+'&nbsp;'+dTitle);
			s.toggle();
			event.stop();
		});
	});
};


var problemForm = function()
{
	var r = new Request({method: 'post', url: 'index.php'});
	
	$('problemForm').set('send', 
	{
		onSuccess: function(responseText)
		{
			var status = responseText.charAt(0);
			var message = responseText.substr(1);
			
			alert(message);
			
			switch (status)
			{
				case '1':
					/* redirect the browser */
					window.location.href = 'index.php';
					break;
				
				default:
					var imgCaptcha = $('securimage');
					var urlCaptcha = imgCaptcha.get('src')+'?sid='+Math.random();
					
					imgCaptcha.setProperty('src', null);
					
					setTimeout(function()
					{
						imgCaptcha.setProperty('src', urlCaptcha);
					}, 200);
					break;
			}
		}
	});
	
	$('problemForm').send('index.php');
};

var doScrollToItem = function(pItem)
{
	var wait = 1200;
	var speed = 1200;
	var scroll = new Fx.Scroll(window, {wait: false, duration: speed, transition: 'quad:out', offset: {'x': 0, 'y': -25}});
	
	var scrollFunction = function()
	{
		$$('.pageContent a').each(function(element)
		{
			var t = element.getProperty('name');
			
			if (t)
			{
				pItem = unescape(pItem.replace(/[^A-Za-z0-9]+/, ''));
				t = unescape(t.replace(/[^A-Za-z0-9]+/, ''));
			}
			
			if (pItem == t)
			{
				scroll.toElement(element);
			}
		});
	};
	
	setTimeout(scrollFunction, wait);
};

var loadPanelState = function(pID, pElements, pSortables, pState)
{	
	var cookie = new Hash.Cookie(pID, {duration: cookieDuration});
	var order = [];
	var savedState = cookie.get('state') || pState;
	
	if (savedState)
	{
		pSortables.elements.each(function(pValue, pKey)
		{
			order.push(pElements.getElementById(savedState[pKey]));
		});
		
		order.each(function(e)
		{
			pElements.adopt(e);
		});
	}
};

var savePanelState = function(pID, pSerialized)
{
	var cookie = new Hash.Cookie(pID, {duration: cookieDuration});
	cookie.set('state', pSerialized);
};


window.addEvent('load', function()
{	
	if (requestedItem)
	{
		doScrollToItem(requestedItem);
	}
	
	if (accordion == true)
	{
		doAccordion();
	}
	
	doParagraphTogglers();
});