window.addEvent('domready', function(){
	if( Browser.Engine.webkit || (Browser.Engine.trident && navigator.appVersion.indexOf('MSIE 8')!=-1 )){
		// fix legend positioning bug
		$$('legend').each( function(element,index){
			element.setStyle('marginLeft',0);
		});
	}
	else{
		//fix legend width bug
		$$('legend').each( function(element,index){
			element.set('html','<span>'+element.get('html')+'</span>');
		});
	}

	formSubmission('competition');
	scroller();

	// Home page banner slider.
	var nS1 = new noobSlide({
		box: $('banners'),
		items: [0,1,2],
		size: 618,
		autoPlay: true,
		handles: $$('#banner-nav span'),
		onWalk: function(currentItem, currentHandle) {
			this.handles.removeClass('active');
			currentHandle.addClass('active');
		}
	});
});

var scrollDiv = null;

function scroller(){
	scrollDiv = $('scrollArea');

	if(scrollDiv){
		var contentDivs = scrollDiv.getElements('.contentbox');
		var contentSize = contentDivs[0].getSize();
		var contentCoords = 0;
		var fromNext = true;
		var flag = false;
		var periodical = null;
		var duration = 1000;

		scrollDiv.setStyle('width', contentDivs.length * contentSize.x + 'px');

		if(contentDivs.length > 3){
			var fx = new Fx.Morph(scrollDiv, {
				duration: duration,
				transition: 'quad:out',
				onStart : function(){ flag = true; },
				onComplete : function(){
					if(fromNext){
						contentDivs[0].inject(contentDivs[contentDivs.length-1],'after');
						scrollDiv.setStyle('marginLeft',  '0px');
					}else{
						periodical = next.periodical(3000 + duration);
					}
					contentDivs = scrollDiv.getElements('.contentbox');
					flag = false;
				}
			});
			var next = function(){
				fromNext = true;
				contentCoords = contentDivs[1].getCoordinates(scrollDiv);
				fx.start({'marginLeft': -contentCoords.left});
			}
			periodical = next.periodical(3000 + duration);

			var previous = function(){
				fromNext = false;
				$clear(periodical);
				contentDivs[contentDivs.length-1].inject(contentDivs[0],'before');
				contentCoords = contentDivs[1].getCoordinates(scrollDiv);
				scrollDiv.setStyle('marginLeft', -contentSize.x + 'px');
				fx.start({'marginLeft': 0});
			}

			$('previousContent').addEvent('click', function(evt){
				evt.stop();
				if(!flag) previous();
			});

			$('nextContent').addEvent('click', function(evt){
				evt.stop();
				if(!flag) next();
			});
		}

		setPosition();

	}
}

function setPosition(){
	var colA = $("colA");
	var colB = $("colB");
	if( colA && colB ){
		var colAHeight = colA.getSize().y;
		var colBHeight = colB.getSize().y;
		if(colAHeight<colBHeight ){
			var adjustment = (colBHeight-colAHeight);
			scrollDiv.setStyle("margin-top",adjustment+"px");
			$("previousContent").setStyle("margin-top",adjustment+"px");
			$("nextContent").setStyle("margin-top",adjustment+"px");
		}
	}
}

// make sure valid fields are filled in
function formSubmission(formName){
	var form = $(formName);
	if(form){
		var errorVisible = false;
		var allInputs = new Array();
		allInputs = form.getElements('input');
		allInputs.each( function(input){
			if(input.get('type') == 'image' || input.get('type') == 'submit'){
				input.addEvent('click',function(evt){
					var requiredInputs = new Array();
					requiredInputs = form.getElements('.required');
					requiredInputs.each( function(required){
						if(required.get('type') == 'text'){

							if(required.get('value') == ''){
								evt.stop();
								if(!errorVisible){
									var errorDiv = new Element('div',{id: 'error'});
									errorDiv.set('html','<p>*Please complete all mandatory fields</p>');
									errorDiv.inject(input,'before');
									errorVisible = true;
								}
							}
						}else if(required.get('type') == 'checkbox'){
							if(!required.get('checked')){
								evt.stop();
								if(!errorVisible){
									var errorDiv = new Element('div',{id: 'error'});
									errorDiv.set('html','<p>*Please complete all mandatory fields</p>');
									errorDiv.inject(input,'before');
									errorVisible = true;
								}
							}
						}
					});

				});
			}
		});
	}
}
