jQuery.noConflict();

jQuery(document).ready(function () {

    // Image Tooltip
    var offsetX = 25;
    var offsetY = 55;

    jQuery('.tooltip').hover(function (e) {
        tooltip_title = this.title;
        this.title = '';
        image_path = this.rel;
        jQuery('body').append('<div id="tooltip"></div>');
        jQuery('#tooltip').css('top', (e.pageY - offsetY) + 'px').css('left', (e.pageX + offsetX) + 'px').fadeIn('fast');

        // Load image
        var img = new Image();
        jQuery(img).load(function () {
            var image = jQuery(this);
            offsetY = img.height + 20;
            offsetX = -img.width / 2;
            jQuery('#tooltip').animate({
                width: img.width,
                height: img.height
            }, 400, function () {
                jQuery('#tooltip').html(image);
                image.css('opacity', '0.0').stop().animate({
                    opacity: 1.0
                }, 800);
            });
        }).attr('src', image_path);


    }, function () {
        this.title = tooltip_title;
        jQuery('#tooltip').remove();
    });
    jQuery('.tooltip').mousemove(function (e) {
        jQuery('#tooltip').css('top', (e.pageY - offsetY) + 'px').css('left', (e.pageX + offsetX) + 'px');
    });

	   // Load images
    jQuery('.auto-load a').each(

    function () {
        var image_path = jQuery(this).attr('title'),
            l = jQuery(this),
			a = l.parent(),
            img = new Image();

        jQuery(img).css('opacity', '0.0').load(

        function () {
            l.append(this);
            jQuery(this).css('opacity', '0.0').animate({
                opacity: 1.0
            }, 800, function () {
                l.removeAttr('title').css('background-image', 'none');
				var captions = a.find('p');
                a.bind({
                    mouseenter: function () {
						captions.slideDown(400);
                        jQuery('img',this).stop().animate({
                            opacity: .5
                        }, 400);
                    }, mouseleave: function () {
						captions.slideUp(400);
                        jQuery('img',this).stop().animate({
                            opacity: 1
                        }, 400);
						
                    }
                });
            });
        }).attr({
            'src': image_path

        });
    });
	
	
	// Releases
    jQuery('.release-image a').each(

    function () {
        var image_path = jQuery(this).attr('title'),
            l = jQuery(this),
			a = l.parent(),
            img = new Image();

        jQuery(img).css('opacity', '0.0').load(

        function () {
            l.append(this);
            jQuery(this).css('opacity', '0.0').animate({
                opacity: 1.0
            }, 800, function () {
                l.removeAttr('title').css('background-image', 'none');
				var player = a.find('.release-content');
				var title = a.find('h2');
                a.bind({
                    mouseenter: function () {
						player.stop().animate({bottom: 0}, 400);
                    }, mouseleave: function () {
						player.stop().animate({bottom: -70}, 400);
                    }
                });
            });
        }).attr({
            'src': image_path

        });
    });
	
    // PrettyPhoto
    var r_lightbox_style = jQuery("meta[name=lightbox_style]").attr('content');
    if (r_lightbox_style == '') r_lightbox_style = 'light_square';
    jQuery('a[rel^="lightbox"], rel="lightbox[portfolio]"').prettyPhoto({
		default_width: 640,
		default_height: 360,
        'theme': r_lightbox_style /* light_rounded / dark_rounded / light_square / dark_square */
    });

    // Social icons
    jQuery('#social a span').css('opacity', '0')
    jQuery('#social a').hover(

    function () {
        jQuery('span', this).stop().animate({
            opacity: 1
        }, 400);
    }, function () {
        jQuery('span', this).stop().animate({
            opacity: 0
        }, 400);
    })

    // RSlider - Homepage Slider
    if (jQuery('#rs .rs-project').length > 0) jQuery('#rs').RSlider();
    // RSlider - Recent Works Slider
    if (jQuery('#recent-slider .rs-project').length > 0) jQuery('#recent-slider').RSlider({
        'width': 210,
        'height': 210,
        'display_ctrl': false,
        'display_arrows': true
    });
	 // RSlider - Intro Slider
    if (jQuery('#intro-slider .rs-project').length > 0) jQuery('#intro-slider').RSlider({
        'width': 950,
        'height': 110,
        'display_ctrl': true,
        'display_arrows': false
    });

    // RDM - Dropdown Menu
    jQuery('ul#menu').rdm();


    // RF - Forms
    var cp = jQuery('input#cp').val();
    if (jQuery('div#rf').length > 0) jQuery('div#rf').rf({
        'path': cp,
        'req_val': '*',
        'req_mail': '*',
        'req_question': 'Invalid answer!',
        'success': 'Thank you!',
        'error': 'Cant send message!',
        'sending': 'Sending please wait...'
    });

	// Homepage news
	 if (jQuery('.news-entry').length > 3) homepage_news(jQuery('.news-wrap'));
	
	function homepage_news(news) {
		
		var ti = news.find('.news-entry').size() - 3,
			c = 0;
		
		news.find('span').css('display', 'block');
		
		jQuery('.news-up').click(function () {
			if (c == 0) c = 0;
			else c--;
			
			jQuery('.news').animate({
				top: (-c) * 72
			}, {
				duration: 400,
				easing: 'easeOutQuart',
				queue: false
			});

		})
		jQuery('.news-down').click(function () {
	
			if (c == ti) c = ti
			else c++;
			
			jQuery('.news').animate({
				top: (-c) * 72
			}, {
				duration: 400,
				easing: 'easeOutQuart',
				queue: false
			});
	
		})
	}
	// Cufon
	var use_cufont_fonts = jQuery("meta[name=use_cufon_fonts]").attr('content');
	if (use_cufont_fonts == 'yes') Cufon.replace('h1,h2,h3,h4,h5,h6, .rs-caption b', { hover: 'true' });
	
	// Top button
    jQuery('a.top').click(function (e) {
        e.preventDefault();
        var target = (window.opera) ? (document.compatMode == 'CSS1Compat' ? jQuery('html') : jQuery('body')) : jQuery('html,body');
        target.animate({
            scrollTop: jQuery(jQuery(this).attr('href')).offset().top
        }, 500);
    });

    /*
     * jQuery Highlight plugin
     *
     * Based on highlight v3 by Johann Burkard
     * http://johannburkard.de/blog/programming/javascript/highlight-javascript-text-higlighting-jquery-plugin.html
     *
     * Code a little bit refactored and cleaned (in my humble opinion).
     * Most important changes:
     *  - has an option to highlight only entire words only (wordsOnly - false by default),
     *  - has an option to be case sensitive (caseSensitive - false by default)
     *  - highlight element tag and class names can be specified in options
     *
     * Usage:
     *   // wrap every occurrance of text 'lorem' in content
     *   // with <span class='highlight'> (default options)
     *   $('#content').highlight('lorem');
     *
     *   // search for and highlight more terms at once
     *   // so you can save some time on traversing DOM
     *   $('#content').highlight(['lorem', 'ipsum']);
     *   $('#content').highlight('lorem ipsum');
     *
     *   // search only for entire word 'lorem'
     *   $('#content').highlight('lorem', { wordsOnly: true });
     *
     *   // don't ignore case during search of term 'lorem'
     *   $('#content').highlight('lorem', { caseSensitive: true });
     *
     *   // wrap every occurrance of term 'ipsum' in content
     *   // with <em class='important'>
     *   $('#content').highlight('ipsum', { element: 'em', className: 'important' });
     *
     *   // remove default highlight
     *   $('#content').unhighlight();
     *
     *   // remove custom highlight
     *   $('#content').unhighlight({ element: 'em', className: 'important' });
     *
     *
     * Copyright (c) 2009 Bartek Szopka
     *
     * Licensed under MIT license.
     *
     */

    jQuery.extend({
        highlight: function (node, re, nodeName, className) {
            if (node.nodeType === 3) {
                var match = node.data.match(re);
                if (match) {
                    var highlight = document.createElement(nodeName || 'span');
                    highlight.className = className || 'highlight';
                    var wordNode = node.splitText(match.index);
                    wordNode.splitText(match[0].length);
                    var wordClone = wordNode.cloneNode(true);
                    highlight.appendChild(wordClone);
                    wordNode.parentNode.replaceChild(highlight, wordNode);
                    return 1; //skip added node in parent
                }
            } else if ((node.nodeType === 1 && node.childNodes) && // only element nodes that have children
            !/(script|style)/i.test(node.tagName) && // ignore script and style nodes
            !(node.tagName === nodeName.toUpperCase() && node.className === className)) { // skip if already highlighted
                for (var i = 0; i < node.childNodes.length; i++) {
                    i += jQuery.highlight(node.childNodes[i], re, nodeName, className);
                }
            }
            return 0;
        }
    });

    jQuery.fn.unhighlight = function (options) {
        var settings = {
            className: 'highlight',
            element: 'span'
        };
        jQuery.extend(settings, options);

        return this.find(settings.element + "." + settings.className).each(function () {
            var parent = this.parentNode;
            parent.replaceChild(this.firstChild, this);
            parent.normalize();
        }).end();
    };

    jQuery.fn.highlight = function (words, options) {
        var settings = {
            className: 'highlight',
            element: 'span',
            caseSensitive: false,
            wordsOnly: false
        };
        jQuery.extend(settings, options);

        if (words.constructor === String) {
            words = [words];
        }

        var flag = settings.caseSensitive ? "" : "i";
        var pattern = "(" + words.join("|") + ")";
        if (settings.wordsOnly) {
            pattern = "\\b" + pattern + "\\b";
        }
        var re = new RegExp(pattern, flag);

        return this.each(function () {
            jQuery.highlight(this, re, settings.element, settings.className);
        });
    };


}) //end custom scripts

