
function Signup(el){
	var msg, errorMsg, password, email; 
	this.el = el;
	this.bodyEl = getEl('signup-form-bd');

	this.fields = [{"name":"firstname", "type":"text", "required":true},
					{"name":"middlename", "type":"text", "required":false},
					{"name":"lastname", "type":"text", "required":true},					
					{"name":"sex_id", "type":"select", "required":true},
					{"name":"phone", "type":"text", "required":false},					
					{"name":"mobile", "type":"text", "required":false},					
					{"name":"email", "type":"email", "required":true},
					{"name":"password", "type":"pass", "required":true},										
					{"name":"passwordVerify", "type":"passVerify", "required":true}]

	this.requiredMsg = '<b>Vet</b> gedrukte velden zijn verplicht.';
	this.errorMsg = '<b>Rood</b> gedrukte velden zijn onjuist ingevuld.';	

	this.resetForm = function(){
	 	for (var u=0;u<this.fields.length;u++){
			if (this.fields[u].type != 'select') getEl(this.fields[u].name).dom.value = '';
			else getEl(this.fields[u].name).dom.selectedIndex = 0;
			getEl('field-' + this.fields[u].name).removeClass('has-error');
		}
	}	

	this.areValidDetails = function(){
	 	var valid = true;
		for (var i=0;i<this.fields.length;i++){
		 	if (this.fields[i].required){
		 	 	if (!this.isValidField(this.fields[i])){
					getEl('field-' + this.fields[i].name).addClass('has-error');
					valid = valid && false;					
				} else {
					getEl('field-' + this.fields[i].name).removeClass('has-error');				
				}
			}
		}
		return valid;
	}

	this.isValidField = function(field){
	 	var valid = true;
	 	
		if (field.type != 'select') var value = getEl(field.name).dom.value;
		else var value = getEl(field.name).dom.selectedIndex;
		
		switch (field.type){
			case 'pass':
				if (value != '') {
					valid = true;
					password = value;
				} else valid = false;
				break;
			case 'passVerify':
				valid = (password == value);			
				break;				
			case 'select':
				valid = (value != 0);
				break;
			case 'email':
				valid = isValidEmail(value);
				email = value;		
				break;
			default:
				valid = (value != '');
		}
		return valid;
	}

	this.showErrors = function(){
	 	msg.setVisible(false);
	 	errorMsg.setVisible(true);		
	}

	msg = this.bodyEl.createChild({cls:'signup-msg', tag:'span'});
	msg.setVisibilityMode(YAHOO.ext.Element.DISPLAY);
	msg.dom.innerHTML = this.requiredMsg;

	errorMsg = this.bodyEl.createChild({cls:'signup-msg error-msg', tag:'span'});
	errorMsg.setVisibilityMode(YAHOO.ext.Element.DISPLAY);				
	errorMsg.setVisible(false);
	errorMsg.dom.innerHTML = this.errorMsg;
	
	var btn = getEl('signup-btn') || getEl('update-profile-btn');
	if (btn){
		btn.mon('click', function(e){
			e.preventDefault();		 
			if (!this.areValidDetails()){
				this.showErrors();
			} else {
			 	YAHOO.util.Connect.asyncRequest('post', 'index2.php?action=emailExists&email=' + email, {success: function(o,b){
					if (o.responseText.lastIndexOf('true') != -1){
					 	getEl('field-email').addClass('has-error');
						this.showErrors();
						YAHOO.ext.MessageBox.alert('Gegevens registreren', 'Dit email adres is reeds geregistreerd.');
					} else {
					 	if (btn.id == 'signup-btn') this.el.dom.submit();				
					 	else {
					 		YAHOO.util.Connect.setForm(this.el.dom);
					 		YAHOO.util.Connect.asyncRequest('POST', 'index2.php?action=updateProfile', {success: function(o,b){
								YAHOO.ext.MessageBox.alert('Profiel wijzigen', 'Uw veranderingen zijn succesvol opgeslagen.');	
							}})
						}
					}
				}.createDelegate(this)});
			}
		},this);
	}
}
