// Fit JS Scripts
(function ($) {
    $.fit = {
        navigation: function (options) {
            var defaults = {
                selector: '#nav li',
                className: 'over'
            };
            if (typeof options == 'string') defaults.selector = options;
            var options = $.extend(defaults, options);
            return $(options.selector).each(function () {
                $(this).hover(function () {
                    $('ul:first', this).fadeIn(100);
                    $('a:first', this).addClass(options.className)
                }, function () {
                    $('ul', this).hide();
                    $('a', this).removeClass(options.className)
                })
            })
        },
        tooltip: function (options) {
            var defaults = {
                selector: '.tooltip',
                xOffset: 10,
                yOffset: 25,
                clickRemove: false,
                id: 'fit_tooltip',
                content: '',
                useElement: ''
            };
            if (typeof options == 'string') defaults.selector = options;
            var options = $.extend(defaults, options);
            var content;
            return $(options.selector).each(function () {
                var title = $(this).attr('title');
                $(this).hover(function (e) {
                    content = (options.content != '') ? options.content : title;
                    content = (options.useElement != '') ? $('#' + options.useElement).html() : content;
                    $(this).attr('title', '');
                    if (content != '' && content != undefined) {
                        $('body').append('<div id="' + options.id + '">' + content + '</div>');
                        $('#' + options.id).css({
                            'position': 'absolute',
                            'display': 'none'
                        }).css('top', (e.pageY - options.yOffset) + 'px').css('left', (e.pageX + options.xOffset) + 'px').fadeIn('fast')
                    }
                }, function () {
                    $('#' + options.id).remove();
                    $(this).attr('title', title)
                });
                $(this).mousemove(function (e) {
                    var x = ((e.pageX + options.xOffset + $(this).width()) < $(window).width()) ? (e.pageX + options.xOffset) : (e.pageX - options.xOffset - $(this).width() - 16);
                    $('#' + options.id).css('top', (e.pageY - options.yOffset) + 'px').css('left', (x + 'px'))
                });
                if (options.clickRemove) {
                    $(this).mousedown(function (e) {
                        $('#' + options.id).remove();
                        $(this).attr('title', title)
                    })
                }
            })
        },
        popup: function (options) {
            var defaults = {
                selector: '.popup',
                popupId: 'fit_popup',
                preloadText: 'Loading...',
                errorText: 'There has been a problem with your request, please click outside this window to close it.',
                closeText: 'Close',
                prevText: '&laquo; Previous',
                nextText: 'Next &raquo;'
            };
            if (typeof options == 'string') defaults.selector = options;
            var options = $.extend(defaults, options);
            return $(options.selector).each(function (i) {
                if ($(this).hasClass('gallery')) {
                    var classNames = $(this).attr('class');
                    classNames = classNames.split(' ').join('');
                    $.data(this, 'gallery', classNames);
                    eval('if((typeof ' + classNames + '_arr == "undefined")) ' + classNames + '_arr= new Array()');
                    eval(classNames + '_arr').push($(this));
                    $.data(this, 'index', eval(classNames + '_arr').length - 1)
                };
                $(this).bind('click', function (e) {
                    e.preventDefault();
                    if ($.browser.opera) $.support.opacity = true;
                    var ie6 = $.browser.msie && $.browser.version.substr(0, 1) < 7;
                    var opera95 = $.browser.opera && $.browser.version <= 9.5;
                    var w = $(window).width();
                    var h = $(document).height();
                    var w2 = $(window).width() / 2;
                    var h2 = $(window).height() / 2;
                    show = function () {
                        $('#' + options.popupId + 'preloader').remove();
                        if (cw != 0) $('#' + options.popupId + 'content').css('width', cw + 'px');
                        if (ch != 0) $('#' + options.popupId + 'content').css('height', ch + 'px');
                        set($('#' + options.popupId + 'content'));
                        $('img', '#' + options.popupId + 'content').css('visibility', 'visible')
                    };
                    set = function (obj) {
                        $(obj).css({
                            'padding': '10px',
                            'background': '#fff',
                            'color': '#333',
                            'text-align': 'left',
                            'float': 'left',
                            'position': 'fixed',
                            'z-index': '10001',
                            'visible': 'hidden'
                        });
                        var left = w2 - $(obj).width() / 2;
                        var top = h2 - $(obj).height() / 2;
                        $(obj).css({
                            'left': left,
                            'top': top,
                            'display': 'none'
                        }).fadeIn('1000');
                        if (ie6) $(obj).css({
                            'position': 'absolute',
                            'top': (top + $(window).scrollTop()) + 'px'
                        });
                        if (opera95) $(obj).css({
                            'position': 'absolute',
                            'top': (document.body['clientHeight'] / 2 - $(obj).height() / 2 + $(window).scrollTop()) + 'px'
                        });
                        $('.caption', obj).css({
                            'width': $(obj).width() + 'px',
                            'display': 'block'
                        })
                    };
                    if (ie6) $('embed, object, select').css('visibility', 'hidden');
                    error = function () {
                        $('#' + options.popupId + 'content').text(options.errorText);
                        show()
                    };
                    remove = function () {
                        $('#' + options.popupId).remove();
                        $('#' + options.popupId + 'content').remove();
                        $('#' + options.popupId + 'preloader').remove();
                        if (ie6) $('embed, object, select').css('visibility', 'visible')
                    };
                    if ($('#' + options.popupId).length == 0) {
                        $('<div id="' + options.popupId + '"></div>').appendTo('body').css({
                            'width': w,
                            'height': h,
                            'background': '#000',
                            'position': 'absolute',
                            'top': '0',
                            'left': '0',
                            'z-index': '10000',
                            'opacity': .7
                        }).click(function () {
                            remove()
                        })
                    };
                    var href = $(this).attr('href');
                    var extension = href.substr(href.lastIndexOf('.')).toLowerCase();
                    var content;
                    var cw = 0;
                    var ch = 0;
                    var showOk = false;
                    $('<div id="' + options.popupId + 'preloader">' + options.preloadText + '</div>').appendTo('body');
                    set($('#' + options.popupId + 'preloader'));
                    $('<div id="' + options.popupId + 'content"></div>').appendTo('body');
                    if ($(this).hasClass('flash')) {
                        var flash = '<object width="100%" height="100%"><param name="allowfullscreen" value="true" /><param name="allowscriptaccess" value="always" /><param name="movie" value="' + href + '" /><embed src="' + href + '" type="application/x-shockwave-flash" allowfullscreen="true" allowscriptaccess="always" width="100%" height="100%"></embed></object>';
                        $(flash).appendTo('#' + options.popupId + 'content');
                        cw = 600;
                        ch = 400;
                        showOk = true
                    } else {
                        if (extension == '.jpg' || extension == '.jpeg' || extension == '.gif' || extension == '.png' || extension == '.bmp') {
                            var img = new Image();
                            $(img).error(function () {
                                error()
                            }).css('visibility', 'hidden').appendTo('#' + options.popupId + 'content');
                            img.onload = function () {
                                show();
                                img.onload = function () {}
                            };
                            img.src = href + '?' + (new Date()).getTime() + ' =' + (new Date()).getTime()
                        } else if (href.charAt(0) == '#') {
                            $(href).clone().removeClass('hidden').show().appendTo('#' + options.popupId + 'content');
                            $.fit.forms('#' + options.popupId + 'content form');
                            showOk = true
                        } else {
                            $('<iframe frameborder="0" scrolling="auto" style="width:100%;height:100%" src="' + href + '" />').appendTo('#' + options.popupId + 'content');
                            cw = 900;
                            ch = 500;
                            showOk = true
                        }
                    };
                    var rel = $(this).attr('rel').split(';');
                    $.each(rel, function (i) {
                        if (rel[i].indexOf('width') != -1) cw = rel[i].split(':')[1];
                        if (rel[i].indexOf('height') != -1) ch = rel[i].split(':')[1]
                    });
                    if ($(this).attr('title') != '') {
                        $('<span class="caption">' + $(this).attr('title') + '</span>').appendTo('#' + options.popupId + 'content').css({
                            'display': 'none',
                            'padding': '10px 0 0 0'
                        })
                    };
                    if (showOk) show();
                    $('<small>' + options.closeText + '</small>').appendTo('#' + options.popupId + 'content').css({
                        'position': 'absolute',
                        'float': 'left',
                        'left': '0',
                        'top': '-24px',
                        'color': '#fff',
                        'cursor': 'pointer'
                    }).click(function () {
                        remove()
                    });
                    if ($(this).hasClass('gallery')) {
                        var arr = $.data(this, 'gallery');
                        arr = eval(arr + '_arr');
                        var index = $.data(this, 'index');
                        if (arr.length > 1) {
                            $('<small>' + (index + 1) + '/' + arr.length + '</small>').appendTo('#' + options.popupId + 'content').css({
                                'position': 'absolute',
                                'float': 'right',
                                'right': '0',
                                'bottom': '-24px',
                                'color': '#fff',
                                'cursor': 'pointer'
                            });
                            $('<small id="' + options.popupId + 'gallery"></small>').appendTo('#' + options.popupId + 'content').css({
                                'position': 'absolute',
                                'float': 'left',
                                'left': '0',
                                'bottom': '-24px',
                                'color': '#fff',
                                'cursor': 'pointer'
                            });
                            if (index != 0) {
                                $('<span>' + options.prevText + '</span>').css('margin-right', '5px').appendTo('#' + options.popupId + 'gallery').click(function () {
                                    $('#' + options.popupId + 'content').remove();
                                    var obj = arr[index - 1];
                                    $(obj).trigger('click')
                                })
                            }
                            if (index < arr.length - 1) {
                                $('<span>' + options.nextText + '</span>').appendTo('#' + options.popupId + 'gallery').click(function () {
                                    $('#' + options.popupId + 'content').remove();
                                    var obj = arr[index + 1];
                                    $(obj).trigger('click')
                                })
                            }
                        }
                    }
                })
            })
        },
        rotate: function (options) {
            var defaults = {
                selector: '.rotate',
                pause: 5000,
                randomize: false
            };
            if (typeof options == 'string') defaults.selector = options;
            var options = $.extend(defaults, options);
            return $(options.selector).each(function () {
                var obj = $(this);
                var length = $(obj).children().length;
                var temp = 0;

                function getRan() {
                    var ran = Math.floor(Math.random() * length) + 1;
                    return ran
                };

                function show() {
                    if (options.randomize) {
                        var ran = getRan();
                        while (ran == temp) {
                            ran = getRan()
                        };
                        temp = ran
                    } else {
                        temp = (temp == length) ? 1 : temp + 1
                    };
                    $(obj).children().hide();
                    $(':nth-child(' + temp + ')', obj).fadeIn('slow')
                };
                show();
                setInterval(show, options.pause)
            })
        },
        cycle: function (options) {
            var defaults = {
                selector: '.cycle',
                effect: 'fade',
                pause: 5000
            };
            if (typeof options == 'string') defaults.selector = options;
            var options = $.extend(defaults, options);
            return $(options.selector).each(function () {
                var obj = $(this);
                var length = $(obj).children().length;
                var temp = 0;
                var prev = -1;
                var z = 1;
                var h = $(':nth-child(1)', obj).height();
                $(obj).css('position', 'relative').height(h);
                $(obj).children().hide().css({
                    'position': 'absolute',
                    'top': '0',
                    'left': '0'
                });

                function show() {
                    temp = (temp == length) ? 1 : temp + 1;
                    prev = (temp == 1) ? length : temp - 1;
                    $(':nth-child(' + temp + ')', obj).css('z-index', z).fadeIn('slow', function () {
                        $(':nth-child(' + prev + ')', obj).fadeOut('slow')
                    });
                    z++
                };
                show();
                setInterval(show, options.pause)
            })
        },
        jump: function (options) {
            var defaults = {
                selector: 'a.jump',
                speed: 1000
            };
            if (typeof options == 'string') defaults.selector = options;
            var options = $.extend(defaults, options);
            return $(options.selector).click(function () {
                var target = $($(this).attr('href'));
                var offset = $(target).offset().top;
                $('html,body').animate({
                    scrollTop: offset
                }, 1000, 'linear')
            })
        },
        showhide: function (options) {
            var defaults = {
                selector: '.toggle'
            };
            if (typeof options == 'string') defaults.selector = options;
            var options = $.extend(defaults, options);
            return $(options.selector).each(function () {
                var target;
                if ($(this).hasClass('prev')) {
                    target = $(this).prev().hide()
                } else if ($(this).hasClass('id')) {
                    target = $(this).attr('href');
                    target = $(target).hide()
                } else {
                    target = $(this).next().hide()
                };
                $(this).css('cursor', 'pointer');
                $(this).toggle(function () {
                    $(this).addClass('expanded');
                    $(target).slideDown()
                }, function () {
                    $(target).slideUp();
                    $(this).removeClass('expanded')
                })
            })
        },
        forms: function (options) {
            var defaults = {
                selector: 'form',
                err: 'This is required',
                errEmail: 'Valid email address is required',
                errUrl: 'URL is required',
                errPhone: 'Phone number is required',
                notValidClass: 'notvalid'
            };

            function check(obj) {
                if ($(obj).val() == '' || checkLabel(obj)) {
                    var errormsg = ($(obj).attr('title') != '') ? $(obj).attr('title') : options.err;
                    error(obj, errormsg)
                }
            };

            function checkRegEx(obj, type) {
                var regEx, err;
                switch (type) {
                case 'url':
                    regEx = /(ftp|http|https):\/\/(\w+:{0,1}\w*@)?(\S+)(:[0-9]+)?(\/|\/([\w#!:.?+=&%@!\-\/]))?/;
                    err = options.errUrl;
                    break;
                case 'phone':
                    var regEx = /[\d\s_-]/;
                    err = options.errPhone;
                    break;
                default:
                    regEx = /^[^@]+@[^@]+.[a-z]{2,}$/;
                    err = options.errEmail
                };
                var val = $(obj).val();
                if (val.search(regEx) == -1 || checkLabel(obj)) {
                    var errormsg = ($(obj).attr('title') != '') ? $(obj).attr('title') : err;
                    error(obj, errormsg)
                }
            };

            function checkLabel(obj) {
                var text = $('label[for=' + $(obj).attr('id') + ']').text();
                return (text == $(obj).val())
            };

            function error(obj, errormsg) {
                var parent = $(obj).parent();
                parent.append('<span class="error">' + errormsg + '</span>');
                $('span.error', parent).hide().fadeIn('fast');
                $(obj).addClass(options.notValidClass);
                valid = false
            };
            $('input.label,textarea.label').each(function () {
                var text = $('label[for=' + $(this).attr('id') + ']').text();
                $('label[for=' + $(this).attr('id') + ']').css('display', 'none');
                $(this).val(text);
                $(this).focus(function () {
                    if ($(this).val() == text) $(this).val('')
                });
                $(this).blur(function () {
                    if ($(this).val() == '') $(this).val(text)
                })
            });
            if (typeof options == 'string') defaults.selector = options;
            var options = $.extend(defaults, options);
            return $(options.selector).each(function () {
                $(this).submit(function () {
                    $('.error', this).remove();
                    $('.' + options.notValidClass, this).removeClass(options.notValidClass);
                    valid = true;
                    $(':text.required', this).each(function () {
                        if ($(this).hasClass('email')) {
                            checkRegEx(this, 'email')
                        } else if ($(this).hasClass('url')) {
                            checkRegEx(this, 'url')
                        } else if ($(this).hasClass('phone')) {
                            checkRegEx(this, 'phone')
                        } else {
                            check(this)
                        }
                    });
                    $(':password.required', this).each(function () {
                        check(this)
                    });
                    $('textarea.required', this).each(function () {
                        check(this)
                    });
                    $(':checkbox.required', this).each(function () {
                        if (!$(this).attr('checked')) {
                            var errormsg = ($(this).attr('title') != '') ? $(this).attr('title') : options.err;
                            error(this, errormsg)
                        }
                    });
                    return valid
                })
            })
        }
    }
})(jQuery);
/*
 * jQuery Nivo Slider v2.4
 * http://nivo.dev7studios.com
 *
 * Copyright 2011, Gilbert Pellegrom
 * Free to use and abuse under the MIT license.
 * http://www.opensource.org/licenses/mit-license.php
 * 
 * May 2010 - Pick random effect from specified set of effects by toronegro
 * May 2010 - controlNavThumbsFromRel option added by nerd-sh
 * May 2010 - Do not start nivoRun timer if there is only 1 slide by msielski
 * April 2010 - controlNavThumbs option added by Jamie Thompson (http://jamiethompson.co.uk)
 * March 2010 - manualAdvance option added by HelloPablo (http://hellopablo.co.uk)
 */

(function($) {

    var NivoSlider = function(element, options){
		//Defaults are below
		var settings = $.extend({}, $.fn.nivoSlider.defaults, options);

        //Useful variables. Play carefully.
        var vars = {
            currentSlide: 0,
            currentImage: '',
            totalSlides: 0,
            randAnim: '',
            running: false,
            paused: false,
            stop: false
        };
    
        //Get this slider
        var slider = $(element);
        slider.data('nivo:vars', vars);
        slider.css('position','relative');
        slider.addClass('nivoSlider');
        
        //Find our slider children
        var kids = slider.children();
        kids.each(function() {
            var child = $(this);
            var link = '';
            if(!child.is('img')){
                if(child.is('a')){
                    child.addClass('nivo-imageLink');
                    link = child;
                }
                child = child.find('img:first');
            }
            //Get img width & height
            var childWidth = child.width();
            if(childWidth == 0) childWidth = child.attr('width');
            var childHeight = child.height();
            if(childHeight == 0) childHeight = child.attr('height');
            //Resize the slider
            if(childWidth > slider.width()){
                slider.width(childWidth);
            }
            if(childHeight > slider.height()){
                slider.height(childHeight);
            }
            if(link != ''){
                link.css('display','none');
            }
            child.css('display','none');
            vars.totalSlides++;
        });
        
        //Set startSlide
        if(settings.startSlide > 0){
            if(settings.startSlide >= vars.totalSlides) settings.startSlide = vars.totalSlides - 1;
            vars.currentSlide = settings.startSlide;
        }
        
        //Get initial image
        if($(kids[vars.currentSlide]).is('img')){
            vars.currentImage = $(kids[vars.currentSlide]);
        } else {
            vars.currentImage = $(kids[vars.currentSlide]).find('img:first');
        }
        
        //Show initial link
        if($(kids[vars.currentSlide]).is('a')){
            $(kids[vars.currentSlide]).css('display','block');
        }
        
        //Set first background
        slider.css('background','url("'+ vars.currentImage.attr('src') +'") no-repeat');
        
        //Add initial slices
        for(var i = 0; i < settings.slices; i++){
            var sliceWidth = Math.round(slider.width()/settings.slices);
            if(i == settings.slices-1){
                slider.append(
                    $('<div class="nivo-slice"></div>').css({ left:(sliceWidth*i)+'px', width:(slider.width()-(sliceWidth*i))+'px' })
                );
            } else {
                slider.append(
                    $('<div class="nivo-slice"></div>').css({ left:(sliceWidth*i)+'px', width:sliceWidth+'px' })
                );
            }
        }
        
        //Create caption
        slider.append(
            $('<div class="nivo-caption"><p></p></div>').css({ display:'none', opacity:settings.captionOpacity })
        );			
        //Process initial  caption
        if(vars.currentImage.attr('title') != ''){
            var title = vars.currentImage.attr('title');
            if(title.substr(0,1) == '#') title = $(title).html();
            $('.nivo-caption p', slider).html(title);					
            $('.nivo-caption', slider).fadeIn(settings.animSpeed);
        }
        
        //In the words of Super Mario "let's a go!"
        var timer = 0;
        if(!settings.manualAdvance && kids.length > 1){
            timer = setInterval(function(){ nivoRun(slider, kids, settings, false); }, settings.pauseTime);
        }

        //Add Direction nav
        if(settings.directionNav){
            slider.append('<div class="nivo-directionNav"><a class="nivo-prevNav">Prev</a><a class="nivo-nextNav">Next</a></div>');
            
            //Hide Direction nav
            if(settings.directionNavHide){
                $('.nivo-directionNav', slider).hide();
                slider.hover(function(){
                    $('.nivo-directionNav', slider).show();
                }, function(){
                    $('.nivo-directionNav', slider).hide();
                });
            }
            
            $('a.nivo-prevNav', slider).live('click', function(){
                if(vars.running) return false;
                clearInterval(timer);
                timer = '';
                vars.currentSlide-=2;
                nivoRun(slider, kids, settings, 'prev');
            });
            
            $('a.nivo-nextNav', slider).live('click', function(){
                if(vars.running) return false;
                clearInterval(timer);
                timer = '';
                nivoRun(slider, kids, settings, 'next');
            });
        }
        
        //Add Control nav
        if(settings.controlNav){
            var nivoControl = $('<div class="nivo-controlNav"></div>');
            slider.append(nivoControl);
            for(var i = 0; i < kids.length; i++){
                if(settings.controlNavThumbs){
                    var child = kids.eq(i);
                    if(!child.is('img')){
                        child = child.find('img:first');
                    }
                    if (settings.controlNavThumbsFromRel) {
                        nivoControl.append('<a class="nivo-control" rel="'+ i +'"><img src="'+ child.attr('rel') + '" alt="" /></a>');
                    } else {
                        nivoControl.append('<a class="nivo-control" rel="'+ i +'"><img src="'+ child.attr('src').replace(settings.controlNavThumbsSearch, settings.controlNavThumbsReplace) +'" alt="" /></a>');
                    }
                } else {
                    nivoControl.append('<a class="nivo-control" rel="'+ i +'">'+ (i + 1) +'</a>');
                }
                
            }
            //Set initial active link
            $('.nivo-controlNav a:eq('+ vars.currentSlide +')', slider).addClass('active');
            
            $('.nivo-controlNav a', slider).live('click', function(){
                if(vars.running) return false;
                if($(this).hasClass('active')) return false;
                clearInterval(timer);
                timer = '';
                slider.css('background','url("'+ vars.currentImage.attr('src') +'") no-repeat');
                vars.currentSlide = $(this).attr('rel') - 1;
                nivoRun(slider, kids, settings, 'control');
            });
        }
        
        //Keyboard Navigation
        if(settings.keyboardNav){
            $(window).keypress(function(event){
                //Left
                if(event.keyCode == '37'){
                    if(vars.running) return false;
                    clearInterval(timer);
                    timer = '';
                    vars.currentSlide-=2;
                    nivoRun(slider, kids, settings, 'prev');
                }
                //Right
                if(event.keyCode == '39'){
                    if(vars.running) return false;
                    clearInterval(timer);
                    timer = '';
                    nivoRun(slider, kids, settings, 'next');
                }
            });
        }
        
        //For pauseOnHover setting
        if(settings.pauseOnHover){
            slider.hover(function(){
                vars.paused = true;
                clearInterval(timer);
                timer = '';
            }, function(){
                vars.paused = false;
                //Restart the timer
                if(timer == '' && !settings.manualAdvance){
                    timer = setInterval(function(){ nivoRun(slider, kids, settings, false); }, settings.pauseTime);
                }
            });
        }
        
        //Event when Animation finishes
        slider.bind('nivo:animFinished', function(){ 
            vars.running = false; 
            //Hide child links
            $(kids).each(function(){
                if($(this).is('a')){
                    $(this).css('display','none');
                }
            });
            //Show current link
            if($(kids[vars.currentSlide]).is('a')){
                $(kids[vars.currentSlide]).css('display','block');
            }
            //Restart the timer
            if(timer == '' && !vars.paused && !settings.manualAdvance){
                timer = setInterval(function(){ nivoRun(slider, kids, settings, false); }, settings.pauseTime);
            }
            //Trigger the afterChange callback
            settings.afterChange.call(this);
        });
        
        // Reset slice width before animations run
        var resetSliceWidth = function(slider, settings){
            var slices = $('.nivo-slice', slider);
            var i = 0;
            slices.each(function(){
                var slice = $(this);
                var sliceWidth = Math.round(slider.width()/settings.slices);
                if(i == settings.slices-1){
                    slice.css('width', (slider.width()-(sliceWidth*i)) + 'px');
                } else {
                    slice.css('width', sliceWidth + 'px');
                }
                i++;
            });
        }

        // Private run method
		var nivoRun = function(slider, kids, settings, nudge){
			//Get our vars
			var vars = slider.data('nivo:vars');
            
            //Trigger the lastSlide callback
            if(vars && (vars.currentSlide == vars.totalSlides - 1)){ 
				settings.lastSlide.call(this);
			}
            
            // Stop
			if((!vars || vars.stop) && !nudge) return false;
			
			//Trigger the beforeChange callback
			settings.beforeChange.call(this);
					
			//Set current background before change
			if(!nudge){
				slider.css('background','url("'+ vars.currentImage.attr('src') +'") no-repeat');
			} else {
				if(nudge == 'prev'){
					slider.css('background','url("'+ vars.currentImage.attr('src') +'") no-repeat');
				}
				if(nudge == 'next'){
					slider.css('background','url("'+ vars.currentImage.attr('src') +'") no-repeat');
				}
			}
			vars.currentSlide++;
            //Trigger the slideshowEnd callback
			if(vars.currentSlide == vars.totalSlides){ 
				vars.currentSlide = 0;
				settings.slideshowEnd.call(this);
			}
			if(vars.currentSlide < 0) vars.currentSlide = (vars.totalSlides - 1);
			//Set vars.currentImage
			if($(kids[vars.currentSlide]).is('img')){
				vars.currentImage = $(kids[vars.currentSlide]);
			} else {
				vars.currentImage = $(kids[vars.currentSlide]).find('img:first');
			}
			
			//Set acitve links
			if(settings.controlNav){
				$('.nivo-controlNav a', slider).removeClass('active');
				$('.nivo-controlNav a:eq('+ vars.currentSlide +')', slider).addClass('active');
			}
			
			//Process caption
			if(vars.currentImage.attr('title') != ''){
                var title = vars.currentImage.attr('title');
                if(title.substr(0,1) == '#') title = $(title).html();	
                    
				if($('.nivo-caption', slider).css('display') == 'block'){
					$('.nivo-caption p', slider).fadeOut(settings.animSpeed, function(){
						$(this).html(title);
						$(this).fadeIn(settings.animSpeed);
					});
				} else {
					$('.nivo-caption p', slider).html(title);
				}					
				$('.nivo-caption', slider).fadeIn(settings.animSpeed);
			} else {
				$('.nivo-caption', slider).fadeOut(settings.animSpeed);
			}
			
			//Set new slice backgrounds
			var  i = 0;
			$('.nivo-slice', slider).each(function(){
				var sliceWidth = Math.round(slider.width()/settings.slices);
				$(this).css({ height:'0px', opacity:'0', 
					background: 'url("'+ vars.currentImage.attr('src') +'") no-repeat -'+ ((sliceWidth + (i * sliceWidth)) - sliceWidth) +'px 0%' });
				i++;
			});
			
			if(settings.effect == 'random'){
				var anims = new Array('sliceDownRight','sliceDownLeft','sliceUpRight','sliceUpLeft','sliceUpDown','sliceUpDownLeft','fold','fade','slideInRight','slideInLeft');
				vars.randAnim = anims[Math.floor(Math.random()*(anims.length + 1))];
				if(vars.randAnim == undefined) vars.randAnim = 'fade';
			}
            
            //Run random effect from specified set (eg: effect:'fold,fade')
            if(settings.effect.indexOf(',') != -1){
                var anims = settings.effect.split(',');
                vars.randAnim = anims[Math.floor(Math.random()*(anims.length))];
				if(vars.randAnim == undefined) vars.randAnim = 'fade';
            }
		
			//Run effects
			vars.running = true;
			if(settings.effect == 'sliceDown' || settings.effect == 'sliceDownRight' || vars.randAnim == 'sliceDownRight' ||
				settings.effect == 'sliceDownLeft' || vars.randAnim == 'sliceDownLeft'){
				var timeBuff = 0;
				var i = 0;
                resetSliceWidth(slider, settings);
				var slices = $('.nivo-slice', slider);
				if(settings.effect == 'sliceDownLeft' || vars.randAnim == 'sliceDownLeft') slices = $('.nivo-slice', slider)._reverse();
				slices.each(function(){
					var slice = $(this);
					slice.css({ 'top': '0px' });
					if(i == settings.slices-1){
						setTimeout(function(){
							slice.animate({ height:'100%', opacity:'1.0' }, settings.animSpeed, '', function(){ slider.trigger('nivo:animFinished'); });
						}, (100 + timeBuff));
					} else {
						setTimeout(function(){
							slice.animate({ height:'100%', opacity:'1.0' }, settings.animSpeed);
						}, (100 + timeBuff));
					}
					timeBuff += 50;
					i++;
				});
			} 
			else if(settings.effect == 'sliceUp' || settings.effect == 'sliceUpRight' || vars.randAnim == 'sliceUpRight' ||
					settings.effect == 'sliceUpLeft' || vars.randAnim == 'sliceUpLeft'){
				var timeBuff = 0;
				var i = 0;
                resetSliceWidth(slider, settings);
				var slices = $('.nivo-slice', slider);
				if(settings.effect == 'sliceUpLeft' || vars.randAnim == 'sliceUpLeft') slices = $('.nivo-slice', slider)._reverse();
				slices.each(function(){
					var slice = $(this);
					slice.css({ 'bottom': '0px' });
					if(i == settings.slices-1){
						setTimeout(function(){
							slice.animate({ height:'100%', opacity:'1.0' }, settings.animSpeed, '', function(){ slider.trigger('nivo:animFinished'); });
						}, (100 + timeBuff));
					} else {
						setTimeout(function(){
							slice.animate({ height:'100%', opacity:'1.0' }, settings.animSpeed);
						}, (100 + timeBuff));
					}
					timeBuff += 50;
					i++;
				});
			} 
			else if(settings.effect == 'sliceUpDown' || settings.effect == 'sliceUpDownRight' || vars.randAnim == 'sliceUpDown' || 
					settings.effect == 'sliceUpDownLeft' || vars.randAnim == 'sliceUpDownLeft'){
				var timeBuff = 0;
				var i = 0;
				var v = 0;
                resetSliceWidth(slider, settings);
				var slices = $('.nivo-slice', slider);
				if(settings.effect == 'sliceUpDownLeft' || vars.randAnim == 'sliceUpDownLeft') slices = $('.nivo-slice', slider)._reverse();
				slices.each(function(){
					var slice = $(this);
					if(i == 0){
						slice.css('top','0px');
						i++;
					} else {
						slice.css('bottom','0px');
						i = 0;
					}
					
					if(v == settings.slices-1){
						setTimeout(function(){
							slice.animate({ height:'100%', opacity:'1.0' }, settings.animSpeed, '', function(){ slider.trigger('nivo:animFinished'); });
						}, (100 + timeBuff));
					} else {
						setTimeout(function(){
							slice.animate({ height:'100%', opacity:'1.0' }, settings.animSpeed);
						}, (100 + timeBuff));
					}
					timeBuff += 50;
					v++;
				});
			} 
			else if(settings.effect == 'fold' || vars.randAnim == 'fold'){
				var timeBuff = 0;
				var i = 0;
                resetSliceWidth(slider, settings);
				$('.nivo-slice', slider).each(function(){
					var slice = $(this);
					var origWidth = slice.width();
					slice.css({ top:'0px', height:'100%', width:'0px' });
					if(i == settings.slices-1){
						setTimeout(function(){
							slice.animate({ width:origWidth, opacity:'1.0' }, settings.animSpeed, '', function(){ slider.trigger('nivo:animFinished'); });
						}, (100 + timeBuff));
					} else {
						setTimeout(function(){
							slice.animate({ width:origWidth, opacity:'1.0' }, settings.animSpeed);
						}, (100 + timeBuff));
					}
					timeBuff += 50;
					i++;
				});
			}  
			else if(settings.effect == 'fade' || vars.randAnim == 'fade'){
				var firstSlice = $('.nivo-slice:first', slider);
                firstSlice.css({
                    'height': '100%',
                    'width': slider.width() + 'px'
                });
    
				firstSlice.animate({ opacity:'1.0' }, (settings.animSpeed*2), '', function(){ slider.trigger('nivo:animFinished'); });
			}    
            else if(settings.effect == 'slideInRight' || vars.randAnim == 'slideInRight'){
                var firstSlice = $('.nivo-slice:first', slider);
                firstSlice.css({
                    'height': '100%',
                    'width': '0px',
                    'opacity': '1'
                });

                firstSlice.animate({ width: slider.width() + 'px' }, (settings.animSpeed*2), '', function(){ slider.trigger('nivo:animFinished'); });
            }
            else if(settings.effect == 'slideInLeft' || vars.randAnim == 'slideInLeft'){
                var firstSlice = $('.nivo-slice:first', slider);
                firstSlice.css({
                    'height': '100%',
                    'width': '0px',
                    'opacity': '1',
                    'left': '',
                    'right': '0px'
                });

                firstSlice.animate({ width: slider.width() + 'px' }, (settings.animSpeed*2), '', function(){ 
                    // Reset positioning
                    firstSlice.css({
                        'left': '0px',
                        'right': ''
                    });
                    slider.trigger('nivo:animFinished'); 
                });
            }
		}
        
        // For debugging
        var trace = function(msg){
            if (this.console && typeof console.log != "undefined")
                console.log(msg);
        }
        
        // Start / Stop
        this.stop = function(){
            if(!$(element).data('nivo:vars').stop){
                $(element).data('nivo:vars').stop = true;
                trace('Stop Slider');
            }
        }
        
        this.start = function(){
            if($(element).data('nivo:vars').stop){
                $(element).data('nivo:vars').stop = false;
                trace('Start Slider');
            }
        }
        
        //Trigger the afterLoad callback
        settings.afterLoad.call(this);
    };
        
    $.fn.nivoSlider = function(options) {
    
        return this.each(function(){
            var element = $(this);
            // Return early if this element already has a plugin instance
            if (element.data('nivoslider')) return;
            // Pass options to plugin constructor
            var nivoslider = new NivoSlider(this, options);
            // Store plugin object in this element's data
            element.data('nivoslider', nivoslider);
        });

	};
	
	//Default settings
	$.fn.nivoSlider.defaults = {
		effect: 'random',
		slices: 15,
		animSpeed: 500,
		pauseTime: 3000,
		startSlide: 0,
		directionNav: false,
		directionNavHide: true,
		controlNav: true,
		controlNavThumbs: false,
        controlNavThumbsFromRel: false,
		controlNavThumbsSearch: '.jpg',
		controlNavThumbsReplace: '_thumb.jpg',
		keyboardNav: true,
		pauseOnHover: true,
		manualAdvance: false,
		captionOpacity: 0.8,
		beforeChange: function(){},
		afterChange: function(){},
		slideshowEnd: function(){},
        lastSlide: function(){},
        afterLoad: function(){}
	};
	
	$.fn._reverse = [].reverse;
	
})(jQuery);
// Copyright (c) 2007 Josh Bush (digitalbush.com) - jQuery Watermark
(function ($) {
    var map = new Array();
    $.Watermark = {
        ShowAll: function () {
            for (var i = 0; i < map.length; i++) {
                if (map[i].obj.val() == "") {
                    map[i].obj.val(map[i].text);
                    map[i].obj.css("color", map[i].WatermarkColor);
                } else {
                    map[i].obj.css("color", map[i].DefaultColor);
                }
            }
        }, HideAll: function () {
            for (var i = 0; i < map.length; i++) {
                if (map[i].obj.val() == map[i].text) map[i].obj.val("");
            }
        }
    }
    $.fn.Watermark = function (text, color) {
        if (!color) color = "#777";
        return this.each(function () {
            var input = $(this);
            var defaultColor = input.css("color");
            map[map.length] = {
                text: text,
                obj: input,
                DefaultColor: defaultColor,
                WatermarkColor: color
            };

            function clearMessage() {
                if (input.val() == text) input.val("");
                input.css("color", defaultColor);
            }

            function insertMessage() {
                if (input.val().length == 0 || input.val() == text) {
                    input.val(text);
                    input.css("color", color);
                } else input.css("color", defaultColor);
            }
            input.focus(clearMessage);
            input.blur(insertMessage);
            input.change(insertMessage);
            insertMessage();
        });
    };
})(jQuery);
// Sessionvars
/*
sessvars ver 1.01
- JavaScript based session object
copyright 2008 Thomas Frank

This EULA grants you the following rights:

Installation and Use. You may install and use an unlimited number of copies of the SOFTWARE PRODUCT.

Reproduction and Distribution. You may reproduce and distribute an unlimited number of copies of the SOFTWARE PRODUCT either in whole or in part; each copy should include all copyright and trademark notices, and shall be accompanied by a copy of this EULA. Copies of the SOFTWARE PRODUCT may be distributed as a standalone product or included with your own product.

Commercial Use. You may sell for profit and freely distribute scripts and/or compiled scripts that were created with the SOFTWARE PRODUCT.

v 1.0 --> 1.01
sanitizer added to toObject-method & includeFunctions flag now defaults to false

*/

sessvars=function(){

	var x={};
	
	x.$={
		prefs:{
			memLimit:2000,
			autoFlush:true,
			crossDomain:false,
			includeProtos:false,
			includeFunctions:false
		},
		parent:x,
		clearMem:function(){
			for(var i in this.parent){if(i!="$"){this.parent[i]=undefined}};
			this.flush();
		},
		usedMem:function(){
			x={};
			return Math.round(this.flush(x)/1024);
		},
		usedMemPercent:function(){
			return Math.round(this.usedMem()/this.prefs.memLimit);
		},
		flush:function(x){
			var y,o={},j=this.$$;
			x=x||top;
			for(var i in this.parent){o[i]=this.parent[i]};
			o.$=this.prefs;
			j.includeProtos=this.prefs.includeProtos;
			j.includeFunctions=this.prefs.includeFunctions;
			y=this.$$.make(o);
			if(x!=top){return y.length};
			if(y.length/1024>this.prefs.memLimit){return false}
			try {x.name=y;} catch(e){window.name=y;};
			return true;
		},
		getDomain:function(){
				var l=location.href
				l=l.split("///").join("//");
				l=l.substring(l.indexOf("://")+3).split("/")[0];
				while(l.split(".").length>2){l=l.substring(l.indexOf(".")+1)};
				return l
		},
		debug:function(t){
			var t=t||this,a=arguments.callee;
			if(!document.body){setTimeout(function(){a(t)},200);return};
			t.flush();
			var d=document.getElementById("sessvarsDebugDiv");
			if(!d){d=document.createElement("div");document.body.insertBefore(d,document.body.firstChild)};
			d.id="sessvarsDebugDiv";
			d.innerHTML='<div style="line-height:20px;padding:5px;font-size:11px;font-family:Verdana,Arial,Helvetica;'+
						'z-index:10000;background:#FFFFCC;border: 1px solid #333;margin-bottom:12px">'+
						'<b style="font-family:Trebuchet MS;font-size:20px">sessvars.js - debug info:</b><br/><br/>'+
						'Memory usage: '+t.usedMem()+' Kb ('+t.usedMemPercent()+'%)&nbsp;&nbsp;&nbsp;'+
						'<span style="cursor:pointer"><b>[Clear memory]</b></span><br/>'+
						top.name.split('\n').join('<br/>')+'</div>';
			d.getElementsByTagName('span')[0].onclick=function(){t.clearMem();location.reload()}
		},
		init:function(){
			var o={}, t=this;
			try {o=this.$$.toObject(top.name)} catch(e){o=this.$$.toObject(window.name)};
			this.prefs=o.$||t.prefs;
			if(this.prefs.crossDomain || this.prefs.currentDomain==this.getDomain()){
				for(var i in o){this.parent[i]=o[i]};
			}
			else {
				this.prefs.currentDomain=this.getDomain();
			};
			this.parent.$=t;
			t.flush();
			var f=function(){if(t.prefs.autoFlush){t.flush()}};
			if(window["addEventListener"]){addEventListener("unload",f,false)}
			else if(window["attachEvent"]){window.attachEvent("onunload",f)}
			else {this.prefs.autoFlush=false};
		}
	};
	
	x.$.$$={
		compactOutput:false, 		
		includeProtos:false, 	
		includeFunctions: false,
		detectCirculars:true,
		restoreCirculars:true,
		make:function(arg,restore) {
			this.restore=restore;
			this.mem=[];this.pathMem=[];
			var retval = this.toJsonStringArray(arg).join('');
			return retval;
		},
		toObject:function(x){
			if(!this.cleaner){
				try{this.cleaner=new RegExp('^("(\\\\.|[^"\\\\\\n\\r])*?"|[,:{}\\[\\]0-9.\\-+Eaeflnr-u \\n\\r\\t])+?$')}
				catch(a){this.cleaner=/^(true|false|null|\[.*\]|\{.*\}|".*"|\d+|\d+\.\d+)$/}
			};
			if(!this.cleaner.test(x)){return {}};
			eval("this.myObj="+x);
			if(!this.restoreCirculars || !alert){return this.myObj};
			if(this.includeFunctions){
				var x=this.myObj;
				for(var i in x){if(typeof x[i]=="string" && !x[i].indexOf("JSONincludedFunc:")){
					x[i]=x[i].substring(17);
					eval("x[i]="+x[i])
				}}
			};
			this.restoreCode=[];
			this.make(this.myObj,true);
			var r=this.restoreCode.join(";")+";";
			eval('r=r.replace(/\\W([0-9]{1,})(\\W)/g,"[$1]$2").replace(/\\.\\;/g,";")');
			eval(r);
			return this.myObj
		},
		toJsonStringArray:function(arg, out) {
			if(!out){this.path=[]};
			out = out || [];
			var u; // undefined
			switch (typeof arg) {
			case 'object':
				this.lastObj=arg;
				if(this.detectCirculars){
					var m=this.mem; var n=this.pathMem;
					for(var i=0;i<m.length;i++){
						if(arg===m[i]){
							out.push('"JSONcircRef:'+n[i]+'"');return out
						}
					};
					m.push(arg); n.push(this.path.join("."));
				};
				if (arg) {
					if (arg.constructor == Array) {
						out.push('[');
						for (var i = 0; i < arg.length; ++i) {
							this.path.push(i);
							if (i > 0)
								out.push(',\n');
							this.toJsonStringArray(arg[i], out);
							this.path.pop();
						}
						out.push(']');
						return out;
					} else if (typeof arg.toString != 'undefined') {
						out.push('{');
						var first = true;
						for (var i in arg) {
							if(!this.includeProtos && arg[i]===arg.constructor.prototype[i]){continue};
							this.path.push(i);
							var curr = out.length; 
							if (!first)
								out.push(this.compactOutput?',':',\n');
							this.toJsonStringArray(i, out);
							out.push(':');                    
							this.toJsonStringArray(arg[i], out);
							if (out[out.length - 1] == u)
								out.splice(curr, out.length - curr);
							else
								first = false;
							this.path.pop();
						}
						out.push('}');
						return out;
					}
					return out;
				}
				out.push('null');
				return out;
			case 'unknown':
			case 'undefined':
			case 'function':
				if(!this.includeFunctions){out.push(u);return out};
				arg="JSONincludedFunc:"+arg;
				out.push('"');
				var a=['\n','\\n','\r','\\r','"','\\"'];
				arg+=""; for(var i=0;i<6;i+=2){arg=arg.split(a[i]).join(a[i+1])};
				out.push(arg);
				out.push('"');
				return out;
			case 'string':
				if(this.restore && arg.indexOf("JSONcircRef:")==0){
					this.restoreCode.push('this.myObj.'+this.path.join(".")+"="+arg.split("JSONcircRef:").join("this.myObj."));
				};
				out.push('"');
				var a=['\n','\\n','\r','\\r','"','\\"'];
				arg+=""; for(var i=0;i<6;i+=2){arg=arg.split(a[i]).join(a[i+1])};
				out.push(arg);
				out.push('"');
				return out;
			default:
				out.push(String(arg));
				return out;
			}
		}
	};
	
	x.$.init();
	return x;
}()

