$(document).ready(function()
{
    $('#js_error').hide();
    $('#contact').show();
    // selectors and variables
    var formselector 	= '#contact';
    var error		= '#error_contact';
    var emptypin	= 'Please fill all fields';
    var waitmessage	= 'Please wait ...';
    var terms		= 'terms';
    var errorClass	= 'error';	
    
    $(formselector).submit(function(event)
    {
	//var $form = $(this);
	var input = $(formselector).serializeArray();
	$('.'+errorClass).removeClass(errorClass);

	$.ajax(
        {
    	    url:	$(formselector).attr('action'),
            data:       input,
            type:       'post',
            beforeSend: function()
            {
                if($('input[name="_ts"]').val() == undefined)
                {
                    $.post('/token.do', { }, function(token)
                    {
                        $('<input type="hidden" name="_ts" value="'+token+'" />').appendTo(formselector);
                        $(formselector).submit();
                    });
                    return false;
                } else return true;
            },
            success:	function(data,status)
            {
                if(status == 'success')
                {
		    if(data.error)
		    {
			$.each(data.error, function(k,v) { $('[name="'+k+'"]').prev().addClass(errorClass); });
		    }
                    if(data.output)
                    {
                        if(data.output.error)
                        {
                            $(error).empty();
			    $.each(data.output.error, function(k,v) { $(error).append('<p>'+v+'</p>'); });
                            $(error).slideDown('slow');
                        }
			if(data.output.ok)
			{
			    $(formselector).hide();
			    $(error).hide();
			    $('.thankyou').fadeIn();
			}
                    }
                }
            },
            dataType:   'json',
            error:      function(XMLHttpRequest, textStatus, errorThrown) { $(error).html('JavaScript error: '+(textStatus ? textStatus : errorThrown+': '+XMLHttpRequest)); }
        });
        return false;
    });
});
