/* Begin dom events */
window.addEvent('domready',function(){
	/* Set initial opacity for helper calculators and chart */																	
	$('Final_Expenses_img').setStyle("opacity", 0);
	$('Debts_img').setStyle("opacity", 0);
	$('Emergency_Fund_img').setStyle("opacity", 0);
	$('Housing_img').setStyle("opacity", 0);
	$('Childcare_img').setStyle("opacity", 0);
	$('client_chart').setStyle("opacity", 0);
	
	/* Set current slideID for sizing */
	slideID = "needs";

	/* Print resulsts function */
	/* Swaps .swf wih base64 encodined URI for FF */
	$$('.print_results').each(function(el) {
		el.addEvent('click',function(e) {								 
		/*if Firefox or if can render code below*/
		//if (document.get_img_binary) {
//
//		OFC = {};
//
//		OFC.none = {
//    	name: "pure DOM",
//    	version: function(src) { return document.getElementById(src).get_version() },
//    	image: function(src) {return "<img src='data:image/jpeg;base64," + document.getElementById(src).get_img_binary() + "' />"},
//			rasterize: function (src, dst) {
//      	var _dst = document.getElementById(dst)
//      	$('client_chart_print').innerHTML = "<p>" + Control.OFC.image(src) + "</p>";
//     		// _dst.parentNode.replaceChild(e, _dst);
//    	}
//		}
// 
//		if (typeof(Control == "undefined")) {
//  		var Control = {OFC: OFC.none}
//		}
//
//		OFC.none.rasterize('client_chart', 'client_chart_print');
//		/* end if firefox */
//		} else {
//			alert('no can do!')
//		}
		
		/* if IE */
		/* ACTION: 
		/* Swap image with no-print image
		/* end if IE /*
		
		/* Get form values to pass to pop up */
		var total_needs = document.client_resultsform.client_totalNeeds.value;
		var total_assets = document.client_resultsform.client_totalAssets.value;
		var dollars_needed = document.client_resultsform.client_dollarsNeeded2.value;
		var Final_Expenses = "$"+document.lifecalculator.Final_ExpensesA.value;
		var Debts = "$"+document.lifecalculator.DebtsA.value;
		var Emergency_Fund = "$"+document.lifecalculator.Emergency_FundA.value;
		var Housing = "$"+document.lifecalculator.HousingA.value;
		var Childcare = "$"+document.lifecalculator.ChildcareA.value;
		var Education_Fund = "$"+document.lifecalculator.Education_FundA.value;
		var Survivors_Income = "$"+document.lifecalculator.Survivors_IncomeA.value;
		var Special_Needs = "$"+document.lifecalculator.Special_NeedsA.value;
		var CashChecking = "$"+document.lifecalculator.CashCheckingA.value;
		var CashSaving = "$"+document.lifecalculator.CashSavingsA.value;
		var CashCD = "$"+document.lifecalculator.CashCDA.value;
		var CashMoneyMarket = "$"+document.lifecalculator.CashMoneyMarketA.value;
		var InvestmentAcct = "$"+document.lifecalculator.InvestmentAcctA.value;
		var Retirement_Funds = "$"+document.lifecalculator.Retirement_FundsA.value;
		var Retirement_FundsAnnuities = "$"+document.lifecalculator.Retirement_FundsAnnuitiesA.value;
		var Current_LI_Benefits = "$"+document.lifecalculator.Current_LI_BenefitsA.value;
		var Other = "$"+document.lifecalculator.OtherA.value;
		
  	var d = new Date();
		var curr_date = d.getDate();
		var curr_month = d.getMonth();
		var curr_year = d.getFullYear();
		var today = curr_date + "/" + curr_month + "/" + curr_year;
		
		PrintThisPage('results',total_needs,total_assets,dollars_needed,Final_Expenses,Debts,Emergency_Fund,Housing,Childcare,Education_Fund,Survivors_Income,Special_Needs,CashChecking,CashSaving,CashCD,CashMoneyMarket,InvestmentAcct,Retirement_Funds,Retirement_FundsAnnuities,Current_LI_Benefits,Other,today);

		});
	});	

	/* Set up Needs Hint Boxes	*/	
	function prepareInputsForHints() {
		var inputs = document.getElementsByTagName("input");
		for (var i=0; i<inputs.length; i++){
			if (inputs[i].parentNode.getElementsByTagName("span")[0]) {
				inputs[i].onfocus = function () {
					this.parentNode.getElementsByTagName("span")[0].style.display = "inline";
					$$('.show_calc_helper').setProperty('class','hide_calc_helper');
				}
				inputs[i].onblur = function () {
					this.parentNode.getElementsByTagName("span")[0].style.display = "none";
				}
			}
		}
	}
	prepareInputsForHints();
	/* End Hints */

	/* Control tab/disable */
	var disabledSet = 'assets';
	var controlSet = 'needs';
	var formloaded = 'false';
	controlTabbing(disabledSet, controlSet);
	
	function controlTabbing(disabledSet, controlSet){
	/* Enable/Disable/Tabindex of buttons */	
		if(controlSet == 'needs'){
			$$('button.next').removeProperty('disabled');
			$$('button.next').setProperty('tabindex',17);
			//$$('button.next').setProperty('enabled','true');
			$$('button.submit').setProperty('disabled','true');
			$$('button.editbtn_needs').setProperty('disabled','true');
			$$('button.editbtn_assets').setProperty('disabled','true');
			$$('button.print_results').setProperty('disabled','true');
			$$('button.assets_editbtn_needs').setProperty('disabled','true');
		}
		if(controlSet == 'assets'){
			$$('button.submit').removeProperty('disabled');
			$$('button.submit').setProperty('tabindex',19);
			$$('button.next').setProperty('disabled','true');
			$$('button.editbtn_needs').setProperty('disabled','true');
			$$('button.editbtn_assets').setProperty('disabled','true');
			$$('button.print_results').setProperty('disabled','true');
			$$('button.assets_editbtn_needs').removeProperty('disabled');
		}
		if(controlSet == 'results'){
			$$('button.editbtn_needs').removeProperty('disabled');
			$$('button.editbtn_assets').removeProperty('disabled');
			$$('button.print_results').removeProperty('disabled');
			$$('button.editbtn_needs').setProperty('tabindex',1);
			$$('button.editbtn_assets').setProperty('tabindex',2);
			$$('button.next').setProperty('disabled','true');
			$$('button.assets_editbtn_needs').setProperty('disabled','true');
			$$('button.submit').setProperty('disabled','true');
		}
	/* Enable/Disable/Tabindex of inputs */	
		var enableGroup = $$('input.'+controlSet+'TextInput');
		var i = 0;
		var j = 1;
				
		focusISSet = false;
		while (i <= enableGroup.length-1) {
			var getIDArray = enableGroup.get('id'); // = returns id as new array
			var selectID = getIDArray.splice(i,1); // = splices off 1st element in array
			var convertID = selectID.toString(); // = converts element to string for use
			var setThisEnabled = document.getElementById(convertID); // = gets string as element
	
			$(setThisEnabled.id).disabled = 0; // = enables element
			$(setThisEnabled.id).tabIndex = j;
	
			i=i+1;
			j=j+1;
		}
	
		var disableGroup = $$('input.'+disabledSet+'TextInput');
		var i = 0;
		while (i <= disableGroup.length-1) {
			var getIDArray = disableGroup.get('id'); // = returns id as new array
			var selectID = getIDArray.splice(i,1); // = splices off 1st element in array
			var convertID = selectID.toString(); // = converts element to string for use
			var setThisDisabled = document.getElementById(convertID); // = gets string as element
			$(setThisDisabled.id).disabled = 1; // = disables element
			i=i+1;
			$(setThisDisabled.id).tabIndex = -1;
			$(setThisDisabled.id).blur();
		}
		formloaded = 'true';
	}	
	/* End tab/disable control */
		
	// Creates calculator Sliders																		
	//var handles8_more = $$('#handles8_more span');
	var nS8 = new noobSlide({
		box: $('calc_box'),
		items: $$('#calc_box h3'),
		size: 524,
		handles: $$('#handles8 span'),
		addButtons: {previous: $('prev8'), next: $('next8') },
		onWalk: function(currentItem,currentHandle){
			/* Executes on click of any button */
		}
	});
	
	/* Next/Submit/Edit buttons */
		nS8.addActionButtons('previous',$$('#calc_box .editbtn_assets'));
		nS8.addActionButtons('next',$$('#calc_box .editbtn_needs'));
		nS8.addActionButtons('previous',$$('#calc_box .assets_editbtn_needs'));
		nS8.addActionButtons('next',$$('#calc_box .next'));
		nS8.addActionButtons('next',$$('#calc_box .submit'));
		
		nS8.walk(0,false,true);
	
	/* Create Progress Bar */
	pb2 = new dwProgressBar({
			container: $('indicator'),
			startPercentage: 34,
			speed:1000,
			boxID: 'box2',
			percentageID: 'perc2',
			displayID: 'text',
			displayText: true,
			step:33,
			onComplete: function() {
				$$('.calc_mask').setStyle('height', '520px');
				calculateA();
			},
			onChange: function() {
				//adjust mask for contents			
				if(slideID == "needs"){
					$$('.calc_mask').setStyle('height', '460px');
				}
				if(slideID == "assets"){
					$$('.calc_mask').setStyle('height', '430px');
				}
				
				/* Set focus in needs when page loads causes error in IE6
				/* Set focus and selection in proper text field */
				// Set Focus													
				if (formloaded == 'true') {
					//if(controlSet == 'needs'){
//						document.getElementById('Final_ExpensesA').focus();
//						document.getElementById('Final_ExpensesA').select();
//					}
					if(controlSet == 'assets'){
						document.getElementById('CashCheckingA').focus();
						document.getElementById('CashCheckingA').select();
					}
				}
			}
		});
		
	textChange();

	// Buttons & Links
	// Navigation	
	$$('.editbtn_needs').each(function(el) {
		el.addEvent('click',function(e) {
			e.stop();
			slideID = "needs";
			disabledSet = 'assets';
			controlSet = 'needs';
			controlTabbing(disabledSet, controlSet);
			$('client_chart').setStyle("opacity", 0);
			pb2.set(34);
			textChange();
		});
	});
	$$('.assets_editbtn_needs').each(function(el) {
		el.addEvent('click',function(e) {
			e.stop();
			slideID = "needs";
			disabledSet = 'assets';
			controlSet = 'needs';
			controlTabbing(disabledSet, controlSet);
			$('client_chart').setStyle("opacity", 0);
			pb2.set(34);
			textChange();
		});
	});
	$$('.editbtn_assets').each(function(el) {
		el.addEvent('click',function(e) {
			e.stop();		
			slideID = "assets";
			disabledSet = 'needs';
			controlSet = 'assets';
			controlTabbing(disabledSet, controlSet);
			$('client_chart').setStyle("opacity", 0);
			pb2.set(67);
			textChange();
		});
	});
	$$('.next').each(function(el) {
		el.addEvent('click',function(e) {
			e.stop();
			slideID = "assets";
			pb2.step();
			textChange();	
			disabledSet = 'needs';
			controlSet = 'assets';
			controlTabbing(disabledSet, controlSet);
		});
	});		
	$$('.submit').each(function(el) {
		el.addEvent('click',function(e) {
			e.stop();
			slideID = "results";
			pb2.step();
			textChange();	
			disabledSet = 'assets';
			controlSet = 'results';
			controlTabbing(disabledSet, controlSet);
		});
	});	

	// helper calculators
	$$('.toggle_calc').each(function(el) {
		el.addEvent('click',function(e) {
			e.stop();
			$$('.show_calc_helper').setProperty('class','hide_calc_helper');
			var checkParent = el.getParent('dd')
			var showCalc = $(checkParent.id+'_calc')
			showCalc.setProperty('class','show_calc_helper');
		});
	});	
// Display results for chosen client	
//	$$('.showClient_B').each(function(el) {
//		el.addEvent('click',function(e) {
//				calculateB()
//				$('client_chart').setStyle("opacity", 1);
//			});
//	});	
//	$$('.showClient_A').each(function(el) {
//		el.addEvent('click',function(e) {
//				calculateA()	
//				$('client_chart').setStyle("opacity", 1);
//			});
//	});	
	
// insert helper calculator total into chosen customer
	$$('.clienta').each(function(el) {
		el.addEvent('click',function(e) {
			e.stop();
			var checkParent = el.getParent('span');
			var convertToID = checkParent.id;
			var newParent = convertToID.slice(0, -5);
			var toField = newParent+'A';
			var fromField = newParent+'_total';
			document.lifecalculator[toField].value = document.lifecalculator[fromField].value;
			$(newParent+'_img').get("tween").addEvent("complete", function() { 
   			$(newParent+'_img').tween("opacity", 0);
			});
			$(newParent+'_img').tween("opacity", 1);		
		  $$('.show_calc_helper').setProperty('class','hide_calc_helper');
			field = toField.toString();
			data_change(field)
				//this.parentNode.getElementsByTagName("span")[0].style.display = "none";
			$$('.hint').setStyle('display','none');
		});
	});	
//$$('.clientb').each(function(el) {
//		el.addEvent('click',function(e) {
//			e.stop();
//			var checkParent = el.getParent('span');
//			var convertToID = checkParent.id;
//			var newParent = convertToID.slice(0, -5);
//			var toField = newParent+'B';
//			var fromField = newParent+'_total';
//			document.lifecalculator[toField].value = document.lifecalculator[fromField].value;
//			$(newParent+'_img').get("tween").addEvent("complete", function() { 
//   			$(newParent+'_img').tween("opacity", 0);
//			});
//			$(newParent+'_img').tween("opacity", 1);
//			$$('.show_calc_helper').setProperty('class','hide_calc_helper');
//			field = toField.toString();
//			data_change(field)
//		});
//	});

	/* Numeric validation wiuth reporting and disable/enable */
	$$('input.assetsTextInput').each(function(el) {
		el.addEvent('keyup',function(e) {
			e.stop();
			var field = this;
			data_change(field)
			format(field);
		});
	});	

	$$('input.needsTextInput').each(function(el) {
		el.addEvent('keyup',function(e) {
			e.stop();
			var field = this;
			data_change(field)
			format(field);
		});
	});	


	/* Currency Formatting */
	function format(input){
		var num = input.value.replace(/\,/g,'');
		if(!isNaN(num)){
			if(num.indexOf('.') > -1){
				num = num.split('.');
					num[0] = num[0].toString().split('').reverse().join('').replace(/(?=\d*\.?)(\d{3})/g,'$1,').split('').reverse().join('').replace(/^[\,]/,'');
						if(num[1].length > 2){
							alert('You may only enter two decimals!');
							num[1] = num[1].substring(0,num[1].length-1);
						} 
					input.value = num[0]+'.'+num[1];
				} else { 
					input.value = num.toString().split('').reverse().join('').replace(/(?=\d*\.?)(\d{3})/g,'$1,').split('').reverse().join('').replace(/^[\,]/,'') 
				};
		} else { 
			//alert('You may enter only numbers in this field!');
			//input.value = input.value.substring(0,input.value.length-1);
		}
	}

	function data_change(field) {
		holdField = $(field);
		field = $(field);
		var check = true;
		var value = field.value.replace(/\,/g,''); /* get characters */
	//check that all characters are digits, ., -, or ""
		for(var i=0;i < field.value.length; ++i){
				 var new_key = value.charAt(i); //cycle through characters
				 if(((new_key < "0") || (new_key > "9") || (new_key == ","))  && !(new_key == "")) {
							check = false;
							break;
				 }
		}
	/* apply error */
		if(!check){
			var errField = field.id;
	
			/* clean field id to use for error display */
			//errField = errField.replace("_"," ");
			//errField = errField.slice(0, -1)
	
			switch(errField) {
			/* Label Fields to human readable error output */
			case "Final_ExpensesA" :  errField_txt = "Final Expenses"; break;
			case "DebtsA" : errField_txt = "Debts"; break;
			case "Emergency_FundA" : errField_txt = "Emergency Fund"; break;
			case "HousingA" : errField_txt = "Housing"; break;
			case "ChildcareA" : errField_txt = "Childcare"; break;
			case "Education_FundA" : errField_txt = "Education Fund"; break;
			case "Survivors_IncomeA" : errField_txt = "Survivors Income"; break;
			case "Special_NeedsA" : errField_txt = "Special Needs"; break;
			case "CashCheckingA" : errField_txt = "Checking Accounts"; break;
			case "CashSavingsA" : errField_txt = "Savings Accounts"; break;
			case "CashCDA" : errField_txt = "CD's"; break;
			case "CashMoneyMarketA" : errField_txt = "Money Market"; break;
			case "InvestmentAcctA" : errField_txt = "Investment Acct's"; break;
			case "Retirement_FundsA" : errField_txt = "Retirement Acct's"; break;
			case "Retirement_FundsAnnuitiesA" : errField_txt = "Annuities"; break;
			case "Current_LI_BenefitsA" : errField_txt = "Life Insurance"; break;
			case "OtherA" : errField_txt = "Other Assests"; break;
			}
			
			$$('button.editbtn_needs').setProperty('disabled','true');    /* Disable inputs/buttons */
			$$('button.editbtn_assets').setProperty('disabled','true');
			$$('button.assets_editbtn_needs').setProperty('disabled','true');
			$$('button.next').setProperty('disabled','true');
			$$('button.submit').setProperty('disabled','true');
			$$('button.print_results').setProperty('disabled','true');
			
	/* display error */
			holdField.style.background = "url(images/text_bck_error.gif) no-repeat";
			if(controlSet == 'needs') {
				$$('input.needsTextInput').setProperty('disabled','true');  /* disable all fields/buttons */
				$(field).removeProperty('disabled'); 						            /* remove disabled from errored field */
				$$('.hint').setStyle('display','none');                     /* remove any hint */
				$$('.needs_error').setStyle('position','absolute');         /* position and show error */
				$$('.needs_error').setStyle('display','block');
				var errmess = "<p>Please enter a valid number in field: <b>" + errField_txt + "</b> to proceed.</p>";
				$('needs_error').innerHTML = errmess;
			}
			if(controlSet == 'assets') {
				$$('input.assetsTextInput').setProperty('disabled','true');
				$(field).removeProperty('disabled'); 						            /* remove disabled from errored field */
				$$('.assets_error').setStyle('position','absolute');
				$$('.assets_error').setStyle('display','block');
				var errmess = "<p>Please enter a valid number in field: <b>" + errField_txt + "</b> to proceed.</p>";
				$('assets_error').innerHTML = errmess;
			}
			$(field).focus();
			$(field).select();
	/* back to normal */
		} else {
			holdField.style.background = "url(images/text_bck.gif) no-repeat";
			$$('input.needsTextInput').removeProperty('disabled');          /* remove disabled propery from all */    
			$$('input.assetsTextInput').removeProperty('disabled');
			$$('button.editbtn_needs').removeProperty('disabled');
			$$('button.editbtn_assets').removeProperty('disabled');
			$$('button.assets_editbtn_needs').removeProperty('disabled');
			$$('button.print_results').removeProperty('disabled');
			$$('button.next').removeProperty('disabled');
			$$('button.submit').removeProperty('disabled');
			if(controlSet == 'needs') {                                      
				holdField.parentNode.getElementsByTagName("span")[0].style.display = "inline";  /* bring back hint */
				$$('.needs_error').setStyle('display','none');                 /* clear error */
			} else {
				$$('.assets_error').setStyle('display','none');
			}
		}
	}
	
// Change text color of progress bar to white
	function textChange() {
		if(progress == '34'){
			// Set the chart to not be visible here
			$$('.needsprogess').tween('color','#FFF')
			$$('.assetsprogess').tween('color','#CCC')
			$$('.resultsprogess').tween('color','#CCC')
		}
		if(progress == '67'){
			// Set the chart to not be visible here
			$$('.assetsprogess').tween('color','#FFF')
			$$('.needsprogess').tween('color','#FFF')
			$$('.resultsprogess').tween('color','#CCC')
		}
		if(progress == '100'){
			$$('.resultsprogess').tween('color','#FFF')
			$$('.needsprogess').tween('color','#FFF')
			$$('.assetsprogess').tween('color','#FFF')
		}
	}

	// Set up collection for formatting of textfields
	// Currently sets all to a mathmatical value of '0'
	// can use the class for more actions based on user interaction
	var needsTextInput = new dwDefaults({
		collection: $$('input.needsTextInput')	
	});
	var helperCalcInput = new dwDefaults({
		collection: $$('input.helperCalcInput')
	});
	var helperCalcInput = new dwDefaults({
		collection: $$('input.helperCalcInput_noDollar')
	});
	var assetsTextInput = new dwDefaults({
		collection: $$('input.assetsTextInput')
	});
	var disabledTextInput = new dwDefaults({
		collection: $$('input.disabledTextInput')
	});
		
/* Creates Summary/Agent/Help Section */
/* Removed By request 06-11-2009
/* 'Temporary' removal : leave code intact
//	var tabs = new MGFX.Tabs('.summary_tabs','.summary_content',{
//		autoplay: false,
//		transitionDuration:500,
//		slideInterval:6000,
//		startIndex:0
//	});
/* End DOM Event */
});


