
var feedback = {};
var config_all;
feedback.init = function(config) {
    if (!(config.button && config.drop && config.popup))
        throw "invalid params";
    config.popup.find('form.feedback').ajaxForm({
        dataType:  'json',
        'beforeSubmit':function(){
                                    config.popup.addClass('loading');
		                            return true;
                       },
        'success': processJson,
		'error': feedback.error(config)
    });
    config_all = config

    config.button.colorbox({inline: true, href:"#"+config.popup[0].id, width: 560, height: 450, transition: "none", onComplete: function() { config.popup.removeClass('thanks'); config.popup.find('input[name=email]').focus();} })
};

function processJson(data){
    var text_div = config_all.popup.find('.text.error');
    var email_div = config_all.popup.find('.email.error');
    text_div.text('');
    email_div.text('');
    if (data.errors){
        if(data.errors.text){text_div.text(data.errors.text);}
        if(data.errors.email){email_div.text(data.errors.email);}
    }
    else{
        config_all.popup.removeClass('loading');
        config_all.popup.addClass('thanks');
        config_all.popup.find('textarea').val('');
        config_all.popup.find('input[name=subject]').val('');
        config_all.popup.delay(3000).queue( function(){ $.colorbox.close(); });
    }
}
feedback.done = function(config, data) {
    var text_div = config.popup.find('.text.error');
    var email_div = config.popup.find('.email.error');
    text_div.text('');
    email_div.text('');
    if (data.errors){
        if(data.errors.text){text_div.text(data.errors.text);}
        if(data.errors.email){email_div.text(data.errors.email);}
    }
    else{
        return function() {
            config.popup.removeClass('loading');
            config.popup.addClass('thanks');
            config.popup.find('textarea').val('');
            config.popup.find('input[name=subject]').val('');
            config.popup.delay(3000).queue( function(){ $.colorbox.close(); });
        }
    }
};


feedback.error = function(config) {
	return function (jqXHR, textStatus, errorThrown) {
        config.popup.find('.error.hiding').removeClass("hiding").text("There was a problem submitting your feedback.");
	};
};


