function BBTool_getPageSize() {
	var xScroll, yScroll;
	if (window.innerHeight && window.scrollMaxY) {	
		xScroll = window.innerWidth + window.scrollMaxX;
		yScroll = window.innerHeight + window.scrollMaxY;
	} else if (document.body.scrollHeight > document.body.offsetHeight){
		xScroll = document.body.scrollWidth;
		yScroll = document.body.scrollHeight;
	} else {
		xScroll = document.body.offsetWidth;
		yScroll = document.body.offsetHeight;
	}
	var windowWidth, windowHeight;
	if (self.innerHeight) {
		if(document.documentElement.clientWidth) windowWidth = document.documentElement.clientWidth; 
		else  windowWidth = self.innerWidth;
		windowHeight = self.innerHeight;
	} else if (document.documentElement && document.documentElement.clientHeight) {
		windowWidth = document.documentElement.clientWidth;
		windowHeight = document.documentElement.clientHeight;
	} else if (document.body) {
		windowWidth = document.body.clientWidth;
		windowHeight = document.body.clientHeight;
	}	
	if(yScroll < windowHeight) pageHeight = windowHeight;
	else pageHeight = yScroll;
	if(xScroll < windowWidth) pageWidth = xScroll;		
	else pageWidth = windowWidth;
	arrayPageSize = new Array(pageWidth,pageHeight,windowWidth,windowHeight);
	return arrayPageSize;
};

function BBTool_getPageScroll() {
	var xScroll, yScroll;
	if (self.pageYOffset) {
		yScroll = self.pageYOffset;
		xScroll = self.pageXOffset;
	} else if (document.documentElement && document.documentElement.scrollTop) {
		yScroll = document.documentElement.scrollTop;
		xScroll = document.documentElement.scrollLeft;
	} else if (document.body) {
		yScroll = document.body.scrollTop;
		xScroll = document.body.scrollLeft;	
	}
	arrayPageScroll = new Array(xScroll,yScroll);
	return arrayPageScroll;
};

function BBTool_flash() {
	$(".flashLayer").each( function() {
		var flashID			 	= ($(this).attr("flashID")==undefined) ? "flash" : $(this).attr("flashID");
		var flashSrc			= ($(this).attr("flashSrc")==undefined) ? false : $(this).attr("flashSrc");
		var flashWMode			= ($(this).attr("flashWMode")==undefined) ? "transparent" : $(this).attr("flashWMode");
		var flashBG				= ($(this).attr("flashBG")==undefined) ? "transparent" : $(this).attr("flashBG");
		var flashScriptAccess	= ($(this).attr("flashScriptAccess")==undefined) ? "always" : $(this).attr("flashScriptAccess");
		var flashBase			= ($(this).attr("flashBase")==undefined) ? "" : $(this).attr("flashBase");
		var flashParams			= ($(this).attr("flashParams")==undefined) ? "" : eval("({"+$(this).attr("flashParams")+"})");
		
		if($(this).attr("flashWidth")==undefined) {
			var flashWidth = ($(this).width()>0) ? $(this).width() : "auto";
		} else var flashWidth = $(this).attr("flashWidth");
		if($(this).attr("flashHeight")==undefined) {
			var flashHeight = ($(this).height()>0) ? $(this).height() : "auto";
		} else var flashHeight = $(this).attr("flashHeight");
		if(flashSrc) 
			$(this).flash({
				id:					flashID,
				src:				flashSrc,
				width:				flashWidth,
				height:				flashHeight,
				wmode:				flashWMode,
				allowScriptAccess:	flashScriptAccess,
				base:				flashBase,
				flashvars:			flashParams
			});
	});
}