;(function ($) {

    /* 
     *  Copyright (c) 2009 Rascals - Interactive Laboratory http://www.rascals.eu
     *  RF - Rascals Forms
     */

    jQuery.fn.rf = function (options) {
        var opts = jQuery.extend({
            'path': 'contact-form.php',
            'req_val': 'This field is required',
            'req_mail': 'Invalid email address',
            'req_question': 'Invalid answer!',
            'success': 'Thank you!',
            'error': 'Cant send message!',
            'sending': 'Sending please wait...'
        }, options);
		
		var error_color = $('a').css('color');
		
        function isEmpty(val) {
            var re = /\s/g;
            var str = val.replace(re, '');
            if (str.length == 0) {
                return true;
            } else {
                return false;
            }
        }

        function isEmail(val) {
            var re = /^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/;
            if (!val.match(re)) {
                return true;
            } else {
                return false;
            }
        }

        function f_check() {
            var f_check = false;
            var req_num = $('.rf .req').size();

            $('.rf .req').each(function (i) {
                if (isEmpty($(this).val())) {
                    $(this).css('border', '2px solid ' + error_color).next().text(opts.req_val).css('display', 'block');
                    return false;
                } else {
                    $(this).css('border', 'none').next().css('display', 'none');
                }
                if ($(this).is('.email')) {
                    if (isEmail($(this).val())) {
                        $(this).css('border', '2px solid ' + error_color).next().text(opts.req_mail).css('display', 'block');
                        return false;
                    } else {
                        $(this).css('border', 'none').next().css('display', 'none');
                    }
                }

                if ($('.rf .req').size() == (i + 1)) f_check = true;

            });

            if (f_check == true) return true;
        }

        function inputs() {
            var inputs = new Object;

            $('.rf .val').each(function (i) {
                var name = $(this).attr('name');
                var value = $(this).val();
                if (this.name != '') {
                    inputs[name] = value;
                }
            });
            return inputs;
        }

        function clear() {
            $('.rf .val').each(function (i) {
                $(this).val('').next().css('display', 'none');
            });
        }

        $('#send').click(function () {
            if (f_check()) {
                $.ajax({
                    type: 'POST',
                    url: opts.path,
                    data: inputs(),
                    beforeSend: function (data) {
                        $('#send').attr('disabled', true);
                        $('.rf-submit span').html(opts.sending);
                    },
                    complete: function (data) {
                        $('#send').attr('disabled', false);
                    },
                    success: function (html) {
                        if (html == 'bad_answer') {
							$('input.asq').css('border', '2px solid ' + error_color).next().text(opts.req_mail).css('display', 'block');
                            $('.rf-submit span').html(opts.req_question);
                        } else if (html == 'success') {
                            clear();
                            $('.rf-submit span').html(opts.success);
                        } else {
                            $('.rf-submit span').html(opts.error);
                        }
                    },
                    error: function (html) {
                        $('.rf-submit span').html(opts.error);
                    }

                });
            }
        })

    };

})(jQuery); // confine scope

