window.addEvent('domready', function() {
	
	var $E = document.getElement.bind(document);

	var moSelects = $$('select[class=dropDown]');
    if(!moSelects || !moSelects.length) { return false; }
    	
    var msNumSelects = moSelects.length;
		for(var i=0; i < msNumSelects; i++) {
			
			var jumpTo = $('urlJump');
			
			var el = moSelects[i];	
			
			var selected = 0;
			
			var parent = el.getParent();
			if(!parent) { continue; }
			
			var options = $A(el.getChildren());
			if(!options || !options.length) { continue; }
			
			var msNumOptions = options.length;

			var id = el.get('id');
			var dropDownValue = new Element('input', {
				'type': 'hidden', 'value': '',
				'name': el.get('name'), 'id': id
			});
			
			$(dropDownValue).replaces(el);
		
			var dropDownOptions = new Element('div', {'class': 'dropDownOptions', 'id': 'opt'+ id});
			var dropDownWrapper = new Element('div', {'class': 'dropDownWrapper'});
			var dropDownContainer = new Element('div', {'class': 'dropDownContainer'});	
			var dropDownSelected = new Element('div', { 'class': 'dropDownSelected' });
			dropDownWrapper.inject(dropDownValue, 'after');
			dropDownContainer.inject(dropDownWrapper, 'top');			
			dropDownOptions.inject(dropDownContainer, 'top');
			dropDownSelected.inject(dropDownContainer, 'top');
						
			dropDownSelected.optionsSlide = new Fx.Slide(dropDownOptions, {duration: 100});
			dropDownSelected.addEvent('click', function() {
				this.optionsSlide.toggle();
				return false;
			});
			parent.addClass('dropDownRoot');
			parent.addEvents({
				'mouseenter': function(){ this.addClass('dropDownRootOver'); },
		    'mouseleave': function(){ this.removeClass('dropDownRootOver'); this.getLast().getFirst().getFirst().optionsSlide.slideOut(); }
			});
			
			
			for(var o=0; o < msNumOptions; o++) {
				if(o>0){
					var optvalue = options[o].get('value');
					var opttitle = options[o].get('html');
									
					var op = new Element('span', {
				    'events': {
		        	'mouseenter': function(){ this.addClass('optionOver'); },
		        	'mouseleave': function(){ this.removeClass('optionOver'); },
		        	'click': function(e) { 
		        		var sel = this.getParent('.dropDownContainer').getFirst();       			        		
		        		var val = sel.getParent().getParent().getPrevious();
		        		if(sel){
		        			sel.set('html', this.get('html'));
		        			sel.optionsSlide.slideOut();
		        		}
		        		if(val){	
		        			val.set('value', this.get('rel')); 
		        		}
		        		if(jumpTo){
		        			jumpTo.submit();
		        		}
								return false;
		        	}
				    },
				    'title':opttitle,
				    'html' :opttitle,
				    'rel':optvalue
					});
					
					if(options[o].selected) { selected = o; }
					op.inject(dropDownOptions);
				}							
			}
			
			// set default or selected by template logic.			
			dropDownSelected.set('html', options[selected].get('html'));
			dropDownValue.set('value', options[selected].get('value'));
			dropDownSelected.optionsSlide.hide();
			
			// tidy up and remove the original select.
			moSelects[i].dispose();
			moSelects[i] = null;
			if(el){
				el.dispose();
				el = null;
			}
			
			options = null;			

		}
		
		// turn out the lights.
		moSelects = null;
		return false;

});

