
$(document).ready(function () {
    $('<div>').prependTo('body').css({
        'background': 'url(helper/gridbg.gif) #333',
        'opacity': 0.3,
        'background-position': '0px 7px',
        'position': 'fixed',
        'zIndex': 1000,
        top: 0,
        left: 0,
        right: 0,
        bottom: 0
    }).bind('click', function () {
        $(this).fadeOut()
    }).hide();
    var init = function () {
        Cufon.replace('h1,h2,h3,h4');
        var current = location.hash.substr(3) || $('.slide')[0].id;
        $('.slide').not('#' + current).each(function () {
            $(this).hide()
        });
        $('.slide').css({
            position: 'absolute',
            top: 70,
            left: 0
        });
        $('#nav a[href=#' + current + ']').addClass('active');
        $('#nav a').bind('click', function () {
            $('#nav a').removeClass('active');
            $(this).addClass('active');
            var id = $(this).attr('href').substr(1);
            if (id != current) {
                $('#' + id).stop().css({
                    top: 10,
                    opacity: 0,
                    'z-index': 3
                }).show();
                $('#' + current).stop().animate({
                    top: 120,
                    opacity: 0
                }).css('zIndex', '2');
                $('#' + id).animate({
                    top: 70,
                    opacity: 1
                });
                current = id;
                location.href = '#!/' + current
            }
            return false
        });
        $("[placeholder]").focus(function () {
            var el = $(this);
            if (el.val() == el.attr("placeholder")) {
                el.val("");
                el.removeClass("placeholder").css('color', '#CCCCCC')
            }
        }).blur(function () {
            var el = $(this);
            if (el.val() == "" || el.val() == el.attr("placeholder")) {
                el.addClass("placeholder");
                el.val(el.attr("placeholder")).css('color', '#444444')
            }
        }).blur();
        if ($('#countdown').length) {
            var c = new countdown();
            c.start()
        }
        if ($('#progess').length) {
            var p = new progress();
            p.start()
        }
        if ($('#emailfield').length) {
            var e = new email();
            e.init()
        }
        if ($('#contact').length) {
            var co = new contact();
            co.init()
        }
    };
    var countdown = function () {
        var interval, i = 0,
            now, finish = new Date(params.targetDate),
            values = [0, 0, 0, 0],
            text = '',
            d = $('#days'),
            h = $('#hours'),
            m = $('#minutes'),
            s = $('#seconds');
        $('#countdown').hide().css('visibility', 'visible').fadeIn('slow');

        function setValues() {
            printValue(d, values[0]);
            printValue(h, values[1]);
            printValue(m, values[2]);
            printValue(s, values[3])
        }
        function printValue(el, value) {
            if (el.length) {
                if (!values[0]) {
                    d.remove();
                    if (!values[1]) {
                        h.remove();
                        if (!values[2]) {
                            m.remove()
                        }
                    }
                }
                drawLetters(el, value.toString())
            }
        }
        function drawLetters(el, value) {
            var d = [],
                v = '',
                l, name = el.attr('id');
            for (var i = 0; i < value.length; i++) {
                l = value.substr(i, 1);
                d.push(l);
                v += '<span class="letter c i_' + l + '">&nbsp;</span>'
            }
            if (value == 1) {
                name = name.substring(0, name.length - 1)
            }
            el.html(v + name + '&nbsp;')
        }
        function calc() {
            var now = new Date(),
                sec = Math.round((finish - now) / 1000);
            if (sec >= 0) {
                values[0] = calcdiff(sec, 86400, 100000);
                values[1] = calcdiff(sec, 3600, 24);
                values[2] = calcdiff(sec, 60, 60);
                values[3] = calcdiff(sec, 1, 60)
            } else {
                clearInterval(interval);
                if (params.redirectto) {
                    window.location.href = params.redirectto
                }
            }
            setValues()
        }
        function calcdiff(sec, n1, n2) {
            var s = ((Math.floor(sec / n1)) % n2).toString();
            return parseInt(s, 10)
        }
        calc();
        return {
            start: function () {
                interval = setInterval(function () {
                    calc()
                }, 1000)
            }
        }
    };
    var progress = function () {
        var el = $('#progessbar'),
            pel = $('#percent'),
            interval, i = 0;
        el.css('background-color', '#58adcc');

        function setPercent(p) {
            el.width(p + '%');
            pel.html(p + '%')
        }
        function step() {
            if (i >= params.steps) {
                clearInterval(interval)
            }
            setPercent(Math.round(easing(i++, 0, params.currentState, params.steps)))
        }
        function easing(a, b, c, d) {
            if ((a /= d / 2) < 1) {
                return c / 2 * a * a * a * a * a + b
            }
            return c / 2 * ((a -= 2) * a * a * a * a + 2) + b
        }
        return {
            start: function () {
                interval = setInterval(function () {
                    step()
                }, 10)
            }
        }
    };
    var email = function () {
        var timeout, email, el = $('#email'),
            form = $('#emailform'),
            button = $('#submitbutton');

        function init() {
            setStatus(params.texts.emailstatus);
            el.focus().bind('keyup', keyupHandler);
            form.bind('submit', submitEmail);
            check()
        }
        function keyupHandler() {
            clearTimeout(timeout);
            timeout = setTimeout(function () {
                check()
            }, 500)
        }
        function setStatus(status) {
            $('#emailstatus').html(status);
            Cufon.replace('h4')
        }
        function submitEmail() {
            email = el.val().toLowerCase();
            if (verify(email)) {
                el.unbind('keyup');
                el.attr('disabled', 'disabled');
                setStatus(params.texts.emailwait);
                $.post("register.php", {
                    email: $.trim(email)
                }, function (data) {
                    el.removeAttr('disabled');
                    if (data.success) {
                        setStatus(params.texts.emailadded);
                        el.val('')
                    } else {
                        setStatus(params.texts.emailaddfail);
                        el.bind('keyup', keyupHandler)
                    }
                }, "json")
            } else {
                setStatus(params.texts.emailinvalid);
                el.focus().select()
            }
            return false
        }
        function check() {
            email = el.val();
            if (verify(email)) {
                button.css('background-color', '#58adcc');
                setStatus(params.texts.emailok)
            } else {
                button.css('background-color', '#999999');
                setStatus(params.texts.emailstatus)
            }
        }
        function verify(email) {
            email = $.trim(email.toLowerCase());
            return (email && /^([\w-]+(?:\.[\w-]+)*)\@((?:[\w-]+\.)*\w[\w-]{0,66})\.([a-z]{2,6}(?:\.[a-z]{2})?)$|(\[?(\d{1,3}\.){3}\d{1,3}\]?)$/.test(email))
        }
        return {
            init: function () {
                init()
            }
        }
    };
    var contact = function () {
        var timeout, email, nameel = $('#name'),
            emailel = $('#contactemail'),
            msgel = $('#contactmsg'),
            form = $('#contactform'),
            button = $('#contactsubmit'),
            valid = false;

        function init() {
            nameel.bind('keyup', keyupHandler);
            emailel.bind('keyup', keyupHandler);
            msgel.bind('keyup', keyupHandler);
            form.bind('submit', submitForm);
            check()
        }
        function keyupHandler() {
            clearTimeout(timeout);
            timeout = setTimeout(function () {
                check()
            }, 500)
        }
        function setStatus(status) {
            $('#contactstatus').show().html(status).delay(4000).fadeOut(1000)
        }
        function submitForm() {
            if (valid) {
                nameel.unbind('keyup');
                emailel.unbind('keyup');
                msgel.unbind('keyup');
                button.attr('disabled', 'disabled');
                setStatus(params.texts.contactformwait);
                $.post("contact.php", {
                    name: $.trim(nameel.val()),
                    email: $.trim(emailel.val().toLowerCase()),
                    msg: $.trim(msgel.val())
                }, function (data) {
                    button.removeAttr('disabled');
                    if (data.success) {
                        setStatus(params.texts.contactformadded);
                        nameel.val('').blur();
                        emailel.val('').blur();
                        msgel.val('').blur();
                        valid = false;
                        init()
                    } else {
                        setStatus(params.texts.contactformfail);
                        nameel.bind('keyup', keyupHandler);
                        emailel.bind('keyup', keyupHandler);
                        msgel.bind('keyup', keyupHandler);
                        valid = false
                    }
                }, "json")
            } else {
                setStatus(params.texts.contactforminvalid)
            }
            return false
        }
        function check() {
            email = emailel.val();
            if (verify(email) && nameel.val() != '' && msgel.val() != '' && nameel.val() != nameel.attr('placeholder') && msgel.val() != msgel.attr('placeholder')) {
                button.css('background-color', '#58adcc');
                valid = true
            } else {
                button.css('background-color', '#999999');
                valid = false
            }
        }
        function verify(email) {
            email = $.trim(email.toLowerCase());
            return (email && /^([\w-]+(?:\.[\w-]+)*)\@((?:[\w-]+\.)*\w[\w-]{0,66})\.([a-z]{2,6}(?:\.[a-z]{2})?)$|(\[?(\d{1,3}\.){3}\d{1,3}\]?)$/.test(email))
        }
        return {
            init: function () {
                init()
            }
        }
    };
    init()
});