/* ------------------------------------ */
/* ----------- Classes Begin ---------- */
/* ------------------------------------ */

/* Progress Bar Class  */
var dwProgressBar = new Class({
	Implements: [Events, Options],
	options: {
		container: $(document.body),
		boxID:'',
		percentageID:'',
		displayID:'',
		startPercentage: 0,
		displayText: false,
		speed:10,
		step:1,
		allowMore: false,
		progress:''
	},
	initialize: function(options) {
		//set options
		this.setOptions(options);
		//create elements
		this.createElements();
	},
	createElements: function() { //creates the box and percentage elements
		var box = new Element('div', { 
			id:this.options.boxID 
		});
		var perc = new Element('div', { 
			id:this.options.percentageID, 
			'style':'width:0px;' 
		});
		perc.inject(box);
		box.inject(this.options.container);
		if(this.options.displayText) { 
			var text = new Element('div', { 
				id:this.options.displayID 
			});
			text.inject(this.options.container);
		}
		this.set(this.options.startPercentage);
	},		
	calculate: function(percentage) { //calculates width in pixels from percentage
		return ($(this.options.boxID).getStyle('width').replace('px','') * (percentage / 100)).toInt();
	},		
	animate: function(go) { //animates the change in percentage
		var run = false;
		if(!this.options.allowMore && go > 100) { 
			go = 100; 
		}
		this.to = go.toInt();
		$(this.options.percentageID).set('morph', { 
			duration: this.options.speed,
			link:'cancel',
			onComplete: this.fireEvent(go == 100 ? 'complete' : 'change', [], this.options.speed)
		}).morph({
			width:this.calculate(go)
		});
		if(this.options.displayText) { 
			$(this.options.displayID).set('text', this.to + '%'); 
			progress = this.to
		}
	},	
	set: function(to) { //sets the percentage from its current state to desired percentage
		this.animate(to);
	},	
	step: function() { //steps a pre-determined percentage
		this.set(this.to + this.options.step);
	}
});
// Set calculator defaults
var dwDefaults = new Class({
	Implements: [Options],
	options: {
		collection: $$('input[type=text]')
	},	
	initialize: function(options) {
		this.setOptions(options);
		this.defaults();
	},
	// a method that does whatever you want
	// based on text field collects
	defaults: function() {
		this.options.collection.each(function(el) {
			el.set('value',el.get('rel'));
			el.addEvent('focus', function() { if(el.get('value') == el.get('rel')) { el.set('value',''); } });
			el.addEvent('blur', function() { if(el.get('value') == '') { el.set('value',el.get('rel')); } createSummary();});
		});
	}
});

