// ========== Solutions =======================================================================================================
window.addEvent('domready',function(){
	if(!$E('.solutions_step')) return;
	// adjust alignment
	$('contentSection').setStyle('paddingLeft','85px');

	var solutions = $$('.solutions_step');
	var aStep1 = solutions[0].getElements('.solutionsBox');
	var aStep2 = solutions[1].getElements('.solutionsBox');
	var aStep3 = solutions[2].getElements('.solutionsBox');
	var titlebar = $$('div.titlebar_nofloat h6');
	$('submit2').set('disabled',true).addClass('disabled');
	
	var selected = false;
	var initialized = false;
	var aStep1Collection = [];
	var aStep2Collection = [];
	
	function step1(items){
		aStep1.each(function(box){
			var input = box.getElement('input');
			var value = input.get('value');
			input.addEvent('click',function(e){
				// ==== I'm Not Sure: Toggle Collection =====
				if(input.get('value') == "notsure"){
					if(input.get('checked') == true){
						aStep1.getElements('input').each(function(checkbox){ checkbox.set('checked',true)});
					} else {
						aStep1.getElements('input').each(function(checkbox){ checkbox.set('checked',false)});
					};
				};
				
				aStep1Collection.empty().combine(aStep1.gatherValues(oStep1));
				
				if(solutionsResults){
					var summary = titlebar[0].getElement('.step_summary');
					aStep1.displayValues(summary);
				};
				if(aStep1Collection.length){
					titlebar[1].removeClass('inactive');
				} else {
					titlebar[1].addClass('inactive');
				};
				step2(aStep1Collection);
			});
		});
		if(!initialized) step2([]);
	};
	
	function step2(items){
		aStep2.each(function(box){
			var input = box.getElement('input');
			var value = input.get('value');
			if(!selected) $('submit2').set('disabled',true).addClass('disabled').setStyle('cursor','default');
			
			input.addEvent('click',function(e){
				// ==== I'm Not Sure: Toggle Collection =====
				if(input.get('value') == "notsure"){
					if(input.get('checked') == true){
						aStep2.getElements('input').each(function(checkbox){ checkbox.set('checked',true)});
					} else {
						aStep2.getElements('input').each(function(checkbox){ checkbox.set('checked',false)});
					};
				};
				
				aStep2Collection.empty().combine(aStep2.gatherValues(oStep2));
				
				if(solutionsResults){
					var summary = titlebar[1].getElement('.step_summary');
					aStep2.displayValues(summary);
				};
				
				if(aStep2Collection.length){
					titlebar[2].removeClass('inactive');
				} else {
					titlebar[2].addClass('inactive');
				};
				step3(aStep2Collection);
			});
			// ===== Reset Areas =====
			box.addClass('disabled');
			input.set('disabled',true);
			items.each(function(item){
				if(value == item){ 
					box.removeClass('disabled');
					input.set('disabled',false);
				}
			});
			// ==== I'm Not Sure =====
			if(value == "notsure"){
				if(items.length){
					box.removeClass('disabled');
					input.set('disabled',false);
				};
			};
			// ===== Clear checkbox if disabled =====
			if(box.hasClass('disabled') && input.get('checked') == true){
				input.set('checked',false);
			};
		});
		if(items.length == 0){
			titlebar[2].addClass('inactive');
			step3([]);
		};
	};
	
	function step3(items){
		var summary = titlebar[2].getElement('.step_summary');
		summary.empty();
		aStep3.each(function(box){
			var input = box.getElement('input');
			var value = input.get('value');
			
			input.addEvent('click',function(e){
				if(solutionsResults){
					aStep3.displayValues(summary);
				};
				
				selected = (input.get('checked') == true)? true : false;
				if(selected){
					$('submit2').set('disabled',false).removeClass('disabled').setStyle('cursor','pointer');
				} else {
					if(Step2NotSure.get('checked') != true){
						$('submit2').set('disabled',true).addClass('disabled').setStyle('cursor','default');
					};
				};
			});
			
			// ===== Reset Areas =====
			box.addClass('disabled');
			input.set('disabled',true);
			items.each(function(item){
				if(value == item){ 
					box.removeClass('disabled');
					input.set('disabled',false);
				}
			});
			// ==== Activate Submit Button =====
			var Step2NotSure = aStep2.getLast().getElement('input');
			if(Step2NotSure.get('checked') == true){
				$('submit2').set('disabled',false).removeClass('disabled').setStyle('cursor','pointer');
			} else {
				if(!selected){
					$('submit2').set('disabled',true).addClass('disabled').setStyle('cursor','default');
				};
			};
			// ===== Clear checkbox if disabled =====
			if(box.hasClass('disabled') && input.get('checked') == true){
				input.set('checked',false);
			};
		});
		if(!initialized){
			activateCheckboxes();
			initialized = true;
		}
	};
	
	function activateCheckboxes(){
		[aStep1,aStep2,aStep3].each(function(step,index){
			var aSelected = Query.formatStringValues("step" + (index+1));
			step.each(function(box){
				var input = box.getElement('input');
				var value = input.get('value');
				// ===== Activate checkboxes =====
				aSelected.each(function(item){
					if(value === item){
						input.set('checked',true);
						(function(){ input.fireEvent('click') }).delay(100);
					};
				});
			});
		});
	};
	
	// ===== Initialize =====
	step1();
	if(solutionsResults){
		solutions1 = new Fx.Slide($(solutions[0])).hide();
		solutions2 = new Fx.Slide($(solutions[1])).hide();
		solutions3 = new Fx.Slide($(solutions[2])).hide();
		
		var btnEdit = $$('div.titlebar_nofloat h6 .edit_step');
		btnEdit.addEvent('click',function(e){
			new Event(e).stop();
			solutions1.toggle();
			solutions2.toggle();
			solutions3.toggle();
		});
	};
});
// ============================================================================================================================
Array.implement({
	gatherValues: function(o){
		var aOptions = [];
		var inputs = this.getElements('input');
		inputs.each(function(input){
			if(input.get('checked') == 'true'){
				aOptions.extend(o[input.get('value')]);
			};
		});
		return aOptions;
	},
	displayValues: function(div){
		var aOptions = [];
		var inputs = this.getElements('input');
		inputs.each(function(input){
			if(input.get('checked') == 'true'){
				aOptions.include(" "+input.getParent().get('text').toString().clean());
			};
		});
		div.set('text',aOptions.toString());
	}
});
var Query = {
    // ===== QueryString ===============
    getString: function(){
        return window.location.search;
    },
    getStringValues: function(queryString) {
		var params = {};
		(queryString||this.getString()).replace('?','').split('&').each(function(group){
			var pair = group.split('=');
			params[ pair[0] ] = pair[1];
		}, this);
		return params;
	},
	getStringValue: function(name, queryString) {
		var values = this.getStringValues(queryString);
		return (values[name])? values[name] : false;
	},
	formatStringValues: function(step){
		var params = [];
		var query = this.getString().replace('?','');
		if(query.length){
			var a = new RegExp(step+"=([^&#]*)","gi");
			if(!query.test(a)) return params;
			query.match(a).each(function(item){
				params.include(item.replace(a,"$1"));						 
			});
		};
		return params;
	}
};

function $E(selector, filter){
	return ($(filter) || document).getElement(selector);
};
