// PGX Form Class
var pgxForm = Class.create(PGX, {
	
	version: '0.1',
	
	// Init
	initialize: function() {
	},
	
	// Check
	check: function(form, dosubmit) {
		
		if ((typeof(dosubmit)=='undefined')) {
			dosubmit = true;
		}
		
		// Variables
		pgxForm = eval('pgxForm_' + form);
		check = true;
		
		// Fields
		fields = $(form).getElements();
		
		for(i = 0; i < fields.length; i++) {
			error = false;
			element = fields[i];
			required = $(element).readAttribute('required');
			
			// Write original className
			if (!$(element).readAttribute('orgClassName')) {
				$(element).writeAttribute('orgClassName', $(element).className);
			}
			
			// Set original className
			$(element).className = $(element).readAttribute('orgClassName');
			
			// Required
			if (required == 'true' && $(element).value == '' && $(element).type != 'checkbox') {
				check = false;
				error = true;
			}
			
			// Checkbox
			if (required == 'true' && $(element).type == 'checkbox') {
				if ($(element).checked == false) {
					check = false;
					error = true;
				}
			}
			
			// Mail
			if (required == 'email' && !this.email($(element).value)) {
				check = false;
				error = true;
			}
			
			// Required className
			if (error == true) {
				if (pgxForm.requiredClass) {
					tClassName = pgxForm.requiredClass;
					tClassName = tClassName.replace('{className}', $(element).readAttribute('orgClassName'));
					$(element).className = tClassName;
				}
			}
		}
						
		// Required Message
		if (check == false) {
			if (pgxForm.requiredElement) {
				$(pgxForm.requiredElement).innerHTML = pgxForm.requiredMessage;
			}
			if (!dosubmit) {
				return check;
			} else {	
				return;
			}
		}
		
		// Submit
		if (check == true) {
			if (!dosubmit) {
				return check;
			}
			if (pgxForm.submitFunction) {
				pgxForm.submitFunction();
				
				return;
			}
			
			$(form).submit();
		}		
	},
			
	// Email
	email: function(email) {
		filter=/^([\w-]+(?:\.[\w-]+)*)@((?:[\w-]+\.)*\w[\w-]{0,66})\.([a-z]{2,6}(?:\.[a-z]{2})?)$/i
		return filter.test(email);
	}

});

PGX.form = new pgxForm();