// Accessibility-Plugin for ColorBox-V1.3.15 -- Version 1.0.0 beta ; Copyright (c) 2011 Oliver Siemoneit - oliver.siemoneit@web.de ; Licensed under the MIT license: http://www.opensource.org/licenses/mit-license.php
(function(f){var w="colorbox",q="cbox",g=f.fn[w],l={focusFirstElement:false,trapFocus:true,forceInput:false,dialogLabel:"Lightbox",imageLabel:"lightbox content",imageOriginal:"original version",imageC2g:"grayscale version",imagePro:"protanopia version",imageDeu:"deuteranopia version",imageTri:"tritanopia version",suffixLongDescURI:"",printCss:""},t={},v,n=false,o,i=["C2g","Pro","Deu","Tri"],x,j,r,m,s,c,k,u,p,e;function d(A){if(A.keyCode===9){var z;A.preventDefault();if(A.shiftKey===true){if(o){z=j.getPreviousFocusableElement(o);if(z.length===0){z=j.getLastFocusableElement()}}else{z=j.getLastFocusableElement()}}else{if(o){z=j.getNextFocusableElement(o);if(z.length===0){z=j.getFirstFocusableElement()}}else{z=j.getFirstFocusableElement()}}z.focus();o=z}else{if(A.keyCode===27){if(v.escKey){A.preventDefault();g.close()}}else{if(A.keyCode===37){if(v.arrowKey){A.preventDefault();g.prev()}}else{if(A.keyCode===39){if(v.arrowKey){A.preventDefault();g.next()}}else{if(A.keyCode===13){if(o===j){o=undefined}}else{if(o===j){A.preventDefault();var y=j.getLastFocusableElement();y.focus();o=y}}}}}}}function a(y){if(y.keyCode===13){f(this).click()}}function b(){o=f(this)}function h(z){if(z.focusedBody){o=undefined}else{if(t.trapFocus){if(f.browser.msie){o=j}else{if(o){o.focus()}else{var y=j.getLastFocusableElement();y.focus();o=y}}}else{g.close()}}}f.fn[w].a11yInit=function(y){x=f(document);j=f("#"+w);s=f("#"+q+"Next");m=f("#"+q+"Previous");c=f("#"+q+"Current");p=f("#"+q+"Slideshow");e=f("#"+q+"Close");j.attr("aria-hidden","true")};f(f.fn[w].a11yInit);f.fn[w].a11ySetup=function(z){if(!n){f.extend(t,l,z);v=g.element().data(w);if(t.forceInput){x.removeAccessKeys()}j.focusleave(h);x.bind(q+"_loaded",f.fn[w].a11yPrepare);x.bind(q+"_cleanup",f.fn[w].a11yTeardown);if(t.trapFocus){x.removeEventHandlers("keypress keydown keyup");x.bind("keydown",d)}p.empty();if(c.css("display")==="none"){c.empty()}f.each([s,m,e],function(G,F){F.attr("title",F.html());if(F.css("display")!=="none"){F.attr("tabindex","0")}else{F.removeAttr("tabindex");F.empty()}});j.attr({role:"dialog","aria-hidden":"false","aria-labelledby":q+"TopCenter"});f("#"+q+"TopCenter").html('<a id="'+q+'DialogLabel">'+t.dialogLabel+"</a>");r=f("#"+q+"DialogLabel");f("#"+q+"LoadedContent").attr("aria-describedby",q+"Title "+q+"Current");s.attr("aria-controls",q+"LoadedContent");m.attr("aria-controls",q+"LoadedContent");f.each([s,m,c,p],function(G,F){if(F.css("display")==="none"){F.attr("aria-hidden","true")}else{F.attr("aria-hidden","false")}});if(t.printCss.length){f("<link>",{media:"print",rel:"stylesheet",href:t.printCss}).appendTo("head")}}if(v.slideshow){setTimeout(function(){g.close()},200)}var D=j.find("iframe");if(D.length){setTimeout(function(){g.close()},200);for(var A=0;A<D.length;A++){D.eq(A).bind("load",function(){setTimeout(function(){g.close()},200)})}}if(!t.printCss.length){g.element().after(j)}var B=f("#"+q+"Photo");B.attr("alt",t.imageLabel);var C=B.attr("src");if(C){var E=C.substring(0,C.lastIndexOf("."))+t.suffixLongDescURI+".html";f.ajax({url:E,type:"HEAD",success:function(){f("#"+q+"Title").append('<div class="hideme" id="'+q+'LongDesc"></div>');k=f("#"+q+"LongDesc");k.load(E,function(G,F,H){if(F==="error"){k.text("[Error retrieving image description: "+H.status+" "+H.statusText+"]")}})}})}if(C){f.each(i,function(F,G){var H=C.substring(0,C.lastIndexOf("."))+"_"+G+C.substring(C.lastIndexOf("."),C.length);f.ajax({url:H,type:"HEAD",success:function(){if(!u){p.after('<div style="display: block;" class="" id="'+q+'ImageControls"</div>');u=f("#"+q+"ImageControls");for(var I=0;I<i.length;I++){u.append('<div id="'+q+I+'"></div>')}}f("#"+q+F).append('<div aria-controls="'+q+'LoadedContent" tabindex="0" title="'+t["image"+G]+'" style="display: block;" class="" id="'+q+G+'">'+t["image"+G]+"</div>");f("#"+q+G).bind("click",function(){B.attr("src",H)});if(!f("#"+q+"Ori").length){u.append('<div aria-controls="'+q+'LoadedContent" tabindex="0" title="'+t.imageOriginal+'" style="display: block;" class="" id="'+q+'Ori">'+t.imageOriginal+"</div>");f("#"+q+"Ori").bind("click",function(){B.attr("src",C)})}f.fn[w].a11yUpdateFocusableElements()}})})}j.getFocusableElements().filter("div").bind("keydown",a);if(t.trapFocus){j.getFocusableElements().bind("click",b)}var y;if(t.focusFirstElement){y=j.getFirstFocusableElement()}else{y=j.getLastFocusableElement()}setTimeout(function(){y.focus();o=y},200);n=true};f.fn[w].a11yTeardown=function(){f.fn[w].a11yPrepare();if(t.printCss.length){f("link[href='"+t.printCss+"']").remove()}j.unbind("focusleave",h);x.unbind("keydown",d);x.unbind(q+"_loaded",f.fn[w].a11yPrepare);x.unbind(q+"_cleanup",f.fn[w].a11yTeardown);x.restoreEventHandlers("keypress keydown keyup");x.restoreAccessKeys();n=false;j.attr("aria-hidden","true")};f.fn[w].a11yPrepare=function(){if(j){j.getFocusableElements().unbind("keydown",a);j.getFocusableElements().unbind("click",b)}if(u){u.remove()}if(k){k.remove()}f([]).getFocusableElements();o=k=u=undefined};f.fn[w].a11yUpdateFocusableElements=function(){if(n){if(t.trapFocus){j.getFocusableElements("clearCache").unbind("click",b).bind("click",b)}j.getFocusableElements("clearCache").filter("div").unbind("keydown",a).bind("keydown",a)}};f.fn[w].a11yReturnFocus=function(z){var y=g.element(),A=y.attr("rel")||false;if(z===false){A?f("a[rel="+A+"]").unbind(q+"_closed"):y.unbind(q+"_closed")}else{if(z===true){y.one(q+"_closed",function(){try{this.focus()}catch(B){}})}}};f.fn[w].a11yDefaults=f[w].a11yDefaults=l})(jQuery);(function(e){function c(i,h){return i===h||(typeof(i.contains)!=="undefined"?i.contains(h):!!(i.compareDocumentPosition(h)&16))}function b(i){var j=e(this),h=j.data("focus.isFocused");i=e.event.fix(i||window.event);if(!h){j.data("focus.isFocused",true);i.type="focusenter";return e.event.handle.apply(this,[i])}}function g(i){var j=e(document).data("focus.watchedObject");i=e.event.fix(i||window.event);var h=i.target.nodeType===9||i.target.tagName.toLowerCase()=="body";if(!h&&!c(j.get(0),i.target)){j.data("focus.isFocused",false);i.type="focusleave";return e.event.handle.apply(j.get(0),[i])}}function f(h){var i=e(this);h=e.event.fix(h||window.event);window.setTimeout(function(){if(document.activeElement.tagName.toLowerCase()==="body"){h.type="focusleave";h.focusedBody=true;return e.event.handle.apply(i.get(0),[h])}if(!c(i.get(0),document.activeElement)){i.data("focus.isFocused",false);h.type="focusleave";return e.event.handle.apply(i.get(0),[h])}},0)}function a(j){var h=e(j),k=e(document);var i=h.data("focus.handlerReferences")||0;if(i===0){if(j.addEventListener){j.addEventListener("focus",b,true);document.addEventListener("focus",g,true);j.addEventListener("blur",f,true)}else{j.onfocusin=b;document.onfocusin=g;j.onfocusout=f}k.data("focus.watchedObject",h)}h.data("focus.handlerReferences",i+1);h.data("focus.isFocused",c(j,document.activeElement))}function d(j){var h=e(j),k=e(document);var i=h.data("focus.handlerReferences")||0;if(i===1){if(j.removeEventListener){j.removeEventListener("focus",b,true);document.removeEventListener("focus",g,true);j.removeEventListener("blur",f,true)}else{j.onfocusin=null;document.onfocusin=null;j.onfocusout=null}h.removeData("focus.handlerReferences");h.removeData("focus.isFocused");k.removeData("focus.watchedObject")}else{h.data("focus.handlerReferences",i-1)}}e.each(["focusenter","focusleave"],function(j,h){e.event.special[h]={setup:function(){a(this)},teardown:function(){d(this)}}});e.fn.extend({focusenter:function(h){return h?this.bind("focusenter",h):this.trigger("focusenter")},focusleave:function(h){return h?this.bind("focusleave",h):this.trigger("focusleave")}})})(jQuery);(function(a){a.fn.extend({removeAccessKeys:function(){a("[accesskey]",this).each(function(){var b=a(this);if(!b.data("accesskeyStore")){b.data("accesskeyStore",b.attr("accesskey"));b.attr("accesskey","")}});return this},restoreAccessKeys:function(){a("[accesskey]",this).each(function(){var b=a(this);if(b.data("accesskeyStore")){b.attr("accesskey",b.data("accesskeyStore"));b.removeData("accesskeyStore")}});return this}})})(jQuery);(function(a){a.fn.extend({removeEventHandlers:function(c){if(this.data("events")&&!this.data("eventStore")){this.data("eventStore",a.extend(true,[],this.data("events")));if(c){c=c.split(" ");for(var b=0;b<c.length;b++){this.unbind(c[b])}}else{this.unbind()}}return this},restoreEventHandlers:function(f){var d=this.data("eventStore");if(d){if(f){f=f.split(" ")}for(var e in d){if(f){for(var c=0;c<f.length;c++){if(e===f[c]){for(var b in d[e]){this.bind(e,d[e][b].handler)}}}}else{for(var e in d){for(var b in d[e]){this.bind(e,d[e][b].handler)}}}}this.removeData("eventStore")}return this}})})(jQuery);(function(b){function a(c){var d=c.find("a, button, input, textarea, select, iframe, area, command, [tabindex]").not("[disabled], :hidden");d=d.map(function(){var e=b(this);return e.css("visibility")==="hidden"||e.css("visibility")==="collapsed"?null:this});d=d.map(function(){var e=b(this);return e.attr("href")===undefined&&e.is("a")?null:this});d=d.map(function(){return parseInt(b(this).attr("tabindex"))<0?null:this});d=d.sort(function(f,e){var j=b(f),i=b(e),h=32768,g=h;if(parseInt(j.attr("tabindex"))>0){h=parseInt(j.attr("tabindex"));if(h>32767){h=32768}}if(parseInt(i.attr("tabindex"))>0){g=parseInt(i.attr("tabindex"));if(g>32767){g=32768}}return((h<g)?-1:((h>g)?1:0))});b(document).data("tabOrderCache",{$element:c,$tabOrder:d})}b.fn.extend({getFocusableElements:function(d){var e=b(document),c=e.data("tabOrderCache")||{$element:b([]),$tabOrder:[]};if(d==="clearCache"||this.get(0)!==c.$element.get(0)){a(this);c=e.data("tabOrderCache")}return c.$tabOrder},getFirstFocusableElement:function(d){var e=b(document),c=e.data("tabOrderCache")||{$element:b([]),$tabOrder:[]};if(d==="clearCache"||this.get(0)!==c.$element.get(0)){a(this);c=e.data("tabOrderCache")}if(c.$tabOrder.length===0){return b([])}return c.$tabOrder.eq(0)},getLastFocusableElement:function(d){var e=b(document),c=e.data("tabOrderCache")||{$element:b([]),$tabOrder:[]};if(d==="clearCache"||this.get(0)!==c.$element.get(0)){a(this);c=e.data("tabOrderCache")}if(c.$tabOrder.length===0){return b([])}return c.$tabOrder.eq(c.$tabOrder.length-1)},getNextFocusableElement:function(d){var f=b(document),c=f.data("tabOrderCache")||{$element:b([]),$tabOrder:[]};if(arguments[1]==="clearCache"||this.get(0)!==c.$element.get(0)){a(this);c=f.data("tabOrderCache")}var e=c.$tabOrder.index(arguments[0]);if(e<0){return b([])}return(e+1)<c.$tabOrder.length?c.$tabOrder.eq(e+1):b([])},getPreviousFocusableElement:function(d){var f=b(document),c=f.data("tabOrderCache")||{$element:b([]),$tabOrder:[]};if(arguments[1]==="clearCache"||this.get(0)!==c.$element.get(0)){a(this);c=f.data("tabOrderCache")}var e=c.$tabOrder.index(arguments[0]);if(e<0){return b([])}return(e-1)>-1?c.$tabOrder.eq(e-1):b([])}})})(jQuery);
