// JavaScript Document

function startforms (){
	var forms = $$('form');
	forms.each (function(el){
		start_field_events(el.getProperty('id'));
		el.addEvent('submit', function(e){
			if (!validateForm(el.id)){
				var event = new Event(e);
				event.stop();
			}
		});
	});
}

function start_field_events(id){
	var req_fields = $$('form#' + id + ' .req');
	req_fields.each (function(el){
		// duplicate fields to store current invalid values
		var curr = new Element('input').setProperty('type', 'hidden').setProperty('value', el.getProperty('value')).setProperty('id', el.getProperty('id') + '_dup');
		$(id).adopt(curr);
		//$(el).adopt(e);
		//alert (el);
		//el.setProperty ('rel', el.getProperty('value'));
		el.addEvent('focus', function(e){
			var dup = $(el.getProperty('id') + '_dup');
			if (el.getProperty('value') == dup.getProperty('value')){
				el.setProperty('value', '');
			} else {
				el.select();
			}
		});
	});
	var req_fields = $$('form#' + id + ' .req');
	req_fields.each (function(el){
		el.addEvent('blur', function(e){
			var dup = $(el.getProperty('id') + '_dup');
			var Error = verifyField(el.id);
			if (el.getProperty('value') == ''){
				el.setProperty('value', dup.getProperty('value'));
			}
		});
	});
}

function verifyField(id){
	var error = '';
	var type = '';
	var rel_content  = '';
	rel_content = $(id).getProperty('rel');
	var orig_value = $(id + '_dup').getProperty('value');
	if (rel_content){
		if (rel_content.indexOf('email') != -1){
			type = 'email';
		}
	}
	switch (type){
		case 'email':
			var value = $(id).value;
			var apos = value.indexOf("@");
			var dotpos = value.lastIndexOf(".");
			if (apos<1 || dotpos-apos<2){
				error += rel_content + '\r\n';
			}
			break;
		default:
			var value = $(id).value;
			if (!value || (orig_value == $(id).getProperty('value'))){
				if (rel_content){
					error += rel_content + '\r\n';
				} else {
					error = true;
				}
			}
			break;
	}
	var p = $(id).getParent();
	if (error){
		p.addClass ('invalid');
		p.removeClass('valid');
		/*var div = new Element('div');
		div.appendText('Error! Please complete this field!');
		div.injectAfter($(id));*/
	} else {
		p.addClass('valid');
		p.removeClass('invalid');
	}
	return error;
}

function validateForm(id){
	var main_error = '';
	var firstError = '';
	var fields = $$('form#' + id + ' .req');
	for (a=0; a<fields.length; a++){
		var Return = verifyField(fields[a].id)
		if (Return){
			main_error += Return;
			firstError = firstError ? firstError : fields[a].id;
		}
	}
	if (main_error){
		$(firstError).focus();
		alert (main_error);
		return false;
	}
	return true;
}

/*window.addEvent('domready', function(){
	startforms();
});*/