function bouncer() {
    if ($(".featured-item").length > 1 && $("#featured-content").hasClass('add_bounce')) {
        var no_animation = true;
        var reflection = $("#reflect");
        var slide = $(".next-item");
        var transition = "bounceout";

        slide.css({
            visibility: 'visible'
        }).bind("click", function () {
            if (no_animation) {
                no_animation = false;
                reflection.css({
                    display: "none"
                });
                $(".current-item").fadeOut(500, shownext);
            }
            return false;
        });

        function shownext() {
            var next_item = $(".current-item").next(".featured-item");
            if (next_item.length == 0) next_item = $(".featured-item:eq(0)");
            $('#featured-content').css({
                'z-index': 150
            });

            reflection.css({
                bottom: -1024,
                display: "block"
            }).animate({
                bottom: -431
            },
            1800, transition);
            next_item.animate({
                top: 93
            },
            1800, transition, function () {
                $(".current-item").css({
                    top: -500,
                    display: "block"
                }).removeClass("current-item");
                $(this).addClass("current-item");
                $('#featured-content').css({
                    'z-index': 1
                });
                no_animation = true;
            });
        }
    }
}

/* Blogpage image changer with fadeing animation */

function smooth_transition() {
    /*if more than one featured item is found in the html && div must have the class add_bounce to apply fading animation*/
    if ($(".featured-item").length > 1 && $("#featured-content").hasClass('add_fade')) {
        var reflection = $("#reflect");

        function transition() {
            if ($.browser.msie && $.browser.version < 7) {
                reflection.css({
                    display: "none"
                });
            } else {
                reflection.fadeOut(500);
            }

            $(".current-item").fadeOut(500, shownext);
        }

        function shownext() {
            var next_item = $(".current-item").next(".featured-item");
            if (next_item.length == 0) next_item = $(".featured-item:eq(0)");

            reflection.fadeIn(500);
            next_item.css({
                display: "none",
                top: 93
            }).fadeIn(500, function () {
                $(".current-item").css({
                    display: "none"
                }).removeClass("current-item");
                $(this).addClass("current-item");
                no_animation = true;
            });
        }

        setInterval(transition, 5000);
    }
}

/*Function that creates the tooltips*/

function kriesi_tooltip2(selector, selectname, atrribute) {
    $(selector).each(function (i) {
        if ($(this).attr(atrribute) != "") {
            $("body").append("<div class='" + selectname + "' id='" + selectname + i + "'>" + $(this).attr(atrribute) + "</div>");

            $(this).removeAttr(atrribute).mouseover(function (e) {
                $("#" + selectname + i).css({
                    opacity: 0.85,
                    display: "none",
                    visibility: "visible"
                }).animate({
                    "padding": "6px"
                },
                100).fadeIn(400);
            }).mousemove(function (e) {
                $("#" + selectname + i).css({
                    left: e.pageX + 14,
                    top: e.pageY + 14
                });
            }).mouseout(function () {
                $("#" + selectname + i).css({
                    display: "none",
                    visibility: "hidden"
                });
            });
        }
    });
}


/* This functions checks on which subpage you are and applies the background to the main menu */

function whichpage() {
    var current_url = location.pathname.replace("http://oo.mu", "");
    $(".lavaLamp a").each(function (i) {
        if (current_url == $(this).attr('href')) {
            $(this).parent('li').addClass('current');
        }
    });
}

/*the following 2 functions are validating the contact form*/

function form_validation() {
    $("#name, #email, #message").each(function (i) {

        $(this).bind("blur", function () {
            var value = $(this).attr("value");
            var check_for = $(this).attr("id");
            var surrounding_element = $(this);

            if (check_for == "email") {
                if (!value.match(/^\w[\w|\.|\-]+@\w[\w|\.|\-]+\.[a-zA-Z]{2,4}$/)) {
                    surrounding_element.attr("class", "").addClass("invalid-form");
                } else {
                    surrounding_element.attr("class", "").addClass("ajax_valid");
                }
            }

            if (check_for == "name" || check_for == "message") {
                if (value == "") {
                    surrounding_element.attr("class", "").addClass("invalid-form");
                } else {
                    surrounding_element.attr("class", "").addClass("ajax_valid");
                }
            }


        });
    });
}



