$(document).ready(function() {


    var cache = new Array();
    var isOpera = window.opera ? true : false;

    /*
     * FOOTER GOTO TOP BUTTON */

    $('#bottom-menu-bar ul li a.top-button').click(function(e) {
        e.preventDefault();
        if ( isOpera === true ) {
            $('html').animate({
                scrollTop: '0px'
            }, 500, 'easeInOutCubic');
        } else {
            $('html, body').animate({
                scrollTop: '0px'
            }, 500, 'easeInOutCubic');
        }
    });


    preloadImages('images/facebook-icon-over.png', 'images/twitter-icon-over.png', 'images/flickr-icon-over.png', 'images/skype-icon-over.png',
        'images/blogger-icon-over.png', 'images/rss-icon-over.png',
        'images/small-buttons/grey-button-over.png', 'images/small-buttons/aqua-button-over.png', 'images/small-buttons/blue-button-over.png',
        'images/small-buttons/dark-blue-button-over.png', 'images/small-buttons/dark-pink-button-over.png', 'images/small-buttons/green-button-over.png',
        'images/small-buttons/light-green-button-over.png', 'images/small-buttons/orange-button-over.png', 'images/small-buttons/pink-button-over.png',
        'images/small-buttons/purple-button-over.png', 'images/small-buttons/red-button-over.png',
        'images/large-buttons/grey-button-over.png', 'images/large-buttons/red-button-over.png', 'images/large-buttons/aqua-button-over.png',
        'images/large-buttons/green-button-over.png', 'images/large-buttons/orange-button-over.png', 'images/large-buttons/dark-pink-button-over.png',
        'images/large-buttons/pink-button-over.png', 'images/large-buttons/light-green-button-over.png', 'images/large-buttons/dark-blue-button-over.png',
        'images/large-buttons/blue-button-over.png', 'images/large-buttons/purple-button-over.png'
        );

    Cufon.replace('#header h1.logo');
//        + '.content h1, .content h2, .content h3, .content h4, .content h5:not(".simple")');

    /*
     * MAIN MENU INITIALIZATON */

    $('#main-menu').pixelMenu({
        moreText: ' *',
        animationSpeed: 400
    });
    
    /*
     * ROUND CORNERS */
    
    $('.message-box .box-content').corner("bottom round 8px");
    $('.simple-message-box').corner('round 8px');
    $('blockquote').corner('round 8px');
    $('ul.page-navbar li a').corner('round 2px');


    /*
     * WIDGET MENU */

    $('.widget ul.widget-menu li a').hover(
        function() {
            $(this).stop().animate({
                textIndent: '10px'
            })
        },
        function() {
            $(this).stop().animate({
                textIndent: '0px'
            })
        }
        );


    /*
	 * WIDGET MENU2 */

    $('.widget2 ul.widget-menu2 li a').hover(
        function() {
            $(this).stop().animate({
                textIndent: '10px'
            })
        },
        function() {
            $(this).stop().animate({
                textIndent: '0px'
            })
        }
        );


    /*
	 * WIDGET MENU3 */

    $('.widget3 ul.widget-menu3 li a').hover(
        function() {
            $(this).stop().animate({
                textIndent: '10px'
            })
        },
        function() {
            $(this).stop().animate({
                textIndent: '0px'
            })
        }
        );
    /*
	 * WIDGET MENU4 */

    $('.widget4 ul.widget-menu4 li a').hover(
        function() {
            $(this).stop().animate({
                textIndent: '10px'
            })
        },
        function() {
            $(this).stop().animate({
                textIndent: '0px'
            })
        }
        );
    /*
	 * WIDGET MENU5 */

    $('.widget5 ul.widget-menu5 li a').hover(
        function() {
            $(this).stop().animate({
                textIndent: '10px'
            })
        },
        function() {
            $(this).stop().animate({
                textIndent: '0px'
            })
        }
        );


    /*
     * FRONTPAGE SLIDER */

    frontpageTransitionSliderInit();
    miniSliderInit();
    pageSliderInit();

    /*
     * PIXEL BOOKMARK */
    
    $('#bookmark-opener').pixelBookmark({
        menuTitle: 'Bookmarks Menu',
        baseContainer: $('#header'),
        bookmarkContainer: $('#main')
    });

    /*
     * MULTI TABS */

    $('#main ul.multi-tabs').pixelMultiTabs({
        animationSpeed: 300
    });


    $('img.expander').hover(
        function() {
            $(this).css('borderColor', '#ccc');
        },
        function() {
            $(this).css('borderColor', '#ededed');
        }
        );
       
	   /* MULTI TABS2 */

    $('#main ul.multi-tabs2').pixelMultiTabs({
        animationSpeed: 300
    });


    $('img.expander').hover(
        function() {
            $(this).css('borderColor', '#ccc');
        },
        function() {
            $(this).css('borderColor', '#ededed');
        }
        );      

    /*
	/* MULTI TABS3 */

    $('#main ul.multi-tabs3').pixelMultiTabs({
        animationSpeed: 300
    });


    $('img.expander').hover(
        function() {
            $(this).css('borderColor', '#ccc');
        },
        function() {
            $(this).css('borderColor', '#ededed');
        }
        );      

    /*
     * PORTFOLIO INIT */

    portfolioInit();
    portfolioAnimationInit();


    /*
     * TEXT MESSAGE BOX */
    $('.message-box .title a').click(function(e) {
        e.preventDefault();
        $(this).parent().parent().find('.box-content').slideToggle(500);
    });


    /*
     * Search bar initialization
     */

    $('#search').focusin(function() {
        if ( $(this).val() == 'Enter search term here...' ) {
            $(this).val('');
        }
    });
    $('#search').focusout(function() {
        if ( $(this).val().trim() == '' ) {
            $(this).val('Enter search term here...');
        }
    });

    /*
     * CONTACT FORM */

    $('#send-email-button').click(function(e) {
        e.preventDefault();
        $.post('email.php', {
            name: $('#contact-name').val(),
            email: $('#contact-email').val(),
            subject: $('#contact-subject').val(),
            message: $('#contact-message').val()
        }, function(data) {
            var response = '<div class="alert-box warning-box"><span>'+ data +'</span></div>';
            $('#email-form div.warning-box').remove();
            $('#email-form').prepend(response);
            $('#email-form div.warning-box').hide().fadeIn(500);
        })
        return false;
    });


    function preloadImages() {
        var img;
        var arg = arguments.length;
        for ( i = 0; i < arg ; i++ ) {
            img = document.createElement('img');
            img.src = arguments[i];
            cache.push(img);
        }
    }

});


