// Function to add Facebook feed (part of WordPress widget)
function add_facebook_feed() {
    var feed = document.getElementById('facebook');
    if(feed) {
        var script = document.createElement('script');
        var position = document.getElementsByTagName('script')[0];
        script.src = '//connect.facebook.net/en_US/all.js#xfbml=1';
        position.parentNode.insertBefore(script, position);
    }
}

// Function to add Twitter feed (part of WordPress widget)
function add_twitter_feed() {
    var twitter = $('#twitter');
    if(twitter) {
        $.ajax({
            url: twitter.data('url'),
            success: function(feed) {
                twitter.fadeOut(400, function() {
                    twitter.html(feed);
                    twitter.fadeIn();
                });
            }
        });
    }
}

// Function to add validation to forms with class "validate", uses inputs with classes "required" and "email"
function add_validation() {
    $('#comment-form').addClass('validate'); // add validation to standard WP comment form
    var form_elem = $('.validate');
    form_elem.each(function() {
        var req = $(this).find('.required');
        req.each(function() {
            var req_id = $(this).attr('id');
            var req_label = $('label[for="' + req_id + '"]');
            var error = $('<span id="error-' + req_id + '" class="error">required</span>');
            if(req_label.length > 0) {
                req_label.append(error);
            } else {
                $(this).before(error);
            }
            error.before(' ');
            error.hide();
        });
        $(this).submit(function(event) {
            var count = 0;
            req.each(function() {
                var message = $('#error-' + $(this).attr('id'));
                if($(this).val() === '') {
                    message.show();
                    count++;
                } else if($(this).hasClass('email')) {
                    var x = /[\(\)<\>\,\;\:\\\"\[\]]/;
                    var y = /^[^@]+@[^@.]+\.[^@]*\w\w$/;
                    if($(this).val().match(x) || (!y.test($(this).val()))) {
                        message.text('invalid email address');
                        message.show();
                        count++;
                    } else {
                        message.hide();
                    }
                } else {
                    message.hide();
                }
            });
            if(count > 0) {
                event.preventDefault();
            }
        });
    });
}

// Function to add placeholders to text inputs with class "placeholder"
function add_placeholder() {
    var forms = $('form');
    forms.each(function(i) {
        var inputs = $(this).find('input[type="text"].placeholder');
        if(inputs.length > 0) {
            var class_name = 'ph';
            inputs.each(function() {
                var label = forms.eq(i).find('label[for="' + $(this).attr('id') + '"]');
                var text = label.text();
                label.hide();
                $(this).val(text);
                $(this).addClass(class_name);
                $(this).focus(function() {
                    $(this).removeClass(class_name);
                    if($(this).val() === text) {
                        $(this).val('');
                    }
                });
                $(this).blur(function() {
                    if($(this).val() === '' || $(this).val() === text) {
                        $(this).val(text);
                        $(this).addClass(class_name);
                    }
                });
            });
        }
    });
}

// Functions to run on load
window.onload = function() {
    add_facebook_feed();
    add_twitter_feed();
    add_validation();
    add_placeholder();
};