/*
Author:luistar15, <leo020588 [at] gmail.com>
License:MIT License
Class noobSlide (rev.19-06-08)
*/
var noobSlide = new Class({
	initialize: function(params){
		this.items = params.items;
		this.mode = params.mode || 'horizontal';
		this.modes = {horizontal:['left','width'], vertical:['top','height']};
		this.size = params.size || 800;
		this.box = params.box.setStyle(this.modes[this.mode][1],(this.size*this.items.length)+'px');
		this.button_event = params.button_event || 'click';
		this.handle_event = params.handle_event || 'click';
		this.onWalk = params.onWalk || null;
		this.currentIndex = null;
		this.previousIndex = null;
		this.nextIndex = null;
		this.interval = params.interval || 5000;
		this.autoPlay = params.autoPlay || false;
		this._play = null;
		this.handles = params.handles || null;
		if(this.handles){
			this.addHandleButtons(this.handles);
		}
		this.buttons = {
			previous: [],
			next: [],
			play: [],
			playback: [],
			stop: [],
			nextKey: []
			//prevKey: []
		};
		if(params.addButtons){
			for(var action in params.addButtons){
				this.addActionButtons(action, $type(params.addButtons[action])=='array' ? params.addButtons[action] : [params.addButtons[action]]);
			}
		}
		this.fx = new Fx.Tween(this.box,$extend((params.fxOptions||{duration:500,wait:false}),{property:this.modes[this.mode][0]}));
		this.walk((params.startItem||0),true,true);
	},
	addHandleButtons: function(handles){
		for(var i=0;i<handles.length;i++){
			handles[i].addEvent(this.handle_event,this.walk.bind(this,[i,true]));
		}
	},
	addActionButtons: function(action,buttons){
		for(var i=0; i<buttons.length; i++){
			switch(action){
				case 'previous': buttons[i].addEvent(this.button_event,this.previous.bind(this,[true])); break;
				case 'next': buttons[i].addEvent(this.button_event,this.next.bind(this,[true])); break;


			}
			this.buttons[action].push(buttons[i]);
		}
	},
	previous: function(manual){
		this.walk((this.currentIndex>0 ? this.currentIndex-1 : this.items.length-1),manual);
	},

	next: function(manual){
		this.walk((this.currentIndex<this.items.length-1 ? this.currentIndex+1 : 0),manual);		
	},
	nextKey: function(manual){
		this.walk((this.currentIndex<this.items.length-1 ? this.currentIndex+1 : 0),manual);			
	},
	play: function(interval,direction,wait){
		this.stop();
		if(!wait){
			this[direction](false);
		}
		this._play = this[direction].periodical(interval,this,[false]);
	},
	stop: function(){
		$clear(this._play);
	},

	walk: function(item,manual,noFx){
		if(item!=this.currentIndex){
			this.currentIndex=item;
			this.previousIndex = this.currentIndex + (this.currentIndex>0 ? -1 : this.items.length-1);
			this.nextIndex = this.currentIndex + (this.currentIndex<this.items.length-1 ? 1 : 1-this.items.length);
			if(manual){
				this.stop();
			}
			if(noFx){
				this.fx.cancel().set((this.size*-this.currentIndex)+'px');
			}else{
				this.fx.start(this.size*-this.currentIndex);
			}
			if(manual && this.autoPlay){
				this.play(this.interval,'next',true);
			}
			if(this.onWalk){
				this.onWalk((this.items[this.currentIndex] || null), (this.handles && this.handles[this.currentIndex] ? this.handles[this.currentIndex] : null));
			}
		}
	}
});
// Summary/Agent/Help Class
//var MGFX=MGFX||{};MGFX.Rotater=new Class({
//						Implements:[Options,Events],
//						options:{
//							slideInterval:4000,
//							transitionDuration:1000,
//							startIndex:1,
//							autoplay:false
//							},
//							initialize:function(B,A){
//								this.setOptions(A);
//								this.slides=$$(B);
//								this.createFx();
//								this.showSlide(this.options.startIndex);
//								if(this.slides.length<2){
//									this.options.autoplay=false
//								}
//								if(this.options.autoplay){
//									this.autoplay()
//								}
//								return this
//							},
//							toElement:function(){
//								return this.container
//							},
//							createFx:function(){
//								if(!this.slideFx){
//									this.slideFx=new Fx.Elements(this.slides,{duration:this.options.transitionDuration})}
//									this.slides.each(function(A){A.setStyle("opacity",0)})},
//									showSlide:function(B){
//										var A={};
//										this.slides.each(function(C,D){
//											if(D==B&&D!=this.currentSlide){
//												A[D.toString()]={opacity:1}
//												}else{
//													A[D.toString()]={opacity:0}}},this);
//										this.fireEvent("onShowSlide",B);
//										this.currentSlide=B;
//										this.slideFx.start(A);
//										return this
//								},
//								autoplay:function(){
//									this.slideshowInt=this.rotate.periodical(this.options.slideInterval,this);
//									this.fireEvent("onAutoPlay");
//									return this
//								},
//								stop:function(){
//									$clear(this.slideshowInt);
//									this.fireEvent("onStop");
//									return this
//								},
//								rotate:function(){
//									current=this.currentSlide;
//									next=(current+1>=this.slides.length)?0:current+1;
//									this.showSlide(next);
//									this.fireEvent("onRotate",next);
//									return this}
//							});
//var MGFX=MGFX||{};
//MGFX.Tabs=new Class({Extends:MGFX.Rotater,options:{slideInterval:6000,transitionDuration:300,autoplay:false},
//										initialize:function(B,C,A){
//											this.tabs=$$(B+" li");
//											this.tabsA=$$(B+" a");
//											this.createTabs();
//											this.parent(C,A);
//											return this
//										},
//										createTabs:function(){
//											// disableThis must match the link for the initial slide
//											var disableThis = "agent_a";
//
//											this.tabsA.each(function(B,A){
//												B.addEvent("click",function(C){
//												C.stop();
//													if ( disableThis == B.id ) {
//													//Do Nothing
//													} else {
//														this.showSlide(A);
//													}
//												disableThis = '';
//												disableThis = B.id;
//												this.stop()}.bind(this))}.bind(this)
//																							 
//										)},
//										activateTab:function(A){
//											this.tabs.removeClass("current");
//											this.tabsA.removeClass("current");
//											this.tabs[A].addClass("current");
//											this.tabsA[A].addClass("current")
//										},
//										showSlide:function(A){
//											this.activateTab(A);
//											this.parent(A);
//											return this}
//
//});