function BBSendMail( action, objID ) {

	switch(action) {
		case "send":
			var data = "";
			if (BBVars.dataSendContentID != "") 
				data = $("#"+BBVars.dataSendContentID).html();
			else if($(".dataSend:last").length == 1)
				data = $(".dataSend:last").html();
			$("#msgData").attr("value", data);
			BBTool_formPost(objID, true);
			break;
		case "msg":
			$.get(
				BBVars.pagesURL + "ajax/envoyer.cfm"
				+ "?formAction=prompt"
				+ "&msgDataType=msg",
				function(data) {BBTool_openMsgBox(data, true);}
			);
			break;
		case "data":
			$.get(
				BBVars.pagesURL + "ajax/envoyer.cfm"
				+ "?formAction=prompt"
				+ "&msgDataType=data",
				function(data) {BBTool_openMsgBox(data, true);}
			);
			break;
		case "url":
			$.get(
				BBVars.pagesURL + "ajax/envoyer.cfm"
				+ "?formAction=prompt"
				+ "&msgDataType=url",
				function(data) {BBTool_openMsgBox(data, true);}
			);
			break;
		case "prod":
			$.get(
				BBVars.pagesURL + "ajax/envoyer.cfm"
				+ "?formAction=prompt"
				+ "&msgDataType=prod"
				+ "&msgShowData=true"
				+ "&msgDataProdID=" + BBVars.currentProdID
				+ "&msgDataColorID=" + BBVars.currentColorID,
				function(data) {BBTool_openMsgBox(data, true);}
			);
			break;
		default:
			$.get(
				BBVars.pagesURL + "ajax/envoyer.cfm?formAction=prompt",
				function(data) {BBTool_openMsgBox(data, true);}
			);
			break;		
	}
	

}

function BBTool_pause( duration ) {
	
	var startDate = new Date();
	var currentDate = null;

	do { currentDate = new Date(); }
	while(currentDate-startDate < duration);	

}

function BBTool_trace( value ) {

	if(value) {
		try {
			if(window.jQuery && jQuery.fn && /^1\.[3-9]/.test(jQuery.fn.jquery)) {
				if(jQuery("#traceLayer").length==0) {
					jQuery("body").append(
						jQuery("<div id='traceLayer'><a href='javascript: jQuery(\"#traceLayer p:first\").remove(); void(0); '>Remove first</a><a href='javascript: jQuery(\"#traceLayer p\").remove(); void(0); '>Clear</a><div style='overflow: hidden;'></div></div>")
							.css({
								"position": 	"absolute",
								"z-index":	 	1000,
								"top": 			0,
								"left": 		0,
								"overflow":		"hidden",
								"width": 		"300px",
								"height": 		"10px",
								"background": 	"black",
								"color": 		"white",
								"text-align":	"left"
							})
							.bind( "mouseenter", function(e) {
								jQuery(this).stop().animate({
									height:		jQuery("div", this).height() + 100,
									width:		jQuery("div", this).width()
								});
							})
							.bind( "mouseleave", function(e) {
								jQuery(this).stop().animate({
									height:		10,
									width:		10
								}, "fast");
							})
						);
				}
				jQuery("#traceLayer div").append("<p>"+value+"</p>");
			} else {
				if(document.getElementById("#traceLayer")=="undefined") {
					document
					var traceLayer = document.createElement("div");
					var contentDiv = document.createElement("div");
						contentDiv.append("<p>"+value+"</p>");
						traceLayer.append(contentDiv);
						traceLayer.style.position = "absolute";
						traceLayer.style.zIndex = 10000;
						traceLayer.style.top = 0;
						traceLayer.style.left = 0;
						traceLayer.style.overflow = "hidden";
						traceLayer.style.width = "10px";
						traceLayer.style.height = "10px";
						traceLayer.style.background = "black";
						traceLayer.style.color = "white";
						traceLayer.style.textAlign = "left";
						traceLayer.onmouseover = function(e) {
							this.style.width = this.getElementsByTagName("div")[0].innerWidth+"px";
							this.style.height = this.getElementsByTagName("div")[0].innerHeight+"px";
						};
						traceLayer.onmouseout = function(e) {
							this.style.width = "10px";
							this.style.height = "10px";
						};

				}
			}
		} catch(err) {
			alert(err+"\n"+value);
		}
	}

}

function test() {
	
	// Si on ne specifie pas les dimensiosn en parametres on resize automatiquement a la taille du contenu
	if(typeof(dim)=="undefined") {
		var tmpObj = jQuery("<p></p>").append("<div></div>");
		jQuery("div:first",tmpObj).append(jQuery(objID).html());
		alert(jQuery(objID).height());
		
		
		/*var newHeight = jQuery( "#tmpObj", tmpObj).height();
		var newWidth = jQuery( "#tmpObj", tmpObj).width();
		
		BBTool_trace(newWidth+" "+newHeight);*/
		
	} else {
	
		// On recupere la largeur du contenu si elle n est pas specifiee
		var newWidth = (typeof(dim.width)=="undefined") 
			? tmpObj.width()
			: dim.width;
		
		// On recupere la hauteur du contenu si elle n est pas specifiee
		var newHeight = (typeof(dim.height)=="undefined") 
			? tmpObj.height()
			: dim.height;

		BBTool_trace(newWidth+" "+newHeight);
			
	}
	
}