String.prototype.trim = function() {
    a = this.replace(/^\s+/, '');
    return a.replace(/\s+$/, '');
};



/*
 * FRONTPAGE SLIDER */

function frontpageTransitionSliderInit() {

    var DELAY = 30;

    if ( window.SLIDER_TYPE == undefined ) {
        SLIDER_TYPE = 1;
    }

    if ( SLIDER_TYPE === 4 ) {
        DELAY = 80;
    }

    $("#frontpage-slider").transitionSlider({
        slideWidth: 940,
        slideHeight: 350,
        selSlide: 0,
        delay: DELAY,
        animationStyle : SLIDER_TYPE,
        animationSpeed: 500,
        autoScrollTimer: 0,
        pieceV: 1,
        pieceH: 28,
        hasNavBar: true,
        navbarId: 'slider-navbar'
    });

    /*
     * centering the navbar */
    
    var navbarW = $('#slider-navbar').width();
    var slides = $('#slider-navbar li').length;
    var padding = navbarW/2 - (slides * 16)/2;

    $('#slider-navbar').css('paddingLeft', Math.floor(padding));
}


/*
 * MINI SLIDER */

function miniSliderInit() {

    $("#mini-slider").transitionSlider({
        slideWidth: 320,
        slideHeight: 190,
        selSlide: 0,
        delay: 30,
        animationStyle : 2,
        animationSpeed: 500,
        autoScrollTimer: 0,
        pieceV: 1,
        pieceH: 28,
        hasNavBar: true,
        navbarId: 'mini-slider-navbar',
        descriptionBoxWidth: '94%',
        descriptionBoxSpeed: 400
    });

    /*
     * centering the navbar */

    var navbarW = $('#mini-slider-navbar').width();
    var slides = $('#mini-slider-navbar li').length;
    var padding = navbarW/2 - (slides * 16)/2;

    $('#mini-slider-navbar').css('paddingLeft', Math.floor(padding));
}

/*
 * PAGE SLIDER */

