(function($, Cufon) {
    var dirtyworkz = $('.dirtyworkz a'),
        host = 'http://datweekaz.com',
        slideSpeed = 1000,
        currentPage,
        loaded = false,
        $links = $('#nav li a'),
        $maincontent = $('#maincontent'),
        $content = $('#content');

    $content.hide();
    $(function() {
        Cufon.replace('h2, #nav, #footer .links');
        $(window).bind('hashchange', loadPage);
        $(window).trigger('hashchange');
    });


    $('a[href^="http://datweekaz.com"]').live('click', function(e) {
        var href = $(this).attr('href').replace(host, '');
        $.bbq.pushState({page: href});
        updateNav(href);
        e.preventDefault();
    });

    function loadPage() {
        var page = $.bbq.getState('page') || '/pages';
        if (page === currentPage) return;
        currentPage = page;
        $content.slideUp(slideSpeed, function() {
            $maincontent.load(page + '/' + ' .postwrapper', function() {
                setTimeout(function() {
                    Cufon.replace('h2');
                    $content.slideDown(slideSpeed);
                    if ($('div.wpcf7 > form').length)
                        initContactForm();
                }, 500);
                loaded = true;
            });
        });
        updateNav(page);
    }

    function updateNav(page) {
        $links.parents().removeClass('active');
    }

    function initContactForm() {
        try {
            if (typeof _wpcf7 == 'undefined' || _wpcf7 === null)
                _wpcf7 = {};

            _wpcf7 = $.extend({ cached: 0 }, _wpcf7);
            $('div.wpcf7 > form').ajaxForm({
                    beforeSubmit: function(formData, jqForm, options) {
                        jqForm.wpcf7ClearResponseOutput();
                        jqForm.find('img.ajax-loader').css({ visibility: 'visible' });
                        return true;
                    },
                    beforeSerialize: function(jqForm, options) {
                        jqForm.find('.wpcf7-use-title-as-watermark.watermark').each(function(i, n) {
                            $(n).val('');
                        });
                        return true;
                    },
                    data: { '_wpcf7_is_ajax_call': 1 },
                    dataType: 'json',
                    success: function(data) {
                        var ro = $(data.into).find('div.wpcf7-response-output');
                        $(data.into).wpcf7ClearResponseOutput();

                        if (data.invalids) {
                            $.each(data.invalids, function(i, n) {
                                $(data.into).find(n.into).wpcf7NotValidTip(n.message);
                            });
                            ro.addClass('wpcf7-validation-errors');
                        }

                        if (data.captcha)
                            $(data.into).wpcf7RefillCaptcha(data.captcha);

                        if (data.quiz)
                            $(data.into).wpcf7RefillQuiz(data.quiz);

                        if (1 == data.spam)
                            ro.addClass('wpcf7-spam-blocked');

                        if (1 == data.mailSent) {
                            $(data.into).find('form').resetForm().clearForm();
                            ro.addClass('wpcf7-mail-sent-ok');

                            if (data.onSentOk)
                                $.each(data.onSentOk, function(i, n) {
                                    eval(n)
                                });
                        } else {
                            ro.addClass('wpcf7-mail-sent-ng');
                        }

                        if (data.onSubmit)
                            $.each(data.onSubmit, function(i, n) {
                                eval(n)
                            });

                        $(data.into).find('.wpcf7-use-title-as-watermark.watermark').each(function(i, n) {
                            $(n).val($(n).attr('title'));
                        });

                        ro.append(data.message).slideDown('fast');
                    }
                });

            $('div.wpcf7 > form').each(function(i, n) {
                if (_wpcf7.cached)
                    $(n).wpcf7OnloadRefill();

                $(n).wpcf7ToggleSubmit();

                $(n).find('.wpcf7-acceptance').click(function() {
                    $(n).wpcf7ToggleSubmit();
                });

                $(n).find('.wpcf7-exclusive-checkbox').each(function(i, n) {
                    $(n).find('input:checkbox').click(function() {
                        $(n).find('input:checkbox').not(this).removeAttr('checked');
                    });
                });

                $(n).find('.wpcf7-use-title-as-watermark').each(function(i, n) {
                    var input = $(n);
                    input.val(input.attr('title'));
                    input.addClass('watermark');

                    input.focus(function() {
                        if ($(this).hasClass('watermark'))
                            $(this).val('').removeClass('watermark');
                    });

                    input.blur(function() {
                        if ('' == $(this).val())
                            $(this).val($(this).attr('title')).addClass('watermark');
                    });
                });
            });

        } catch (e) {
        }
    }

    $.fn.wpcf7ToggleSubmit = function() {
        return this.each(function() {
            var form = $(this);
            if (this.tagName.toLowerCase() != 'form')
                form = $(this).find('form').first();

            if (form.hasClass('wpcf7-acceptance-as-validation'))
                return;

            var submit = form.find('input:submit');
            if (! submit.length) return;

            var acceptances = form.find('input:checkbox.wpcf7-acceptance');
            if (! acceptances.length) return;

            submit.removeAttr('disabled');
            acceptances.each(function(i, n) {
                n = $(n);
                if (n.hasClass('wpcf7-invert') && n.is(':checked')
                    || ! n.hasClass('wpcf7-invert') && ! n.is(':checked'))
                    submit.attr('disabled', 'disabled');
            });
        });
    };

    $.fn.wpcf7NotValidTip = function(message) {
        return this.each(function() {
            var into = $(this);
            into.append('<span class="wpcf7-not-valid-tip">' + message + '</span>');
            $('span.wpcf7-not-valid-tip').mouseover(function() {
                $(this).fadeOut('fast');
            });
            into.find(':input').mouseover(function() {
                into.find('.wpcf7-not-valid-tip').not(':hidden').fadeOut('fast');
            });
            into.find(':input').focus(function() {
                into.find('.wpcf7-not-valid-tip').not(':hidden').fadeOut('fast');
            });
        });
    };

    $.fn.wpcf7OnloadRefill = function() {
        return this.each(function() {
            var url = $(this).attr('action');
            if (0 < url.indexOf('#'))
                url = url.substr(0, url.indexOf('#'));

            var id = $(this).find('input[name="_wpcf7"]').val();
            var unitTag = $(this).find('input[name="_wpcf7_unit_tag"]').val();

            $.getJSON(url,
                { _wpcf7_is_ajax_call: 1, _wpcf7: id },
                function(data) {
                    if (data && data.captcha)
                        $('#' + unitTag).wpcf7RefillCaptcha(data.captcha);

                    if (data && data.quiz)
                        $('#' + unitTag).wpcf7RefillQuiz(data.quiz);
                }
            );
        });
    };

    $.fn.wpcf7RefillCaptcha = function(captcha) {
        return this.each(function() {
            var form = $(this);

            $.each(captcha, function(i, n) {
                form.find(':input[name="' + i + '"]').clearFields();
                form.find('img.wpcf7-captcha-' + i).attr('src', n);
                var match = /([0-9]+)\.(png|gif|jpeg)$/.exec(n);
                form.find('input:hidden[name="_wpcf7_captcha_challenge_' + i + '"]').attr('value', match[1]);
            });
        });
    };

    $.fn.wpcf7RefillQuiz = function(quiz) {
        return this.each(function() {
            var form = $(this);

            $.each(quiz, function(i, n) {
                form.find(':input[name="' + i + '"]').clearFields();
                form.find(':input[name="' + i + '"]').siblings('span.wpcf7-quiz-label').text(n[0]);
                form.find('input:hidden[name="_wpcf7_quiz_answer_' + i + '"]').attr('value', n[1]);
            });
        });
    };

    $.fn.wpcf7ClearResponseOutput = function() {
        return this.each(function() {
            $(this).find('div.wpcf7-response-output').hide().empty()
                .removeClass('wpcf7-mail-sent-ok wpcf7-mail-sent-ng wpcf7-validation-errors wpcf7-spam-blocked');
            $(this).find('span.wpcf7-not-valid-tip').remove();
            $(this).find('img.ajax-loader').css({ visibility: 'hidden' });
        });
    };
})(jQuery, Cufon);

