var ButtonAjaxify = Class.create({
	initialize: function(buttons) {
		this.buttons = $$(buttons);	
		this.startObserving();
	},

	startObserving: function(){
		for(var i=0; i < this.buttons.length; i++){
			this.buttons[i].observe('click', this.openModel.bindAsEventListener(this, this.buttons[i]));
			this.buttons[i].observe('dblclick', this.noAction.bindAsEventListener(this, this.buttons[i]));
		}
	},
	/*
	disableClick: function(button){
		button.stopObserving('click');
		button.observe('click', this.noAction.bindAsEventListener(this, button));
	},
	
	restartObserving: function(button){
		button.stopObserving('click');
		button.observe('click', this.openModel.bindAsEventListener(this, button));
	},
	*/
	openModel: function(e, button){
		e.stop();
		myModal.get().open(button);
	},
	
	
	noAction: function(e, button){
		e.stop();
	}
	
});

var showLoadingButton = function(button){
	var icon = button.down().down('span');
	if (!icon.hasClassName('loading'))
		icon.addClassName('loading');
};

var showLoadingSubmitButton = function(button){
	var btn = $(button);
	btn.disabled = true;
	var icon = btn.down().down().down('span');
	if (!icon.hasClassName('loading'))
		icon.addClassName('loading');
};

var hideLoadingButton = function(button){
	var icon = button.down().down('span');
	if (icon.hasClassName('loading'))
		icon.removeClassName('loading');
};

var validationVerify = function(id){
	var myRules = new Array;
	var form;
	var customFun = myCustomErrorDisplayFunction;
	switch(id){
		case "ver-ask-info":
			form = "form-ask-info";
			myRules = [
	 	               "required,name,Campo obrigatório!",
		               "valid_email,email,E-mail inválido!",
		               "if:email=,required,phone,Telefone ou e-mail obrigatório!",
		               "required,course,Campo obrigatório"
	               ];
			break;
		case "ver-session":
			form = "form-session";
			myRules = [
			           "required,name,Campo obrigatório!",
			           "valid_email,email,E-mail inválido!",
			           "if:email=,required,phone,Telefone ou e-mail obrigatório!",
			           "required,course,Campo obrigatório",
			           "required,date,Campo obrigatório!",
			           "required,hour,Campo obrigatório!"
               ];
			break;
		case "ver-enrolle":
			form = "form-enrolle";
			myRules = [
			           "required,name,Campo obrigatório!",
			           "valid_email,email,E-mail inválido!",
			           "if:email=,required,phone,Telefone ou e-mail obrigatório!",
			           "required,course,Campo obrigatório",
			           "required,date,Campo obrigatório!",
			           "required,hour,Campo obrigatório!"
               ];
			break;
		case "ver-contact":
			form = "form-contact";
			myRules = [
	 	               "required,name,Campo obrigatório!",
		               "valid_email,email,E-mail inválido!",
		               "if:email=,required,phone,Telefone ou e-mail obrigatório!",
		               "required,questions,Campo obrigatório"
	               ];
			break;
	}
	
	if(id.indexOf('ver')>=0){
		new RSV({
	        formID: form,
	        customErrorHandler: customFun,
	        rules: myRules
	      });
	}
}

function customContact(){
	return true;
}

function myCustomErrorDisplayFunction(f, errorInfo)
{
		
		var parts;
		var fieldName;
	
		$$('span.error').invoke('hide');
		
		
        if(errorInfo.length != 0){
        	showMessageModal();
        }
               
        
        for (var i=0; i<errorInfo.length; i++)
        {
        	fieldName = errorInfo[i][0].name;
        	$(fieldName + "_error").update(errorInfo[i][1]);
        	$(fieldName + "_error").show();
        }

        if (errorInfo.length == 0){
        	if(f.id=="form-contact"){
        		//submitAjaxInPlace(f);
        		showLoadingSubmitButton('btn-submit');
        		return true;
        	}else{
        		submitAjax(f);
        	}
        }

        return false;
}

function showMessageModal(){
	myModal.get().grow('rsvErrors');
}

function toggleBlind(element){
	if(!$(element).visible() || Object.isUndefined($(element).visible())){
		new Effect.BlindDown(element, {duration:0.3});
	}
	else
	  new Effect.BlindUp(element, {duration:0.3});
}

function submitAjaxInPlace(form){
	var formId = form.id;
	showLoadingSubmitButton('btn-submit');
	
	$(formId).request({
		parameters : {
			format : 'html',
			onComplete: function(response){
							$(formId).update(response.responseText);
						}
		}
	});
}

function submitAjax(form){
	var formId = form.id;
	showLoadingSubmitButton('btn-submit');
	
	$(formId).request({
		onComplete: function(response){
			myModal.get().update(response.responseText);
		},
		parameters : {
			format : 'html'
		}
	});
}

function print(a){
	var url = $(a).readAttribute('href');
	var mywindow = window.open (url, "mywindow", "menubar=0,resizable=0,width=500,height=350,toolbar=0,scrollbars=1,status=0, location=0");
}

function focusBox(box){
	var val = $F(box);
	if (val=='Introduza o seu e-mail')
		box.value = '';
	$(box).addClassName('using');
}

function blurBox(box){
	var val = $F(box);
	if (val==''){
		box.value = 'Introduza o seu e-mail';
		if($(box).hasClassName('using'))
			$(box).removeClassName('using');
	}
}