function pageSliderInit() {

    $("#page-slider").transitionSlider({
        slideWidth: 560,
        slideHeight: 352,
        selSlide: 0,
        delay: 30,
        animationStyle : 1,
        animationSpeed: 500,
        autoScrollTimer: 0,
        pieceV: 1,
        pieceH: 18,
        hasNavBar: true,
        navbarId: 'page-slider-navbar',
        descriptionBoxWidth: '80%',
        descriptionBoxSpeed: 400
    });

    /*
     * centering the navbar */

    var navbarW = $('#page-slider-navbar').width();
    var slides = $('#page-slider-navbar li').length;
    var padding = navbarW/2 - (slides * 16)/2;

    $('#page-slider-navbar').css('paddingLeft', Math.floor(padding));
}

/*
 * PORTFOLIO INIT */

function portfolioInit() {
    
    $("a[rel^='prettyPhoto']").prettyPhoto({
        theme: 'facebook',
        overlay_gallery: false
    });
    $("a[rel^='prettyPhoto']").hover(
        function() {
            $(this).find('img').stop().animate({
                opacity: 0.5
            }, 400);
        },
        function() {
            $(this).find('img').stop().animate({
                opacity: 1
            }, 400);
        });
}

/*
 * PORTFOLIO QUICKSAND INTEGRATION PIXEL PLUGIN
 **/

function portfolioAnimationInit() {

    var navItems = 0;
    var navbar = '<ul id="portfolio-navbar">';

    $('#main .content ul.portfolio-animation-source').each(function(i) {
        if ( i === 0 ) {
            navbar += '<li class="selected"><a href="#"><span>'+ $(this).attr('title') + '</span></a></li>';
        } else {
            navbar += '<li><a href="#"><span>'+ $(this).attr('title') + '</span></a></li>';
        }
        navItems++;
    });

    navbar += '</ul>';

    $('#main .content ul.portfolio-animation-destination').wrap('<div/>');

    $('#main .content ul.portfolio-animation-destination li').each(function(index) {
        index++;
        if ( index % 3 == 0 ) {
            $(this).addClass('last');
        }
    });
    $('#main .content ul.portfolio-animation-source').each(function() {
        $(this).find('li').each(function(index) {
            index++;
            if ( index % 3 == 0 ) {
                $(this).addClass('last');
            }
        });
    });

    /*
     * NO AJAX */

    if ( navItems > 0 ) {
        $('#main .content ul.portfolio-animation-destination').parent().prepend(navbar);
        $("#main .content ul#portfolio-navbar li a").click(function(e) {
            e.preventDefault();
            var index = $("#main .content ul#portfolio-navbar li a").index($(this));
            $("#main .content ul#portfolio-navbar li").removeAttr('class');
            $(this).parent().attr('class', 'selected');

            $('#main .content ul.portfolio-animation-destination').quicksand(
                $('#main .content ul.portfolio-animation-source').eq(index).find('li'), {
                    attribute: 'title',
                    easing: 'easeInOutQuad',
                    adjustHeight: 'dynamic'
                }, function() {
                    portfolioInit();
                }
                );
        });
    } else {

        /*
	 * AJAX - NOT USED */

        $("#main .content ul#portfolio-navbar li a").click(function(e) {

            $(".loading").hide().html('Loading gallery ...').fadeIn(300);

            var url = $(this).attr('href'),
            selector = $(this).attr('rel');

            $("#main .content ul#portfolio-navbar li").removeAttr('class');
            $(this).parent().attr('class', 'selected');

            $.post(url,
            {
                selector: selector
            },
            function(data) {
                $('#main .content ul.portfolio-animation-destination').quicksand(
                    $(data).find('li'), {
                        attribute: 'title',
                        easing: 'easeInOutQuad',
                        adjustHeight: 'dynamic'
                    }, function() {
                        portfolioInit();
                        $(".loading").fadeOut(300);
                    }
                    );
            });
            e.preventDefault();
        });
    }
}


/*
 *
 * PIXEL MULTI TAB PLUGIN */