function validate_all() {
    var my_error;
    $(".ajax_form #send").bind("click", function () {

        my_error = false;
        $(".ajax_form #name, .ajax_form #message, .ajax_form #email ").each(function (i) {

            var value = $(this).attr("value");
            var check_for = $(this).attr("id");
            var surrounding_element = $(this);
            if (check_for == "email") {
                if (!value.match(/^\w[\w|\.|\-]+@\w[\w|\.|\-]+\.[a-zA-Z]{2,4}$/)) {
                    surrounding_element.attr("class", "").addClass("invalid-form");
                    my_error = true;
                } else {
                    surrounding_element.attr("class", "").addClass("ajax_valid");
                }
            }

            if (check_for == "name" || check_for == "message") {
                if (value == "") {
                    surrounding_element.attr("class", "").addClass("invalid-form");
                    my_error = true;
                } else {
                    surrounding_element.attr("class", "").addClass("ajax_valid");
                }
            }
            if ($(".ajax_form #name, .ajax_form #message, .ajax_form #email").length == i + 1) {
                if (my_error == false) {
                    $("#ajax_form").slideUp(400);
                    var yourname = $("#name").attr('value');
                    var email = $("#email").attr('value');
                    var website = $("#website").attr('value');
                    var message = $("#message").attr('value');
                    var myemail = $("#myemail").attr('value');
                    var myblogname = $("#myblogname").attr('value');
                    $(".ajax_form #send").fadeOut(100);

                    $.ajax({
                        type: "POST",
                        url: "send.php",
                        data: "Send=true&yourname=" + yourname + "&email=" + email + "&website=" + website + "&message=" + message + "&myemail=" + myemail + "&myblogname=" + myblogname,
                        success: function (response) {
                            $(".ajaxresponse").html(response);
                            $(".ajax_form #send").fadeIn(400);
                            $(".ajax_form #name, .ajax_form #message, .ajax_form #email , .ajax_form #website").val("");
                        }
                    });
                }
            }
        });
        return false;
    });
}


$(document).ready(function () {
    $(".thumb a").fancybox();
    //whichpage(); //checks wich suppage of the mainmenu we are and appends the current class for the lavalamp
    $(".lavaLamp").lavaLamp({
        fx: "backout",
        speed: 700
    });
    bouncer();
    smooth_transition();
    kriesi_tooltip2("a:not(.thumb a)", "tooltip_image2", "title");
    form_validation();
    validate_all();
});



/*
 * jQuery Easing v1.1 - http://gsgd.co.uk/sandbox/jquery.easing.php
 *
 * Uses the built in easing capabilities added in jQuery 1.1
 * to offer multiple easing options
 *
 * Copyright (c) 2007 George Smith
 * Licensed under the MIT License:
 *   http://www.opensource.org/licenses/mit-license.php
 */