;(function ($) {

    /* 
     *  Copyright (c) 2009 Rascals - Interactive Laboratory http://www.rascals.eu
     *  RDM - Rascals Dropdown Menu
     */

    jQuery.fn.rdm = function () {
		
		var ul_width = parseInt($(this).find('ul').css('width'));
		
        $('a', this).removeAttr('title');
        $('li', this).hover(function () {
									  
			var pos_nav = $('#menu-wrap').offset(),
			end_nav = pos_nav.left + $('#menu-wrap').width(),
			pos_sub = $(this).offset().left + ul_width,
			pos_sub_child = pos_sub;			
			
			if ($('ul',this).length>0) {
				pos_sub_child = $(this).find('ul:first').offset().left+ul_width;
			}
		
			if(pos_sub_child >= end_nav) {
				if ($(this).parent().hasClass('menu')) {
					$(this).find('ul:eq(0)').css('left', -(ul_width) + $(this).width() +'px');
				}
				else {
					$(this).find('ul').css('left', '-100%');
				}
					
			}			  
									  
        	$(this).find('ul:first').css('visibility', 'visible').hide().slideDown(400);
        },

        function () {
		
            $(this).find('ul:first').css('visibility', 'hidden');

        });

    };

})(jQuery); // confine scope

;(function ($) {

    /* 
     *  Copyright (c) 2009 Rascals - Interactive Laboratory http://www.rascals.eu
     *  RSlider - Rascals Slider
	 *  ver 1.0
     */

    jQuery.fn.RSlider = function (options) {
        var opts = jQuery.extend({
            'delay': parseInt($('.delay', this).text()),
            'duration': parseInt($('.duration', this).text()),
            'width': 940,
            'height': 380,
			'display_ctrl' : true,
			'display_arrows' : false,
            'transition': $('.transition', this).text(),
            'easing': $('.easing', this).text(),
            'active_class': 'active'
        }, options);
        var timer;
        var delay = opts.delay * 1000;
        var check = false;
        var project = $(this).find('.rs-project'),
            c = 1,
            ti = $('.rs-project', this).size();
		
        //Loading images
        project.each(function (i) {
                var image_path = $(this).find('a').attr('title'),
                    l = $(this),
                    img = new Image();
                l.append('<span class="ajax-loader"></span>')
                $(img).css('opacity', '0.0').load(

                    function () {
                        l.append(this);
                        $(this).css('opacity', '0.0').animate({
                            opacity: 1.0
                        }, 800, function () {
                            l.find('a').removeAttr('title');
                            l.find('span.ajax-loader').remove();
							
                        });
                    }).attr({
                        'src': image_path,
                        'width': opts.width,
                        'height': opts.height
                    });
                if (opts.transition == 'vertical') l.css('top', i * opts.height + 'px');
                else if (opts.transition == 'horizontal') l.css('left', i * opts.width + 'px');
                else {
                        if (i > 0) l.css('display', 'none');
                    }
            });
			// Image hover effect
			project.bind({
				mouseenter: function() {
					stop_timer();
					$(this).find('img').stop().animate({
					opacity: .5
					}, 400);
  				},
  				mouseleave: function() {
					auto_slide();
    				$(this).find('img').stop().animate({
					opacity: 1
					}, 400);
  				}
			});

     
        //Controller
		if (opts.display_arrows == true) {
			$(this).append('<div class="rs-arrows"><a href="#" class="rs-prev">Previous project</a> <a href="#" class="rs-next">Next project</a></div>');
		}
		if (opts.display_ctrl == true) {
			$(this).append('<div class="rs-ctrl pngfix"></div>')
			for(var i=0;i<ti;i++) {
				$('.rs-ctrl', this).append('<a href="#"></a>');
			 }
			var ctrl = $('.rs-ctrl a', this);
			ctrl.eq(0).addClass(opts.active_class);
			ctrl.each(function (i) {
					$(this).click(function () {
						if (check == false || !$(this).is(opts.active_class) ) {
							ctrl.removeClass(opts.active_class);
							$(this).addClass(opts.active_class);
							c = i;
							auto_slide();
							next();
						}
						return false;
					});
				});
		}
        $('.rs-next',this).bind('click', function () {
                if (check == false) {
                    auto_slide();
                    next();
                }
                return false;
            });

        $('.rs-prev', this).bind('click', function () {
                if (check == false) {
                    auto_slide();
                    prev();
                    return false;
                }
            });

        function fade() {
                if (project.eq(c - 1).css('display') == 'none') {
                    var dp = project.filter(':visible');
                    dp.css('z-index', 0);
                    project.eq(c - 1).css('z-index', 1).fadeIn('normal', function () {
                        check = false;
                        dp.css('display', 'none');
                    });
                }
            }

        function slide() {
                if (project.eq(c - 1).css('display') == 'none') {
                    var dp = project.filter(':visible');
                    dp.css('z-index', 1);
                    project.eq(c - 1).css({
                        'z-index': 0,
                        'display': 'block'
                    });

                    dp.animate({
                        left: opts.width
                    }, opts.duration, opts.easing, function () {
                        check = false;
                        dp.css({
                            'left': 0,
                            'display': 'none'
                        });
                    });
                }
            }

        function next() {
                check = true;
                if (c == 0) c = ti;
                l = c;
                if (c == ti) c = 1
                else c++;
                if (opts.transition == 'vertical') {
                    check = false;
                    project.animate({
                        marginTop: -(c - 1) * opts.height
                    }, {
                        duration: opts.duration,
                        easing: opts.easing,
                        queue: false
                    });
                } else if (opts.transition == 'horizontal') {
                    check = false;
                    project.animate({
                        marginLeft: -(c - 1) * opts.width
                    }, {
                        duration: opts.duration,
                        easing: opts.easing,
                        queue: false
                    });
                }

                else if (opts.transition == 'fade') fade();
                else slide();
				if (opts.display_ctrl == true) {
                	ctrl.removeClass(opts.active_class);
                	ctrl.eq(c - 1).addClass(opts.active_class);
				}
            }

        function prev() {
                check = true;
                l = c;
                if (c == 1) c = ti;
                else c--
                if (opts.transition == 'vertical') {
                    check = false;
                    project.animate({
                        marginTop: -(c - 1) * opts.height
                    }, {
                        duration: opts.duration,
                        easing: opts.easing,
                        queue: false
                    });
                } else if (opts.transition == 'horizontal') {
                    check = false;
                    project.animate({
                        marginLeft: -(c - 1) * opts.width
                    }, {
                        duration: opts.duration,
                        easing: opts.easing,
                        queue: false
                    });
                }
                else if (opts.transition == 'fade') fade();
                else slide();
				if (opts.display_ctrl == true) {
					ctrl.removeClass(opts.active_class);
					ctrl.eq(c - 1).addClass(opts.active_class);
				}
            }

         function auto_slide() {
                if (delay > 0) {
                    clearInterval(timer);
                    timer = setInterval(function () {
                        next();
                    }, delay);
                }
            }
        function stop_timer() {
                clearInterval(timer);
            }
		auto_slide();
    };

})(jQuery); // confine scope