(function($) {

    $.pixelMultiTabs = {
        defaults: {
            animationSpeed: 600
        }
    };

    $.fn.extend({
        pixelMultiTabs: function(config) {
            var config = $.extend({}, $.pixelMultiTabs.defaults, config);
            config.container = $(this);
            initialize(config);
        }
    });

    function initialize(config) {
        config.container.wrap('<div/>');
        createNavBar(config);
        config.container.css({
            overflow: 'hidden'
        //	    marginBottom: '20px'
        });
        config.container.find('li.tab').css({
            display: 'none'
        });
        config.container.find('li.tab').eq(0).css({
            display: 'block'
        }).addClass('selected');
    }
    function createNavBar(config) {
        var index = 0;
        var navBar = '<ul class="multi-tabs-navbar">';
        config.container.find('li.tab').each(function() {
            if ( index === 0 ) {
                navBar += '<li class="selected"><a href="#">'+ $(this).attr('title') +'</a></li>';
            } else {
                navBar += '<li><a href="#">'+ $(this).attr('title') +'</a></li>';
            }
            index++;
        });
        navBar += '</ul>';
        config.container.parent().prepend(navBar);
        navBarAction(config);
        config.container.parent().find('ul.multi-tabs-navbar li a:last').addClass('last');
    }
    function navBarAction(config) {
        config.container.parent().find('ul.multi-tabs-navbar li a').click(function(e) {
            e.preventDefault();
            config.container.parent().find('ul.multi-tabs-navbar li.selected').removeClass('selected');
            $(this).parent().addClass('selected');
            var selIndex = config.container.parent().find('ul.multi-tabs-navbar li a').index($(this));
            config.container.find('li.tab.selected').fadeOut(config.animationSpeed, function() {
                config.container.find('li.tab').removeClass('selected');
                config.container.find('li.tab').eq(selIndex).fadeIn(config.animationSpeed).addClass('selected');
            });
        })
    }
})(jQuery);


/*
 * PIXEL BOOKMARK PLUGIN */

(function($){

    $.pixelBookmark = {
        defaults: {
            menuTitle: 'Page Bookmarks',
            baseContainer: null,
            bookmarkContainer: null,
            animationType: 'easeInOutCubic',
            animationSpeed: 800
        }
    };

    $.fn.extend({
        pixelBookmark: function(config) {
            var config = $.extend({}, $.pixelBookmark.defaults, config);
            config.container = $(this); // this should be a hyperlink
            initialize(config);
        }
    });

    function initialize(config) {
        var menu = createThumbMenu(config);
        var left = config.baseContainer.offset().left;
        var width = config.baseContainer.width();
        $('body').prepend(menu);
        $('ul#bookmarks-menu').css({
            left: width + left - 220 + 'px'
        });
        addThumbnailEvent(config);
        animate(config);
    }

    function createThumbMenu(config) {
        var thumbList = config.bookmarkContainer.find('a.page-bookmark'),
        menu = '', title = '', name = '', index = 0;

        if ( thumbList.length > 0 ) {
            menu += '<ul id="bookmarks-menu">';
            menu += '<li class="bookmark-top">&nbsp;</li>';
            menu += '<li class="headline"><h5>'+ config.menuTitle +'</h5></li>';
            thumbList.each(function() {
                index++;
                title = $(this).attr('title');
                name = $(this).attr('name');
                menu += '<li><a href="#'+ name +'"> [+] '+ title +'</a></li>';
            });
            menu += '<li class="close-button"><a href="#">Close</a></li>';
            menu += '<li class="bookmark-bottom">&nbsp;</li>';
            menu += '</ul>';
        }
        return menu;
    }

    function addThumbnailEvent(config) {
        $('ul#bookmarks-menu li[class!=close-button] a').click(function(e) {
            e.preventDefault();
            var offset = 0, offsetElem = null, name = '', isOpera = window.opera ? true : false;

            name = $(this).attr('href');
            name = name.substr(name.indexOf('#', 0) + 1);

            offsetElem = config.bookmarkContainer.find('a.page-bookmark[name='+ name +']');
            offset = offsetElem.offset();

            if ( isOpera ) {
                $('html').animate({
                    scrollTop: offset.top - 20 + 'px'
                }, config.animationSpeed, config.animationType);
            } else {
                $('html, body').animate({
                    scrollTop: offset.top - 20 + 'px'
                }, config.animationSpeed, config.animationType);
            }

            $('ul#bookmarks-menu').animate({
                top: offset.top + 20 + 'px'
            }, 1000, config.animationType);
        });
    }

    function animate(config) {

        var isOpen = false;
        var h = $('ul#bookmarks-menu').height();

        config.container.click(function(e) {
            e.preventDefault();
            if ( !isOpen ) {
                $('ul#bookmarks-menu').css({
                    top: -h - 50 + 'px',
                    display: 'block'
                });
                $('ul#bookmarks-menu').animate({
                    top: '50px'
                }, 500, config.animationType);
                isOpen = true;
            }
        });
        $('ul#bookmarks-menu li.close-button a').click(function(e) {
            e.preventDefault();
            $('ul#bookmarks-menu').animate({
                top: -h - 50 + 'px'
            }, 500, config.animationType);
            isOpen = false;
        });
    }
})(jQuery);