jQuery.easing = {
    easein: function (x, t, b, c, d) {
        return c * (t /= d) * t + b
    },
    easeinout: function (x, t, b, c, d) {
        if (t < d / 2) return 2 * c * t * t / (d * d) + b;
        var a = t - d / 2;
        return -2 * c * a * a / (d * d) + 2 * c * a / d + c / 2 + b
    },
    easeout: function (x, t, b, c, d) {
        return -c * t * t / (d * d) + 2 * c * t / d + b
    },
    expoin: function (x, t, b, c, d) {
        var a = 1;
        if (c < 0) {
            a *= -1;
            c *= -1
        }
        return a * (Math.exp(Math.log(c) / d * t)) + b
    },
    expoout: function (x, t, b, c, d) {
        var a = 1;
        if (c < 0) {
            a *= -1;
            c *= -1
        }
        return a * (-Math.exp(-Math.log(c) / d * (t - d)) + c + 1) + b
    },
    expoinout: function (x, t, b, c, d) {
        var a = 1;
        if (c < 0) {
            a *= -1;
            c *= -1
        }
        if (t < d / 2) return a * (Math.exp(Math.log(c / 2) / (d / 2) * t)) + b;
        return a * (-Math.exp(-2 * Math.log(c / 2) / d * (t - d)) + c + 1) + b
    },
    bouncein: function (x, t, b, c, d) {
        return c - jQuery.easing['bounceout'](x, d - t, 0, c, d) + b
    },
    bounceout: function (x, t, b, c, d) {
        if ((t /= d) < (1 / 2.75)) {
            return c * (7.5625 * t * t) + b
        } else if (t < (2 / 2.75)) {
            return c * (7.5625 * (t -= (1.5 / 2.75)) * t + .75) + b
        } else if (t < (2.5 / 2.75)) {
            return c * (7.5625 * (t -= (2.25 / 2.75)) * t + .9375) + b
        } else {
            return c * (7.5625 * (t -= (2.625 / 2.75)) * t + .984375) + b
        }
    },
    bounceinout: function (x, t, b, c, d) {
        if (t < d / 2) return jQuery.easing['bouncein'](x, t * 2, 0, c, d) * .5 + b;
        return jQuery.easing['bounceout'](x, t * 2 - d, 0, c, d) * .5 + c * .5 + b
    },
    elasin: function (x, t, b, c, d) {
        var s = 1.70158;
        var p = 0;
        var a = c;
        if (t == 0) return b;
        if ((t /= d) == 1) return b + c;
        if (!p) p = d * .3;
        if (a < Math.abs(c)) {
            a = c;
            var s = p / 4
        } else var s = p / (2 * Math.PI) * Math.asin(c / a);
        return - (a * Math.pow(2, 10 * (t -= 1)) * Math.sin((t * d - s) * (2 * Math.PI) / p)) + b
    },
    elasout: function (x, t, b, c, d) {
        var s = 1.70158;
        var p = 0;
        var a = c;
        if (t == 0) return b;
        if ((t /= d) == 1) return b + c;
        if (!p) p = d * .3;
        if (a < Math.abs(c)) {
            a = c;
            var s = p / 4
        } else var s = p / (2 * Math.PI) * Math.asin(c / a);
        return a * Math.pow(2, -10 * t) * Math.sin((t * d - s) * (2 * Math.PI) / p) + c + b
    },
    elasinout: function (x, t, b, c, d) {
        var s = 1.70158;
        var p = 0;
        var a = c;
        if (t == 0) return b;
        if ((t /= d / 2) == 2) return b + c;
        if (!p) p = d * (.3 * 1.5);
        if (a < Math.abs(c)) {
            a = c;
            var s = p / 4
        } else var s = p / (2 * Math.PI) * Math.asin(c / a);
        if (t < 1) return -.5 * (a * Math.pow(2, 10 * (t -= 1)) * Math.sin((t * d - s) * (2 * Math.PI) / p)) + b;
        return a * Math.pow(2, -10 * (t -= 1)) * Math.sin((t * d - s) * (2 * Math.PI) / p) * .5 + c + b
    },
    backin: function (x, t, b, c, d) {
        var s = 1.70158;
        return c * (t /= d) * t * ((s + 1) * t - s) + b
    },
    backout: function (x, t, b, c, d) {
        var s = 1.70158;
        return c * ((t = t / d - 1) * t * ((s + 1) * t + s) + 1) + b
    },
    backinout: function (x, t, b, c, d) {
        var s = 1.70158;
        if ((t /= d / 2) < 1) return c / 2 * (t * t * (((s *= (1.525)) + 1) * t - s)) + b;
        return c / 2 * ((t -= 2) * t * (((s *= (1.525)) + 1) * t + s) + 2) + b
    },
    linear: function (x, t, b, c, d) {
        return c * t / d + b
    }
};


/**
 * LavaLamp - A menu plugin for jQuery with cool hover effects.
 * @requires jQuery v1.1.3.1 or above
 *
 * http://gmarwaha.com/blog/?p=7
 *
 * Copyright (c) 2007 Ganeshji Marwaha (gmarwaha.com)
 * Dual licensed under the MIT and GPL licenses:
 * http://www.opensource.org/licenses/mit-license.php
 * http://www.gnu.org/licenses/gpl.html
 *
 * Version: 0.2.0
 * Requires Jquery 1.2.1 from version 0.2.0 onwards. 
 * For jquery 1.1.x, use version 0.1.0 of lavalamp
 */

(function ($) {
    $.fn.lavaLamp = function (o) {
        o = $.extend({
            fx: "linear",
            speed: 500,
            click: function () {}
        },
        o || {});

        return this.each(function () {
            var me = $(this),
                noop = function () {},
                $back = $('<li class="back"><div class="left"></div></li>').appendTo(me),
                $li = $("li", this),
                curr = $("li.current", this)[0] || $($li[0]).addClass("current")[0];

            $li.not(".back").hover(function () {
                move(this);
            },
            noop);

            $(this).hover(noop, function () {
                move(curr);
            });

            $li.click(function (e) {
                setCurr(this);
                return o.click.apply(this, [e, this]);
            });

            setCurr(curr);

            function setCurr(el) {
                $back.css({
                    "left": el.offsetLeft + "px",
                    "width": el.offsetWidth + "px"
                });
                curr = el;
            };

            function move(el) {
                $back.each(function () {
                    $(this).dequeue();
                }).animate({
                    width: el.offsetWidth,
                    left: el.offsetLeft
                },
                o.speed, o.fx);
            };

        });
    };
})(jQuery);
