(function($) {  // global closure and $ portability  $(document).ready( function() {          var initialAnchor = $.anchor();          var panelAnchor;               // record the document title - we'll append the panel title to this as they are scrolled to     var documentTitle = document.title;     var caseStudyImageUrlBase = "/images/case_studies/";         /* -- Panel Scroller Setup -- */    // -- Supporting functions    var updateScrollerButtonPosition = function() {      $('.scroller_previous').css( 'left', '27px' );      $('.scroller_next').css( 'left', '890px' );    };    var updateSubNavigation = function(panel) {            var subNavItems = $( $(panel).metadata().subNavId || ('ul.sub_nav #' + $(panel).attr("id").replace("panel", "nav")));            $('ul.sub_nav li').removeClass("on");      if (subNavItems.length > 0) {        subNavItems.addClass("on");      }    };	var scrollToAnchor = function(anchor, instant) {      if (anchor != "") {        var panels = $('#panel_' + anchor);        if (panels.length > 0) {          $(panels).closest(".scroller").scrollerTo(panels[0], instant);        } else {          return false;        }        return true;      }      // the anchor was empty, or the panel was not found      return false;    };       // -- Setup button positioning and click events    updateScrollerButtonPosition();    $('.scroller_next')     .click( function(event) {       $(event.target).closest(".scroller").scrollerNext();     });    $('.scroller_previous')    .click( function(event) {      $(event.target).closest(".scroller").scrollerPrevious();    })    .hide();            // -- Setup the scroller, and event bindings    $('.scroller').scroller();        // scroll to the anchor instantly (if available)    scrollToAnchor($.anchor(), true);                //alert($.anchor());        $('.scroller').bind("scroller.beforescroll", function(event, item, instant) {      // show the panel title so that the content is masked in the old panel      // also, make sure that any existing animations are stopped, and opacity is reset first (prevents bugs with quick scrolling multiple times leaving panel content exposed)        // remove transparency from all panels      $(this).find(".panel_transparent").removeClass("panel_transparent");            // remove any feature background      var bgClass = $(item).metadata().bgClass;            if (bgClass) {          $('#bg_feature').removeClass(bgClass).hide();      }      // hide any revealed panels and close buttons      $(item).closest(".panel").removeClass("panel_current").find(".panel_close").hide().end().find(".panel_reveal_content:visible").hide();        // blank the title while scrolling
      $('#page_title').html("&nbsp;");      $(item).find(".panel_title").stop().css("opacity", 1).show();	        $(this).find(".scroller_previous,.scroller_next").hide();    });    $('.scroller').bind("scroller.afterscroll", function(event, item, instant) {      var duration = "fast";                  $(item).addClass("panel_current");            // show all other panel titles (fixes a few issues with initial load)      $(this).find(".panel_title").not($(item).find(".panel_title")).show();            // add transparent class if "transparent" is true in the meta      if ($(item).metadata().transparent) {        $(item).addClass("panel_transparent");      }            // update the page title from the content of the panel title in the new panel      // update the page title	        var breadcrumb = $(item).find("h2:first").html();      $('#page_title').show().html( breadcrumb );      // update the window title      var title = $(item).find("h4:first").html();      if (!$(item).is(":first-child")) {        document.title = title + " | Chakras, Inc.";      } else {        document.title = documentTitle;      }            // update the feature background (if available, and specified found in the meta)            var bgClass = $(item).metadata().bgClass;            if (bgClass) {        setTimeout( function() { $('#bg_feature').hide().addClass(bgClass).fadeIn(instant || $.fadeDuration()); }, instant || $.browser.msie ? 0 : 200 );              }            // fade out the panel title so that the content shows through for the new panel      $(item).find(".panel_title").fadeOut({ duration: duration});      // show both previous/next buttons initially (one may be hidden by a "limit" event later)      $(this).find('.scroller_previous,.scroller_next').show();            // update the navigation state      updateSubNavigation(item);            // update the hash (ooooh polished!)      document.location.hash = $(item).attr("id").replace("panel_", "");            panelAnchor = document.location.hash;            // track the location in Google Analytics      pageTracker._trackPageview(document.location.pathname + document.location.hash.replace("#", ""));          });    $('.scroller').bind("scroller.afterscrolllowerlimit", function(event, item, instant) {     // hide the previous button     $(this).find('.scroller_previous').hide();    });     $('.scroller').bind("scroller.afterscrollupperlimit", function(event, item, instant) {     // hide the next button     $(this).find('.scroller_next').hide();    }); 	    // create any tooltips    //    if ($.PAGE_TOOLTIPS)//      $.each($.PAGE_TOOLTIPS, function(index, value) {//        $.tooltipCreate(value);//      });//	  //    // create any tooltips//    //    if ($.TWITTER_TOOLTIPS)//      $.each($.TWITTER_TOOLTIPS, function(index, value) {//        $.tooltipCreate(value);//      });	  //      //    // setup tooltip behaviours//    $('.tooltip_trigger').tooltip();	    // -- Setup navigation clicks to jump to specific panels    // -- Also, ANY link given a class of "jump" will attempt to find a panel to scroll to     // -- the hash anchor should be the same as for a sub-nav item, that is, the panel id without the "panel_" prefix        $('ul#nav li a,a.jump').click( function(event) {      if (scrollToAnchor($(this).anchor())) {          // blur the link so the dotted line doesn't show          if ($(this)[0].blur)            $(this)[0].blur();          event.preventDefault();      }    });    // setup clicks to reveal slide in panel content        $('a.slide').click( function(event) {      // find the panel reveal target            var anchor = $(this).anchor();            if (anchor != "") {              // find the target        var t = $('#panel_' + anchor);                if (t.length > 0) {                    var panelContent = $(this).closest(".panel_content");                    t.css("top", - $(panelContent).outerHeight()).stop(true, true).css("top", 0).fadeIn({duration: "normal", easing: "easeOutQuart"}).queue( function() {            $(this).closest(".panel").find(".panel_close").fadeIn("slow");          });        }      }            event.preventDefault();    });        // setup click to hide slide in panel content        $('.panel .panel_close').click( function() {      var button = $(this);      // find the closest panel      $(this).closest(".panel").find(".panel_reveal_content").stop(true, true).fadeOut({duration: "normal", easing: "easeOutQuart"}).queue( function() { button.fadeOut("fast"); } );    });            /* -- Anchor the Footer to the bottom -- */         $(window).resize( function() {      $('#bg').css("height", Math.max( 600, $(window).height() - 33 ));      $('#overlay').css("height", Math.max( 608, $(window).height() - 25 ));      updateScrollerButtonPosition();      $(".scroller").scrollerUpdateOrigin(true);          }).resize();     // update the scroller to the correct place    $(".scroller").scrollerUpdate();    /* -- Setup the Navigation (can't QUITE use pure CSS for this any more, unfortunately) -- */          //    // record the currently visible nav - this will be reverted on "nav" mouseout//    //    var subNavCurrent = $('ul.sub_nav:visible');//    //    $('ul#nav>li').mouseenter( function(event) {//      // hide all other sub navs, and turn off the on state//      $('ul.sub_nav').stop(true, true).hide().closest("li").removeClass("on");//      //      // show the sub nav for this main nav item//      $(this).find("ul.sub_nav").slideDown($(this).closest("ul#nav").hasClass("inside") ? "fast" : 0);//    });//    //    $('ul#nav').mouseenter( function() {//      $(this).addClass("inside");//    });//    //    $('ul#nav').mouseleave( function(event) {//      // remove any hovers //      $('ul#nav>li a').removeClass("hover");//      $(this).removeClass("inside");//      //      // show the default sub nav//      $('ul.sub_nav').stop(true, true).hide();//      subNavCurrent.show().closest("li").addClass("on");//    });////    $('ul.sub_nav').mouseenter( function() {//      // add hover class to the parent nav item//      $('ul#nav>li a').removeClass("hover");//      $(this).closest("li").find("a:first").addClass("hover");//    });    //    // setup tabs//    //    $('.tabs').tabs();//    $('.tt_tabs').tabs();//    /* overlay - supporting functions *///    //    var hideOverlay = function() {//      $('#overlay').hide();//      $('#wrap_footer').removeClass("overlay");////      // disable other scroller//      $('.scroller').scrollerEnable();////      // restore the hash for the current panel//      if (panelAnchor) {//        document.location.hash = panelAnchor;//      }//      //      // disable overlay scroller//      $('#overlay .overlay_scroller').scrollerDisable();//    };//    //    //    var showOverlay = function(trigger) {//      $("#overlay_content").hide();//      $("#overlay_loading").show();//      //      $('#overlay').show();//      $('#wrap_footer').addClass("overlay");//      //      //        //console.log($.url.setUrl($(this).attr("href")).attr("file"));////      var overlayScroller = $('#overlay_content .overlay_scroller');////      if (overlayScroller.length > 0) {//        // an overlay scroller is currently present - destroy it, and unbind events from related elements on this page//        overlayScroller.scrollerDestroy();//        //        $('#overlay_content .overlay_scroller_next').unbind("click", overlayScrollerNextClick );//        $('#overlay_content .overlay_scroller_previous').unbind("click", overlayScrollerNextClick );//        $(window).unbind("resize", overlayWindowResize );//      }////      // now load the new overlay content//      //      document.location.hash = galleryAnchor(trigger);//      //      $("#overlay_content").load($(trigger).attr("href"), "ajax=true", function(responseText, textStatus) {//        ////        if (textStatus == "success") {//          //          // hide the loading message and show the overlay (the overlay content must be visible BEFORE the scroller is initialised, for width measurement etc)//          $('#overlay_loading').hide();//          $('#overlay_content').show();////          updateOverlayScrollerButtonPosition();//          //          var overlayScroller = $('#overlay_content .overlay_scroller');//          //          if (overlayScroller.length > 0) {//          //            // a scroller is present in the loaded content, so set it up//            //            $('#overlay_content .overlay_scroller').scroller({//              itemSelector: "li.overlay_panel",//              clickSelector: "li.overlay_panel",//              viewWidth: 797//            });////			sIFR.replace(avenir, {//			  selector: 'h2.sifr',//			  wmode:'transparent',//				css: [//				'.sIFR-root { text-align:left; color:#535353; }'//				,'a { text-decoration: none; }'//				,'a:link { color: #000000; }'//				,'a:hover { color: #CCCCCC; }' //				]//			});//			//			sIFR.replace(avenir, {//			  selector: 'p.sifr',//			  wmode:'transparent',			  //				css: [//				'.sIFR-root { text-align: left; font-weight:bold; }'//				,'a { text-decoration: none; }'//				,'a:link { background:#e4a452; color: #FFFFFF; }'//				,'a:hover { color: #4c342a; }' //				]//			});			//////            $('#overlay_content .overlay_scroller').bind("scroller.afterscrolllowerlimit", function(event, item, instant) {//             // hide the previous button//             $(this).find('.overlay_scroller_previous').hide();//            }); ////            $('#overlay_content .overlay_scroller').bind("scroller.afterscrollupperlimit", function(event, item, instant) {//             // hide the next button//             $(this).find('.overlay_scroller_next').hide();//            });////            $('#overlay_content .overlay_scroller').bind("scroller.beforescroll", function(event, item, instant) {//              $(this).find(".overlay_scroller_previous,.overlay_scroller_next").hide();//              $(item).removeClass("overlay_panel_current");//            });////            $('#overlay_content .overlay_scroller').bind("scroller.afterscroll", function(event, item, instant) {//              $(this).find(".overlay_scroller_previous,.overlay_scroller_next").show();//              $(item).addClass("overlay_panel_current");//            });////            $('#overlay_content .overlay_scroller_next').click( overlayScrollerNextClick );//            $('#overlay_content .overlay_scroller_previous').click( overlayScrollerPreviousClick ).hide();//            $(window).resize( overlayWindowResize );//  //            //            // disable other scroller//            $('.scroller').scrollerDisable();//            //          }//          //        }//        else if (textStatus == "error") {//          hideOverlay();//          alert('Sorry, this content could not be loaded. Please try again later.'); //        } //      });////    };//    //    var galleryAnchor = function(trigger) {//      return "gallery_" + $(trigger).basename(".php");//    };//    //    var updateOverlayScrollerButtonPosition = function() {//      $('.overlay_scroller_previous').css( 'left', (( $(window).width() - 798 ) / 2 ) - 25 );//      $('.overlay_scroller_next').css( 'left', (( $(window).width() - 798 ) / 2 ) + 740 );//    };//    //    //    /* overlay - events *///    //    var overlayWindowResize = function() {//      $('#overlay_content .overlay_scroller').scrollerUpdateOrigin(true);//      updateOverlayScrollerButtonPosition();//    };//    //    var overlayScrollerNextClick = function(event) {//      $(event.target).closest(".overlay_scroller").scrollerNext();//    };////    var overlayScrollerPreviousClick = function(event) {//      $(event.target).closest(".overlay_scroller").scrollerPrevious();//    };//    //    // -- setup gallery click to load gallery and show overlay, loading the scroller if content is loaded correctly //    //    $('.trigger_gallery')//      .click( function(event) {//        showOverlay($(this));//        event.preventDefault();//      })//      .each( function() {//        // check if the initial anchor matches a gallery, and if so open the gallery overlay for that href//        if (galleryAnchor($(this)) == initialAnchor) {//          //          // scroll to the parent panel (if available)//          var panel = $(this).closest(".panel");//          //          if (panel.length > 0) {//            panel.closest(".scroller").scrollerTo(panel[0], true);//          }//          //          showOverlay($(this));//          //        }//      });//////    $('#bt_overlay_close').click( function(event) {//      hideOverlay();//    });//    //    // setup share popup close button//    $('#tt_share_close').click( function(event) {//      $('#tt_share').revealHide();//      //      event.preventDefault();//    });//    //    // setup field hints for the email form//    $('#tt_panel_email input,#tt_panel_email textarea').fieldHint(); //    //    $('#footer_share,#footer_twitter').show();//    //    // setup social links//    $('#tt_panel_social ul a').click( function(event) {//      event.preventDefault();////      var template = $(this).metadata().template;//      //      if (template) {//        var href = $.tmpl(template, { url: $.urlencode(document.location.href), title: $.urlencode(document.title) });//        window.open(href, "share");//      }//      //    });//    //    //    // setup the email a friend validation////    $("#form_share_email")//      .submit( function(event) {//        //        // first clear out all field hints when the field has not been filled in//        //        $('#your_name,#your_email,#friends_name,#friends_email,#personal_message').each( function(index, el) {//          //          if ($(el).val() == $(el).metadata().hint) {//            $(el).val("");//          }//          //        });//        //        // NOW run the validator//        //        if ($(this).valid()) {//          // send the ajax request//        //          $.post('/share', {//              "your_name"         : $('#your_name').val(),//              "your_email"        : $('#your_email').val(),//              "friends_name"      : $('#friends_name').val(),//              "friends_email"     : $('#friends_email').val(),//              "personal_message"  : $('#personal_message').val(),//              "url"               : document.location.href//            }, function (data, textStatus) {//              if (data == "OK") {//                $('#tt_share_form').hide();//                $('#tt_share_thankyou').show();//              } else {//                alert("Sorry, the email could not be sent. Please try again later"); //              }//              //            }//          );//        }//        //        event.preventDefault();//        //      })//      .validate({//      //        meta: "validate", //        onfocusout: false,//        onkeyup: false,//        onsubmit: false, // we will run valid manually, since we need to ignore field hints//      //        showErrors: function(errorMap, errorList) {//          //          if (errorList.length > 0) {//            var errors = $.map(errorList, function(value, index) {//              return value.message;//            });//          //          //            alert(errors.join("\n"));//          //            $('#your_name,#your_email,#friends_name,#friends_email,#personal_message').fieldHintUpdate("blur"); // restore field hints//          }//        }//      });//      //      //      $('#tt_share_link_again').click( function() {//          $('#tt_share_thankyou').hide();//          $('#tt_share_form').show();//          //          $('#friends_name,#friends_email').val("").fieldHintUpdate("blur");//      });            /*             $('#form_share_email').submit( function(event) {                event.preventDefault();                // check the fields                var errors = [];                if (errors.        // post to the ajax service                jQuery.post( url, [data], [callback], [type] )                var friendsFirstName = $('#friends_name').val().split(" ")[0];                document.location.href = "mailto:" + $('#friends_name').val() + ' <' + $('#friends_email').val() + '>?subject=Check%20out%20this%20site' +         '&body=Hi ' + friendsFirstName +         ",%0A%0AI%20thought%20you%20might%20be%20interested%20in%20this%20page%20on%20the%20Catalyst%20Group's%20web%20site:%0A" +  + "%0A%0A" + $('#personal_message').val() + "%0A%0ARegards,%0A%0A" + $('#your_name').val() + " (" + $('#your_email').val() + ")";                        $('#tt_share').revealHide();    });        */          }); // end document.ready   })(jQuery); // end global closure
