
var expertQuestion = Class.create({

	formUrl	: '?do=expertquestionform',
	sendUrl	: '?do=savegeneralform',
	formId	: 'eq_form',
	cntrId	: 'eq_form_cntr',
	panel	: null,
	email	: null,
	name	: null,
	
	initialize: function(args) {
		
		this.email = args.email;
		//this.formurl += this.email;
	},
	
	getForm: function(name, encode_name) {

		var instance	= this;
		this.name		= name;

		new Ajax.Request(this.formUrl,{
			method: 'post',
			parameters: {email: this.email, name: encode_name},
			onSuccess: function(transport){												
				instance.showForm(transport);				
			},
			onFailure: function(){
				
			}
		});
	},

	showForm: function(transport){
		
		var instance	= this;
		this.panel		= overlay.find("eq_panel");
				
		if(!this.panel) {
			// Instantiate the Dialog
			this.panel = new YAHOO.widget.Dialog("eq_panel", {
				width 				: "400px",
				fixedcenter			: true,
				close				: true,
				draggable			: true,
				modal				: true,
				zindex				: 10000,
				visible 			: false,
				constraintoviewport	: true,
				buttons : [ {text: "Verzenden", handler: function(){instance.sendForm()}, isDefault:true},
							 {text: "Sluiten", handler:function() {this.hide();}}]
			});			
			this.panel.setHeader("Stel een vraag aan " + this.name);
			this.panel.setBody("<div id=\""+instance.cntrId+"\">"+transport.responseText+"</div>");
									
			this.panel.renderEvent.subscribe(function(){
				this.panel.getButtons()[0].addClass("text save");
				this.panel.getButtons()[1].addClass("text cancel");
			});
			
			overlay.register(this.panel);
			this.panel.render(document.body);
		}else{
			this.panel.getButtons()[0].style.display = 'inline';
			this.panel.setBody("<div id=\""+instance.cntrId+"\">"+transport.responseText+"</div>");
		}

		this.panel.show();
	},

	sendForm: function(){
		
		if(!this.emailValid($('emailfrom'))){
			$('error_msg').update('Vul alstublieft uw e-mailadres in. Bijvoorbeeld naam@domein.nl');
			$('error_msg').show();
			return;
		}
		
		if(!this.nameValid($('namefrom'))){			
			$('error_msg').update('Vul alstublieft uw naam in. Alleen letters alstublieft.');
			$('error_msg').show();
			return;
		}
		if($('question').value == ''){
			$('error_msg').update('Vul alstublieft uw vraag in.');
			$('error_msg').show();
			return;
		}
			
		$('error_msg').hide();

		var instance = this;

		new Ajax.Request(this.sendUrl,{
			method: 'post',
			parameters: $(instance.formId).serialize(),
			onSuccess: function(transport){
				instance.displaySucces(transport);
			},
			onFailure: function(){
				instance.displayFailure(transport);
			}
		});
	},

	displaySucces: function(transport){		
		var result = transport.responseText.split('<ajax')[0];

		if(result == 'false'){//request succeeded but sending mail failed
			this.displayFailure(null);
		} else {
			this.panel.getButtons()[0].style.display = 'none';

			var response = '<p>Uw email is verstuurd.</p>';
				
			$(this.cntrId).update(response);
		}

	},

	displayFailure: function(transport){
		var response = '<p>Er is helaas iets mis gegaan.<br /><br />Het is niet gelukt uw mail te versturen.<br />Probeert u het altublieft opnieuw.</p>';

		$('error_msg').update(response);
		$('error_msg').show();
	},

	emailValid: function(field){
		field.value	= field.value.replace(/\s/g, "");
		var value	= field.value;

		if(value.split("@").length > 2) {
			return false;
		};

		return /\w{1,}[@][\w\-]{1,}([.]([\w\-]{1,})){1,3}$/.test(value);
	},

	nameValid: function(field){
		var value = field.value;
		var ValidChars = ".-' ";
		var valid = true;

		if(value == '') return false;
		//loop through entered value
		for (i = 0; i < value.length; i++) {
			c = value.charAt(i);

			//if lower and uppercase are similar
			if (c.toUpperCase() == c.toLowerCase()) {
				if(ValidChars.indexOf(c) == -1) {//check against valid chars string
					valid = false;
				}
			}
		}
		
		return valid;
	}
});

