var contact={
	
	formId:'contact-form',
	submitButtonId:'submit-button',
	objs:[
		  {id: 'name', type:'notEmpty', message:'Please give your name'},
		  {id:'email', type:'email', message:'Please use a valid email address'},
		  {id:'message', type:'notEmpty', message:'You must type a message'}
		  ],
	onSend: function(){},
	onSuccess: function(){},
	onValidationFail: function(){},
	onError: function(){},
	toolTips:'',

	errorObjs:[],
  	
	validateEmail: function(address){
		if( address.contains('.') && address.contains('@') ){
                       return true;
               }else{
                       return false;
               }
	}, 	
	validatePhoneNumber: function(num){
		if( num.length < 11 || num.indexOf('0') != 0 ) {
			return false;
		}else{
			return true;
		}
	},
 	validateNotEmpty: function(str){
		return str.length == 0 ? false : true;
  	},
	validate: function(ev){
		var e = new Event(ev);
		e.preventDefault();
		var d;
		var r = false;
		contact.errorObjs.length = 0;
		contact.tooltips = '';
		for(var i=0; i<contact.objs.length; i++){
			d = $(contact.objs[i].id).value;
			switch(contact.objs[i].type){
				case false:
					r = true;
					break;
				case 'notEmpty':
					r = contact.validateNotEmpty(d);
					break;
				case 'email':
					r = contact.validateEmail(d);
					break;
				case 'phoneNumber':
					r = contact.validatePhoneNumber(d);
					break;
			}
			if(r == false){	contact.errorObjs.push( { id:contact.objs[i].id, message:contact.objs[i].message } ); }
		}
		if( contact.errorObjs.length > 0 ){ 
			contact.onValidationFail(contact.errorObjs); 
		}else{
			var ajax = new Element('input', { 'type' : 'hidden', 'name' : 'ajax', 'value' : 'true' } );
			ajax.injectInside(contact.formId);
			$(contact.formId).send( { onComplete:contact.onSuccess, onRequest:contact.onSend, onFailure:contact.onError } );
		}
	},
	
	init: function(){
		$(contact.submitButtonId).addEvent('click', contact.validate);
	}
}


/********************EVENT MESSAGES HERE******************************************************************/

contact.onValidationFail = function(objs){
	$$( '#contact-form div' ).setStyles( {'border' : '', 'background-color': 'transparent' } );
       $$('.contact-form-validation-error').each( function(ele){ ele.setText(''); ele.setStyle( 'display', 'none' );  } );
        var div;
	for(var i=0; i<objs.length; i++){
                div = $(objs[i].id).getParent()
                div.setStyles( { 'border' :  '2px solid red', 'background-color' : '#ffffff' } );
		var p = div.getFirst();
		p.setText( objs[i].message );
               p.setStyle( 'display', 'block' );
		
		
	}
	//alert( "We have found errors in the information submitted.  Please fill in this missing information and resend");
}

contact.onSend = function(){
     $$( '#contact-form div' ).setStyles( {'border' : '', 'background-color': 'transparent' } );
      $$('.contact-form-validation-error').each( function(ele){ ele.setText(''); ele.setStyle( 'display', 'none' );  } );
	
	$('submit-button').setStyle( 'display', 'none' );
        $('loader-image').setStyle( 'display', 'block' );
       
}

contact.onError = function(){
       
        $('loader-image').setStyle('display', 'none');
	$('reset-button').setStyle('display', 'block');
	$('reset-button').addEvent('click', function (){
									//$('contact-form-message').setStyle('display', 'block');
									//$('contact-form-error').setStyle('display', 'none');
									//$('contact-form-success').setStyle('display', 'none');
									$$( '#contact-form input, textarea' ).removeProperty('readOnly');	
									$$( '#contact-form textarea, input' ).setOpacity(1);	
									//$$( '#contactForm p' ).setStyle('display', 'none');
									$( contact.formId ).reset();
									$('reset-button').setStyle('display', 'none');
                                                                        $('submit-button').setStyle('display', 'block'); 
                                                                        $('contact-form-message').setHTML('');
                                                                        $('contact-form-message').setText( 'Please use this form to contact the trust');
								 });
        $('contact-form-message').setHTML( "We apologise but, due to a technical fault, your message has not been sent.  Please either try again later or email us direct at <a href=\"mailto:info@taironatrust.org\">info@taironatrust.org</a>" );
        alert( "We apologise but, due to a technical fault, your message has not been sent.  Please either try again later or email us direct at info@taironatrust.org" );
}

contact.onSuccess = function( ob ){
	
	new Fx.Style( $('loader-image'), 'opacity', {transition:Fx.Transitions.linear}).start(1,0);
        if( ob == 'Error' ) { 
               contact.onError(); 
        }else{
               $$('#contact-form input, textarea').setProperty( 'readOnly', 'true' );
               $$('#contact-form input, textarea').setOpacity( 0.5 );
               $('submit-button').removeProperty('readOnly');
	       $('reset-button').setOpacity( 1 );
               $('submit-button').setOpacity( 1 );
	       $('reset-button').removeProperty( 'readOnly' );

        
	$('submit-button').setStyle('display', 'none');
        $('loader-image').setStyle( 'display', 'none' );
	$('reset-button').setStyle('display', 'block');
	$('reset-button').addEvent('click', function (){
										//$('contact-form-message').setStyle('display', 'block');
									       //$('contact-form-error').setStyle('display', 'none');
									       //$('contact-form-success').setStyle('display', 'none');
									       $$( '#contact-form input, textarea' ).removeProperty('readOnly');	
									       $$( '#contact-form textarea, input' ).setOpacity(1);	
									       //$$( '#contactForm p' ).setStyle('display', 'none');
									      $( contact.formId ).reset();
									      $('reset-button').setStyle('display', 'none');
                                                                             $('submit-button').setStyle('display', 'block'); 
                                                                            $('submit-button').setStyle('display', 'block'); 
									});
      alert( "Thank you for your message.  An email has been sent to you, confirming receipt.  If this does not arrive, please check that you have given us the correct email address.  Otherwise, a member of the Trust will be in touch shortly" );
   }
}

window.addEvent('domready', contact.init);
