﻿var Formsubmit = function($){
    var priv = {
    
        submitButtonClicked : false,
        errorHolderSendAcco : '#send-errormsg',
        errorHolderQuestionEliza : '#questionError',
        errorHolderNewsletter : '#newsletter-error',
        errorHolderSendReaction : '#sendreaction-errormsg',
    
        successSendAcco : function (result){	        
	        // reset input boxes
	        $('#toEmails').val('');
            $('#txtMessage').val('');
            $('#txtFromName').val('');
            $('#txtFromEmail').val('');
	        $('#sendAccoContent').hide();
	        $('#sendAccoMessage').show();
	        
	        priv.submitButtonClicked = false;
	    },
	    
	    errorSendAcco : function (result){
	        priv.showError('Er is een fout opgetreden', priv.errorHolderSendAcco);
	        
	        priv.submitButtonClicked = false;
	    },
	    
	    successSendReaction : function (result){	        
	        // reset input boxes
            $('#txtReaction').val('');
            $('#txtReactionFromName').val('');
            $('#txtReactionFromEmail').val('');
	        $('#sendReactionContent').hide();
	        $('#sendReactionMessage').show();
	        
	        priv.submitButtonClicked = false;
	    },
	    
	    errorSendReaction : function (result){
	        priv.showError('Er is een fout opgetreden', priv.errorHolderSendReaction);
	        
	        priv.submitButtonClicked = false;
	    },
	    
	    successQuestionEliza : function (result){	        
	        // reset input boxes
	        $('#txtName').val('');
            $('#txtRequest').val('');
            $('#dlResponseType').val('none');
            $('#txtEmail').val('');
	        $('#txtPhoneDay').val('');
	        $('#txtPhoneNight').val('');
	        $('#txtPhoneMobile').val('');
	        $('#tblQuestionEliza .email').hide();
            $('#tblQuestionEliza .phone').hide();
	        $('#questionSuccess').show();
	        
	        priv.submitButtonClicked = false;
	    },
	    
	    errorQuestionEliza : function (result){
	        priv.showError('Er is een fout opgetreden', priv.errorHolderQuestionEliza);
	        
	        priv.submitButtonClicked = false;
	    },
	    
	    successNewsletter : function (result){	        
	        // reset input boxes
            $('#email').val('');
            $('#newsletter-success').html(result);
            $('#newsletter-success').show();
	        
            priv.submitButtonClicked = false;
            $('img.loader').hide();
	    },
	    
	    errorNewsletter : function (result){
	        priv.showError('Er is een fout opgetreden. Probeer het later nog eens.', priv.errorHolderNewsletter);
	        
	        priv.submitButtonClicked = false;
	        $('img.loader').hide();
	    },
	    
	    showError : function (errorMsg, errorHolder) {
	        priv.submitButtonClicked = false;
	        $(errorHolder).show();
	        $(errorHolder).html(errorMsg);
	    }
    };
    return {
    
        sendReaction : function(){
            if(!priv.submitButtonClicked){ // make sure the email isnt send multiple times
                priv.submitButtonClicked = true;
                
                // input values
                var message = $('#txtReaction').val();
                var fromName = $('#txtReactionFromName').val();
                var fromEmail = $('#txtReactionFromEmail').val();
                
                var reg = /^([\w-]+(?:\.[\w-]+)*)@((?:[\w-]+\.)*\w[\w-]{0,66})\.([a-z]{2,6}(?:\.[a-z]{2})?)$/i;
                if(message == ''){
                    priv.showError('Gelieve een mening in te vullen.', priv.errorHolderSendReaction);
                }
                else if(fromEmail == '' || !reg.test(fromEmail)){
                    priv.showError('Het veld "je email" is niet correct ingevuld. Er mogen alleen letters en cijfers in en geen andere tekens.', priv.errorHolderSendReaction);
                }
                else {
                    $.ajax({
                        type: "POST",
                        url: resources.path_prefix + '/utilpages/ajax-sendreaction.ashx',
                        data: 'message='+message+'&fromName='+fromName+'&fromEmail='+fromEmail,
                        async: true,
            			
                        success : priv.successSendReaction,
                        error : priv.errorSendReaction
                    });
                }
            }
        },
    
        sendAccommodation : function(accoId){
            if(!priv.submitButtonClicked){ // make sure the email isnt send multiple times
                priv.submitButtonClicked = true;
                
                // input values
                var toEmails = $('#toEmails').val();
                var message = $('#txtMessage').val();
                var fromName = $('#txtFromName').val();
                var fromEmail = $('#txtFromEmail').val();
                
                // email regex
                var reg = /^([\w-]+(?:\.[\w-]+)*)@((?:[\w-]+\.)*\w[\w-]{0,66})\.([a-z]{2,6}(?:\.[a-z]{2})?)$/i;
                var incorrectEmail = false;
                var arrtoEmails = toEmails.split(',');
                for(var i=0;i<arrtoEmails.length;i++){
                    if (arrtoEmails[i] != '' && !reg.test(arrtoEmails[i])) {
                        incorrectEmail = true;
                        break;
                    }
                }
                
                if(toEmails == '' || incorrectEmail){
	                priv.showError('Het veld "stuur naar email" is niet correct ingevuld. Er mogen alleen letters en cijfers in en geen andere tekens.', priv.errorHolderSendAcco);
	            }
	            else if(fromEmail == '' || !reg.test(fromEmail)){
	                priv.showError('Het veld "uw email" is niet correct ingevuld. Er mogen alleen letters en cijfers in en geen andere tekens.', priv.errorHolderSendAcco);
	            }
	            else {
	                $.ajax({
		                type: "POST",
		                url: resources.path_prefix + '/utilpages/sendaccommodation.ashx',
			            data: 'toEmails='+toEmails+'&message='+message+'&fromName='+fromName+'&fromEmail='+fromEmail+'&accoId='+accoId,
			            async: true,
        				
		                success : priv.successSendAcco,
			            error : priv.errorSendAcco
		            });
	            }
	        }
         },
         
         submitElizaQuestion : function(){
            if(!priv.submitButtonClicked){
                priv.submitButtonClicked = true;
                
                $('#questionSuccess').hide();
                
                // input values
                var txtName = $('#txtName').val();
                var txtRequest = $('#txtRequest').val();
                var dlResponseType = $('#dlResponseType').val();
                var txtEmail = $('#txtEmail').val();
                var txtPhoneDay = $('#txtPhoneDay').val();
                var txtPhoneNight = $('#txtPhoneNight').val();
                var txtPhoneMobile = $('#txtPhoneMobile').val();
                
                // email regex
                var reg = /^([\w-]+(?:\.[\w-]+)*)@((?:[\w-]+\.)*\w[\w-]{0,66})\.([a-z]{2,6}(?:\.[a-z]{2})?)$/i;
                if(txtName == ''){
	                priv.showError('Het veld "Naam" is niet ingevuld.', priv.errorHolderQuestionEliza);
	            } else if(txtRequest == ''){
	                priv.showError('Het veld "Mijn vraag" is niet ingevuld.', priv.errorHolderQuestionEliza);
	            } else if(dlResponseType == 'none'){
	                priv.showError('De manier waarop je antwoord van Eliza wil ontvangen is niet ingevuld.', priv.errorHolderQuestionEliza);
	            } else if(dlResponseType == 'phone' && txtPhoneDay == '' && txtPhoneNight == '' && txtPhoneMobile == ''){
	                priv.showError('Vul een telefoonnummer in waarop je teruggebeld wilt worden.', priv.errorHolderQuestionEliza);
	            } else if(dlResponseType == 'email' && !reg.test(txtEmail)){
	                priv.showError('Vul een geldig emailadres in.', priv.errorHolderQuestionEliza);
	            } else {
	                $.ajax({
		                type: "POST",
		                url: resources.path_prefix + '/utilpages/questioneliza.ashx',
			            data: 'txtName='+txtName+'&txtRequest='+txtRequest+'&dlResponseType='+dlResponseType+'&txtEmail='+txtEmail+
			                  '&txtPhoneDay='+txtPhoneDay+'&txtPhoneNight='+txtPhoneNight+'&txtPhoneMobile='+txtPhoneMobile,
			            async: true,
        				
		                success : priv.successQuestionEliza,
			            error : priv.errorQuestionEliza
		            });
	            }
	        }
         },
         
         submitNewsletter : function(fid){
            if(!priv.submitButtonClicked){
                priv.submitButtonClicked = true;
                
                $('#newsletter-error').hide();
                $('#newsletter-success').hide();
                
                // input values
                var txtEmail = $('#email').val();
                
                // email regex
                var reg = /^([\w-]+(?:\.[\w-]+)*)@((?:[\w-]+\.)*\w[\w-]{0,66})\.([a-z]{2,6}(?:\.[a-z]{2})?)$/i;
                if(txtEmail == ''){
	                priv.showError('Het veld "E-mailadres" is niet ingevuld.', priv.errorHolderNewsletter);
	            } else if(!reg.test(txtEmail)){
	                priv.showError('Het veld "E-mailadres" is ongeldig.', priv.errorHolderNewsletter);
	            } else {	
	                $('img.loader').show();            
	                $.ajax({
		                type: "POST",
		                url: resources.path_prefix + '/utilpages/ajax-addnewsletter.ashx',
			            data: 'fid='+fid+'&email='+txtEmail,
			            async: true,
        				
		                success : priv.successNewsletter,
			            error : priv.errorNewsletter
		            });
	            }
	        }
         },
    
         OnReady : function(){
             if($('#tblQuestionEliza').length){
                // bind question response dropdown box
                $('#dlResponseType').bind('change', function(){
                    if($(this).val() == 'email'){
                        $('#tblQuestionEliza .email').show();
                        $('#tblQuestionEliza .phone').hide();
                    } else if($(this).val() == 'phone'){
                        $('#tblQuestionEliza .email').hide();
                        $('#tblQuestionEliza .phone').show();
                    } else {
                        $('#tblQuestionEliza .email').hide();
                        $('#tblQuestionEliza .phone').hide();
                    }
                });
                
                // bind question submit button
                $('#btnSubmit').bind('click', Formsubmit.submitElizaQuestion);
             }
         }
	    
    }
}(jQuery);
