$(function() {
    $.ajaxSetup({
        url:'/company-newsletter/subscribe',
        //url:'/Work/Echo/ProducedByNature/trunk/public_html/company-newsletter/subscribe',
		type: 'POST',
		dataType: 'json'
	});
 
    
    function getCookie(name, _default) {
        if (_default == undefined)
            _default = '';
        
        var cookie = $.cookie(name) == null ? _default : $.cookie(name);
        while (cookie.indexOf('+') != -1)
            cookie = cookie.replace('+', ' ');
        
        return cookie;
    }
    
    var loadCookies = function() {
        $('div.newsletter').find('input[type=text]').each(function(i, n) {
            var n = $(n);
            if (n.attr('name') != undefined && n.attr('value') == undefined) {
                n.attr('value', getCookie(n.attr('name')));
            }
        });
    }();
    
    function saveCookies() {
        $('div.newsletter').find('input[type=text]').each(function(i, n) {
            var n = $(n);
            if (n.attr('name') != undefined) {
                $.cookie(n.attr('name'), n.attr('value'));
            }
        });
    };
    
    function formData() {
        var output = {};
        
        $('div.newsletter').find('input[type=text], input[type=hidden]').each(function(i, n) {
            var obj = n;
            var n = $(n);
            if (n.attr('name') != undefined) {
                var value = n.attr('value');
                
                if (n.attr('type') == 'checkbox') {
                    value = obj.checked == true ? 1 : 0;
                }
                
                output[n.attr('name')] = value;
            }
        });
        
        return output;
    }
    
    function validate() {
        var result = true;
        
        $('div.newsletter').find('input[type=text]').each(function(i, n) {
            if ($(n).attr('name') != undefined && n.className.indexOf('required') != -1) {
                if ($(n).attr('value') == undefined || 
                    $(n).attr('value').indexOf('@') == -1 ||
                    $(n).attr('value').indexOf('.') == -1) {
                        
                    result = false;
                    $(n).css('background', '#f66');
                } else {
                    $(n).css('background', '#fff');
                }
            }
        });
        
        return result;
    }
    
    function showProcessing() {
        var div = $('div.newsletter');
        var overlay = $('<p>').css('font-weight', 'bold').html('Sending...');
        div.append(overlay);
    }
    
    function showSuccess(re) {
        var div = $('div.newsletter');
        div.empty();
        $('div.overlay').remove();
        
        var msg = 'Thank you. You will be receiving newsletters shortly.';
        
        div.append($('<p>').html(msg));
    }
    
    if ($('div.newsletter').length > 0) {
        $('div.newsletter input#subscribe').click(function() {
            if (validate()) {
                saveCookies();
                showProcessing();
                $.ajax({
                    data:formData(),
                    success:function(re) {
                        showSuccess(re);
                    }
                });
            }
        });
    }
    
});
