var FlyOutNavigation = new Class({
	Bounds: ['mouseenter', 'mouseleave'], // New v1.2: Bounds mutator
	initialize: function(elm) {
		this.stack = document.getElement(elm).getChildren().getChildren();
		var mouseenter=this.mouseenter,mouseleave=this.mouseleave;
		this.stack.each(function(child) {
			child.addEvents({
		    	'mouseenter': mouseenter, 
				'mouseleave': mouseleave
	    	});
		});
	},
	mouseenter: function() {
		this.getFirst().getNext().setStyle('display', 'block'); 
		this.getFirst().addClass('roll');
	},
	mouseleave: function() {
		this.getFirst().getNext().setStyle('display', 'none'); 
		this.getFirst().removeClass('roll');
	}
});

/* Function to swap dropdowns in the Organisation section of the Registration page */ 
function injectDropdowns (ulClass) {

	if ((ulClass == 'ul.group-org') && (($$('ul.group-ind')[0].innerHTML == "<LI></LI>") || ($$('ul.group-ind')[0].innerHTML == "<li></li>"))) {
		$$('ul.group-ind')[0].innerHTML = $$('ul.inject-class')[0].innerHTML;
		$$('ul.inject-class')[0].innerHTML = $$('ul.group-org')[0].innerHTML;
		$$('ul.group-org')[0].innerHTML = "<li></li>";
	};

	if ((ulClass == 'ul.group-ind') && (($$('ul.group-org')[0].innerHTML == "<LI></LI>") || ($$('ul.group-org')[0].innerHTML == "<li></li>"))) {
		$$('ul.group-org')[0].innerHTML = $$('ul.inject-class')[0].innerHTML;
		$$('ul.inject-class')[0].innerHTML = $$('ul.group-ind')[0].innerHTML;
		$$('ul.group-ind')[0].innerHTML = "<li></li>";
	};

	return false; 
};


/* slideshow scripting */
/* Created by Lucy Barker and Stuart Thorne */
/* Modified by Steve Summers */
var CreateCrossFade = new Class({
	Implements:[Options,Events],
	options:{
		stage: false,	// the slide stage/containing div
		slides: [], 	// the individual slide element
		autotime: 4000,
		links: false
	},

	initialize:function(options){
		this.setOptions(options);
		this.stage = $(this.options.stage); if(!(this.stage)) return;
		this.addItems(this.options.slides);

        this.slides.each(function(slide, i) {
			slide.setProperty('id', 'slide00'+i)
			if(i == 0) return;
            slide.setStyle('opacity', 0);
        }, this);
		
		this.autotime = this.options.autotime;
		this.links = this.options.links;
		this.links[0].addClass('on');
		
        this.position = 0;
		this.slidestop = 0;
		this.auto();
	},

	slides:[],
	
	addItems:function(items){
		$$(items).each(function(item){this.slides.include($(item));}, this);
	},
	
	addItem:function(item){
		this.addItems($splat($(item)));
	},
	
	_transition: function(stack,from, to) {
        var fromer = stack[from],tooer = stack[to];
				
		stack[from].get('tween', {property:'opacity', duration: 800}).start(0);

		tooer.get('tween', {property:'opacity', duration: 600}).start(1);
    },
	
	next: function() {
		var next = this.position + 1 > this.slides.length - 1 ? 0 : this.position + 1;
		this._transition(this.slides, this.position, this.position = next);
	},
	back: function() {
		var back = this.position - 1 < 0 ? this.slides.length - 1 : this.position - 1;
		this._transition(this.slides, this.position, this.position = back);
	},
	to: function(id) {
		this.links[this.position].removeClass('on');
		this._transition(this.slides, this.position, this.position = this.slides.indexOf(this.stage.getElement('#'+id)));
		this.links[this.position].addClass('on');
	},
	
	auto: function(e) {
		(e = function(){
			if( this.slidestop == 0) {
				this.links[this.position].removeClass('on');
				if (this.position + 1 > this.slides.length-1) {
					this.slidestop = 1;
					$clear(e);
				} else {
					this._transition(this.slides, this.position, this.position += 1);
				};
				this.links[this.position].addClass('on');
			};
		}).bind(this).periodical(this.autotime);
    }
	
});




var preloadImgs = new Class({
	Implements:[Options,Events],
	options:{
		imgs: [],
		width: false,
		height: false	
	},
	initialize:function(options){
		this.setOptions(options);
		this.options.imgs.each(function(i){
			var imgObj = new Element('img',{
				'src': i.src,
				'width': i.width,
				'height': i.height
			});
		});
	}
});
/* end: slideshow scripting */


window.addEvent('load', function() {
	$$('body').addClass('js');

	new FlyOutNavigation('div.top-nav');
			if($$('input.radio-org')[0]) {
				$$('input.radio-org')[0].addEvent('click', function() { injectDropdowns ('ul.group-org'); });
				$$('input.radio-ind')[0].addEvent('click', function() { injectDropdowns ('ul.group-ind'); });
				
				if (typeof varLoadInd != 'undefined') //only need to check this when on editregistration page
	            {
	                if(varLoadInd == 'true') //individual ddl options should be shown
	                {
				        $$('ul.inject-class')[0].innerHTML = $$('ul.group-ind')[0].innerHTML;
				        $$('ul.group-ind')[0].innerHTML = "<li></li>";
				    }
				    else //as normal
				    {
				        $$('ul.inject-class')[0].innerHTML = $$('ul.group-org')[0].innerHTML;
				        $$('ul.group-org')[0].innerHTML = "<li></li>";				    
				    }
			    }
			    else //as normal
			    {
				    $$('ul.inject-class')[0].innerHTML = $$('ul.group-org')[0].innerHTML;
				    $$('ul.group-org')[0].innerHTML = "<li></li>";			    
			    }	    
	        };
});

window.addEvents({
	'domready': function(){
		if($$('.homepage')[0]) { $$('body').setStyle('background', 'none'); }
		var loadImgs = new preloadImgs({imgs: $$('.slide img.imgbg'), width: 1200, height: 424});
		var londonSlideShow = new CreateCrossFade({
			stage: $$('.slidestage')[0],
			slides: $$('.slidestage div.slide'),
			autotime: 5500,
			links: $$('.slide-nav a')
		});

		$$('.slide-nav a').each(function(a, n){
			a.addEvent('click', function(e){
				e.stop();
				londonSlideShow.to('slide00'+n);
			});
		});
		
		if (Browser.Engine.webkit == 1) {
			$$('.slide-nav')[0].setStyle('top', '384px');
		};	
	}
});
/* aligns the next step button if it falls below the right column */
function alignNextStep()
    {
        var nxtStep = document.getElementById("ctl00_PlaceHolderMain_NextStep__ControlWrapper_CustomImageField");
        var rightCol = document.getElementById("rightColumn");
        if ((nxtStep != null) && (rightCol != null))
        {           
            var bX = findPosX(nxtStep);
            var rX = findPosX(rightCol); 
            
            if (bX > rX)
            {
                nxtStep.style.position = "Relative";
                nxtStep.style.paddingRight = "160px";
            }          
        }
    };   
    
  function findPosX(obj)
  {
    var curleft = 0;
    if(obj.offsetParent)
        while(1) 
        {
          curleft += obj.offsetLeft;
          if(!obj.offsetParent)
            break;
          obj = obj.offsetParent;
        }
    else if(obj.x)
        curleft += obj.x;
    return curleft;
  };
