//ShowHide
//class added by KLB
fx.ShowHide = Class.create();
fx.ShowHide.prototype = {
	initialize: function(triggera, contenta, triggerb, contentb, triggerc, contentc, btnReset, form) {
		//bind elements
		this.triggera = triggera;
		this.contenta = contenta;
		this.triggerb = triggerb;
		this.contentb = contentb;
		this.triggerc = triggerc;
		this.contentc = contentc;
		this.btnReset = btnReset;
		this.form	  = form;
		
		//create combo, hide combo elements on init
		this.fxa = [];
		this.fxb = [];
		this.fxc = [];
		
		contenta.each(function(el, i){
			this.fxa[i] = new fx.Combo(el, {height: true, width: false, opacity: true, duration: 200});
			if(triggera.checked==false){this.fxa[i].toggle();}
		}.bind(this));
		
		if (contentb) {
			contentb.each(function(el, i){
				this.fxb[i] = new fx.Combo(el, {height: true, width: false, opacity: true, duration: 200});
				if(triggerb.checked==false){this.fxb[i].toggle();}
			}.bind(this));
		}
		
		if (contentc) {
			contentc.each(function(el, i){
				this.fxc[i] = new fx.Combo(el, {height: true, width: false, opacity: true, duration: 200});
				if(triggerc.checked==false){this.fxc[i].toggle();}
			}.bind(this));
		}

		//declare actions on events
		triggera.onclick = function(){
			this.evalForm();
			if (triggera.id == 'rdoLending') {
				hideNonlending2();
				var radId1 = ['rdoLending', 'rdoOrganization'];
				resetInputs(radId1);
			}
		}.bind(this);
		
		if (triggerb) {
			triggerb.onclick = function(){
				this.evalForm();
				if (triggerb.id == 'rdoNonLending') {
					testNonlending2();
					var radId2 = ['rdoNonLending', 'rdoOrganization2', 'receivedFor1'];
					resetInputs(radId2);
				}
			}.bind(this);
		}
		
		if (triggerc) {
			triggerc.onclick = function(){
				this.evalForm();
				if (triggerc.id == 'rdoSelfEndorser') {
					hideNonlending2();
					var radId3 = ['rdoSelfEndorser', 'receivedFor2'];
					resetInputs(radId3);
				}
			}.bind(this);
		}
		
		if (btnReset) {	
			btnReset.onclick = function(){
				this.form.reset();
				this.evalForm();
			}.bind(this);
		}
	},
	
	evalForm: function() {
		if (this.triggerb && this.triggerb.checked){
			for(i=0;i<this.contenta.length;i++) {if(this.contenta[i].style.height!='0px'){this.clearAndToggle(this.fxa[i]);}}
			if (this.contentc) {for(i=0;i<this.contentc.length;i++) {if(this.contentc[i].style.height!='0px'){this.clearAndToggle(this.fxc[i]);}}}
			if (this.contentb) {for(i=0;i<this.contentb.length;i++) {if(this.contentb[i].style.height=='0px'){this.clearAndToggle(this.fxb[i]);}}}
			
		} else if (this.triggera.checked) {
			
			for(i=0;i<this.contenta.length;i++ ){if(this.contenta[i].style.height=='0px'){this.clearAndToggle(this.fxa[i]);}}
			if (this.contentb) {for(i=0;i<this.contentb.length;i++) {if(this.contentb[i].style.height!='0px'){this.clearAndToggle(this.fxb[i]);}}}
			if (this.contentc) {for(i=0;i<this.contentc.length;i++) {if(this.contentc[i].style.height!='0px'){this.clearAndToggle(this.fxc[i]);}}}
			
		} else {
			for(i=0;i<this.contenta.length;i++) {if(this.contenta[i].style.height!='0px'){this.clearAndToggle(this.fxa[i]);}}
			if (this.contentb) {for(i=0;i<this.contentb.length;i++) {if(this.contentb[i].style.height!='0px'){this.clearAndToggle(this.fxb[i]);}}}
			if (this.contentc) {for(i=0;i<this.contentc.length;i++) {if(this.contentc[i].style.height=='0px'){this.clearAndToggle(this.fxc[i]);}}}
		}
	},

	clearAndToggle: function(el){
		el.clearTimer();
		el.toggle();
	}
}

