(function ($) {

Drupal.behaviors.fusionEqualheights = {
  attach: function (context, settings) {
    if (jQuery().equalHeights) {
      $("#header-top-wrapper div.equal-heights div.content").equalHeights();
      $("#header-group-wrapper div.equal-heights div.content").equalHeights();
      $("#preface-top-wrapper div.equal-heights div.content").equalHeights();
      $("#preface-bottom div.equal-heights div.content").equalHeights();
      $("#sidebar-first div.equal-heights div.content").equalHeights();
      $("#content-region div.equal-heights div.content").equalHeights();
      $("#node-top div.equal-heights div.content").equalHeights();
      $("#node-bottom div.equal-heights div.content").equalHeights();
      $("#sidebar-second div.equal-heights div.content").equalHeights();
      $("#postscript-top div.equal-heights div.content").equalHeights();
      $("#postscript-bottom-wrapper div.equal-heights div.content").equalHeights();
      $("#footer-wrapper div.equal-heights div.content").equalHeights();
    }
  }
};

Drupal.behaviors.fusionIE6fixes = {
  attach: function (context, settings) {
    // IE6 & less-specific functions
    // Add hover class to main menu li elements on hover
    if ($.browser.msie && ($.browser.version < 7)) {
      $('form input.form-submit').hover(function() {
        $(this).addClass('hover');
        }, function() {
          $(this).removeClass('hover');
      });
      $('#search input#search_header').hover(function() {
        $(this).addClass('hover');
        }, function() {
          $(this).removeClass('hover');
      });
    };
  }
};

Drupal.behaviors.fusionOverlabel = {
  attach: function (context, settings) {
    if (jQuery().overlabel) {
      $("div.fusion-horiz-login label").overlabel();
    }
  }
};

Drupal.behaviors.fusionGridMask = {
  attach: function (context, settings) {
    // Exit if grid mask not enabled
    if ($('body.grid-mask-enabled').size() == 0) {
      return;
    }

    var grid_width_pos = parseInt($('body').attr('class').indexOf('grid-width-')) + 11;
    var grid_width = $('body').attr('class').substring(grid_width_pos, grid_width_pos + 2);
    var grid = '<div id="grid-mask-overlay" class="full-width"><div class="region">';
    for (i = 1; i <= grid_width; i++) {
      grid += '<div class="block grid' + grid_width + '-1"><div class="gutter"></div></div>';
    }
    grid += '</div></div>';
    $('body.grid-mask-enabled').prepend(grid);
    $('#grid-mask-overlay .region').addClass('grid' + grid_width + '-' + grid_width);
    $('#grid-mask-overlay .block .gutter').height($('body').height());
  }
};

Drupal.behaviors.fusionGridMaskToggle = {
  attach: function (context, settings) {
    // Exit if grid mask not enabled
    if ($('body.grid-mask-enabled').size() == 0) {
      return;
    }

    $('body.grid-mask-enabled').prepend('<div id="grid-mask-toggle">grid</div>');
    $('div#grid-mask-toggle')
    .toggle( function () {
      $(this).toggleClass('grid-on');
      $('body').toggleClass('grid-mask');
    },
    function() {
      $(this).toggleClass('grid-on');
      $('body').toggleClass('grid-mask');
    });
  }
};

})(jQuery);;
/**
 * Equal Heights Plugin
 * Equalize the heights of elements. Great for columns or any elements
 * that need to be the same size (floats, etc).
 * 
 * Version 1.0
 * Updated 12/10/2008
 *
 * Copyright (c) 2008 Rob Glazebrook (cssnewbie.com) 
 *
 * Usage: $(object).equalHeights([minHeight], [maxHeight]);
 * 
 * Example 1: $(".cols").equalHeights(); Sets all columns to the same height.
 * Example 2: $(".cols").equalHeights(400); Sets all cols to at least 400px tall.
 * Example 3: $(".cols").equalHeights(100,300); Cols are at least 100 but no more
 * than 300 pixels tall. Elements with too much content will gain a scrollbar.
 * 
 */

