if(!$chk(window['wb'])) {
	var wb = {};
}


/**
 * Make sure all button get a hover class
 * on mouseover
 */
wb.setupButtons = function() {
	$$('button').each ( function(btn) {
		btn.addEvent('mouseover', btn.addClass.bind(btn, 'hover'));
		btn.addEvent('mouseout', btn.removeClass.bind(btn, 'hover'));
	} );
};
window.addEvent('domready', wb.setupButtons);


/**
 * Methods for field selection deselection
 */
wb.autoClear = function(evt, field) {
	if(this.get('value') == this.settings.original) {
		this.set('value', '');
	}
};

wb.autoClearReset = function(evt, field) {
	if(this.get('value') == this.settings.original || this.get('value') == '') {
		this.set('value', this.settings.original);
		this.set('empty',true);
	} else {
		this.set('empty', false);
	}
};
wb.autoClearValidation = function(evt, field) {
	if(field.get('value') == field.settings.original || field.get('value') == '') {
		field.set('empty',true);
	} else {
		field.set('empty', false);
	}	
};
wb.setupAutoClearFields = function() {
	$$('input.autoclear').each( function(field) {
		field['settings'] = {};
		field['settings'].original = field.get('value');
		field.set('empty',true);
		field.addEvent('focus', wb.autoClear.bindWithEvent(field, field));
		field.addEvent('blur', wb.autoClearReset.bindWithEvent(field, field));
		field.addEvent('change', wb.autoClearReset.bindWithEvent(field, field));
		field.addEvent('keydown', wb.autoClearValidation.bindWithEvent(field, field));
		field.addEvent('keyup', wb.autoClearValidation.bindWithEvent(field, field));

		// Add field stuff
		$(field.form).addEvent('submit', wb.checkEmptyField.bindWithEvent(window, field));
	} );
	
	
};
wb.checkEmptyField = function(evt, field) {
	if(field['settings'].original == field.get('value')) {
		field.set('value', '');
	}
	return true;
}
window.addEvent('domready', wb.setupAutoClearFields);


/**
 * TextArea maxlength
 */
wb.textAreaMaxLengthValidate = function(evt, area, max_length) {
	
	var e = new Event(evt);
	var current_content = area.get('value');
	var current_length  = current_content.length;

	if(current_length > max_length) {
		if(e.type == "keydown" || e.type == "keydown") {
			return false;
		}
		var allowed_string = current_content.substring(0, max_length);
		area.set('value', allowed_string);
	}
}

wb.setupMaxlengthTextAreas = function() {
	var textAreas = document.getElements('textarea[maxlength!=]');
	textAreas.each( function(ta) {
		var max_length_obj = ta.getAttribute('maxlength');
		if ($chk(max_length_obj)){
			var max_length = max_length_obj.toInt();
			if(max_length > 0) {
				// Add events to fields
				ta.addEvents({
					'keydown':	wb.textAreaMaxLengthValidate.bindWithEvent(ta, [ta, max_length]),
					'keyup':	wb.textAreaMaxLengthValidate.bindWithEvent(ta, [ta, max_length]),
					'change':	wb.textAreaMaxLengthValidate.bindWithEvent(ta, [ta, max_length]),
					'blur':		wb.textAreaMaxLengthValidate.bindWithEvent(ta, [ta, max_length])
					});
			}
		}
	});
}

/**
 * Set the value of the checkboxes to the input.
 */
wb.joincheckboxes = function (target_id, src){
	var targetelement = $(target_id);
	if ($chk(targetelement)){
		var srcels = src.split('|');
		var val = [];
		srcels.each(function(el){
			var box = $('checkbox_'+el);
			if (box.checked){
				val.push(box.value);
			}
		});
		targetelement.set('value', val.join('|'));
	}
}
window.addEvent('domready', wb.setupMaxlengthTextAreas);
