/*jslint white: false, onevar: true, undef: true, nomen: true, eqeqeq: true, plusplus: true, bitwise: true, regexp: false, strict: true, newcap: true, immed: true */
/*global $, jQuery, crashcycles */
"use strict";


cc.contactform = function() {

    var phone, mail, comments, activateSubmit, toggleDefaultVal;

    phone = $('#contact_form_phone');
    mail = $('#contact_form_email');
    comments = $('#contact_form_comments');

    $('form .submit').hide();
    $('.contactBox .coda-nav-left a').unbind('click').click(function(e){
        e.preventDefault();

        if(!$(this).hasClass('active')) {
           $('.contactform_errors').show().children('.output').text('Bitte eine Nachricht und gültige E-Mail oder Telefonnummer angeben')
           return;
        };

        $('.contactform_errors').hide();
        $('form').submit();
    });

    $('form').submit(function(e){

        e.preventDefault();
        var data, csrftoken;

        csrftoken = $('#contact_form__csrf_token').val();

        data = {
            'contact_form': {
                'phone':phone.val(),
                'email':mail.val(),
                'comments':comments.val(),
                '_csrf_token':csrftoken
            }
        };

        $('#contactform_loader').removeClass('hidden');
        $('.contactform_errors').hide().children('.output').text('');

        $.ajax({
          type: 'POST',
          url: './send.json',
          data: data,
          success: cc.contactform_sent,
          error: cc.contactform_sent,
          dataType: 'json'
        });

    });

    toggleDefaultVal = function(e) {
        var that = $(e.currentTarget), dv = that[0].defaultValue;
        if (that.val()=='') {
            that.val(dv);
            return;
        }
        if (that.val()==that[0].defaultValue) {
            that.val('');
        }
    }

    activateSubmit = function(e) {

        var c, m, p, active;

        active = false;
        c = [comments,$.trim(comments.val())];
        m = [mail,$.trim(mail.val())];
        p = [phone,$.trim(phone.val())];

        active = (c[1]==''||c[1]==c[0][0].defaultValue) ? false : true;
        active = ((!active||m[1]==''||m[1]==m[0][0].defaultValue)&&(c[1]==''||c[1]==c[0][0].defaultValue||p[1]==''||p[1]==p[0][0].defaultValue)) ? false : true;
        active = ((!active||p[1]==''||p[1]==p[0][0].defaultValue)&&(c[1]==''||c[1]==c[0][0].defaultValue||m[1]==''||m[1]==m[0][0].defaultValue)) ? false : true;

        if (active) {
            $('.contactBox .coda-nav-left a').addClass('active');
        } else {
            $('.contactBox .coda-nav-left a').removeClass('active');
        }
    };

    comments.keyup(activateSubmit).focus(toggleDefaultVal).blur(toggleDefaultVal);
    mail.keyup(activateSubmit);
    phone.keyup(activateSubmit);
}

cc.contactform_sent = function(data) {

    var error = '';

    $('#contactform_loader').addClass('hidden');

    if (data.errors) {
        $.each(data.errors, function(key, val) {
            if (key=='email') key = 'E-Mail';
            if (key=='comments') key = 'Nachricht';
            if (val=='Required.') val = 'Pflichtfeld';
            if (val=='Invalid.') val = 'Ungültig';
            if (error!='') {
                error +=', ';
            }
            error += key+': '+val;
        });
        $('.contactform_errors').show().children('.output').html(error);
        return;
    }

    if (data.status!='ok') {
        $('.contactform_errors').show().children('.output').html('Nachricht konnte nicht gesendet werden! Versuchen Sie es bitte erneut oder senden sie Ihre Nachricht direkt an <strong>info@crashcycles.ch</strong>');
        return;
    }

    if (data.status=='ok') {
        
        $('.contactBox .crashpoststamp').fadeIn();

        setTimeout(function(){
            $('.contactBox .coda-nav .tab1 a').click();
            $('.contactBox .crashpoststamp').fadeOut();
            $('#contact_form_phone').val($('#contact_form_phone')[0].defaultValue);
            $('#contact_form_email').val($('#contact_form_email')[0].defaultValue);
            $('#contact_form_comments').val($('#contact_form_comments')[0].defaultValue);
            $('.contactBox .coda-nav-left a').removeClass('active');
        }, 1000);
    }
}

// Init...
$().ready(cc.contactform);
