// JavaScript Document


$(function(){
	$("#mainform").submit(function() {
		//$.scrollTo("#mainform", 300);
	});
	// AJAX forms.
	ajaxify();
	displayErrors();
	$.superbox();
	
	
	$(".tip").tooltip({
		cssClass: "tooltip", 
		delay : 0,// time in milliseconds that you must leave the mouse over the link until the tooltip appears
		duration : 100,//time in milliseconds that the tooltip will stay visible after you remove the mouse over the link
		xOffset : -200,
		yOffset : 50,
		opacity : 0, 
		fadeDuration: 200 
	});
	
});

/*function openLightbox(url, width, height){
	$(function(){
		$.superbox.wait(function() {
		  $.superbox.open('<iframe frameborder="0" scrolling="none" width="'+width+'" height="'+height+'" src="'+url+'"></iframe>',{ boxWidth: width, boxHeight: height });
		});
	});
}*/


function openLightbox(url, width, height){
	$(function(){
		$.colorbox({href:url, width:width, height:height, iframe:true})
	});
}





/**
 * Turns forms with special "ajax" class into AJAX forms.
 * Note: Requires compatible PHP code on server-side in order to
 * receive and properly display HTML based on passed "ajax" variable.
 * 
 * Requires "scrollTo" jQuery plug-in.
 */
var ajaxconfig = {};
function ajaxify() {
	$("form.ajax").submit(function(){
		// Get form properties.
		action = $(this).attr("action");
		if (action.indexOf("#") != -1) {
			// Parse out trailing hash.
			action = action.substring(0, action.indexOf("#"))
		}
		method = $(this).attr("method").toUpperCase();
		if (method != "GET" && method != "POST") method = "POST";
		formid = $(this).attr("id");
		if (formid == "") {
			// Dynamically assign ID.
			formid = "form" + parseInt(Math.random() * 9999);
			$(this).attr("id", formid);
		}
		
		// Add "ajax" field to form and serialize data.
		$(this).append("<input type=\"hidden\" name=\"ajax\" value=\"1\" />");
		data = $(this).serialize();
		
		// Disable form fields to show it is processing.
		$("#" + formid + " input").attr("disabled", "disabled");
		$("#" + formid + " textarea").attr("disabled", "disabled");
		
		// Configure AJAX call.
		ajaxconfig = {
			type: method,
			url: action,
			data: data,
			success: function(data, textStatus, XMLHttpRequest) {
				// Update form contents and animate error messages, if applicable.
				$("#" + this.formid).html(data);
				if ($("#" + this.formid).hasClass("scrollme")) $.scrollTo("#" + this.formid, 300);
				displayErrors();
			},
			formid: formid
		};
		
		// Give error message time to scroll up before submitting AJAX call.
		if ($(".errmsg").length > 0) {
			$(".errmsg").slideUp(200, function() {
				ajaxify_submit();
			});
		} else {
			ajaxify_submit();
		}
		
		// Prevent form from submitting.
		return false;
	});
}

// AJAX submit callback.
function ajaxify_submit() {
	$.ajax(ajaxconfig);
}


/**
 * Animates error messages.
 */
function displayErrors() {
	$(".errmsg").css({
		"display": "none"
	});
	$(".errmsg").slideDown(500);
}







 
(function($){ $.fn.tooltip = function(options){

    var defaults = {
        cssClass: "",     //CSS class or classes to style the tooltip
		delay : 0,        //The number of milliseconds before displaying the tooltip
        duration : 500,   //The number of milliseconds after moving the mouse cusor before removing the tooltip.
        xOffset : 15,     //X offset will allow the tooltip to appear offset by x pixels.
        yOffset : 15,     //Y offset will allow the tooltip to appear offset by y pixels.
		opacity : 0,      //0 is completely opaque and 100 completely transparent
		fadeDuration: 400, //[toxi20090112] added fade duration in millis (default = "normal")
		eventshow : 'mouseover', //[Stijn Haulotte] added custom show event
		eventhide : 'mouseleave', //[Stijn Haulotte] added custom hide event
		ajaxSource : 'href', //[Stijn Haulotte] added custom ajax source
		closebutton : 'no', //[Stijn Haulotte] added close button
		fixed: false
	};
  
    var options = $.extend(defaults, options);
	
	
	return this.each(function(index) {
		
		var $this = $(this);
		
		//use just one div for all tooltips
		// [toxi20090112] allow the tooltip div to be already present (would break currently)
		$tooltip=$("#divTooltip");
		$tooltipC=$("#divTooltipC");
		$tooltipT=$("#divTooltipT");
		$tooltip.hide();
		if($tooltip.length == 0){
			$tooltip = $('<div id="divTooltip"><div id="divTooltipT"></div><div id="divTooltipC"></div></div>');			
			$('body').append($tooltip);
			$tooltip.hide();
		}
		//displays the tooltip
		function show (e){
			//compatibility issue
			e = e ? e : window.event;
			
			// show the close button
			if(options.closebutton == 'yes'){
				$tooltipT.html("<div id='close'>Sluiten</div>");
			}
			
			//don't hide the tooltip if the mouse is over the element again
			clearTimeout($tooltip.data("hideTimeoutId"));
			
			//set the tooltip class
			$tooltip.removeClass($tooltip.attr("class"));
			$tooltip.css("width","");
			$tooltip.css("height","");
			$tooltip.addClass(options.cssClass);
			$tooltip.css("opacity",1-options.opacity/100);
			$tooltip.css("position","absolute");			
			
			//save the title text and remove it from title to avoid showing the default tooltip
			$tooltip.data("title",$this.attr("title"));
			$this.attr("title","");
			$tooltip.data("alt",$this.attr("alt"));
			$this.attr("alt","");
			
			//set the tooltip content
			$tooltipC.html($tooltip.data("title"));
			// [toxi20090112] only use ajax if there actually is a href or rel attrib present
			var el=$this.attr(options.ajaxSource);
			if(el!=undefined && el!="" && el != "#")
			    $tooltipC.html($.ajax({url:$this.attr(options.ajaxSource),async:false}).responseText);
			
			if(options.fixed === false){
				//set the tooltip position
				winw = $(window).width();
				w = $tooltip.width();
				xOffset = options.xOffset;
				
				//right priority
				if(w+xOffset+50 < winw-e.clientX)
				  $tooltip.css("left", $(document).scrollLeft() + e.clientX+xOffset);
				else if(w+xOffset+50 < e.clientX)
				  $tooltip.css("left", $(document).scrollLeft() + e.clientX-(w+xOffset));
				else{
				  //there is more space at left, fit the tooltip there
				  if(e.clientX > winw/2){
					$tooltip.width(e.clientX-50);
					$tooltip.css("left", $(document).scrollLeft() + 25);
				  }
				  //there is more space at right, fit the tooltip there
				  else{
					$tooltip.width((winw-e.clientX)-50);
					$tooltip.css("left", $(document).scrollLeft() + e.clientX+xOffset);
				  }
				}
				
				winh = $(window).height();
				h = $tooltip.height();
				yOffset = options.yOffset;
				//top position priority
				if(h+yOffset + 50 < e.clientY)
				  $tooltip.css("top", $(document).scrollTop() + e.clientY-(h+yOffset));
				else if(h+yOffset + 50 < winh-e.clientY)
				  $tooltip.css("top", $(document).scrollTop() + e.clientY+yOffset);
				else 
				  $tooltip.css("top", $(document).scrollTop() + 10);
			}
			
			//start the timer to show the tooltip
			//[toxi20090112] modified to make use of fadeDuration option
			$tooltip.data("showTimeoutId", setTimeout("$tooltip.fadeIn("+options.fadeDuration+")",options.delay));
		}
		$this.bind(options.eventshow, function(event){
			show(event);
		});
		
		$tooltip.bind('mouseover', function(event){
			$this.stop();
			clearTimeout($tooltip.data("hideTimeoutId"));
		});
		
		$tooltip.bind('mouseleave', function(event){
			hide(event);
		});
		
		function hide(e){
			//compatibility issue
			e = e ? e : window.event;
			//restore the title
			$this.attr("title",$tooltip.data("title"));
			$this.attr("alt",$tooltip.data("alt"));
			//don't show the tooltip if the mouse left the element before the delay time
			clearTimeout($tooltip.data("showTimeoutId"));
			//start the timer to hide the tooltip
			//[toxi20090112] modified to make use of fadeDuration option
			$tooltip.data("hideTimeoutId", setTimeout("$tooltip.fadeOut("+options.fadeDuration+")",options.duration));
		}
		$this.bind(options.eventhide, function(event){
			hide(event);
		});
		
		$this.click(function(e){
		    e.preventDefault();
		});
		$tooltipT.click(function(event){
		    hide(event);
		});

	});

}})(jQuery);