// Permet de faire varier la taille d un conteneur en fonction de la taille de son contenu
function BBTool_resize( HTMLTarget, callback ) {

	var objWidth	= jQuery(HTMLTarget).width()+"px";
	var objHeight	= jQuery(HTMLTarget).height()+"px";

	// On resize le conteneur avec les nouvelles dimensions
	//jQuery(objID).animate({ width: newWidth, height: newHeight});
	
	jQuery(HTMLTarget).css({
		height:		objHeight,
		width:		objWidth,
		overflow: 	"hidden"
		
	// On cache le contenu de la cible
	}).animate({
		height: 	objHeight,
		width:		objWidth
	}, function() {

		// On met a jour le contenu de la cible
		jQuery("div.content", HTMLTarget).animate({opacity: 1}, function() {

			jQuery(HTMLTarget).animate({
				width: jQuery("div.content", HTMLTarget).outerWidth()+"px",
				height: jQuery("div.content", HTMLTarget).outerHeight()+"px"
			});
		
		});
		
	})

}

function BBTool_resizeCallback(HTMLTarget) {

	jQuery(HTMLTarget).animate({
		width: jQuery("div.content", HTMLTarget).outerWidth()+"px",
		height: jQuery("div.content", HTMLTarget).outerHeight()+"px"
	}, function() {
		jQuery("div.content",HTMLTarget).animate({opacity: 1});
	});
	
}

function initMenu() {

	jQuery("#mainMenu_list li.cat").each( function(i) {
		if(jQuery("ul",this).attr("style")) {
			jQuery("ul",this).slideUp();
			jQuery("a:first", this)
				.bind("click", function( event ) {
					if(jQuery(this).hasClass("selected")) {
						jQuery(this).removeClass("selected");
						jQuery(this).next().slideUp();
					} else {
						jQuery(this).addClass("selected");
						jQuery(this).next().slideDown();
					}
					//event.preventDefault();
				})
		}
	});

}

function delTR( lineID, lineHeight ) {

	jQuery(lineID).css({overflow: "hidden", height: lineHeight});
	jQuery(lineID+" td").css({height: lineHeight, overflow: "hidden"});
	jQuery(lineID+" td")
			.animate(
				{opacity:0},
				function() {
					jQuery(this)
						.css("height", 0)
						.remove();
					jQuery(lineID).animate({height: 0});
				});
				
}

(function($) {

var types = ['DOMMouseScroll', 'mousewheel'];

$.event.special.mousewheel = {
    setup: function() {
        if ( this.addEventListener )
            for ( var i=types.length; i; )
                this.addEventListener( types[--i], handler, false );
        else
            this.onmousewheel = handler;
    },
    
    teardown: function() {
        if ( this.removeEventListener )
            for ( var i=types.length; i; )
                this.removeEventListener( types[--i], handler, false );
        else
            this.onmousewheel = null;
    }
};

$.fn.extend({
    mousewheel: function(fn) {
        return fn ? this.bind("mousewheel", fn) : this.trigger("mousewheel");
    },
    
    unmousewheel: function(fn) {
        return this.unbind("mousewheel", fn);
    }
});


function handler(event) {
    var args = [].slice.call( arguments, 1 ), delta = 0, returnValue = true;
    
    event = $.event.fix(event || window.event);
    event.type = "mousewheel";
    
    if ( event.wheelDelta ) delta = event.wheelDelta/120;
    if ( event.detail     ) delta = -event.detail/3;
    
    // Add event and delta to the front of the arguments
    args.unshift(event, delta);

    return $.event.handle.apply(this, args);
}

})(jQuery);

