GoldmanSachs.RegionSelector = new Class({
	presets : {
		ITEM_CONTAINER_SELECTOR : '.gs_rs_location',
		RESET_BUTTON_SELECTOR: '.gs_rs_backButton',
		HED_SELECTOR : '.gs_rs_subHed',
		ITEM_SELECTOR : '.gs_rs_loc',
		SECOND_LIST_SELECTOR: '.gs_rs_list2',
		SELECTION_BLOCK_SELECTOR : '.gs_selectionBlock',
		SELECTION_BLOCK_REQUIRED_INPUT_SELECTOR : '.gs_rs_reqInput',
		SELECTION_BLOCK_ERROR_SELECTOR: '.gs_rs_errorMessage',
		SELECTION_BLOCK_SUBMIT_BUTTON_SELECTOR : '.gs_rs_goButton'
	},
	initialize: function (elem) {
		this.main = elem;
		this.mainTrans = new Fx.Style(this.main,'opacity',{duration: 300});
		this.main.setStyle('opacity', '0.0001');
		
//		(window.geko == true) ? this.main.setStyle('visibility', 'visibile'): null;
//		this.regions = [];
//		var locs = elem.getElements('.gs_rs_location');
//		for (var i=0,l=locs.length;i<l;i++) {
//			var loc = locs[i];
//			loc.hed = loc.getElements(this.presets.HED_SELECTOR);
//			loc.hed.addEvent('click', this.doSelectRegion.pass([loc], this));
//			loc.secondList = loc.getElements(this.presets.SECOND_LIST_SELECTOR)[0];
//			loc.items = loc.getElements(this.presets.ITEM_SELECTOR);
//			for (var j=0,ll = loc.items.length;j<ll;j++) {
//				var item = loc.items[j];
//				item.addEvent('click',this.doSelectItem.pass([loc, item],this));
//			}
//			this.regions.push(loc);
//		}
		
//		this.selectionBlock = elem.getElements(this.presets.SELECTION_BLOCK_SELECTOR)[0];
//		this.selectionBlock.inputs = this.selectionBlock.getElements(this.presets.SELECTION_BLOCK_REQUIRED_INPUT_SELECTOR);
//		this.selectionBlock.errorAlert = this.selectionBlock.getElements(this.presets.SELECTION_BLOCK_ERROR_SELECTOR)[0]
//		this.selectionBlock.getElements(this.presets.SELECTION_BLOCK_SUBMIT_BUTTON_SELECTOR)[0].addEvent('click', this.doTestForm.bind(this));
		
//		this.resetButton = this.main.getElements(this.presets.RESET_BUTTON_SELECTOR);
//		this.resetButton.addEvent('click', this.doReopen.bind(this));
//		this.resetButton.setStyle('color','#fff');
		
		this.main.addEvent('mouseenter', this.doShow.bind(this));
		this.main.addEvent('mouseleave', this.doReset.bind(this));
	},
	doShow : function () {
		this.mainTrans.stop();
		this.mainTrans.start(1);
	},
	doReset : function () {
		this.mainTrans.stop();
		this.mainTrans.start(0.0001);
//		for (var i = 0;i<this.regions.length;i++) {
//			var reg = this.regions[i];
//			reg.hed.setStyle('display', 'block');
//			for (var j = 0, l = reg.items.length;j<l;j++) {reg.items[j].setStyle('display', 'none');}
//		}
//		this.resetButton.setStyle('color','#fff');
		this.doHideForm();
	},
	doReopen : function () {
		for (var i = 0;i<this.regions.length;i++) {
			var reg = this.regions[i];
			reg.secondList.setStyle('clear','none');
			reg.hed.setStyle('display', 'block');
			for (var j = 0, l = reg.items.length;j<l;j++) {reg.items[j].setStyle('display', 'none');}
		}
		this.resetButton.setStyle('color','#fff');
		this.doHideForm();
	},
	doSelectRegion : function (selReg) {
		selReg.secondList.setStyle('clear','none');
		for (var i = 0, l = this.regions.length;i<l;i++) {
			var reg = this.regions[i];
			var displayVal = (reg == selReg) ? 'block' : 'none';
			reg.hed.setStyle('display',displayVal);
			for (var j = 0, ll = reg.items.length;j<ll;j++) {reg.items[j].setStyle('display',displayVal);}
		}
		this.resetButton.setStyle('color','#000');
	},
	doSelectItem : function (selReg, selCountry) {
		selReg.hed.setStyle('display','none');
		selReg.secondList.setStyle('clear','left');
		for (var i = 0, l = selReg.items.length;i<l;i++) {
			var item = selReg.items[i];	item.setStyle('display', (item == selCountry) ? 'block': 'none');}
		this.doShowForm();
	},
	doShowForm : function () {
		this.selectionBlock.setStyle('display', 'block');
	},
	doTestForm : function () {
		this.selectionBlock.errorAlert.setStyle('display','none');	
		for (var i=0, l=this.selectionBlock.inputs.length; i<l;i++) {
			if (this.selectionBlock.inputs[i].checked == false) {
				this.selectionBlock.errorAlert.setStyle('display','block');	
				return false;
			}
		}
		this.doReset();
		return true;
	},
	doHideForm : function () {
//		this.selectionBlock.errorAlert.setStyle('display','none');	
//		this.selectionBlock.setStyle('display', 'none');
	}
});