/**
 * jQuery.ScrollTo - Easy element scrolling using jQuery.
 * Copyright (c) 2007-2009 Ariel Flesler - aflesler(at)gmail(dot)com | http://flesler.blogspot.com
 * Dual licensed under MIT and GPL.
 * Date: 5/25/2009
 * @author Ariel Flesler
 * @version 1.4.2
 *
 * http://flesler.blogspot.com/2007/10/jqueryscrollto.html
 */
;(function(d){var k=d.scrollTo=function(a,i,e){d(window).scrollTo(a,i,e)};k.defaults={axis:'xy',duration:parseFloat(d.fn.jquery)>=1.3?0:1};k.window=function(a){return d(window)._scrollable()};d.fn._scrollable=function(){return this.map(function(){var a=this,i=!a.nodeName||d.inArray(a.nodeName.toLowerCase(),['iframe','#document','html','body'])!=-1;if(!i)return a;var e=(a.contentWindow||a).document||a.ownerDocument||a;return d.browser.safari||e.compatMode=='BackCompat'?e.body:e.documentElement})};d.fn.scrollTo=function(n,j,b){if(typeof j=='object'){b=j;j=0}if(typeof b=='function')b={onAfter:b};if(n=='max')n=9e9;b=d.extend({},k.defaults,b);j=j||b.speed||b.duration;b.queue=b.queue&&b.axis.length>1;if(b.queue)j/=2;b.offset=p(b.offset);b.over=p(b.over);return this._scrollable().each(function(){var q=this,r=d(q),f=n,s,g={},u=r.is('html,body');switch(typeof f){case'number':case'string':if(/^([+-]=)?\d+(\.\d+)?(px|%)?$/.test(f)){f=p(f);break}f=d(f,this);case'object':if(f.is||f.style)s=(f=d(f)).offset()}d.each(b.axis.split(''),function(a,i){var e=i=='x'?'Left':'Top',h=e.toLowerCase(),c='scroll'+e,l=q[c],m=k.max(q,i);if(s){g[c]=s[h]+(u?0:l-r.offset()[h]);if(b.margin){g[c]-=parseInt(f.css('margin'+e))||0;g[c]-=parseInt(f.css('border'+e+'Width'))||0}g[c]+=b.offset[h]||0;if(b.over[h])g[c]+=f[i=='x'?'width':'height']()*b.over[h]}else{var o=f[h];g[c]=o.slice&&o.slice(-1)=='%'?parseFloat(o)/100*m:o}if(/^\d+$/.test(g[c]))g[c]=g[c]<=0?0:Math.min(g[c],m);if(!a&&b.queue){if(l!=g[c])t(b.onAfterFirst);delete g[c]}});t(b.onAfter);function t(a){r.animate(g,j,b.easing,a&&function(){a.call(this,n,b)})}}).end()};k.max=function(a,i){var e=i=='x'?'Width':'Height',h='scroll'+e;if(!d(a).is('html,body'))return a[h]-d(a)[e.toLowerCase()]();var c='client'+e,l=a.ownerDocument.documentElement,m=a.ownerDocument.body;return Math.max(l[h],m[h])-Math.min(l[c],m[c])};function p(a){return typeof a=='object'?a:{top:a,left:a}}})(jQuery);