(function(jQuery) {
    function tooltip(el, fn, options) {
        el.hover(function (e) {
		
		    this.anchor_title = this.title;
            this.title = '';
			
           	jQuery('#' + options.tooltipID).html(fn(this)+"&nbsp");
	
			var scrollPos = BBTool_getPageScroll();
			
			if(options.tTipWidth==0) options.tTipWidth = jQuery("#"+options.tooltipID).width();
			if(options.tTipHeight==0) options.tTipHeight = jQuery("#"+options.tooltipID).height();
			
			var xPos 	= (options.tTipWidth+e.pageX+options.xOffset<BBVars.windowWidth+scrollPos[0])
						? e.pageX + options.xOffset
						: e.pageX - options.xOffset - options.tTipWidth;
						
			var yPos 	= (options.tTipHeight+e.pageY+options.yOffset<BBVars.windowHeight+scrollPos[1])
						? e.pageY + options.yOffset
						: BBVars.windowHeight + scrollPos[1] - options.tTipHeight;

            jQuery('#' + options.tooltipID)
                .css("top", yPos + "px")
                .css("left", xPos + "px")
                .fadeIn("fast");
	                
	         
        }, function () {
            this.title = this.anchor_title;
            jQuery('#' + options.tooltipID).css("display","none");
        });
        
        el.mousemove(function (e) {
		
			var scrollPos = BBTool_getPageScroll();
			
			var xPos 	= (options.tTipWidth+e.pageX+options.xOffset<BBVars.windowWidth+scrollPos[0])
						? e.pageX + options.xOffset
						: e.pageX - options.xOffset - options.tTipWidth;
						
			var yPos 	= (options.tTipHeight+e.pageY+options.yOffset<BBVars.windowHeight+scrollPos[1])
						? e.pageY + options.yOffset
						: BBVars.windowHeight + scrollPos[1] - options.tTipHeight;
						
			jQuery('#' + options.tooltipID)
				.css("top", yPos + "px")
				.css("left", xPos + "px");
			
		});
    }

    jQuery.fn.tooltip = function(fn, options) {
        options = options || {};
        var defaults = {
            xOffset: 		40,
            yOffset: 		-100,
            tooltipID: 		'BBTTip',
			tTipHeight:		0,
			tTipWidth:		0
        };
        
		jQuery('body').append('<div id="' + options.tooltipID + '">' + fn(this) + '&nbsp;</div>');
		jQuery('#' + options.tooltipID)
				.css("z-index", 10000)
				.css("position", "absolute");
		
        return this.each(function() {
            tooltip(jQuery(this), fn, jQuery.extend(defaults, options));
        });
    }
    
})(jQuery);

function BBTool_toolTip() {

	if(jQuery("a."+BBSettings.defaultTTipClassName).length>0) {
		 jQuery("a."+BBSettings.defaultTTipClassName).tooltip(function (el) {
			 var c = (el.anchor_title != "")
			 ? "<p>" + el.anchor_title + "</p>"
			 : "";
			 return c + "<img src='"+ el.rel +"' alt='"+ el.title +"' />";
		 }, {
		 		'tooltipID': BBSettings.defaultTTipName,
				'tTipHeight': 475,
				'tTipWidth': 475
		});
	}
}

// onload de plusieurs images

(function($) {
$.fn.batchImageLoad = function(options) {
	var images = $(this);
	var originalTotalImagesCount = images.size();
	var totalImagesCount = originalTotalImagesCount;
	var elementsLoaded = 0;

	// Init
	$.fn.batchImageLoad.defaults = {
		loadingCompleteCallback: null, 
		imageLoadedCallback: null
	}
    var opts = $.extend({}, $.fn.batchImageLoad.defaults, options);
		
	// Start
	images.each(function() {
		// The image has already been loaded (cached)
		if ($(this)[0].complete) {
			totalImagesCount--;
			if (opts.imageLoadedCallback) opts.imageLoadedCallback(elementsLoaded, originalTotalImagesCount);
		// The image is loading, so attach the listener
		} else {
			$(this).load(function() {
				elementsLoaded++;
				
				if (opts.imageLoadedCallback) opts.imageLoadedCallback(elementsLoaded, originalTotalImagesCount);

				// An image has been loaded
				if (elementsLoaded >= totalImagesCount)
					if (opts.loadingCompleteCallback) opts.loadingCompleteCallback();
			});
			$(this).error(function() {
				elementsLoaded++;
				
				if (opts.imageLoadedCallback) opts.imageLoadedCallback(elementsLoaded, originalTotalImagesCount);
					
				// The image has errored
				if (elementsLoaded >= totalImagesCount)
					if (opts.loadingCompleteCallback) opts.loadingCompleteCallback();
			});
		}
	});

	// There are no unloaded images
	if (totalImagesCount <= 0)
		if (opts.loadingCompleteCallback) opts.loadingCompleteCallback();
};
})(jQuery);