/*
 * jQuery Easing v1.3 - http://gsgd.co.uk/sandbox/jquery/easing/
 *
 * Uses the built in easing capabilities added In jQuery 1.1
 * to offer multiple easing options
 *
 * TERMS OF USE - jQuery Easing
 * 
 * Open source under the BSD License. 
 * 
 * Copyright Â© 2008 George McGinley Smith
 * All rights reserved.
 * 
 * Redistribution and use in source and binary forms, with or without modification, 
 * are permitted provided that the following conditions are met:
 * 
 * Redistributions of source code must retain the above copyright notice, this list of 
 * conditions and the following disclaimer.
 * Redistributions in binary form must reproduce the above copyright notice, this list 
 * of conditions and the following disclaimer in the documentation and/or other materials 
 * provided with the distribution.
 * 

 * Neither the name of the author nor the names of contributors may be used to endorse 
 * or promote products derived from this software without specific prior written permission.
 * 
 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY 
 * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
 * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
 *  COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
 *  EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
 *  GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED 
 * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
 *  NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED 
 * OF THE POSSIBILITY OF SUCH DAMAGE. 
 *
*/

// t: current time, b: begInnIng value, c: change In value, d: duration
jQuery.easing['jswing'] = jQuery.easing['swing'];

jQuery.extend( jQuery.easing,
{
	def: 'easeOutQuad',
	swing: function (x, t, b, c, d) {
		//alert(jQuery.easing.default);
		return jQuery.easing[jQuery.easing.def](x, t, b, c, d);
	},
	easeInQuad: function (x, t, b, c, d) {
		return c*(t/=d)*t + b;
	},
	easeOutQuad: function (x, t, b, c, d) {
		return -c *(t/=d)*(t-2) + b;
	},
	easeInOutQuad: function (x, t, b, c, d) {
		if ((t/=d/2) < 1) return c/2*t*t + b;
		return -c/2 * ((--t)*(t-2) - 1) + b;
	},
	easeInCubic: function (x, t, b, c, d) {
		return c*(t/=d)*t*t + b;
	},
	easeOutCubic: function (x, t, b, c, d) {
		return c*((t=t/d-1)*t*t + 1) + b;
	},
	easeInOutCubic: function (x, t, b, c, d) {
		if ((t/=d/2) < 1) return c/2*t*t*t + b;
		return c/2*((t-=2)*t*t + 2) + b;
	},
	easeInQuart: function (x, t, b, c, d) {
		return c*(t/=d)*t*t*t + b;
	},
	easeOutQuart: function (x, t, b, c, d) {
		return -c * ((t=t/d-1)*t*t*t - 1) + b;
	},
	easeInOutQuart: function (x, t, b, c, d) {
		if ((t/=d/2) < 1) return c/2*t*t*t*t + b;
		return -c/2 * ((t-=2)*t*t*t - 2) + b;
	},
	easeInQuint: function (x, t, b, c, d) {
		return c*(t/=d)*t*t*t*t + b;
	},
	easeOutQuint: function (x, t, b, c, d) {
		return c*((t=t/d-1)*t*t*t*t + 1) + b;
	},
	easeInOutQuint: function (x, t, b, c, d) {
		if ((t/=d/2) < 1) return c/2*t*t*t*t*t + b;
		return c/2*((t-=2)*t*t*t*t + 2) + b;
	},
	easeInSine: function (x, t, b, c, d) {
		return -c * Math.cos(t/d * (Math.PI/2)) + c + b;
	},
	easeOutSine: function (x, t, b, c, d) {
		return c * Math.sin(t/d * (Math.PI/2)) + b;
	},
	easeInOutSine: function (x, t, b, c, d) {
		return -c/2 * (Math.cos(Math.PI*t/d) - 1) + b;
	},
	easeInExpo: function (x, t, b, c, d) {
		return (t==0) ? b : c * Math.pow(2, 10 * (t/d - 1)) + b;
	},
	easeOutExpo: function (x, t, b, c, d) {
		return (t==d) ? b+c : c * (-Math.pow(2, -10 * t/d) + 1) + b;
	},
	easeInOutExpo: function (x, t, b, c, d) {
		if (t==0) return b;
		if (t==d) return b+c;
		if ((t/=d/2) < 1) return c/2 * Math.pow(2, 10 * (t - 1)) + b;
		return c/2 * (-Math.pow(2, -10 * --t) + 2) + b;
	},
	easeInCirc: function (x, t, b, c, d) {
		return -c * (Math.sqrt(1 - (t/=d)*t) - 1) + b;
	},
	easeOutCirc: function (x, t, b, c, d) {
		return c * Math.sqrt(1 - (t=t/d-1)*t) + b;
	},
	easeInOutCirc: function (x, t, b, c, d) {
		if ((t/=d/2) < 1) return -c/2 * (Math.sqrt(1 - t*t) - 1) + b;
		return c/2 * (Math.sqrt(1 - (t-=2)*t) + 1) + b;
	},
	easeInElastic: 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;
	},
	easeOutElastic: 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;
	},
	easeInOutElastic: 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;
	},
	easeInBack: function (x, t, b, c, d, s) {
		if (s == undefined) s = 1.70158;
		return c*(t/=d)*t*((s+1)*t - s) + b;
	},
	easeOutBack: function (x, t, b, c, d, s) {
		if (s == undefined) s = 1.70158;
		return c*((t=t/d-1)*t*((s+1)*t + s) + 1) + b;
	},
	easeInOutBack: function (x, t, b, c, d, s) {
		if (s == undefined) 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;
	},
	easeInBounce: function (x, t, b, c, d) {
		return c - jQuery.easing.easeOutBounce (x, d-t, 0, c, d) + b;
	},
	easeOutBounce: 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;
		}
	},
	easeInOutBounce: function (x, t, b, c, d) {
		if (t < d/2) return jQuery.easing.easeInBounce (x, t*2, 0, c, d) * .5 + b;
		return jQuery.easing.easeOutBounce (x, t*2-d, 0, c, d) * .5 + c*.5 + b;
	}
});