/*
* jQuery SuperBox! 0.9.1
* Copyright (c) 2009 Pierre Bertet (pierrebertet.net)
* Licensed under the MIT (MIT-LICENSE.txt)
*
*/
/*
(function(i){var l,t,r,q,a,p,h,o,j,w,b={boxId:"superbox",boxClasses:"",overlayOpacity:0.8,boxWidth:"600",boxHeight:"400",loadTxt:"Loading...",closeTxt:"Close",prevTxt:"Previous",nextTxt:"Next",beforeShow:function(){}},x={},m=false,s=i([]);
i.superbox=function(){w=i.extend({},b,i.superbox.settings);if(i.browser.msie&&i.browser.version<7){s=s.add("select")
}n();z()};function z(){i("a[rel^=superbox],area[rel^=superbox]").each(function(){var D=i(this),F=D.attr("rel"),B=F.match(/^superbox\[([^#\.\]]+)/)[1],E=F.replace("superbox","").match(/([#\.][^#\.\]]+)/g)||[],C=w.boxId,A=w.boxClasses;
this._relSettings=F.replace("superbox["+B+E.join("")+"]","");i.each(E,function(G,H){if(H.substr(0,1)=="#"){C=H.substr(1)
}else{if(H.substr(0,1)=="."){A+=" "+H.substr(1)}}});if(B.search(/^image|gallery|iframe|content|ajax$/)!=-1){D.superbox(B,{boxId:C,boxClasses:A})
}})}i.fn.superbox=function(B,A){A=i.extend({},w,A);i.superbox[B](this,A)};i.extend(i.superbox,{image:function(C,A,B){var E=f(C.get(0)),D=false;
if(E&&B=="gallery"){D=E[1]}else{if(E){D=E[0]}}C.click(function(F){F.preventDefault();
k();if(B=="gallery"){c(C,E[0])}y(function(){var H=false,G;if(D){H=D.split("x")}G=i('<img src="'+C.attr("href")+'" title="'+(C.attr("title")||C.text())+'" />');
G.load(function(){g(G,H);e({boxClasses:"image "+A.boxClasses,boxId:A.boxId});u()}).appendTo($innerbox)
})})},gallery:function(B,A){var C=f(B.get(0));if(!x[C[0]]){x[C[0]]=[]}x[C[0]].push(B);
B.get(0)._superboxGroupKey=(x[C[0]].length-1);i.superbox.image(B,A,"gallery")},iframe:function(B,A){var C=f(B.get(0));
B.click(function(D){D.preventDefault();k();y(function(){var F=false,E;if(C){F=C[0].split("x")
}A=i.extend({},A,{boxWidth:F[0]||A.boxWidth,boxHeight:F[1]||A.boxHeight});E=i('<iframe src="'+B.attr("href")+'" name="'+B.attr("href")+'" frameborder="0" scrolling="auto" hspace="0" width="'+A.boxWidth+'" height="'+A.boxHeight+'"></iframe>');
E.load(function(){q.width(A.boxWidth+"px");$innerbox.height(A.boxHeight+"px");e({boxClasses:"iframe "+A.boxClasses,boxId:A.boxId});
u()}).appendTo($innerbox)})})},content:function(B,A){var C=f(B.get(0));B.click(function(D){D.preventDefault();
k();y(function(){var E=false;if(C){E=C[0].split("x")}A=i.extend({},A,{boxWidth:E[0]||A.boxWidth,boxHeight:E[1]||A.boxHeight});
q.width(A.boxWidth+"px");$innerbox.height(A.boxHeight+"px");i(B.attr("href")).clone().appendTo($innerbox).show();
e({boxClasses:"content "+A.boxClasses,boxId:A.boxId});u()})})},ajax:function(B,A){var C=f(B.get(0));
B.click(function(D){D.preventDefault();k();y(function(){var E=false;if(C&&C[3]){E=C[3].split("x")
}A=i.extend({},A,{boxWidth:E[0]||A.boxWidth,boxHeight:E[1]||A.boxHeight});q.width(A.boxWidth+"px");
$innerbox.height(A.boxHeight+"px");i.get(C[2],function(F){i(F).appendTo($innerbox)
});e({boxClasses:"ajax "+A.boxClasses,boxId:A.boxId});u()})})}});function f(A){return A._relSettings.match(/([^\[\]]+)/g)
}function g(A,B){q.width(A.width()+($innerbox.css("paddingLeft").slice(0,-2)-0)+($innerbox.css("paddingRight").slice(0,-2)-0));
$innerbox.height(A.height());if(B&&B[0]!=""){q.width(B[0]+"px")}if(B&&B[1]!=""&&B[1]>A.height()){$innerbox.height(B[1]+"px")
}}function c(C,D){h.show();m=true;var A=C.get(0)._superboxGroupKey+1,B=A-2;if(x[D][A]){o.removeClass("disabled").unbind("click").bind("click",function(){x[D][A].click()
})}else{o.addClass("disabled").unbind("click")}if(x[D][B]){j.removeClass("disabled").unbind("click").bind("click",function(){x[D][B].click()
})}else{j.addClass("disabled").unbind("click")}}function e(A){q.attr("id",A.boxId).attr("class",A.boxClasses)
}function d(){i(document).unbind("keydown");p.hide();h.hide();t.hide().css({position:"fixed",top:0});
$innerbox.empty()}function v(A){d();l.fadeOut(300,function(){s.show()});m=false}function y(B){var A=function(){if(i.browser.msie&&i.browser.version<7){t.css({position:"absolute",top:"50%"})
}s.hide();p.show();B()};if(m){l.css("opacity",w.overlayOpacity).show();A()}else{l.css("opacity",0).show().fadeTo(300,w.overlayOpacity,A)
}}function k(){t.show();$innerbox.empty();q.css({position:"absolute",top:"-99999px"})
}function u(A,B){p.hide();i(document).unbind("keydown").bind("keydown",function(C){if(C.keyCode==27){v()
}if(C.keyCode==39&&o.is(":visible")){o.click()}if(C.keyCode==37&&j.is(":visible")){j.click()
}});q.css({position:"static",top:0,opacity:0});if(i.browser.msie&&i.browser.version<8){q.css({position:"relative",top:"-50%"});
if(i.browser.msie&&i.browser.version<7){t.css({position:"absolute",top:"50%"})}}if(i(window).height()<t.height()){t.css({position:"absolute",top:(t.offset().top+10)+"px"})
}w.beforeShow();q.fadeTo(300,1)}function n(){if(!i.superbox.elementsReady){l=i('<div id="superbox-overlay"></div>').appendTo("body").hide();
t=i('<div id="superbox-wrapper"></div>').appendTo("body").hide();r=i('<div id="superbox-container"></div>').appendTo(t);
q=i('<div id="superbox"></div>').appendTo(r);$innerbox=i('<div id="superbox-innerbox"></div>').appendTo(q);
h=i('<p class="nextprev"></p>').appendTo(q).hide();j=i('<a class="prev"><strong><span>'+w.prevTxt+"</span></strong></a>").appendTo(h);
o=i('<a class="next"><strong><span>'+w.nextTxt+"</span></strong></a>").appendTo(h);
a=i('<p class="close"><a><strong><span>'+w.closeTxt+"</span></strong></a></p>").prependTo(q).find("a");
p=i('<p class="loading">'+w.loadTxt+"</p>").appendTo(r).hide();l.add(t).add(a).click(function(){v()
});q.click(function(A){A.stopPropagation()});i.superbox.elementsReady=true}}})(jQuery);
*/

