﻿/*!
 * query.yoxview v0.9
 * 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: 17th Fabruary, 2010
 * Version : 0.9
 */ 
(function(s){var w=false,H;s.fn.yoxview=function(I){if(this.length==0)return this;this.loadLanguage=function(m,J){var t=this;languagePacks[m]==undefined?s.getJSON(yoxviewPath+"lang/"+m+".js",function(K){languagePacks[m]=K;J(t,K)}):J(t,data)};var x=s.extend({backgroundColor:"#000",backgroundOpacity:0.8,playDelay:3E3,popupMargin:20,infoBackOpacity:0.5,infoBackColor:"Black",imagesFolder:yoxviewPath+"images/",cacheImagesInBackground:true,displayImageTitleByDefault:true,titleDisplayDuration:2E3,titlePadding:6, buttonsFadeTime:500,loopPlay:true,isRTL:false,lang:"en"},I);if(w)this.loadLanguage(x.lang,function(m){H.AddViews(m,x)});else{w=true;this.loadLanguage(x.lang,function(m){H=new YoxView(m,x)})}return this}})(jQuery);function ImageDimensions(s,w){this.Width=s;this.Height=w}var languagePacks=[]; function YoxView(s,w){function H(){f.remove();r=n=L=y=f=undefined;B=k=0;S()}function I(a){a=$(a).data("Data");if(da!=a.viewindex){C=a.images;i=C.length;da=a.viewIndex;T=new Array(i);var b=false;if(a.options!=undefined&&c!=a.options){c=a.options;b=true}else if(a.options==undefined&&c!=U){c=U;b=true}else if(y!=undefined&&i==1||f!=undefined&&y==undefined&&i>0)b=true;b&&H()}}function x(a,b,e){a=$(a);var h=a.find("a > img");a.data("Data",{viewIndex:b,images:h});if(e!=c)a.data("Data").options=e;var g=0; jQuery.each(h,function(){var ea=$(this).parent();ea.data("Data",{viewIndex:b,imageIndex:g});ea.click(function(){var fa=$(this).data("Data");d.openGallery(fa.viewIndex,fa.imageIndex);return false});g++})}function m(a){u=$(C[k]);a&&n!=undefined&&n.attr("src",u.attr("src"));z=u.parent();V=u.offset();j={width:u.width(),height:u.height(),top:V.top-$(window).scrollTop(),left:V.left}}function J(a){a.css("opacity")==0&&a.stop().animate({opacity:0},c.buttonsFadeTime,K(a))}function t(a){a.stop().animate({opacity:0.6}, c.buttonsFadeTime).oneTime(1E3,function(){$(this).stop().animate({opacity:0},c.buttonsFadeTime)})}function K(a){$(a).stop().animate({opacity:0.5},c.buttonsFadeTime)}function ma(a){evt=a?a:window.event;return pK=a?a.keyCode:window.event.keyCode}function na(a){if(d!=undefined&&d.isOpen){a=ma(a);if(a==39)return d.clickBtn(c.isRTL?d.prev:d.next,true);else if(a==37)return d.clickBtn(c.isRTL?d.next:d.prev,true);else if(a==32)return d.clickBtn(d.next,true);else if(a==27)return d.clickBtn(d.close,true);else if(a== 13){d.play();return false}else if(a==36)return d.clickBtn(d.first,true);else if(a==35)return d.clickBtn(d.last,true);else if(a==72)return d.clickBtn(d.help,false)}return true}function W(a,b,e,h){var g=$("<a>",{href:"#",click:function(){return d.clickBtn(e,h)}});$("<span>"+b+"</span>").css("opacity","0").appendTo(g);g.append(ga(a,b,"18","16")).hover(function(){$(this).stop().animate({top:"8px"},"fast").find("span").stop().animate({opacity:1},"fast")},function(){$(this).stop().animate({top:"0"},"fast").find("span").stop().animate({opacity:0}, "fast")});return g}function ha(a,b,e){var h=new Image;h.src=c.imagesFolder+b+".png";e=$("<a>",{css:{background:"url("+h.src+") no-repeat "+b+" center",opacity:"0",outline:"0"},className:"yoxview_ctlBtn",title:e,href:"#",click:function(){this.blur();return d.clickBtn(a,true)}});e.css(b,"0");return e}function S(){l=languagePacks[c.lang];m(true);z.blur();f=$("<div>",{id:"yoxview",css:{width:j.width+"px",height:j.height+"px",top:j.top+"px",left:j.left+"px"}});f.appendTo("body");n=$("<img />",{src:u.attr("src"), className:"yoxview_fadeImg",css:{"z-index":"2"}});f.append(n[0]);r=$("<img />",{className:"yoxview_fadeImg",css:{display:"none","z-index":"1"}});f.append(r[0]);var a=$("<div>",{id:"yoxview_popupMenuPanel",className:"yoxview_popupBarPanel yoxview_top",css:{opacity:"0"}}),b=$("<div>",{id:"yoxview_popupMenu",className:"yoxview_popupBar",css:{opacity:"0.8"}});(new Image).src=c.imagesFolder+"menu_back.png";b.append(W("close.png",l.Close,d.close,true)).append(W("help.png",l.Help,d.help,false));var e=W("play.png", l.Slideshow,d.play,false);if(i>1){y=ha(d.prev,c.isRTL?"right":"left",l.PrevImage);y.appendTo(f);L=ha(d.next,c.isRTL?"left":"right",l.NextImage);L.appendTo(f)}else e.css("opacity","0.2").unbind("click").click(function(){return false});b.append(e).find("a:last-child").attr("class","last");a.append(b).appendTo(f);M=$("<div>",{id:"yoxview_ajaxLoader",className:"yoxview_notification",css:{opacity:0}});M.append(ga("popup_ajax_loader.gif",l.Loading,"32","32")).appendTo(f);jQuery.each(["play","pause","first", "last"],function(){var h=$("<img />",{className:"yoxview_notification",alt:this,src:c.imagesFolder+"popup_"+this+".png",css:{opacity:0}});h.appendTo(f);D[this]=h});v=$("<div>",{id:"yoxview_helpPanel",href:"#",title:l.CloseHelp,css:{background:"url("+c.imagesFolder+"help_panel.png) no-repeat center top",direction:l.Direction,opacity:"0"},click:function(){return d.clickBtn(d.help,false)}});a=document.createElement("h1");a.innerHTML=l.Help.toUpperCase();b=document.createElement("p");b.innerHTML=l.HelpText; e=document.createElement("span");e.id="yoxview_closeHelp";e.innerHTML=l.CloseHelp;v.append(a).append(b).append(e).appendTo(f);p=$("<div>",{id:"yoxview_popupInfo",className:"yoxview_popupBarPanel yoxview_bottom"});X=$("<div>",{className:"yoxview_popupBar yoxview_bottom",css:{background:c.infoBackColor,opacity:c.infoBackOpacity,"z-index":"1",padding:c.titlePadding,"min-height":Y}});X.appendTo(p);N=$("<h1>",{className:"yoxview_popupBar",css:{"z-index":"2",bottom:c.titlePadding,opacity:"1"}});N.appendTo(p); Z=$("<span>",{css:{opacity:"1"}});Z.appendTo(p);f.append(p);a=$("<div>",{id:"yoxview_popupWrap",css:{position:"fixed",top:"0",left:"0",width:"100%",display:"none","z-index":"100"}});f.wrap(a);$("<div>",{css:{position:"fixed",height:"100%",width:"100%",top:"0",left:"0",background:c.backgroundColor,"z-index":"1",opacity:c.backgroundOpacity},click:function(){return d.clickBtn(d.close,true)}}).appendTo(f.parent());f.find(".yoxview_ctlBtn").hover(function(){$(this).stop().animate({opacity:0.5},c.buttonsFadeTime)}, function(){$(this).stop().animate({opacity:0},c.buttonsFadeTime)});E=f.children(".yoxview_popupBarPanel");E.hover(function(){$(this).stop().animate({opacity:1},c.buttonsFadeTime)},function(){$(this).stop().animate({opacity:0},c.buttonsFadeTime)})}function F(a){if(T[a])a<i-1&&F(a+1);else{B=a;ia.src=$(C[a]).parent().attr("href")}}function ga(a,b,e,h){var g=document.createElement("img");$(g).attr({src:c.imagesFolder+a,alt:b,width:e,height:h});return g}function ja(a){o||M.stop().stopTime().oneTime(c.buttonsFadeTime, function(){$(this).animate({opacity:0.5},c.buttonsFadeTime)});z=$(C[a]).parent();aa.src=z.attr("href")}function ka(a,b,e,h){var g=new ImageDimensions(a,b);if(a>e){g.Height=Math.round(e/a*b);g.Width=e}if(g.Height>h){g.Width=Math.round(h/g.Height*g.Width);g.Height=h}return g}function ba(a,b,e,h,g){f.stop().animate({width:a,height:b,top:e,left:h},"slow",g)}function ca(){o=true;if(k<i-1)f.oneTime(c.playDelay,"play",function(){d.next()});else c.loopPlay?f.oneTime(c.playDelay,"play",function(){d.select(0, null)}):O()}function O(){f.stopTime("play");o=false}function la(){var a=$(window).width(),b=$(window).height();return{height:b,width:a,usableHeight:b-c.popupMargin*2,usableWidth:a-c.popupMargin*2}}var d=this,U=w,c=U,l={},P=[],da=0,C,i=0,f,k=0,z,u,V,j,Q=true,n,r,y,L,M,v,p,N,Y=28-2*c.titlePadding,X,Z,o=false,D=[],aa=new Image,ia=new Image,B=0,T,E,A=this.isOpen=false,G;this.AddViews=function(a,b){var e=G!=undefined;jQuery.each(a,function(){x(this,P.length,b);P[P.length]=this;if(G==undefined&&$(this).data("Data").images.length!= 0)G=this});if(!e&&G!=undefined){I(G);S();b.cacheImagesInBackground&&i!=0&&F(0);e=true}};this.openGallery=function(a,b){I(P[a]);f==undefined&&i!=0&&S();c.cacheImagesInBackground&&F(b);this.selectImage(b);f.parent().fadeIn("slow");return false};this.selectImage=function(a){k=a;m(true);z.blur();if(!Q){n.css({display:"block","z-index":"1",width:j.width+"px",height:j.height+"px"});r.css({display:"none","z-index":"2"});Q=true}f.css({width:j.width+"px",height:j.height+"px",top:j.top+"px",left:j.left+"px"}); this.select(a,null);this.isOpen=true};this.refresh=function(){var a=o;o&&O();ja(k);a&&ca()};this.select=function(a,b){if(!A){if(a<0)a=i-1;else if(a==i)a=0;!o&&b!=null&&J(b);k=a;ja(k)}};this.prev=function(){this.select(k-1,$(y));return false};this.next=function(){this.select(k+1,$(L));return false};this.first=function(){t(D.first);this.select(0,null);return false};this.last=function(){t(D.last);this.select(i-1,null);return false};this.play=function(){if(o){t(D.pause);O()}else{t(D.play);ca()}};this.close= function(){this.closeHelp();m(false);ba(j.width,j.height,j.top,j.left);f.parent().fadeOut(d.clear);E.css("display","none");A=this.isOpen=false};this.help=function(){v.css("display")=="none"?v.css("display","block").stop().animate({opacity:0.8},c.buttonsFadeTime):this.closeHelp()};this.closeHelp=function(){v.css("display")!="none"&&v.stop().animate({opacity:0},c.buttonsFadeTime,function(){v.css("display","none")})};this.clickBtn=function(a,b){b&&o&&O();a.call(this);return false};this.AddViews(s,c); document.onkeydown=na;window.onresize=function(){d.isOpen&&d.resize()};$(ia).load(function(){T[B]=true;B<i-1&&F(B+1)});this.clear=function(){n.attr("src","");r.attr("src","")};var q=n,R=r;this.resize=function(){var a=la(),b=q.data("Data").maxSize;b=ka(b.Width,b.Height,a.usableWidth,a.usableHeight);q.css({width:"100%",height:"100%"});var e=Math.round((a.height-b.Height)/2);a=Math.round((a.width-b.Width)/2);A=true;ba(b.Width,b.Height,e,a,function(){var h=f.width(),g=f.height();q.css({width:h+"px",height:g+ "px"});A=false})};$(aa).load(function(){if(this.width!=0){if(n.css("z-index")==1){q=n;R=r}else{q=r;R=n}q.data("Data",{maxSize:new ImageDimensions(this.width,this.height)});var a=la(),b=ka(this.width,this.height,a.usableWidth,a.usableHeight),e=z.find("img").attr("alt");N.html(e);i>1&&Z.html(k+1+"/"+i);q.attr({src:this.src,title:e}).css({width:b.Width+"px",height:b.Height+"px"});var h=Math.round((a.height-b.Height)/2);a=Math.round((a.width-b.Width)/2);o||M.stop().stopTime().animate({opacity:0},c.buttonsFadeTime); A=true;ba(b.Width,b.Height,h,a,function(){if(Q){E.css("display","block");f.children(".yoxview_ctlBtn").animate({opacity:0.5},1500).oneTime(1700,function(){$(this).animate({opacity:0},1500)});E.animate({opacity:1},1500).oneTime(1700,function(){$(this).animate({opacity:0},1500)});Q=false}A=false});q.css("z-index","2");R.css("z-index","1");q.fadeIn("slow",function(){R.css("display","none");if(e!=""){p.css({display:"block"});var g=N.height()-2*c.titlePadding;if(g<Y)g=Y;X.css("height",g);c.displayImageTitleByDefault&& p.stop().stopTime().animate({opacity:1},500,function(){$(this).oneTime(c.titleDisplayDuration,function(){$(this).stop().animate({opacity:0},500)})})}else p.css("display")!="none"&&p.fadeOut(c.buttonsFadeTime);if(i>1){k<i-1&&c.cacheImagesInBackground&&F(k+1);o&&ca()}});aa.src=""}})};
