function show_errors(field, errorbox) {
	if(errorbox) {
		$(field).up('form').down('.error-box').show();
		
		if($(field).up('form').down('.done-box')) { $(field).up('form').down('.done-box').hide(); }

		if(!$('error-'+field)) {
			$(field).up('form').down('.error-box').down('ul').insert('<li id="error-'+field+'">'+$(field).title+'</li>');
		}
	}
}

function hide_errors(field, errorbox) {
	if(errorbox) {
		if($('error-'+field)) {
			$('error-'+field).remove();
		}
		if($(field).up('form').down('.error-box').down('ul').empty()) {
			$(field).up('form').down('.error-box').hide();
		}
	}
}

function validate_fields(fields, event, errorbox) {
	fields.each(function(field) {
		if($F(field).blank()) {
			event.stop();
			$(field).addClassName('error');
			show_errors(field, errorbox);
		} else if($F(field) == $(field).title) {
			event.stop();
			$(field).addClassName('error');
		} else {
			hide_errors(field, errorbox);
			$(field).removeClassName('error');
			return true;
		}
	});
}

function validate_passwords(pass1, pass2, event) {
	if($F(pass1) != $F(pass2)) {
		event.stop();
		$(pass1).addClassName('error');
		$(pass2).addClassName('error');
		show_errors(pass2, true);
	} else {
		/*if(errorbox) {
			if($('error-'+field)) { $('error-'+field).remove(); }
		}*/
		$(pass1).removeClassName('error');
		$(pass2).removeClassName('error');
		return true;
	}
}

function validate_email(fields, event, errorbox) {
	var filter = /^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/;

	fields.each(function(field) {
		if($F(field).blank()) {
			event.stop();
			$(field).addClassName('error');
			show_errors(field, errorbox);
		} else if(!filter.test($F(field))) {
			event.stop();
			$(field).addClassName('error');
			show_errors(field, errorbox);
		} else {
			hide_errors(field, errorbox);
			$(field).removeClassName('error');
			return true;
		}
	});
}

function validate_date(fields, event) {
	var filter = /^((((0?[1-9]|[12]\d|3[01])[\.\-\/](0?[13578]|1[02])[\.\-\/]((1[6-9]|[2-9]\d)?\d{2}))|((0?[1-9]|[12]\d|30)[\.\-\/](0?[13456789]|1[012])[\.\-\/]((1[6-9]|[2-9]\d)?\d{2}))|((0?[1-9]|1\d|2[0-8])[\.\-\/]0?2[\.\-\/]((1[6-9]|[2-9]\d)?\d{2}))|(29[\.\-\/]0?2[\.\-\/]((1[6-9]|[2-9]\d)?(0[48]|[2468][048]|[13579][26])|((16|[2468][048]|[3579][26])00)|00)))|(((0[1-9]|[12]\d|3[01])(0[13578]|1[02])((1[6-9]|[2-9]\d)?\d{2}))|((0[1-9]|[12]\d|30)(0[13456789]|1[012])((1[6-9]|[2-9]\d)?\d{2}))|((0[1-9]|1\d|2[0-8])02((1[6-9]|[2-9]\d)?\d{2}))|(2902((1[6-9]|[2-9]\d)?(0[48]|[2468][048]|[13579][26])|((16|[2468][048]|[3579][26])00)|00))))$/;

	fields.each(function(field) {
		if($F(field).blank()) {
			event.stop();
			$(field).up('div').addClassName('error');
			$(field).up('form').down('.all-required').setStyle({color: '#c60707'});
		} else if(!filter.test($F(field))) {
			event.stop();
			$(field).up('div').addClassName('error');
			$(field).up('form').down('.all-required').setStyle({color: '#c60707'});
		} else {
			$(field).up('div').removeClassName('error');
			return true;
		}
	});
}

function validate_username(fields, event) {
	var filter = /[^a-z0-9_-]/i;

	fields.each(function(field) {
		if($F(field).blank()) {
			event.stop();
			$(field).addClassName('error');
		} else if(filter.test($F(field))) {
			event.stop();
			$(field).addClassName('error');
		} else if($(field).hasClassName('not')) {
			event.stop();
			$(field).addClassName('error');
		} else {
			$(field).removeClassName('error');
			return true;
		}
	});
}

function validate_checkbox(fields, event) {
	fields.each(function(field) {
		if(!$(field).checked) {
			event.stop();
			$(field).next('span').addClassName('error');
		} else {
			$(field).next('span').removeClassName('error');
			return true;
		}
	});
}

function validate_select(fields, event, errorbox) {
	fields.each(function(field) {
		if($F(field).blank()) {
			event.stop();
			$(field).addClassName('error');
			show_errors(field, errorbox);
		} else {
			hide_errors(field, errorbox);
			$(field).removeClassName('error');
			return true;
		}
	});
}

function validate_file(fields, event) {
	fields.each(function(field) {
		var file = $F(field);
		var ext = file.split('.').last();
		
		if($F(field).blank()) {
			event.stop();
			$(field).addClassName('error');
			$(field).up('form').down('.error-box').show();

			if(!$('error-'+field)) {
				$(field).up('form').down('.error-box').down('ul').insert('<li id="error-'+field+'">'+$(field).title+'</li>');
			}
		} else if(ext != 'jpg' && ext != 'JPG') {
			event.stop();
			$(field).addClassName('error');
		} else {
			if($('error-'+field)) { $('error-'+field).remove(); }
			$(field).removeClassName('error');
			return true;
		}
	});
}

document.observe('dom:loaded', function() {
	$$('.toggle').each(function (elm) {
		elm.observe('focus', function (event) {
			elm.up('div').removeClassName('error');
			if (elm.value == elm.title) {
				elm.up('div').addClassName('focus');
				elm.value = '';
			}
		}).observe('blur', function (event) {
			if (elm.value == '') {
				elm.up('div').removeClassName('focus');
				elm.value = elm.title;
			}
		});
	});

	$$('.do-hover').each(function(elm) {
		elm.observe('mouseover', function() {
			elm.addClassName('hover');
		}).observe('mouseout', function() {
			elm.removeClassName('hover');
		});
	});
});