﻿/*!
 * jquery.yoxview v1.2
 * jQuery image gallery viewer
 * http://yoxigen.com/yoxview
 * 
 * Copyright (c) 2010 Yossi Kolesnicov
 *
 * Licensed under the MIT license.
 * http://www.opensource.org/licenses/mit-license.php
 *
 * Date: 1st April, 2010
 * Version : 1.2
 */
var yoxviewApi; (function(j){var n=false,m;j.yoxviewUnload=function(){if(yoxviewApi!=undefined){yoxviewApi.unload();delete yoxviewApi}};j(window).unload(function(){j.yoxviewUnload()});j.fn.yoxviewUnload=function(){jQuery.each(this,function(t,u){j(u).find("a:has(img)").unbind("click.yoxview")});return this};j.fn.yoxview=function(t,u){if(this.length==0)return this;if(m==undefined)m=typeof _yoxviewPath!="undefined"?_yoxviewPath:getYoxviewPath();this.loadLanguage=function(l,q){var z=this;if(yoxviewLanguages[l]==undefined){yoxviewLanguages[l]= {};j.ajax({url:m+"lang/"+l+".js",async:false,dataType:"json",success:function(A){yoxviewLanguages[l]=A;z.loadDataSource(B.dataSource,q)}})}else z.loadDataSource(B.dataSource,q)};this.loadDataSource=function(l,q){var z=this;yoxviewDataSources[l]==undefined?j.ajax({url:C.dataFolder+l+".js",async:false,dataType:"script",success:function(A){eval(A);eval("yoxviewDataSources['"+l+"'] = new yoxview_"+l+"();");q(z)},error:function(A,ba,J){console.log(A,ba,J)}}):q(z)};var C=j.extend({backgroundColor:"#000", backgroundOpacity:0.8,playDelay:3E3,popupMargin:20,infoBackOpacity:0.5,infoBackColor:"Black",imagesFolder:m+"images/",dataFolder:m+"data/",langFolder:m+"lang/",cacheImagesInBackground:true,displayImageTitleByDefault:true,titleDisplayDuration:2E3,titlePadding:6,buttonsFadeTime:500,loopPlay:true,isRTL:false,lang:"en",titleAttribute:"title",autoPlay:false,showBarsOnOpen:true,showButtonsOnOpen:true,renderButtons:true,renderMenu:true},t),B=j.extend({images:null,dataSource:"thumbnails",dataSourceOptions:{}, onLoadBegin:null,onLoadComplete:null,onLoadError:null,onNoData:null},u);if(n)this.loadLanguage(C.lang,function(l){yoxviewApi.AddViews(l,C,B)});else{n=true;this.loadLanguage(C.lang,function(l){yoxviewApi=new YoxView(l,C,B)})}return this}})(jQuery);function ImageDimensions(j,n){this.Width=j;this.Height=n}var yoxviewLanguages=[],yoxviewDataSources=[]; function YoxView(j,n,m){function t(){if(h!=undefined){h.parent().remove();D=r=S=G=h=undefined;K=s=0}ca()}function u(a){a=d(a).data("yoxview");if(T==undefined||na!=a.viewIndex){E=a.images;k=E.length;na=a.viewIndex;T=new Array(k);var b=false;if(a.options!=undefined&&!da(c,a.options)){c=a.options;b=true}else if(a.options==undefined&&!da(c,ea)){c=ea;b=true}else if(G!=undefined&&k==1||h!=undefined&&G==undefined&&k>0)b=true;b&&t()}}function C(a,b,e,g){a=d(a);a.data("yoxview",{viewIndex:b});if(g.images!= null){g=g.images;H=d(a.find("a:has(img)")[0]);H.data("yoxview",{viewIndex:b}).bind("click.yoxview",function(){f.openGallery(d(this).data("yoxview").viewIndex);return false})}else g=yoxviewDataSources[g.dataSource].getImagesData(f,a,e,g);a.data("yoxview").images=g;if(e!=c)a.data("yoxview").options=e}function B(a){var b;if(v.thumbnailImg!=undefined){b=v.thumbnailImg;H=b.parent()}else b=H.children("img:first");if(b!=undefined){a&&r!=undefined&&r.attr("src",b.attr("src"));fa=b.offset();p={width:b.width(), height:b.height(),top:fa.top-d(window).scrollTop(),left:fa.left}}}function l(a){a.css("opacity")==0&&a.stop().animate({opacity:0},c.buttonsFadeTime,z(a))}function q(a){a.stop().animate({opacity:0.6},c.buttonsFadeTime).oneTime(1E3,function(){d(this).stop().animate({opacity:0},c.buttonsFadeTime)})}function z(a){d(a).stop().animate({opacity:0.5},c.buttonsFadeTime)}function A(a){evt=a?a:window.event;return pK=a?a.keyCode:window.event.keyCode}function ba(a){if(f!=undefined&&f.isOpen){a=A(a);if(a==39)return f.clickBtn(c.isRTL? f.prev:f.next,true);else if(a==37)return f.clickBtn(c.isRTL?f.next:f.prev,true);else if(a==32)return f.clickBtn(f.next,true);else if(a==27)return f.clickBtn(f.close,true);else if(a==13){f.play();return false}else if(a==36)return f.clickBtn(f.first,true);else if(a==35)return f.clickBtn(f.last,true);else if(a==72)return f.clickBtn(f.help,false)}return true}function J(a,b,e,g){var i=d("<a>",{href:"#",click:function(){return f.clickBtn(e,g)}});d("<span>"+b+"</span>").css("opacity","0").appendTo(i);i.append(oa(a, b,"18","16")).hover(function(){d(this).stop().animate({top:"8px"},"fast").find("span").stop().animate({opacity:1},"fast")},function(){d(this).stop().animate({top:"0"},"fast").find("span").stop().animate({opacity:0},"fast")});return i}function pa(a,b,e){var g=new Image;g.src=c.imagesFolder+b+".png";e=d("<a>",{css:{background:"url("+g.src+") no-repeat "+b+" center",opacity:"0",outline:"0"},className:"yoxview_ctlBtn",title:e,href:"#",click:function(){this.blur();return f.clickBtn(a,true)}});e.css(b, "0");return e}function ca(){o=yoxviewLanguages[c.lang];h=d("<div>",{id:"yoxview"});h.appendTo(L?c.container:d(parent.document.body));r=d("<img />",{className:"yoxview_fadeImg",css:{"z-index":"2"}});h.append(r[0]);D=d("<img />",{className:"yoxview_fadeImg",css:{display:"none","z-index":"1"}});h.append(D[0]);var a=k==1;if(c.renderMenu!==false){var b=d("<div>",{id:"yoxview_popupMenuPanel",className:"yoxview_popupBarPanel yoxview_top",css:{opacity:"0"}}),e=d("<div>",{id:"yoxview_popupMenu",className:"yoxview_popupBar", css:{opacity:"0.8"}});(new Image).src=c.imagesFolder+"menu_back.png";var g=J("help.png",o.Help,f.help,false),i=J("play.png",o.Slideshow,f.play,false);e.append(J("close.png",o.Close,f.close,true),g,i);if(a){i.css("display","none");g.css("display","none");e.css("background-position","95px 0")}e.find("a:last-child").attr("class","last");b.append(e).appendTo(h)}if(c.renderButtons!==false&&!a){G=pa(f.prev,c.isRTL?"right":"left",o.PrevImage);G.appendTo(h);S=pa(f.next,c.isRTL?"left":"right",o.NextImage); S.appendTo(h)}ga=h.find(".yoxview_ctlBtn");U=d("<div>",{id:"yoxview_ajaxLoader",className:"yoxview_notification",css:{opacity:0}});U.append(oa("popup_ajax_loader.gif",o.Loading,"32","32")).appendTo(h);jQuery.each(["play","pause","first","last"],function(){var V=d("<img />",{className:"yoxview_notification",alt:this,src:c.imagesFolder+"popup_"+this+".png",css:{opacity:0}});V.appendTo(h);M[this]=V});F=d("<div>",{id:"yoxview_helpPanel",href:"#",title:o.CloseHelp,css:{background:"url("+c.imagesFolder+ "help_panel.png) no-repeat center top",direction:o.Direction,opacity:"0"},click:function(){return f.clickBtn(f.help,false)}});a=document.createElement("h1");a.innerHTML=o.Help.toUpperCase();b=document.createElement("p");b.innerHTML=o.HelpText;e=document.createElement("span");e.id="yoxview_closeHelp";e.innerHTML=o.CloseHelp;F.append(a).append(b).append(e).appendTo(h);w=d("<div>",{id:"yoxview_popupInfo",className:"yoxview_popupBarPanel yoxview_bottom"});ha=d("<div>",{className:"yoxview_popupBar yoxview_bottom", css:{background:c.infoBackColor,opacity:c.infoBackOpacity,"z-index":"1",padding:c.titlePadding+"px 0","min-height":ia}});ha.appendTo(w);W=d("<h1>",{className:"yoxview_popupBar",css:{"z-index":"2",bottom:c.titlePadding,opacity:"1"}});W.appendTo(w);ja=d("<span>",{css:{opacity:"1"}});ja.appendTo(w);h.append(w);if(!L){a=d("<div>",{id:"yoxview_popupWrap",css:{position:"fixed",top:"0",left:"0",width:"100%",height:"100%",display:"none","z-index":"100"}});h.wrap(a);d("<div>",{css:{position:"fixed",height:"100%", width:"100%",top:"0",left:"0",background:c.backgroundColor,"z-index":"1",opacity:c.backgroundOpacity},click:function(){return f.clickBtn(f.close,true)}}).appendTo(h.parent())}c.buttonsFadeTime!=0&&ga.hover(function(){d(this).stop().animate({opacity:0.5},c.buttonsFadeTime)},function(){d(this).stop().animate({opacity:0},c.buttonsFadeTime)});N=h.children(".yoxview_popupBarPanel");N.hover(function(){d(this).stop().animate({opacity:1},c.buttonsFadeTime)},function(){d(this).stop().animate({opacity:0},c.buttonsFadeTime)})} function O(a){if(T[a])a<k-1&&O(a+1);else{K=a;qa.src=E[a].src}}function oa(a,b,e,g){var i=document.createElement("img");d(i).attr({src:c.imagesFolder+a,alt:b,width:e,height:g});return i}function wa(){ka=true;U.stop().stopTime().oneTime(c.buttonsFadeTime,function(){d(this).animate({opacity:0.5},c.buttonsFadeTime)})}function xa(){ka=false;U.stop().stopTime().animate({opacity:0},c.buttonsFadeTime)}function ra(){x||wa();if(c.images==null)H=v.thumbnailImg.parent();la.src=v.src}function sa(a,b,e,g){var i= new ImageDimensions(a,b);if(a>e){i.Height=Math.round(e/a*b);i.Width=e}if(i.Height>g){i.Width=Math.round(g/i.Height*i.Width);i.Height=g}return i}function ma(a,b,e,g,i){h.stop().animate({width:a,height:b,top:e,left:g},"slow",i)}function X(){if(k!=1){x=true;if(s<k-1)h.oneTime(c.playDelay,"play",function(){f.next()});else c.loopPlay?h.oneTime(c.playDelay,"play",function(){f.select(0,null)}):P()}}function P(){h.stopTime("play");x=false}function ta(){var a=L?c.container.width():d(parent.window).width(), b=L?c.container.height():d(parent.window).height();return{height:b,width:a,usableHeight:b-c.popupMargin*2,usableWidth:a-c.popupMargin*2}}function ua(){var a=W.outerHeight();if(a<ia)a=ia;ha.animate({height:a},"fast")}function da(a,b){function e(V){var va=0;for(var ya in V)ya!=null&&va++;return va}if(e(a)!=e(b))return false;for(var g in a){if(typeof a[g]!=typeof b[g])return false;if(typeof a[g]=="function"||typeof a[g]=="object"){var i=da(a[g],b[g]);if(!i)return i}else if(a[g]!=b[g])return false}return true} var f=this,ea=n,c=ea,o={},Y=[],na=0,E,k=0,h,s=0,v,H,fa,p,Z=true,r,D,G,S,U,F,w,W,ia=28-2*c.titlePadding,ha,N,ga,ja,L=c.container!=undefined,x=false,Q=false,M=[],la=new Image,qa=new Image,K=0,T,I=this.isOpen=false,R,ka=false,$,d=jQuery;this.AddViews=function(a,b,e){var g=R!=undefined;jQuery.each(a,function(){C(this,Y.length,b,e);Y.push(this);if(R==undefined){var i=d(this).data("yoxview").images;if(i&&i.length!=0)R=this}});if(!g&&R!=undefined){u(R);ca();b.cacheImagesInBackground&&k!=0&&O(0);g=true}}; this.SetImages=function(a){E=a;k=E.length};this.openGallery=function(a,b,e){if(typeof a=="function"){e=a;a=b=0}else if(typeof b=="function"){e=b;b=0}a=a||0;b=b||0;u(Y[a]);h==undefined&&k!=0&&ca();c.cacheImagesInBackground&&O(b);this.selectImage(b);L||h.parent().fadeIn("slow");if(e)$=e;return false};this.selectImage=function(a){v=E[a];B(true);H.blur();if(!Z){r.css({display:"block","z-index":"1",width:p.width+"px",height:p.height+"px"});D.css({display:"none","z-index":"2"});Z=true}h.css({width:p.width+ "px",height:p.height+"px",top:p.top+"px",left:p.left+"px"});this.select(a);this.isOpen=true};this.refresh=function(){(Q=x)&&P();ra(s);Q&&X()};this.select=function(a,b){if(!I){if(a<0)a=k-1;else if(a==k)a=0;!x&&b&&l(b);v=E[a];s=a;ra(s);c.onSelect&&c.onSelect(a)}};this.prev=function(){this.select(s-1,d(G));return false};this.next=function(){this.select(s+1,d(S));return false};this.first=function(){q(M.first);this.select(0);return false};this.last=function(){q(M.last);this.select(k-1);return false};this.play= function(){if(k!=1)if(x){q(M.pause);P()}else{q(M.play);X()}};this.close=function(){this.closeHelp();B(false);ma(p.width,p.height,p.top,p.left);h.parent().fadeOut(f.clear);N.css("display","none");c.onClose&&c.onClose();I=this.isOpen=false};this.help=function(){if(this.isOpen)F.css("display")=="none"?F.css("display","block").stop().animate({opacity:0.8},c.buttonsFadeTime):this.closeHelp()};this.closeHelp=function(){F.css("display")!="none"&&F.stop().animate({opacity:0},c.buttonsFadeTime,function(){F.css("display", "none")})};this.clickBtn=function(a,b){b&&x&&P();a.call(this);return false};this.AddViews(j,c,m);document.onkeydown=ba;window.onresize=function(){f.isOpen&&f.resize()};d(qa).load(function(){T[K]=true;K<k-1&&O(K+1)});var y=r,aa=D;this.resize=function(){if(x){Q=true;P()}var a=ta(),b=y.data("Data").maxSize;b=sa(b.Width,b.Height,a.usableWidth,a.usableHeight);y.css({width:"100%",height:"100%"});var e=Math.round((a.height-b.Height)/2);a=Math.round((a.width-b.Width)/2);I=true;ma(b.Width,b.Height,e,a,function(){var g= h.width(),i=h.height();y.css({width:g+"px",height:i+"px"});I=false;if(Q){X();Q=false}})};d(la).load(function(){if(this.width!=0){if(r.css("z-index")==1){y=r;aa=D}else{y=D;aa=r}y.data("Data",{maxSize:new ImageDimensions(this.width,this.height)});var a=ta(),b=sa(this.width,this.height,a.usableWidth,a.usableHeight);W.html(v.title);k>1&&ja.html(s+1+"/"+k);y.attr({src:this.src,title:v.title}).css({width:b.Width+"px",height:b.Height+"px"});var e=Math.round((a.height-b.Height)/2);a=Math.round((a.width-b.Width)/ 2);ka&&xa();I=true;ma(b.Width,b.Height,e,a,function(){if(Z){N.css("display","block");c.showButtonsOnOpen&&ga.animate({opacity:0.5},1500).oneTime(1700,function(){c.buttonsFadeTime!=0&&d(this).animate({opacity:0},1500)});c.showBarsOnOpen&&N.animate({opacity:1},1500).oneTime(1700,function(){d(this).animate({opacity:0},1500)});ua();c.autoPlay&&f.play();c.onOpen&&c.onOpen();if($){$();$=undefined}Z=false}I=false});y.css("z-index","2");aa.css("z-index","1");y.fadeIn("slow",function(){aa.css("display","none"); if(v.title!=""){w.css({display:"block"});ua();c.displayImageTitleByDefault&&w.stop().stopTime().animate({opacity:1},500,function(){d(this).oneTime(c.titleDisplayDuration,function(){d(this).stop().animate({opacity:0},500)})})}else w.css("display")!="none"&&w.fadeOut(c.buttonsFadeTime);if(k>1){s<k-1&&c.cacheImagesInBackground&&O(s+1);x&&X()}});la.src=""}});this.unload=function(){jQuery.each(Y,function(a,b){d(b).find("a:has(img)").unbind("click.yoxview")});if(h!=undefined){h.parent().remove();h=undefined}}} function createThumbnail(j,n,m,t,u){j=jQuery("<a>",{href:j});u&&j.data("yoxview",{viewIndex:u});n=jQuery("<img>",{src:t,alt:n,title:m}).appendTo(j);return j}function getYoxviewPath(){for(var j=document.getElementsByTagName("script"),n=/(.*yoxview\/).*/i,m=0;m<j.length;m++){var t=j[m].src;if(t.match(n))return t.match(n)[1]}return null};
