var MT_Wait = 'Czekaj...';

function initAjaxForm(formId)
{
	var form = document.getElementById(formId);
	if (!form){
		return;
	}
	
	var formContainerId = formId+"__Container";
	var formContainer = document.getElementById( formContainerId );
	var divMess = document.createElement('div');
    var divMessId = formId + '-messages';
	var submitId = formId+'-submit';
    var submit = jQuery( "#"+submitId );
    	
    divMess.id = divMessId;
    form.appendChild(divMess);
    
        
    // prepare the form when the DOM is ready
    var options = {
        //target:       '#footer',   // target element(s) to be updated with server response
        beforeSubmit: showRequest,  // pre-submit callback
        success:      showResponse,  // post-submit callback
        // other available options:
        //url:       url         // override for form's 'action' attribute
        //type:      type        // 'get' or 'post', override for form's 'method' attribute
        //dataType:  null        // 'xml', 'script', or 'json' (expected server response type)
        clearForm: false,        // clear all form fields after successful submit
        resetForm: false        // reset the form after successful submit
        // jQuery.ajax options can be used here too, for example:
        //timeout:   3000
    };
    
    // bind to the form's submit event
    jQuery('#'+formId).submit(function() {
        jQuery(this).ajaxSubmit(options);
        // !!! Important !!!
        return false;
    });

    // pre-submit callback
    function showRequest(formData, jqForm, options) {

    	/** @todo: inject themen name from view */
    	var loaderImage = fwBaseUrl+"/public/themes/eurotax/img/form/"+formId+"_btn-loader.gif";
    	var image = new Image(); 
		image.src = loaderImage; 
		image.onload = function (evt) {
			submit.css({
				'backgroundImage': 'url(' + loaderImage +')',
				'backgroundRepeat': 'no-repeat',
				'backgroundPosition': 'top center'
			});
		};
		
		// If image not loaded
		image.onerror = function (evt) {
			submit.val( MT_Wait );
		};
		
		//submit.val(' ');
			
		return true;
    }

    // post-submit callback
    function showResponse(responseText, statusText)  {
    	form.style.backgroundColor = 'transparent';
        if(isRedirect(responseText)){
            
        	var url = responseText.replace('redirect=', '');
            window.location.href = url;
            
        } else {
        
        	var tmpDiv = jQuery(document.createElement('div')).html(responseText);        	
        	formContainer.innerHTML = tmpDiv.find("div#"+formContainerId).html();
        	initAjaxForm(formId);
        	contactFormValid();
        	setupFormView();
        	runJSMask();
        	ajaxCallbackHandlers(); // handler create in form/render/abstract
        	
        }
    }
    
    // check form response is redirect
    function isRedirect(sText) {
        var reRedirUrl = /redirect=/gi;
        return reRedirUrl.test(sText);
    }
}

/**
 * This function each all elements and setup hint
 * @return
 */
function setupViewJQueryTooltipForm(){
	jQuery('div.formElement').each(function(){
        var el = jQuery(this);
        var hint = el.find('.formElementHint');
        if(jQuery(hint).hasClass('.formElementHint')){
            hint.hide();
            jQuery(hint).wrap('<div class="formElementHintRel"></div>');
            jQuery(hint).wrap('<div class="formElementHintWrapper"></div>');
            jQuery(el).hover(function(){hint.show();}, function(){hint.hide();});
        }
    });
}
  