/*
 *
 * TERMS OF USE - EASING EQUATIONS
 * 
 * Open source under the BSD License. 
 * 
 * Copyright Â© 2001 Robert Penner
 * All rights reserved.
 * 
 * Redistribution and use in source and binary forms, with or without modification, 
 * are permitted provided that the following conditions are met:
 * 
 * Redistributions of source code must retain the above copyright notice, this list of 
 * conditions and the following disclaimer.
 * Redistributions in binary form must reproduce the above copyright notice, this list 
 * of conditions and the following disclaimer in the documentation and/or other materials 
 * provided with the distribution.
 * 
 * Neither the name of the author nor the names of contributors may be used to endorse 
 * or promote products derived from this software without specific prior written permission.
 * 
 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY 
 * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
 * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
 *  COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
 *  EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
 *  GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED 
 * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
 *  NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED 
 * OF THE POSSIBILITY OF SUCH DAMAGE. 
 *
 */
 ;(function($){ // secure $ jQuery alias
/**
* hoverIntent r5 // 2007.03.27 // jQuery 1.1.2+
* <http://cherne.net/brian/resources/jquery.hoverIntent.html>
* 
* @param  f  onMouseOver function || An object with configuration options
* @param  g  onMouseOut function  || Nothing (use configuration options object)
* @author    Brian Cherne <brian@cherne.net>
*/
(function($){$.fn.hoverIntent=function(f,g){var cfg={sensitivity:7,interval:100,timeout:0};cfg=$.extend(cfg,g?{over:f,out:g}:f);var cX,cY,pX,pY;var track=function(ev){cX=ev.pageX;cY=ev.pageY;};var compare=function(ev,ob){ob.hoverIntent_t=clearTimeout(ob.hoverIntent_t);if((Math.abs(pX-cX)+Math.abs(pY-cY))<cfg.sensitivity){$(ob).unbind("mousemove",track);ob.hoverIntent_s=1;return cfg.over.apply(ob,[ev]);}else{pX=cX;pY=cY;ob.hoverIntent_t=setTimeout(function(){compare(ev,ob);},cfg.interval);}};var delay=function(ev,ob){ob.hoverIntent_t=clearTimeout(ob.hoverIntent_t);ob.hoverIntent_s=0;return cfg.out.apply(ob,[ev]);};var handleHover=function(e){var p=(e.type=="mouseover"?e.fromElement:e.toElement)||e.relatedTarget;while(p&&p!=this){try{p=p.parentNode;}catch(e){p=this;}}if(p==this){return false;}var ev=jQuery.extend({},e);var ob=this;if(ob.hoverIntent_t){ob.hoverIntent_t=clearTimeout(ob.hoverIntent_t);}if(e.type=="mouseover"){pX=ev.pageX;pY=ev.pageY;$(ob).bind("mousemove",track);if(ob.hoverIntent_s!=1){ob.hoverIntent_t=setTimeout(function(){compare(ev,ob);},cfg.interval);}}else{$(ob).unbind("mousemove",track);if(ob.hoverIntent_s==1){ob.hoverIntent_t=setTimeout(function(){delay(ev,ob);},cfg.timeout);}}};return this.mouseover(handleHover).mouseout(handleHover);};})(jQuery);
})(jQuery); // confine scope
