//- START OF BUILDERS CLASS ----------------------------------------------------
var HF_checkBox = new Class ({
	options: {
		checkBoxes			: false,
		elementRow			: false,
		label						: false,
		id							: false,		
		onClick					: function(eventType,element){
												var value = element.getElement(this.label).getText();
												value = value.trim();	
												HomeFinder.update(element.id, eventType, value);    //call homefinder.update
											}			
	},
//----------------------------------------------------------------------------	
	initialize: function(initValues){		
		this.setOptions(this.options, initValues);		
		this.elementRow = $$(this.options.elementRow);		
		this.checkBoxes = $$(this.options.checkBoxes);
		this.label = this.options.label;
		this.setUp(); 
		[].extend(this.checkBoxes).each(function(chk){ 				//hide all check boxes
			chk.getElement('input').setStyle('display', 'none');
		});
	},
//----------------------------------------------------------------------------	
	select: function(element){
		element.checkBox.addClass('selected');											
		element.checkBox.getElement('input').checked = 'checked';	
		this.fireEvent('onClick',['select',element]);
	},
//----------------------------------------------------------------------------	
	deselect: function(element){
		element.checkBox.getElement('input').checked = 'false';		
		element.checkBox.removeClass('selected');									
		this.fireEvent('onClick',['deselect',element]);
	},
//----------------------------------------------------------------------------	
	deactivate: function(element){
		if(element.hasClass('active')){
			element.removeClass('active');
		}
		if(element.checkBox.hasClass('selected')){
			element.checkBox.removeClass('selected');
			element.getElement('input').checked = 'false';	
		}
		element.addClass('deactivated');
		element.removeEvents(); 
		element.effect.start({ 'opacity': .3	}); 
	},
//----------------------------------------------------------------------------	
	activate: function(element){
		if(element.hasClass('deactivated')){
			element.removeClass('deactivated');
		}
		element.effect.start({ 'opacity': 1 });
		this.addRolloverEvents(element);
	},
//----------------------------------------------------------------------------		
	addRolloverEvents: function(element){
		element.checkBox = element.getElement('.checkBox');		//Get checkbox element of row	
		element.addEvent('click', function(){ 
			if (!element.checkBox.hasClass('selected')) { this.select(element); }
			else { this.deselect(element); }													
		}.bind(this));			
		element.addEvent('mouseover', function(){							//mouseover event
		element.effect.start({ 'background-color': element.getAttribute("overcolor") });
		}.bind(this));														 
		element.addEvent('mouseout', function(){					//mouseout animation
		element.effect.start({ 'background-color': element.getAttribute("outcolor") });
		}.bind(this));
	},
//----------------------------------------------------------------------------		
	setUp: function(){	
		this.elementRow.each(function(rowElement, i){
			rowElement.id = this.options.id;
			rowElement.effect = new Fx.Styles(rowElement, {wait: false, duration: 300});
			this.addRolloverEvents(rowElement);		
		}.bind(this));
	},
//----------------------------------------------------------------------------		
	update: function(array){
		this.elementRow.each(function(element,i){
			if((array[i] == 0) && (!element.hasClass('deactivated'))){
				this.deactivate(element);	
			}
			if((array[i] == 1) && (element.hasClass('deactivated'))){
				this.activate(element);			 
			}			
		}.bind(this));
	}
//----------------------------------------------------------------------------		
});			//End of Builders Class

HF_checkBox.implement(new Options);
HF_checkBox.implement(new Events);					