(function($) {
	$.fn.BBFadeIn = function(speed, callback) {
		$(this).fadeIn(speed, function() {
			if(!$.support.opacity)
				$(this).get(0).style.removeAttribute('filter');
			if(callback != undefined)
				callback();
		});
	};
	$.fn.BBFadeOut = function(speed, callback) {
		$(this).fadeOut(speed, function() {
			if(!$.support.opacity)
				$(this).get(0).style.removeAttribute('filter');
			if(callback != undefined)
				callback();
		});
	};
	$.fn.BBFadeTo = function(speed,to,callback) {
		return this.animate({opacity: to}, speed, function() {
			if (to == 1 && jQuery.browser.msie)
				this.style.removeAttribute('filter');
			if (jQuery.isFunction(callback))
				callback();
		});
	};
})(jQuery);

(function($,c,b){$.map("click dblclick mousemove mousedown mouseup mouseover mouseout change select submit keydown keypress keyup".split(" "),function(d){a(d)});a("focusin","focus"+b);a("focusout","blur"+b);$.addOutsideEvent=a;function a(g,e){e=e||g+b;var d=$(),h=g+"."+e+"-special-event";$.event.special[e]={setup:function(){d=d.add(this);if(d.length===1){$(c).bind(h,f)}},teardown:function(){d=d.not(this);if(d.length===0){$(c).unbind(h)}},add:function(i){var j=i.handler;i.handler=function(l,k){l.target=k;j.apply(this,arguments)}}};function f(i){$(d).each(function(){var j=$(this);if(this!==i.target&&!j.has(i.target).length){j.triggerHandler(e,[i.target])}})}}})(jQuery,document,"outside");