//this function must be called from an onload event
function setShowHide() {
	/***********************************************************************************************************************
	SEARCH FORMS
	***********************************************************************************************************************/
	if (document.getElementById('rdoCandidate') && document.getElementById('rdoPAC')){
		
		var candidateTrigger = document.getElementById('rdoCandidate'); //there should be only one
		var candidateContent = document.getElementsByClassName('candidate'); //elements that fade in and out
		var pacTrigger = document.getElementById('rdoPAC'); //there should be only one
		var pacContent = document.getElementsByClassName('pac'); //containers that fade in and out
		
		var btnReset = document.getElementById('btnResetCandidates'); //there should be only one
		var form = document.getElementById('frmCandidates'); //there should be only one
		
		if(document.getElementById('rdoBoth')){
			var bothTrigger = document.getElementById('rdoBoth'); //there should be only one
			var myShowHide1 = new fx.ShowHide(
				candidateTrigger, candidateContent, pacTrigger, pacContent, bothTrigger, null, btnReset, form 
			);
		} else {
			var myShowHide1 = new fx.ShowHide(
				candidateTrigger, candidateContent, pacTrigger, pacContent, null, null, btnReset, form 
			);
		}
	}
	
	if (document.getElementById('rdoContributions') && document.getElementById('rdoExpenditures')){
	
		var contributionTrigger = document.getElementById('rdoContributions');
		var contributionContent = document.getElementsByClassName('contribution');
		var expenditureTrigger = document.getElementById('rdoExpenditures');
		var expenditureContent = document.getElementsByClassName('expenditure');
		
		var btnReset = document.getElementById('btnResetContributions');
		var form = document.getElementById('frmContributions');
		
		var myShowHide2 = new fx.ShowHide(
			contributionTrigger, contributionContent, expenditureTrigger, expenditureContent, null, null, btnReset, form
		);
	}
	
	if (document.getElementById('rdoReportCandidates')) {
		
		var reportCandidateTrigger = document.getElementById('rdoReportCandidates'); 
		var reportCandidateContent = document.getElementsByClassName('candidates'); 
		var reportPACTrigger = document.getElementById('rdoReportPAC'); 
		var reportBothTrigger = document.getElementById('rdoReportBoth'); 
		
		var btnReset = document.getElementById('btnResetReports'); 
		var form = document.getElementById('frmReports');
		
		var myShowHide3 = new fx.ShowHide(
			reportCandidateTrigger, reportCandidateContent, reportPACTrigger, null, reportBothTrigger, null, btnReset, form
		);
	}
	
	/***********************************************************************************************************************
	USER Report Forms
	***********************************************************************************************************************/
	if (document.getElementById('rdoIndividual')) {
		
		var individualTrigger = document.getElementById('rdoIndividual');
		var individualContent = document.getElementsByClassName('individual');
		var organizationTrigger = document.getElementById('rdoOrganization');
		
		var myShowHide4 = new fx.ShowHide(
			individualTrigger, individualContent, organizationTrigger, null, null, null, null, null
		);
	}
	
	if (document.getElementById('rdoIndividual2')) {
		
		var individualTrigger2 = document.getElementById('rdoIndividual2');
		var individualContent2 = document.getElementsByClassName('individual2');
		var organizationTrigger2 = document.getElementById('rdoOrganization2');
		
		var myShowHide4b = new fx.ShowHide(
			individualTrigger2, individualContent2, organizationTrigger2, null, null, null, null, null
		);
	}
	
	if (document.getElementById('rdoIndependent')) {
		
		var independentTrigger = document.getElementById('rdoIndependent');
		var independentContent = document.getElementsByClassName('independent');
		var inkindTrigger = document.getElementById('rdoInKind');
		var inkindContent = document.getElementsByClassName('inkind');
		var neitherTrigger = document.getElementById('rdoNeither');
		
		var myShowHide5 = new fx.ShowHide(
			independentTrigger, independentContent, inkindTrigger, inkindContent, neitherTrigger, null, null, null
		);
	}
	
	if (document.getElementById('rdoLending')) {
		
		var lendingTrigger = document.getElementById('rdoLending');
		var lendingContent = document.getElementsByClassName('lending');
		var nonlendingTrigger = document.getElementById('rdoNonLending');
		var nonlendingContent = document.getElementsByClassName('nonlending');
		var selfTrigger = document.getElementById('rdoSelfEndorser');
		var selfContent = document.getElementsByClassName('selfendorser');
		
		var myShowHide6 = new fx.ShowHide(
			lendingTrigger, lendingContent, nonlendingTrigger, nonlendingContent, selfTrigger, selfContent, null, null
		);
	}
	
	/***********************************************************************************************************************
	ADMIN Forms
	***********************************************************************************************************************/
	if (document.getElementById('rdoYes')) {
		
		var yesTrigger = document.getElementById('rdoYes');
		var yesContent = document.getElementsByClassName('yes');
		var noTrigger = document.getElementById('rdoNo');
		
		var myShowHide7 = new fx.ShowHide(
			yesTrigger, yesContent, noTrigger, null, null, null, null, null
		);
	}
		
}//end function