(function($) {
	$.fn.equalHeights = function(minHeight, maxHeight) {
		tallest = (minHeight) ? minHeight : 0;
		this.each(function() {
			if($(this).height() > tallest) {
				tallest = $(this).height();
			}
		});
		if((maxHeight) && tallest > maxHeight) tallest = maxHeight;
		return this.each(function() {
			$(this).height(tallest);//.css("overflow","auto");
		});
	}
})(jQuery);;
/*
 * 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( $ ) {

  Drupal.behaviors.cssd = {
    attach: function(context, settings) {
      console.log('attach:'+context);
      console.log(context);
      console.log($(context).attr('id'));
      if ($(context).attr('id')=='views-exposed-form-course-finder-block') {

        Cufon.replace($('#views-exposed-form-course-finder-block .views-exposed-form label'),{"enabled":1,"fontFamily":"FogertySolid"});
        Cufon.replace($('#block-views-course_finder-block .views-row a'),{"enabled":1,"fontFamily":"FogertySolid","hover":1});
        //Cufon.replace($('#block-views-course_finder-block .views-row a'),{"enabled":1,"hover":1});
        cssd.CourseFinder2();
      }
      // This code is fired both when the page is 'ready'
      // in the jquery sense, and when new content
      // is 'attached' via Drupal ajax. The settings
      // values that are available to us here
      // are provided in the third parameter of
      // ajax_command_replace() as an associative array.
      // My new content is already part of the dom
      // so I can act on it here.
    },
    detach: function(context, settings, trigger) {
      console.log('detach:'+context);
      console.log(context);
      // Example detach callback.
    }
  }

	var cssd = cssd || {};
  
	cssd.FadeInOnLoad = function() {
    $('#main-menu-inner, #content-region h1.title').fadeTo(2000,1);
    $('#content-messages').slideDown();
    //$('body').addClass('pageloaded');
	}
	
	cssd.SearchToggle = function() {
	 $('#search-toggle').bind('click',function() {
	   //alert('');
	   $(this).toggleClass('search-open');
	   $('#block-search-form').slideToggle();
	   return false;
	 });
	}  
	
	cssd.CourseFinder = function() {
	   $( 'pane-menu-menu-courses .content > ul' ).addClass('ready');
		 $( "div.pane-menu-menu-courses .pane-content").css({overflow:'hidden'});
	   $coursefinder = $(".pane-menu-menu-courses .pane-content");
	   $coursefinder.css({position:'relative'});
	   var height = $coursefinder.height();
	   var heighteach = (parseInt(height/3)-33) + 'px';
	   //alert(height+':'+heighteach);
	   $(".pane-menu-menu-courses .content > ul > li > a").each(function() {
	     $(this).height(heighteach);	   
	   });
	   
	   //alert('done');
	   //$coursefinder = $( "div.pane-menu-menu-courses .content");
	   $scrollup = $('<div class="scrollup">&#9650;</div>'); 
	   $scrollup.css({display:'none', position:'absolute', left:0, right:0, top:0});
	   $scrolldown = $('<div class="scrolldown">&#9660;</div>');
	   $scrolldown.css({display:'none', position:'absolute', left:0, right:0, bottom:0});
	   $coursefinder.prepend($scrollup);//'<div class="scrollup">x</div>');
	   $coursefinder.append($scrolldown);//'<div class="scrolldown">x</div>');
	   
	   $(".pane-menu-menu-courses .content > ul > li > a").bind('click',function() {
	     //$(this).css({height:'auto'});
	     $menu = $(this).closest('ul');
	     $menu.children().children('a').css({height:'auto'});
	     //$(this).parent().find('a').css({height:'auto'});
	     $menu.addClass('opened');
	   });
	   
     
	   $(".pane-menu-menu-courses .content > ul a").bind('click',function() {	 
	     $coursefinder = $(this).closest('.pane-content');
	     $menu = $coursefinder.find('ul.menu').first();
	     $scrollup = $coursefinder.find('.scrollup');
	     $scrolldown = $coursefinder.find('.scrolldown');
	     console.log($coursefinder.height() + ':'+$menu.height());
       //alert('yes');
	     if ($menu.height() > $coursefinder.height()) {
	       $scrollup.css({display:'block'}).fadeIn();
	       $scrolldown.css({display:'block'}).fadeIn();
	     } else {
	       $scrollup.fadeOut();
	       $scrolldown.fadeOut();
	     }	   
	   });
	}
	
  cssd.Equalize = function() {
    // home page
    // make news and events content equal first
    //$( "body.front .view-news-lists .view-content, body.front .view-event-list .view-content").equalHeights();
    // then make all the rows equal
    $( "body.front .view-news-lists .view-content, body.front .view-event-list .view-content-body").equalHeights();
    $( ".panels-flexible-row-front_page-2 .panel-pane .pane-content").equalHeights();
    $( ".panels-flexible-row-front_page-3 .panel-pane .pane-content").equalHeights();
    
    // landing page
    $( ".panels-flexible-row-menu_page-3 .panel-pane .inner").equalHeights();
    $( ".panels-flexible-row-menu_page-4 .panel-pane .inner").equalHeights();
    $( ".panels-flexible-row-menu_page-5 .panel-pane .inner").equalHeights();
    
    // panel grid page    
    $( ".panel-bricks-25-75-stacked .bottom-unit .panel-pane").equalHeights();

	// landing page    
    $( ".submenutree .view-mode-small_promo").equalHeights();
  };
  
  cssd.CourseFinder2 = function() {
  
    if ($('#block-views-course_finder-block').length > 0) {
			$scrollpane = $('#block-views-course_finder-block .view-content-scroll-pane');
			$scrollcontent = $('#block-views-course_finder-block .view-content-scroll-content');
	
	    //Cufon.replace($('#views-exposed-form-course-finder-block .views-exposed-form label'),{"enabled":1,"fontFamily":"FogertySolid"});
	    //Cufon.replace($('#block-views-course_finder-block .views-row a'),{"enabled":1,"fontFamily":"FogertySolid","hover":1});
	
			//change the main div to overflow-hidden as we can use the slider now		
			$scrollpane.css({overflow:'hidden'})
			
			//compare the height of the scroll content to the scroll pane to see if we need a scrollbar
			var difference = $scrollcontent.height()-$scrollpane.height();//eg it's 200px longer 
			
			if(difference>0)//if the scrollbar is needed, set it up...
		  {
				var proportion = difference / $scrollcontent.height();//eg 200px/500px
				var handleHeight = Math.round((1-proportion)*$scrollpane.height());//set the proportional height - round it to make sure everything adds up correctly later on
				handleHeight -= handleHeight%2; 
				
				var $sliderwrap = $('<\div id="slider-wrap"><\div id="slider-vertical"><\/div><\/div>');
				//$sliderwrap.hide();
				
				$scrollpane.after($sliderwrap);//append the necessary divs so they're only there if needed
				//$('#slider-wrap').height($scrollpane.height());//set the height of the slider bar to that of the scroll pane
	
				
				//set up the slider 
				$('#slider-vertical').slider({
				  orientation: 'vertical',
				  min: 0,
				  max: 100,
				  value: 100,
				  slide: function(event, ui) {//used so the content scrolls when the slider is dragged
				     var topValue = -((100-ui.value)*difference/100);
				     //$scrollcontent.css({top:topValue});//move the top up (negative value) by the percentage the slider has been moved times the difference in height
				     $scrollcontent.stop();
				     $scrollcontent.animate({
	    					top: topValue
	  					}, 1000, function() {
	    				// Animation complete.
	  					});
	  					//console.log('here');
				     //$scrollcontent.css({top:'-50px'});
				  },
				  change: function(event, ui) {//used so the content scrolls when the slider is changed by a click outside the handle or by the mousewheel
				     var topValue = -((100-ui.value)*difference/100);
				     //$scrollcontent.css({top:topValue});//move the top up (negative value) by the percentage the slider has been moved times the difference in height
				     $scrollcontent.stop();
				     $scrollcontent.animate({
	    					top: topValue
	  					}, 1000, 'easeOutBounce', function() {
	    				// Animation complete.
	  					});
	  					//console.log('there');
				     //$scrollcontent.css({top:'-50px'});
				  }
				}); 
				//$sliderwrap.hide();
				//$sliderwrap.fadeIn(3000);
				//$sliderwrap.css('border','1px solid red');
		  } else {
		    //$('#slider-wrap').fadeOut();
		  }
		  
			//code to handle clicks outside the slider handle
			$(".ui-slider").click(function(event){//stop any clicks on the slider propagating through to the code below
			   	event.stopPropagation();
			});
			   
			$("#slider-wrap").click(function(event){//clicks on the wrap outside the slider range
				  var offsetTop = $(this).offset().top;//read the offset of the scroll pane
				  var clickValue = (event.pageY-offsetTop)*100/$(this).height();//find the click point, subtract the offset, and calculate percentage of the slider clicked
				  $("#slider-vertical").slider("value", 100-clickValue);//set the new value of the slider
			}); 
		  
	    //alert('cf2');
	    //$("#block-views-course_finder-block .view-content").addClass('content');
	    //wrap('<div class="container"><div class="content"></div></div>');
	    //$("#block-views-course_finder-block .view-content").wrap('<div class="customScrollBoxWidget"/>').wrap('<div class="customScrollBox"/>').wrap('<div class="container"/>');
	    //$('#block-views-course_finder-block .view-content').after('<div class="dragger_container"><div class="dragger"></div>');
	
			//$(".customScrollBoxWidget").mCustomScrollbar("vertical",400,"easeOutCirc",1.05,"auto","yes","yes",10);
		}
  }
  
	$( function() {
		$(document).ready(function($) {
		  cssd.FadeInOnLoad();
		  cssd.SearchToggle();
		  cssd.Equalize();
		  cssd.CourseFinder();
		  cssd.CourseFinder2();
		});

	});

})( jQuery );
;