/*
 * jQuery SuperBox! 0.9.2-dev
 * Copyright (c) 2009 Pierre Bertet (pierrebertet.net)
 * Licensed under the MIT (MIT-LICENSE.txt)
 *
 * TODO :
 * - Document.load if init is before </body> against IE crash.
 * - Animations
 * - Image / Gallery mode : display a legend
*/
;(function($){var $curLink,$overlay,$wrapper,$container,$superbox,$closeBtn,$loading,$nextprev,$nextBtn,$prevBtn,settings,defaultSettings={boxId:"superbox",boxClasses:"",overlayOpacity:.8,boxWidth:"600",boxHeight:"400",loadTxt:"Loading...",closeTxt:"Close",prevTxt:"Previous",nextTxt:"Next",beforeOpen:function(){},afterOpen:function(){}},galleryGroups={},galleryMode=false,hideElts=$([]),isWaiting=false;$.superbox=function(){settings=$.extend({},defaultSettings,$.superbox.settings);if($.browser.msie&&$.browser.version<7){hideElts=hideElts.add("select")}if($.superbox.mainInit!==true){createElements();initGlobalEvents();$.superbox.mainInit=true}dispatch()};function dispatch(){$("a[rel^=superbox],area[rel^=superbox]").each(function(){var $this=$(this),relAttr=$this.attr("rel"),firstArg=relAttr.match(/^superbox\[([^\]]+)\]/)[1],type=firstArg.match(/^([^#\.]+)/)[1],boxCurrentAttrs=firstArg.replace(type,"").match(/([#\.][^#\.\]]+)/g)||[],newBoxId=settings.boxId,newBoxClasses=settings.boxClasses;if($this.data("superbox_init")){return}$this.data("superbox_init",true);this._relSettings=relAttr.replace("superbox["+type+boxCurrentAttrs.join("")+"]","");$.each(boxCurrentAttrs,function(i,val){if(val.substr(0,1)=="#"){newBoxId=val.substr(1)}else if(val.substr(0,1)=="."){newBoxClasses+=" "+val.substr(1)}});if(type.search(/^image|gallery|iframe|content|ajax$/)!=-1){$this.superbox(type,{boxId:newBoxId,boxClasses:newBoxClasses})}})};$.fn.superbox=function(type,curSettings){curSettings=$.extend({},settings,curSettings);$.superbox[type](this,curSettings);this.click(function(e){e.preventDefault();$curLink=this})};$.extend($.superbox,{wait:function(callback){isWaiting=true;prepareBox();initLoading(function(){callback()})},open:function(content,curSettings){curSettings=$.extend({},settings,curSettings);if(!isWaiting){$.superbox.wait(function(){$.superbox.open(content,curSettings)});return}$superbox.width(curSettings.boxWidth+"px");$innerbox.height(curSettings.boxHeight+"px");$superbox.attr("id",curSettings.boxId).attr("class",curSettings.boxClasses);$(content).appendTo($innerbox);showBox(curSettings);isWaiting=false},close:function(){hideBox();$overlay.fadeOut(300,function(){hideElts.show()});galleryMode=false},image:function($elt,curSettings,isGallery){$elt.click(function(){galleryMode=!!isGallery;$.superbox.wait(function(){var relSettings=getRelSettings($elt.get(0)),dimensions=false;if(!!relSettings){var relDimensions;if(galleryMode){relDimensions=relSettings[1]}else{relDimensions=relSettings[0]}if(!!relDimensions){dimensions=relDimensions.split("x")}}var $curImg=$('<img src="'+$elt.attr("href")+'" title="'+($elt.attr("title")||$elt.text())+'" />');$curImg.load(function(){if(!!dimensions&&dimensions[0]!=""){var boxWidth=dimensions[0]-0}else{var boxWidth=$curImg.width()+($innerbox.css("paddingLeft").slice(0,-2)-0)+($innerbox.css("paddingRight").slice(0,-2)-0)}if(!!dimensions&&dimensions[1]!=""){var boxHeight=dimensions[1]-0}else{var boxHeight=$curImg.height()}curSettings=$.extend({},curSettings,{boxClasses:(galleryMode?"gallery ":"image ")+curSettings.boxClasses,boxWidth:boxWidth,boxHeight:boxHeight,beforeOpen:function(){if(galleryMode){nextPrev($elt,relSettings[0])}}});$.superbox.open($curImg,curSettings)});$curImg.appendTo($innerbox)})})},gallery:function($elt,curSettings){var extraSettings=getRelSettings($elt.get(0));if(!galleryGroups[extraSettings[0]]){galleryGroups[extraSettings[0]]=[]}galleryGroups[extraSettings[0]].push($elt);$elt.data("superboxGroupKey",galleryGroups[extraSettings[0]].length-1);$.superbox["image"]($elt,curSettings,true)},iframe:function($elt,curSettings){$elt.click(function(){$.superbox.wait(function(){var extraSettings=getRelSettings($elt.get(0));var dims=false;if(extraSettings){dims=extraSettings[0].split("x")}curSettings=$.extend({},curSettings,{boxWidth:dims[0]||curSettings.boxWidth,boxHeight:dims[1]||curSettings.boxHeight,boxClasses:"iframe "+curSettings.boxClasses});var $iframe=$('<iframe title="'+$elt.text()+'" src="'+$elt.attr("href")+'" name="'+$elt.attr("href")+'" frameborder="0" scrolling="auto" width="'+curSettings.boxWidth+'" height="'+curSettings.boxHeight+'"></iframe>');$iframe.one("load",function(){$.superbox.open($iframe,curSettings)});$iframe.appendTo($innerbox)})})},content:function($elt,curSettings){$elt.click(function(){$.superbox.wait(function(){var extraSettings=getRelSettings($elt.get(0));var dims=false;if(extraSettings){dims=extraSettings[0].split("x")}curSettings=$.extend({},curSettings,{boxWidth:dims[0]||curSettings.boxWidth,boxHeight:dims[1]||curSettings.boxHeight,boxClasses:"content "+curSettings.boxClasses});$.superbox.open($($elt.attr('href')).clone(),curSettings)})})},ajax:function($elt,curSettings){$elt.click(function(){$.superbox.wait(function(){var extraSettings=getRelSettings($elt.get(0));var dims=false;if(extraSettings&&extraSettings[1]){dims=extraSettings[1].split("x")}curSettings=$.extend({},curSettings,{boxWidth:dims[0]||curSettings.boxWidth,boxHeight:dims[1]||curSettings.boxHeight,boxClasses:"ajax "+curSettings.boxClasses});var splitUrl=extraSettings[0].split("#");var ajaxUrl=splitUrl[0];var anchor=splitUrl[1]||false;$.get(ajaxUrl,function(data){if(anchor!==false){data=$(data).find("#"+anchor)}$.superbox.open(data,curSettings)})})})}});function getRelSettings(elt){return elt._relSettings.match(/([^\[\]]+)/g)};function nextPrev($elt,group){$nextprev.show();galleryMode=true;var nextKey=$elt.data("superboxGroupKey")+1,prevKey=nextKey-2;if(galleryGroups[group][nextKey]){$nextBtn.removeClass("disabled").unbind("click").bind("click",function(){galleryGroups[group][nextKey].click()})}else{$nextBtn.addClass("disabled").unbind("click")}if(galleryGroups[group][prevKey]){$prevBtn.removeClass("disabled").unbind("click").bind("click",function(){galleryGroups[group][prevKey].click()})}else{$prevBtn.addClass("disabled").unbind("click")}$(document).unbind("keydown.superbox_np").bind("keydown.superbox_np",function(e){if(e.keyCode==39){$nextBtn.click()}else if(e.keyCode==37){$prevBtn.click()}})};function hideBox(){if(!!$curLink){$curLink.focus()}$(document).unbind("keydown.spbx_close").unbind("keydown.superbox_np");$loading.hide();$nextprev.hide();$wrapper.hide().css({position:"fixed",top:0});$innerbox.empty();$curLink=null};function initLoading(callback){$(document).unbind("keydown.spbx_close").bind("keydown.spbx_close",function(e){if(e.keyCode==27){$.superbox.close()}});var loading=function(){if($.browser.msie&&$.browser.version<7){$wrapper.css({position:"absolute",top:"50%"})}hideElts.hide();$loading.show();callback()};if(galleryMode){$overlay.css("opacity",settings.overlayOpacity).show();loading()}else{$overlay.css("opacity",0).show().fadeTo(300,settings.overlayOpacity,loading)}};function prepareBox(){$wrapper.show();$innerbox.empty();$superbox.css({position:"absolute",top:"-99999px"})};function showBox(curSettings){curSettings=$.extend({},settings,curSettings);$loading.hide();$superbox.css({position:"static",top:0,opacity:0});if($.browser.msie&&$.browser.version<8){$superbox.css({position:"relative",top:"-50%"});if($.browser.msie&&$.browser.version<7){$wrapper.css({position:"absolute",top:"50%"})}}if($(window).height()<$wrapper.height()){$wrapper.css({position:"absolute",top:($wrapper.offset().top+10)+"px"})}curSettings.beforeOpen();$superbox.fadeTo(300,1,function(){curSettings.afterOpen()}).focus()};function createElements(){$overlay=$('<div id="superbox-overlay"/>').appendTo("body").hide();$wrapper=$('<div id="superbox-wrapper"/>').appendTo("body").hide();$container=$('<div id="superbox-container"/>').appendTo($wrapper);$superbox=$('<div id="superbox" tabindex="0"/>').appendTo($container);$innerbox=$('<div id="superbox-innerbox"/>').appendTo($superbox);$nextprev=$('<p class="nextprev"/>').appendTo($superbox).hide();$prevBtn=$('<a class="prev" tabindex="0" role="button"><strong><span>'+settings.prevTxt+'</span></strong></a>').appendTo($nextprev);$nextBtn=$('<a class="next" tabindex="0" role="button"><strong><span>'+settings.nextTxt+'</span></strong></a>').appendTo($nextprev);$closeBtn=$('<p class="close"><a tabindex="0" role="button"><strong><span>'+settings.closeTxt+'</span></strong></a></p>').prependTo($superbox).find("a");$loading=$('<p class="loading">'+settings.loadTxt+'</p>').appendTo($container).hide()};function initGlobalEvents(){$overlay.add($wrapper).add($closeBtn).click(function(){$.superbox.close()});$superbox.click(function(e){e.stopPropagation()});if(!window.opera){$prevBtn.add($closeBtn).add($nextBtn).keypress(function(e){if(e.keyCode===13){$(this).click()}})}}})(jQuery);





// ADDED CUSTOM FUNCTION TO BE ABLE TO RETRIEVE SETTINGS
// ColorBox v1.3.9 - a full featured, light-weight, customizable lightbox based on jQuery 1.3
// c) 2009 Jack Moore - www.colorpowered.com - jack@colorpowered.com
// Licensed under the MIT license: http://www.opensource.org/licenses/mit-license.php
(function ($, window) {
	
	var
	// ColorBox Default Settings.	
	// See http://colorpowered.com/colorbox for details.
	defaults = {
		transition: "elastic",
		speed: 300,
		width: false,
		initialWidth: "600",
		innerWidth: false,
		maxWidth: false,
		height: false,
		initialHeight: "450",
		innerHeight: false,
		maxHeight: false,
		scalePhotos: true,
		scrolling: true,
		inline: false,
		html: false,
		iframe: false,
		photo: false,
		href: false,
		title: false,
		rel: false,
		opacity: 0.9,
		preloading: true,
		current: "image {current} of {total}",
		previous: "previous",
		next: "next",
		close: "close",
		open: false,
		loop: true,
		slideshow: false,
		slideshowAuto: true,
		slideshowSpeed: 2500,
		slideshowStart: "start slideshow",
		slideshowStop: "stop slideshow",
		onOpen: false,
		onLoad: false,
		onComplete: false,
		onCleanup: false,
		onClosed: false,
		overlayClose: true,		
		escKey: true,
		arrowKey: true
	},
	
	// Abstracting the HTML and event identifiers for easy rebranding
	colorbox = 'colorbox',
	prefix = 'cbox',
	
	// Events	
	event_open = prefix + '_open',
	event_load = prefix + '_load',
	event_complete = prefix + '_complete',
	event_cleanup = prefix + '_cleanup',
	event_closed = prefix + '_closed',
	
	// Special Handling for IE
	isIE = $.browser.msie && !$.support.opacity, // feature detection alone gave a false positive on at least one phone browser and on some development versions of Chrome.
	isIE6 = isIE && $.browser.version < 7,
	event_ie6 = prefix + '_IE6',

	// Cached jQuery Object Variables
	$overlay,
	$box,
	$wrap,
	$content,
	$topBorder,
	$leftBorder,
	$rightBorder,
	$bottomBorder,
	$related,
	$window,
	$loaded,
	$loadingBay,
	$loadingOverlay,
	$title,
	$current,
	$slideshow,
	$next,
	$prev,
	$close,

	// Variables for cached values or use across multiple functions
	interfaceHeight,
	interfaceWidth,
	loadedHeight,
	loadedWidth,
	element,
	bookmark,
	index,
	settings,
	open,
	active,
	
	publicMethod,
	boxElement = prefix + 'Element';
	
	// ****************
	// HELPER FUNCTIONS
	// ****************

	// jQuery object generator to reduce code size
	function $div(id, css) { 
		id = id ? ' id="' + prefix + id + '"' : '';
		css = css ? ' style="' + css + '"' : '';
		return $('<div' + id + css + '/>');
	}

	// Convert % values to pixels
	function setSize(size, dimension) {
		dimension = dimension === 'x' ? $window.width() : $window.height();
		return (typeof size === 'string') ? Math.round((size.match(/%/) ? (dimension / 100) * parseInt(size, 10) : parseInt(size, 10))) : size;
	}

	// Checks an href to see if it is a photo.
	// There is a force photo option (photo: true) for hrefs that cannot be matched by this regex.
	function isImage(url) {
		url = $.isFunction(url) ? url.call(element) : url;
		return settings.photo || url.match(/\.(gif|png|jpg|jpeg|bmp)(?:\?([^#]*))?(?:#(\.*))?$/i);
	}
	
	// Assigns functions results to their respective settings.  This allows functions to be used to set ColorBox options.
	function process() {
		for (var i in settings) {
			if ($.isFunction(settings[i]) && i.substring(0, 2) !== 'on') { // checks to make sure the function isn't one of the callbacks, they will be handled at the appropriate time.
			    settings[i] = settings[i].call(element);
			}
		}
		settings.rel = settings.rel || element.rel || 'nofollow';
		settings.href = settings.href || $(element).attr('href');
		settings.title = settings.title || element.title;
	}

	function launch(elem) {
		
		element = elem;
		
		settings = $.extend({}, $(element).data(colorbox));
		
		process(); // Convert functions to their returned values.
		
		if (settings.rel !== 'nofollow') {
			$related = $('.' + boxElement).filter(function () {
				var relRelated = $(this).data(colorbox).rel || this.rel;
				return (relRelated === settings.rel);
			});
			index = $related.index(element);
			
			// Check direct calls to ColorBox.
			if (index === -1) {
				$related = $related.add(element);
				index = $related.length - 1;
			}
		} else {
			$related = $(element);
			index = 0;
		}
		
		if (!open) {
			open = active = true; // Prevents the page-change action from queuing up if the visitor holds down the left or right keys.
			
			bookmark = element;
			
			try {
				bookmark.blur(); // Remove the focus from the calling element.
			}catch (e) {}
			
			$.event.trigger(event_open);
			if (settings.onOpen) {
				settings.onOpen.call(element);
			}
			
			// +settings.opacity avoids a problem in IE when using non-zero-prefixed-string-values, like '.5'
			$overlay.css({"opacity": +settings.opacity, "cursor": settings.overlayClose ? "pointer" : "auto"}).show();
			
			// Opens inital empty ColorBox prior to content being loaded.
			settings.w = setSize(settings.initialWidth, 'x');
			settings.h = setSize(settings.initialHeight, 'y');
			publicMethod.position(0);
			
			if (isIE6) {
				$window.bind('resize.' + event_ie6 + ' scroll.' + event_ie6, function () {
					$overlay.css({width: $window.width(), height: $window.height(), top: $window.scrollTop(), left: $window.scrollLeft()});
				}).trigger('scroll.' + event_ie6);
			}
		}
		
		$current.add($prev).add($next).add($slideshow).add($title).hide();
		
		$close.html(settings.close).show();
		
		publicMethod.slideshow();
		
		publicMethod.load();
	}

	// ****************
	// PUBLIC FUNCTIONS
	// Usage format: $.fn.colorbox.close();
	// Usage from within an iframe: parent.$.fn.colorbox.close();
	// ****************
	
	publicMethod = $.fn[colorbox] = $[colorbox] = function (options, callback) {
		var $this = this;
		
		if (!$this[0] && $this.selector) { // if a selector was given and it didn't match any elements, go ahead and exit.
			return $this;
		}
		
		options = options || {};
		
		if (callback) {
			options.onComplete = callback;
		}
		
		if (!$this[0] || $this.selector === undefined) { // detects $.colorbox() and $.fn.colorbox()
			$this = $('<a/>');
			options.open = true; // assume an immediate open
		}
		
		$this.each(function () {
			$(this).data(colorbox, $.extend({}, $(this).data(colorbox) || defaults, options)).addClass(boxElement);
		});
		
		if (options.open) {
			launch($this[0]);
		}
		
		return $this;
	};

	// Initialize ColorBox: store common calculations, preload the interface graphics, append the html.
	// This preps colorbox for a speedy open when clicked, and lightens the burdon on the browser by only
	// having to run once, instead of each time colorbox is opened.
	publicMethod.init = function () {
		// Create & Append jQuery Objects
		$window = $(window);
		$box = $div().attr({id: colorbox, 'class': isIE ? prefix + 'IE' : ''});
		$overlay = $div("Overlay", isIE6 ? 'position:absolute' : '').hide();
		
		$wrap = $div("Wrapper");
		$content = $div("Content").append(
			$loaded = $div("LoadedContent", 'width:0; height:0'),
			$loadingOverlay = $div("LoadingOverlay").add($div("LoadingGraphic")),
			$title = $div("Title"),
			$current = $div("Current"),
			$next = $div("Next"),
			$prev = $div("Previous"),
			$slideshow = $div("Slideshow"),
			$close = $div("Close")
		);
		$wrap.append( // The 3x3 Grid that makes up ColorBox
			$div().append(
				$div("TopLeft"),
				$topBorder = $div("TopCenter"),
				$div("TopRight")
			),
			$div().append(
				$leftBorder = $div("MiddleLeft"),
				$content,
				$rightBorder = $div("MiddleRight")
			),
			$div().append(
				$div("BottomLeft"),
				$bottomBorder = $div("BottomCenter"),
				$div("BottomRight")
			)
		).children().children().css({'float': 'left'});
		
		$loadingBay = $div(false, 'position:absolute; width:9999px; visibility:hidden; display:none');
		
		$('body').prepend($overlay, $box.append($wrap, $loadingBay));
		
		$content.children()
		.hover(function () {
			$(this).addClass('hover');
		}, function () {
			$(this).removeClass('hover');
		}).addClass('hover');
		
		// Cache values needed for size calculations
		interfaceHeight = $topBorder.height() + $bottomBorder.height() + $content.outerHeight(true) - $content.height();//Subtraction needed for IE6
		interfaceWidth = $leftBorder.width() + $rightBorder.width() + $content.outerWidth(true) - $content.width();
		loadedHeight = $loaded.outerHeight(true);
		loadedWidth = $loaded.outerWidth(true);
		
		// Setting padding to remove the need to do size conversions during the animation step.
		$box.css({"padding-bottom": interfaceHeight, "padding-right": interfaceWidth}).hide();
		
		// Setup button events.
		$next.click(publicMethod.next);
		$prev.click(publicMethod.prev);
		$close.click(publicMethod.close);
		
		// Adding the 'hover' class allowed the browser to load the hover-state
		// background graphics.  The class can now can be removed.
		$content.children().removeClass('hover');
		
		$('.' + boxElement).live('click', function (e) {
			// checks to see if it was a non-left mouse-click and for clicks modified with ctrl, shift, or alt.
			if ((e.button !== 0 && typeof e.button !== 'undefined') || e.ctrlKey || e.shiftKey || e.altKey) {
				return true;
			} else {
				launch(this);			
				return false;
			}
		});
		
		$overlay.click(function () {
			if (settings.overlayClose) {
				publicMethod.close();
			}
		});
		
		// Set Navigation Key Bindings
		$(document).bind("keydown", function (e) {
			if (open && settings.escKey && e.keyCode === 27) {
				e.preventDefault();
				publicMethod.close();
			}
			if (open && settings.arrowKey && !active && $related[1]) {
				if (e.keyCode === 37 && (index || settings.loop)) {
					e.preventDefault();
					$prev.click();
				} else if (e.keyCode === 39 && (index < $related.length - 1 || settings.loop)) {
					e.preventDefault();
					$next.click();
				}
			}
		});
	};
	
	publicMethod.remove = function () {
		$box.add($overlay).remove();
		$('.' + boxElement).die('click').removeData(colorbox).removeClass(boxElement);
	};

	publicMethod.position = function (speed, loadedCallback) {
		var
		animate_speed,
		// keeps the top and left positions within the browser's viewport.
		posTop = Math.max($window.height() - settings.h - loadedHeight - interfaceHeight, 0) / 2 + $window.scrollTop(),
		posLeft = Math.max($window.width() - settings.w - loadedWidth - interfaceWidth, 0) / 2 + $window.scrollLeft();
		
		// setting the speed to 0 to reduce the delay between same-sized content.
		animate_speed = ($box.width() === settings.w + loadedWidth && $box.height() === settings.h + loadedHeight) ? 0 : speed;
		
		// this gives the wrapper plenty of breathing room so it's floated contents can move around smoothly,
		// but it has to be shrank down around the size of div#colorbox when it's done.  If not,
		// it can invoke an obscure IE bug when using iframes.
		$wrap[0].style.width = $wrap[0].style.height = "9999px";
		
		function modalDimensions(that) {
			// loading overlay height has to be explicitly set for IE6.
			$topBorder[0].style.width = $bottomBorder[0].style.width = $content[0].style.width = that.style.width;
			$loadingOverlay[0].style.height = $loadingOverlay[1].style.height = $content[0].style.height = $leftBorder[0].style.height = $rightBorder[0].style.height = that.style.height;
		}
		
		$box.dequeue().animate({width: settings.w + loadedWidth, height: settings.h + loadedHeight, top: posTop, left: posLeft}, {
			duration: animate_speed,
			complete: function () {
				modalDimensions(this);
				
				active = false;
				
				// shrink the wrapper down to exactly the size of colorbox to avoid a bug in IE's iframe implementation.
				$wrap[0].style.width = (settings.w + loadedWidth + interfaceWidth) + "px";
				$wrap[0].style.height = (settings.h + loadedHeight + interfaceHeight) + "px";
				
				if (loadedCallback) {
					loadedCallback();
				}
			},
			step: function () {
				modalDimensions(this);
			}
		});
	};

	publicMethod.resize = function (options) {
		if (open) {
			options = options || {};
			
			if (options.width) {
				settings.w = setSize(options.width, 'x') - loadedWidth - interfaceWidth;
			}
			if (options.innerWidth) {
				settings.w = setSize(options.innerWidth, 'x');
			}
			$loaded.css({width: settings.w});
			
			if (options.height) {
				settings.h = setSize(options.height, 'y') - loadedHeight - interfaceHeight;
			}
			if (options.innerHeight) {
				settings.h = setSize(options.innerHeight, 'y');
			}
			if (!options.innerHeight && !options.height) {				
				var $child = $loaded.wrapInner("<div style='overflow:auto'></div>").children(); // temporary wrapper to get an accurate estimate of just how high the total content should be.
				settings.h = $child.height();
				$child.replaceWith($child.children()); // ditch the temporary wrapper div used in height calculation
			}
			$loaded.css({height: settings.h});
			
			publicMethod.position(settings.transition === "none" ? 0 : settings.speed);
		}
	};

	publicMethod.prep = function (object) {
		if (!open) {
			return;
		}
		
		var photo,
		speed = settings.transition === "none" ? 0 : settings.speed;
		
		$window.unbind('resize.' + prefix);
		$loaded.remove();
		$loaded = $div('LoadedContent').html(object);
		
		function getWidth() {
			settings.w = settings.w || $loaded.width();
			settings.w = settings.mw && settings.mw < settings.w ? settings.mw : settings.w;
			return settings.w;
		}
		function getHeight() {
			settings.h = settings.h || $loaded.height();
			settings.h = settings.mh && settings.mh < settings.h ? settings.mh : settings.h;
			return settings.h;
		}
		
		$loaded.hide()
		.appendTo($loadingBay.show())// content has to be appended to the DOM for accurate size calculations.
		.css({width: getWidth(), overflow: settings.scrolling ? 'auto' : 'hidden'})
		.css({height: getHeight()})// sets the height independently from the width in case the new width influences the value of height.
		.prependTo($content);
		
		$loadingBay.hide();
		
		$('#' + prefix + 'Photo').css({cssFloat: 'none'});// floating the IMG removes the bottom line-height and fixed a problem where IE miscalculates the width of the parent element as 100% of the document width.
		
		// Hides SELECT elements in IE6 because they would otherwise sit on top of the overlay.
		if (isIE6) {
			$('select').not($box.find('select')).filter(function () {
				return this.style.visibility !== 'hidden';
			}).css({'visibility': 'hidden'}).one(event_cleanup, function () {
				this.style.visibility = 'inherit';
			});
		}
				
		function setPosition(s) {
			var prev, prevSrc, next, nextSrc, total = $related.length, loop = settings.loop;
			publicMethod.position(s, function () {
				function defilter() {
					if (isIE) {
						//IE adds a filter when ColorBox fades in and out that can cause problems if the loaded content contains transparent pngs.
						$box[0].style.removeAttribute("filter");
					}
				}
				
				if (!open) {
					return;
				}
				
				if (isIE) {
					//This fadeIn helps the bicubic resampling to kick-in.
					if (photo) {
						$loaded.fadeIn(100);
					}
				}
				
				//Waited until the iframe is added to the DOM & it is visible before setting the src.
				//This increases compatability with pages using DOM dependent JavaScript.
				if (settings.iframe) {
					$("<iframe frameborder=0" + (settings.scrolling ? "" : " scrolling='no'") + (isIE ? " allowtransparency='true'" : '') + "/>")
					.attr({src: settings.href, name: new Date().getTime()})
					.appendTo($loaded);
				}
				
				$loaded.show();
				
				$title.show().html(settings.title);
				
				if (total > 1) { // handle grouping
					$current.html(settings.current.replace(/\{current\}/, index + 1).replace(/\{total\}/, total)).show();
					
					$next[(loop || index < total - 1) ? "show" : "hide"]().html(settings.next);
					$prev[(loop || index) ? "show" : "hide"]().html(settings.previous);
					
					prev = index ? $related[index - 1] : $related[total - 1];
					next = index < total - 1 ? $related[index + 1] : $related[0];
					
					if (settings.slideshow) {
						$slideshow.show();
						if (index === total - 1 && !loop && $box.is('.' + prefix + 'Slideshow_on')) {
							$slideshow.click();
						}
					}
					
					// Preloads images within a rel group
					if (settings.preloading) {
						nextSrc = $(next).data(colorbox).href || next.href;
						prevSrc = $(prev).data(colorbox).href || prev.href;
						
						if (isImage(nextSrc)) {
							$('<img/>')[0].src = nextSrc;
						}
						
						if (isImage(prevSrc)) {
							$('<img/>')[0].src = prevSrc;
						}
					}
				}
				
				$loadingOverlay.hide();
				
				if (settings.transition === 'fade') {
					$box.fadeTo(speed, 1, function () {
						defilter();
					});
				} else {
					defilter();
				}
				
				$window.bind('resize.' + prefix, function () {
					publicMethod.position(0);
				});
				
				$.event.trigger(event_complete);
				if (settings.onComplete) {
					settings.onComplete.call(element);
				}
			});
		}
		
		if (settings.transition === 'fade') {
			$box.fadeTo(speed, 0, function () {
				setPosition(0);
			});
		} else {
			setPosition(speed);
		}
	};

	publicMethod.load = function () {
		var href, img, setResize, prep = publicMethod.prep;
		
		active = true;
		
		element = $related[index];
		
		settings = $.extend({}, $(element).data(colorbox));
		
		//convert functions to static values
		process();
		
		$.event.trigger(event_load);
		if (settings.onLoad) {
			settings.onLoad.call(element);
		}
		
		settings.h = settings.height ?
				setSize(settings.height, 'y') - loadedHeight - interfaceHeight :
				settings.innerHeight && setSize(settings.innerHeight, 'y');
		
		settings.w = settings.width ?
				setSize(settings.width, 'x') - loadedWidth - interfaceWidth :
				settings.innerWidth && setSize(settings.innerWidth, 'x');
		
		// Sets the minimum dimensions for use in image scaling
		settings.mw = settings.w;
		settings.mh = settings.h;
		
		// Re-evaluate the minimum width and height based on maxWidth and maxHeight values.
		// If the width or height exceed the maxWidth or maxHeight, use the maximum values instead.
		if (settings.maxWidth) {
			settings.mw = setSize(settings.maxWidth, 'x') - loadedWidth - interfaceWidth;
			settings.mw = settings.w && settings.w < settings.mw ? settings.w : settings.mw;
		}
		if (settings.maxHeight) {
			settings.mh = setSize(settings.maxHeight, 'y') - loadedHeight - interfaceHeight;
			settings.mh = settings.h && settings.h < settings.mh ? settings.h : settings.mh;
		}
		
		href = settings.href;
		
		$loadingOverlay.show();
		
		if (settings.inline) {
			// Inserts an empty placeholder where inline content is being pulled from.
			// An event is bound to put inline content back when ColorBox closes or loads new content.
			$div('InlineTemp').hide().insertBefore($(href)[0]).bind(event_load + ' ' + event_cleanup, function () {
				$(this).replaceWith($loaded.children());
			});
			prep($(href));
		} else if (settings.iframe) {
			// IFrame element won't be added to the DOM until it is ready to be displayed,
			// to avoid problems with DOM-ready JS that might be trying to run in that iframe.
			prep(" ");
		} else if (settings.html) {
			prep(settings.html);
		} else if (isImage(href)) {
			img = new Image();
			img.onload = function () {
				var percent;
				
				img.onload = null;
				img.id = prefix + 'Photo';
				$(img).css({margin: 'auto', border: 'none', display: 'block', cssFloat: 'left'});
				
				if (settings.scalePhotos) {
					setResize = function () {
						img.height -= img.height * percent;
						img.width -= img.width * percent;	
					};
					if (settings.mw && img.width > settings.mw) {
						percent = (img.width - settings.mw) / img.width;
						setResize();
					}
					if (settings.mh && img.height > settings.mh) {
						percent = (img.height - settings.mh) / img.height;
						setResize();
					}
				}
				
				if (settings.h) {
					img.style.marginTop = Math.max(settings.h - img.height, 0) / 2 + 'px';
				}
				
				setTimeout(function () { // Chrome will sometimes report a 0 by 0 size if there isn't pause in execution
					prep(img);
				}, 1);
				
				if ($related[1] && (index < $related.length - 1 || settings.loop)) {
					$(img).css({cursor: 'pointer'}).click(publicMethod.next);
				}
				
				if (isIE) {
					img.style.msInterpolationMode = 'bicubic';
				}
			};
			img.src = href;
		} else {
			$div().appendTo($loadingBay).load(href, function (data, status, xhr) {
				prep(status === 'error' ? 'Request unsuccessful: ' + xhr.statusText : this);
			});
		}
	};

	// Navigates to the next page/image in a set.
	publicMethod.next = function () {
		if (!active) {
			index = index < $related.length - 1 ? index + 1 : 0;
			publicMethod.load();
		}
	};
	
	publicMethod.prev = function () {
		if (!active) {
			index = index ? index - 1 : $related.length - 1;
			publicMethod.load();
		}
	};
	
	publicMethod.getSetting = function (setting) {
		if (setting in settings)
			return settings[setting];
		else
			return "";
	};
	
	publicMethod.setSetting = function (setting, value) {
		if (setting in settings)
			return settings[setting] = value;
	};

	publicMethod.slideshow = function () {
		var stop, timeOut, className = prefix + 'Slideshow_';
		
		$slideshow.bind(event_closed, function () {
			$slideshow.unbind();
			clearTimeout(timeOut);
			$box.removeClass(className + "off " + className + "on");
		});
		
		function start() {
			$slideshow
			.text(settings.slideshowStop)
			.bind(event_complete, function () {
				timeOut = setTimeout(publicMethod.next, settings.slideshowSpeed);
			})
			.bind(event_load, function () {
				clearTimeout(timeOut);	
			}).one("click", function () {
				stop();
			});
			$box.removeClass(className + "off").addClass(className + "on");
		}
		
		stop = function () {
			clearTimeout(timeOut);
			$slideshow
			.text(settings.slideshowStart)
			.unbind(event_complete + ' ' + event_load)
			.one("click", function () {
				start();
				timeOut = setTimeout(publicMethod.next, settings.slideshowSpeed);
			});
			$box.removeClass(className + "on").addClass(className + "off");
		};
		
		if (settings.slideshow && $related[1]) {
			if (settings.slideshowAuto) {
				start();
			} else {
				stop();
			}
		}
	};

	// Note: to use this within an iframe use the following format: parent.$.fn.colorbox.close();
	publicMethod.close = function () {
		if (open) {
			open = false;

			
			$.event.trigger(event_cleanup);
			
			if (settings.onCleanup) {
				settings.onCleanup.call(element);
			}
			
			$window.unbind('.' + prefix + ' .' + event_ie6);
			
			$overlay.fadeTo('fast', 0);
			
			$box.stop().fadeTo('fast', 0, function () {
				$box.find('iframe').attr('src', 'about:blank'); // change the location of the iframe to avoid a problem in IE with flash objects not clearing.
				
				$loaded.remove();
				
				$box.add($overlay).css({'opacity': 1, cursor: 'auto'}).hide();
				
				try {
					bookmark.focus();
				} catch (e) {
					// do nothing
				}
				
				setTimeout(function () {
					$.event.trigger(event_closed);
					if (settings.onClosed) {
						settings.onClosed.call(element);
					}
				}, 1);
			});
		}
	};

	// A method for fetching the current element ColorBox is referencing.
	// returns a jQuery object.
	publicMethod.element = function () {
		return $(element);
	};

	publicMethod.settings = defaults;

	// Initializes ColorBox when the DOM has loaded
	$(publicMethod.init);

}(jQuery, this));


