// jQuery Custom Functions



jQuery(document).ready(function(){	
        
        // [ Phone Effects ] //
        jQuery("#phone_slider").easySlider({
                auto: true, 
                continuous: true,
                numeric: true,
                speed: 1000,
                pause: 3000
        });
        
        jQuery("#portfolio_page_slider").easySlider({
				continuous: true,
				nextId: "slider1next",
				prevId: "slider1prev",
                                prevText: "",
                                nextText: ""
	}); 
        
        /*jQuery("#phone_slider_portfolio").easySlider({
				continuous: false,
				nextId: "slider1next",
				prevId: "slider1prev",
                                prevText: "",
                                nextText: ""
	});*/
        
        jQuery('#loopedSlider').loopedSlider();

        
        // [ Partners Scroller ] //
        jQuery('div.partners-carousel').infiniteCarousel();
        
        // [ Expander ] //
        jQuery('.expandable div').expander({userCollapseText: 'hide'});
        
        
        // [ Accordion ] //
        jQuery('#extrainfo-accordion').hoverAccordion({activateitem: '1'});
        //jQuery('#services-expander').hoverAccordion();
        
        jQuery('#services-expander .tab').click(function() { 
		jQuery(this).next().toggle('slow');
		jQuery(this).toggleClass("active");
		return false;
	}).next().hide();

        // [ Clear Form Fields on Focus and repopulate on Blur ] //
        jQuery.fn.clearOnFocus = function(){
         
            /* No attribution required,
               don't use excessively */
         
            return this.focus(function(){
                var v = jQuery(this).val();
                jQuery(this).val( v === this.defaultValue ? '' : v );
            }).blur(function(){
                var v = jQuery(this).val();
                jQuery(this).val( v.match(/^\s+$|^$/) ? this.defaultValue : v );
            });
        };
        jQuery('input.field').clearOnFocus();
 
        // [ Portfolio Slider ] //
        
        // Image Fade in/out on hover
        jQuery("#slider .navigation img").fadeTo("slow", 0.8);
        jQuery("#slider .navigation img").hover(function(){
                jQuery(this).fadeTo("slow", 1.0); // This sets the opacity to 100% on hover
        },function(){
                jQuery(this).fadeTo("slow", 0.8); // This sets the opacity back to 60% on mouseout
        });
        
        // Slider
        var $panels = jQuery('#slider .scrollContainer > div');
            var $container = jQuery('#slider .scrollContainer');
        
            // if false, we'll float all the panels left and fix the width 
            // of the container
            var horizontal = true;
        
            // float the panels left if we're going horizontal
            if (horizontal) {
                $panels.css({
                    'float' : 'left',
                    'position' : 'relative' // IE fix to ensure overflow is hidden
                });
        
                // calculate a new width for the container (so it holds all panels)
                $container.css('width', $panels[0].offsetWidth * $panels.length);
            }
        
            // collect the scroll object, at the same time apply the hidden overflow
            // to remove the default scrollbars that will appear
            var $scroll = jQuery('#slider .scroll').css('overflow', 'hidden');
        
            // apply our left + right buttons
            $scroll
                .before('<img class="scrollButtons left" src="images/scroll_left.png" />')
                .after('<img class="scrollButtons right" src="images/scroll_right.png" />');
        
            // handle nav selection
            function selectNav() {
                jQuery(this)
                    .parents('ul:first')
                        .find('a')
                            .removeClass('selected')
                        .end()
                    .end()
                    .addClass('selected');
            }
        
            jQuery('#slider .navigation').find('a').click(selectNav);
        
            // go find the navigation link that has this target and select the nav
            function trigger(data) {
                var el = jQuery('#slider .navigation').find('a[href$="' + data.id + '"]').get(0);
                selectNav.call(el);
            }
        
            if (window.location.hash) {
                trigger({ id : window.location.hash.substr(1) });
            } else {
                jQuery('ul.navigation a:first').click();
            }
        
            // offset is used to move to *exactly* the right place, since I'm using
            // padding on my example, I need to subtract the amount of padding to
            // the offset.  Try removing this to get a good idea of the effect
            var offset = parseInt((horizontal ? 
                $container.css('paddingTop') : 
                $container.css('paddingLeft')) 
                || 0) * -1;
        
        
            var scrollOptions = {
                target: $scroll, // the element that has the overflow
        
                // can be a selector which will be relative to the target
                items: $panels,
        
                navigation: '.navigation a',
        
                // selectors are NOT relative to document, i.e. make sure they're unique
                prev: 'img.left', 
                next: 'img.right',
        
                // allow the scroll effect to run both directions
                axis: 'xy',
        
                onAfter: trigger, // our final callback
        
                offset: offset,
        
                // duration of the sliding effect
                duration: 500,
        
                // easing - can be used with the easing plugin: 
                // http://gsgd.co.uk/sandbox/jquery/easing/
                easing: 'swing'
            };
        
            // apply serialScroll to the slider - we chose this plugin because it 
            // supports// the indexed next and previous scroll along with hooking 
            // in to our navigation.
            jQuery('#slider').serialScroll(scrollOptions);
        
            // now apply localScroll to hook any other arbitrary links to trigger 
            // the effect
            jQuery.localScroll(scrollOptions);
        
            // finally, if the URL has a hash, move the slider in to position, 
            // setting the duration to 1 because I don't want it to scroll in the
            // very first page load.  We don't always need this, but it ensures
            // the positioning is absolutely spot on when the pages loads.
            scrollOptions.duration = 1;
            jQuery.localScroll.hash(scrollOptions);
            


        
});	

