/*
*		formsubmitter 1.1
*
*		plugin jquery per l' invio delle form
*
*		file richiesti: 
*		jquery.ui.js
*		effects-core.js
*		jquery.form.js
*		jquery.scrollto.js
*		jquery.js
*
*		michele michele.deangelis@gmail.com
*		daniele argento.bianco@gmail.com
*/



/*funzione da rivedere*/
function showOnClick(element)
{
	if(element == 'frm_dettagli_richiesta')
	{		
		$j('#'+element).slideToggle('slow');
		if($j('#frm_dettagli_preventivo:visible')) $j('#frm_dettagli_preventivo').slideToggle('slow');
		document.forms['guestbooksign'].frm_tipo_richiesta.value = 'richiesta informazioni';

	}
	else
	{

		$j('#'+element).slideToggle('slow');
		if($j('#frm_dettagli_richiesta:visible')) $j('#frm_dettagli_richiesta').slideToggle('slow');
		document.forms['guestbooksign'].frm_tipo_richiesta.value = 'richiesta preventivo';	
	}
}

(function($){ 
    
    
    $.fn.formSubmitter = function(settings){
    settings = jQuery.extend({
			bgerror: '#ffee5b',
			rescroll: false,
			submitclass: 'submit',
			useajax: true
    },settings);    
    
	var jQueryMatchedObj = this;
   function __initialize()
    {          	       
       	$('.' + settings.submitclass, jQueryMatchedObj).bind('click',executeformSubmitter);       
	    return false;
    }

	function HasNoValue(string)
	{
		if(string==null || string == undefined || string == '')
		return true;
		else return false;
	}
	
	function validateFormElement(elem)
	{
						
		if(HasNoValue(elem.attr('value')))
		{
			errorOnFormElement(elem);
			return true;
		}
		else 
		{
			elem.css({'background':'#ffffff'});
			return false;
		}
	}
	
	function validateHiddenElement(element)
	{
	
		if(validateFormElement(element))
		{
			errorOnFormElement('fieldset_dettagli_richiesta');
			errorOnFormElement('fieldset_dettagli_preventivo');
			return true;
		}	
		else return false;
	}
	
	function validateCheckBoxElement(elem)
	{
		if(HasNoValue(elem.attr('checked')))
		{
			errorOnFormElement(elem.parent());			
			return true;
		}
		else
		{
			elem.parent().css({'background':'#ffffff'});
			return false;
		}
	}
	
	function validateFormEmail(elem)
	{
		var emailRegexp = RegExp('^[A-Za-z0-9._-]+[@]([A-Za-z0-9-]+[.])+([A-za-z]{2,4})$', 'i');
			
		if (emailRegexp.test(elem.attr('value')))
		{
			elem.css({'background':'#ffffff'});
			return false;
		}
		else
		{
			errorOnFormElement(elem);
			return true;
		}
	}
	
	function errorOnFormElement(elem)
	{
		elem.css({'position':'relative'});
		elem.css({'background':settings.bgerror});		
		elem.animate({left: '-10'},120).animate({left: '+10'},120).animate({left: '-10'},120).animate({left: '0'},120);		
	}
	
	/* 
	    funzione per la submission delle form con validazione dei campi da template
	    versione 1.0
	*/
	function executeformSubmitter()
	{	    
	    var form = $(jQueryMatchedObj);
	    var error_found = 0;
	    	    
	    $('.some_errors',form).slideUp();
	    
	    /* inizio validazione */    
		    $('input[validatelike="text"]', form).each(function()
		    {
		        if(validateFormElement($(this))) error_found++;
		    });
		    $('input[validatelike="email"]', form).each(function()
		    {
		        if(validateFormEmail($(this))) error_found++;
		    });
		    
		    
		    $('input[validatelike="checkbox"]', form).each(function()
		    {
		        if(validateCheckBoxElement($(this))) error_found++;
		    });


			if ($('input[validatelike="at_least_checkbox"]', form).length>0)
			{			
		       var at_least = false;
			    $('input[validatelike="at_least_checkbox"]', form).each(function()
			    {		     
			       if(!at_least)
			       {
				        if(!validateCheckBoxElement($(this))) at_least = true;
			        }
			    });
			    if (!at_least) error_found++;
			}
		    
		    $('select[validatelike="select"]', form).each(function()
		    {
		        if(validateFormElement($(this))) error_found++;
		    });    	    
	    /* fine validazione */
	    
	    
		if(error_found==0)
		{
				
			
				
				if (settings.useajax)
				{
				
					//setto parametro antispam
					var d = new Date()
					param = d.getTime();		
					$('input[name="secure"]',form).val(param);
	
					$j('#form_email_all_fields',form).slideUp('slow');
					
					if (settings.rescroll) $.scrollTo('#main');
		
					var options = { 
					
						beforeSubmit: function()
						{
							$j('#form_email_loading',form).slideDown('slow');					
						},
						resetForm: true,
						error: function()
						{
							toConsole('Errore di invio');
							return false;
						},
					    success: function() 
					    { 			    			        
		
							$j('#form_email_loading',form).slideUp('slow');
							$j('#form_email_thanks',form).slideDown('slow');		
						  return false; 			        
					        
					    } 
					}; 					 
					form.ajaxForm(options); 
				    form.ajaxSubmit(options); 
				  }
				  else
				  {
				  	form.submit();
				  }	    	
		}
		else $('.some_errors',form).slideDown();
			
	    
	    return false;
	}
        
    return __initialize();
    
    };
    
})(jQuery);