﻿window.addEvent('domready', function() {

	var body = $('body');
	
	// attach homepage link(s)
	body.getElement('#header img.smp').addEvent('click', function()  { window.open('default.aspx', '_self'); return false; });
	//body.getElement('#header img.logo').addEvent('click', function() { window.open('http://www.ipac.com.au', '_blank'); return false; });

    // fix external links
    body.getElements('a[rel^=blank]').addEvent('click', function(e) {
		window.open(this.href, '_blank');
		return false;
    });

	// questions
	var questions	= $('questions');
	if (questions) {
		var position	= 1;
		var progress	= $('progress').empty();
		var previous	= body.getElement('a.previous').addEvent('click', function(){ setPosition(-1); return false; });
		var next		= body.getElement('a.next').addEvent('click',     function(){ setPosition(1);  return false; });
		questions		= questions.getElements('li');
		
		// add hover for ie6
		if (Browser.Engine.trident && Browser.Engine.version == 4) {
			questions.getElements('label').each(function(label) {
				label.addEvents({
					'click': function() {
						this.getElement('input').checked = true;
					},
					'mouseenter': function() {
						this.addClass('hover');
					},
					'mouseleave': function() {
						this.removeClass('hover');
					}
				});
			});
		}
		
		// generate progress bar
		questions.each(function(q, index) {
			var i	= index + 1;
			var li	= new Element('li').set({
				'class' : position == i ? 'yellow' : '',
				'text'  : i,
				'title' : 'Question ' + i
			}).inject(progress, 'bottom');
		});
	}
	
	setBackground(body.getElement('input.name'),  'name-bg');
	setBackground(body.getElement('input.email'), 'email-bg');
	
	function setBackground(el, cls) {
		el = $(el);
		if (el) {
			
			if (el.get('value').clean().length == 0)
				el.addClass(cls);
		
			el.addEvents({
				'blur': function() {
					this.set('value', this.get('value').clean());
					if (el.get('value').length == 0) el.addClass(cls);
				},
				'focus': function() { el.removeClass(cls); }
			});
		}
	}
	
	function setPosition(increment) {
		increment	= increment ? increment : 0;
		answered	= false;
				
		// check if current question has been answered
		$('q' + position).getElements('input').each(function(input) {
			if (input.checked) {
				answered = true;
				return;
			}
		});
		
		if (increment == -1 || answered) {
			position = position + increment;
			if (position == 1) {
				position = 1;
				previous.addClass('hide');
				next.removeClass('hide');
			} else if (position == questions.length) {
				previous.removeClass('hide');
			} else if (position > questions.length) {
				position = questions.length;
				$('form').submit();
			} else {
				previous.removeClass('hide');
				next.removeClass('hide');
			}
			
			// set progress bar
			progress.getElements('li').each(function(li, index) {
				li.set('class', (index < position ? 'yellow' : ''));
			});
			
			// change question
			body.set('class','q' + position);
			
		} else alert('You need to answer this question');
	}
});

function checkForm() {
				
	var message	= 'Please fill in the following required fields:\n';
	var inputs	= document.getElementsByTagName('input');
	var regex	= /^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/;
	
	for (var i = 0; i < inputs.length; i++) {
		
		var input = inputs[i];
		if (input.type == 'text') {
			
			if (input.className.indexOf('required') > -1 && input.value == '') {
				message += '* ' + input.title + ' is invalid\n';
			} else if (input.className.indexOf('email') > -1 && input.value != '' && regex.test(input.value) != true) {
				message += '* ' + input.title + ' is invalid\n';
			}
		}
	}
	
	if (message.indexOf('*') > -1) {
		alert(message);
		return false;
	}
	
	return true;
}