new function(settings) { 
  var $separator = settings.separator || '&';
  var $spaces = settings.spaces === false ? false : true;
  var $suffix = settings.suffix === false ? '' : '[]';
  var $prefix = settings.prefix === false ? false : true;
  var $hash = $prefix ? settings.hash === true ? "#" : "?" : "";
  var $numbers = settings.numbers === false ? false : true;
  
  jQuery.query = new function() {
    var is = function(o, t) {
      return o != undefined && o !== null && (!!t ? o.constructor == t : true);
    };
    var parse = function(path) {
      var m, rx = /\[([^[]*)\]/g, match = /^([^[]+)(\[.*\])?$/.exec(path), base = match[1], tokens = [];
      while (m = rx.exec(match[2])) tokens.push(m[1]);
      return [base, tokens];
    };
    var set = function(target, tokens, value) {
      var o, token = tokens.shift();
      if (typeof target != 'object') target = null;
      if (token === "") {
        if (!target) target = [];
        if (is(target, Array)) {
          target.push(tokens.length == 0 ? value : set(null, tokens.slice(0), value));
        } else if (is(target, Object)) {
          var i = 0;
          while (target[i++] != null);
          target[--i] = tokens.length == 0 ? value : set(target[i], tokens.slice(0), value);
        } else {
          target = [];
          target.push(tokens.length == 0 ? value : set(null, tokens.slice(0), value));
        }
      } else if (token && token.match(/^\s*[0-9]+\s*$/)) {
        var index = parseInt(token, 10);
        if (!target) target = [];
        target[index] = tokens.length == 0 ? value : set(target[index], tokens.slice(0), value);
      } else if (token) {
        var index = token.replace(/^\s*|\s*$/g, "");
        if (!target) target = {};
        if (is(target, Array)) {
          var temp = {};
          for (var i = 0; i < target.length; ++i) {
            temp[i] = target[i];
          }
          target = temp;
        }
        target[index] = tokens.length == 0 ? value : set(target[index], tokens.slice(0), value);
      } else {
        return value;
      }
      return target;
    };
    
    var queryObject = function(a) {
      var self = this;
      self.keys = {};
      
      if (a.queryObject) {
        jQuery.each(a.get(), function(key, val) {
          self.SET(key, val);
        });
      } else {
        jQuery.each(arguments, function() {
          var q = "" + this;
          q = q.replace(/^[?#]/,''); // remove any leading ? || #
          q = q.replace(/[;&]$/,''); // remove any trailing & || ;
          if ($spaces) q = q.replace(/[+]/g,' '); // replace +'s with spaces
          
          jQuery.each(q.split(/[&;]/), function(){
            var key = decodeURIComponent(this.split('=')[0] || "");
            var val = decodeURIComponent(this.split('=')[1] || "");
            
            if (!key) return;
            
            if ($numbers) {
              if (/^[+-]?[0-9]+\.[0-9]*$/.test(val)) // simple float regex
                val = parseFloat(val);
              else if (/^[+-]?[0-9]+$/.test(val)) // simple int regex
                val = parseInt(val, 10);
            }
            
            val = (!val && val !== 0) ? true : val;
            
            if (val !== false && val !== true && typeof val != 'number')
              val = val;
            
            self.SET(key, val);
          });
        });
      }
      return self;
    };
    
    queryObject.prototype = {
      queryObject: true,
      has: function(key, type) {
        var value = this.get(key);
        return is(value, type);
      },
      GET: function(key) {
        if (!is(key)) return this.keys;
        var parsed = parse(key), base = parsed[0], tokens = parsed[1];
        var target = this.keys[base];
        while (target != null && tokens.length != 0) {
          target = target[tokens.shift()];
        }
        return typeof target == 'number' ? target : target || "";
      },
      get: function(key) {
        var target = this.GET(key);
        if (is(target, Object))
          return jQuery.extend(true, {}, target);
        else if (is(target, Array))
          return target.slice(0);
        return target;
      },
      SET: function(key, val) {
        var value = !is(val) ? null : val;
        var parsed = parse(key), base = parsed[0], tokens = parsed[1];
        var target = this.keys[base];
        this.keys[base] = set(target, tokens.slice(0), value);
        return this;
      },
      set: function(key, val) {
        return this.copy().SET(key, val);
      },
      REMOVE: function(key) {
        return this.SET(key, null).COMPACT();
      },
      remove: function(key) {
        return this.copy().REMOVE(key);
      },
      EMPTY: function() {
        var self = this;
        jQuery.each(self.keys, function(key, value) {
          delete self.keys[key];
        });
        return self;
      },
      load: function(url) {
        var hash = url.replace(/^.*?[#](.+?)(?:\?.+)?$/, "$1");
        var search = url.replace(/^.*?[?](.+?)(?:#.+)?$/, "$1");
        return new queryObject(url.length == search.length ? '' : search, url.length == hash.length ? '' : hash);
      },
      empty: function() {
        return this.copy().EMPTY();
      },
      copy: function() {
        return new queryObject(this);
      },
      COMPACT: function() {
        function build(orig) {
          var obj = typeof orig == "object" ? is(orig, Array) ? [] : {} : orig;
          if (typeof orig == 'object') {
            function add(o, key, value) {
              if (is(o, Array))
                o.push(value);
              else
                o[key] = value;
            }
            jQuery.each(orig, function(key, value) {
              if (!is(value)) return true;
              add(obj, key, build(value));
            });
          }
          return obj;
        }
        this.keys = build(this.keys);
        return this;
      },
      compact: function() {
        return this.copy().COMPACT();
      },
      toString: function() {
        var i = 0, queryString = [], chunks = [], self = this;
        var encode = function(str) {
          str = str + "";
          if ($spaces) str = str.replace(/ /g, "+");
          return encodeURIComponent(str);
        };
        var addFields = function(arr, key, value) {
          if (!is(value) || value === false) return;
          var o = [encode(key)];
          if (value !== true) {
            o.push("=");
            o.push(encode(value));
          }
          arr.push(o.join(""));
        };
        var build = function(obj, base) {
          var newKey = function(key) {
            return !base || base == "" ? [key].join("") : [base, "[", key, "]"].join("");
          };
          jQuery.each(obj, function(key, value) {
            if (typeof value == 'object') 
              build(value, newKey(key));
            else
              addFields(chunks, newKey(key), value);
          });
        };
        
        build(this.keys);
        
        if (chunks.length > 0) queryString.push($hash);
        queryString.push(chunks.join($separator));
        
        return queryString.join("");
      }
    };
    
    return new queryObject(location.search, location.hash);
  };
}(jQuery.query || {});
