/*THIS IS UNFINISHED SOFTWARE!!!!
Openbox 1.01 - jQuery Plugin
Copyright (c) 2008 David R. Casey http://studiocasey.com
@version 1.01
@requires jQuery v1.2.6, jquery.media.js v0.81 */
(function($){$.fn.openbox=function(options,callback){if(typeof(options)!='object'){callback=options;options={};};openbox.opts=$.extend({},$.fn.openbox.defaults,options||{});$(this).each(function(){var i=0;if(!this.rel){i=openbox.bundle.length;}else{for(i=0;i<openbox.bundle.length;i++){if(!openbox.bundle[i][0]||this.rel==openbox.bundle[i][0].collection)break;}};if(!openbox.bundle[i])openbox.bundle.push([]);openbox.bundle[i].push({'$this':this,'title':this.title||this.name||'','url':this.href||this.alt,'collection':this.rel||false,'caption':$(this).attr('caption')||'','author':$(this).attr('author')||'','params':$.extend(new cloneObj(openbox.opts.params),eval('('+$(this).attr('params')+')')||{})});imgPreloader=new Image();imgPreloader.src=openbox.opts.loadingAnimation;});$(this).click(function(){$.fn.openbox.showOpenbox(this);this.blur();return false;});$(callback);return this;};var openbox={opts:{},bundle:[],hasNext:false,hasPrev:false};function initMarkup(){if(typeof document.body.style.maxHeight==='undefined'){$('body','html').css({height:'100%',width:'100%'});$('html').css('overflow','hidden');if(document.getElementById('openbox_HideSelect')===null){$('body').append('<iframe id="openbox_HideSelect"></iframe><div id="openbox_overlay"></div>');$('#openbox_overlay').click(removeOpenbox);}}else{if(document.getElementById('openbox_overlay')===null){$('body').append('<div id="openbox_overlay"></div>');$('#openbox_overlay').click(removeOpenbox);}};if(detectMacXFF()){$('#openbox_overlay').addClass('openbox_overlayMacFFBGHack');};$('body').append(openbox.opts.skin);$('#openbox_loading img').attr('src',openbox.opts.loadingAnimation);$('#openbox_loading a').click(removeOpenbox);$('#openbox_ImageOff').click(removeOpenbox);$('#openbox_titlebar_close').click(removeOpenbox);if(openbox.opts.navigation)enableNavigation();};function showImage(obj){imgPreloader=new Image();imgPreloader.onload=function(){imgPreloader.onload=null;obj.params.width=imgPreloader.width;obj.params.height=imgPreloader.height;contentSize=resizeContents(obj,true);contentWidth=contentSize[0];contentHeight=contentSize[1];$('#openbox_contents').html('<a href="" id="openbox_ImageOff" title="Close"><img id="openbox_Image" src="'+obj.url+'" width="'+contentWidth+'" height="'+contentHeight+'" alt="'+obj.title+'"/></a>');if(contentSize[0]<$('#openbox_loading img').width()||contentSize[1]<$('#openbox_loading img').height())$('#openbox_loading img').hide();$.fn.openbox.postTransition(contentSize);};imgPreloader.src=obj.url;};function showMedia(obj){obj.params.src=obj.url;$('#openbox_contents').media(obj.params);if(obj.params.width<$('#openbox_loading img').width()||obj.params.height<$('#openbox_loading img').height())$('#openbox_loading').slideUp();$.fn.openbox.postTransition([obj.params.width,obj.params.height]);};function showPage(obj){contentSize=resizeContents(obj,obj.params.proportions);contentWidth=contentSize[0];contentHeight=contentSize[1];obj.params.src=obj.url;var o=$('<iframe'+' width="'+contentWidth+'" height="'+contentHeight+'" >');o.attr('src',obj.url);$('#openbox_contents').append(o);$.fn.openbox.postTransition([contentWidth+4,contentHeight+4],function(){$('#openbox_navigation').hide()});};function showOpenboxObject(i,j){$.fn.openbox.preTransition(function(){var obj=openbox.bundle[i][j];var googlePage;if(openbox.opts.navigation){$.fn.openbox.buildNavigation(i,j);$('#openbox_data_gallery_current').html(j+1);$('#openbox_data_gallery_total').html(openbox.bundle[i].length);googlePage='/'+openbox.bundle[i][0].collection;};$('#openbox_titlebar_title').html(obj.title);$('#openbox_data_caption').html(obj.caption);$('#openbox_data_author').html(obj.author);var uri=obj.url.split('/');googlePage+='/'+uri[uri.length-1];try{var pageTracker=_gat._getTracker("UA-7046665-4");pageTracker._trackPageview(googlePage);}catch(err){};switch(getFileType(obj.url)){case'image':showImage(obj);break;case'media':showMedia(obj);break;case'page':showPage(obj);break;default:alert('Filetype not recognized!\n'+obj.url);removeOpenbox();break;}});};function enableNavigation(){$('#openbox_prev').hover(function(){$(this).css({'background':openbox.opts.prevHover});},function(){$(this).css({'background':openbox.opts.prev});});$('#openbox_next').hover(function(){$(this).css({'background':openbox.opts.nextHover});},function(){$(this).css({'background':openbox.opts.next});});};function navigate(i,current,move){try{$('#openbox_contents embed').Stop();}catch(e){};var size=openbox.bundle[i].length;showOpenboxObject(i,((move+current)%size+size)%size);};function getFileType(url){var image=new RegExp("[^\.]\.("+openbox.opts.fileTypes.image.join('|')+")\s*$","i");if(image.test(url))return'image';if(url.indexOf('#')>-1&&(document.domain==getDomain(url)))return'inline';if(url.indexOf('?')>-1)url=url.substring(0,url.indexOf('?'));var type='unknown';var page=new RegExp("[^\.]\.("+openbox.opts.fileTypes.page.join('|')+")\s*$","i");var media=new RegExp("[^\.]\.("+openbox.opts.fileTypes.media.join('|')+")\s*$","i");if(document.domain!=getDomain(url))type='page';if(media.test(url))type='media';if(type=='page'||type=='media')return type;if(page.test(url)||url.substr((url.length-1),url.length)=='/')type='page';return type;};function getDomain(url){var leadSlashes=url.indexOf('//');var domainStart=leadSlashes+2;var withoutResource=url.substring(domainStart,url.length);var nextSlash=withoutResource.indexOf('/');var domain=withoutResource.substring(0,nextSlash);if(domain.indexOf(':')>-1){var portColon=domain.indexOf(':');domain=domain.substring(0,portColon);};return domain;};function resizeContents(obj,prop){var pagesize=getPageSize();var x=pagesize[0]-openbox.opts.bufferX;var y=pagesize[1]-openbox.opts.bufferY;var objWidth=obj.params.width;var objHeight=obj.params.height;if(objWidth>x){if(prop)objHeight=objHeight*(x/objWidth);objWidth=x;if(objHeight>y){if(prop)objWidth=objWidth*(y/objHeight);objHeight=y;}}else if(objHeight>y){if(prop)objWidth=objWidth*(y/objHeight);objHeight=y;if(objWidth>x){if(prop)objHeight=objHeight*(x/objWidth);objWidth=x;}};return[objWidth,objHeight];};function getPageSize(){var de=document.documentElement;var w=window.innerWidth||self.innerWidth||(de&&de.clientWidth)||document.body.clientWidth;var h=window.innerHeight||self.innerHeight||(de&&de.clientHeight)||document.body.clientHeight;arrayPageSize=[w,h];return arrayPageSize;};function removeOpenbox(){$('#openbox_imageOff').unbind('click');$('#openbox_titlebar_close').unbind('click');$('#openbox_window').fadeOut('fast',function(){$('#openbox_window,#openbox_overlay,#openbox_HideSelect').trigger('unload').unbind().remove();});$('#openbox_loading').remove();if(typeof document.body.style.maxHeight=='undefined'){$('body','html').css({height:'auto',width:'auto'});$('html').css('overflow','');};document.onkeydown='';document.onkeyup='';return false;};function detectMacXFF(){var userAgent=navigator.userAgent.toLowerCase();if(userAgent.indexOf('mac')!=-1&&userAgent.indexOf('firefox')!=-1){return true;}};function cloneObj(s){for(p in s) this[p]=(typeof(s[p])=='object')?new clone(s[p]):s[p];};$.fn.openbox.defaults={resize:true,navigation:true,loop:true,bufferX:150,bufferY:150,padding:10,next:'none',prev:'none',nextHover:'url(jquery/openbox.images/nextlabel.gif) right 15% no-repeat',prevHover:'url(jquery/openbox.images/prevlabel.gif) left 15% no-repeat',loadingAnimation:'jquery/openbox.images/ajax-loading.gif',skin:'<div id="openbox_window">'+'<div id="openbox_titlebar">'+'<span id="openbox_titlebar_title"></span>'+'<a href="#" id="openbox_titlebar_close" >close</a>'+'</div>'+'<div id="openbox_stage">'+'<div id="openbox_contents"></div>'+'<div id="openbox_loading"><img alt="loading" /><span>Loading or <a href="#">Cancel</a></span></div>'+'</div>'+'<div id="openbox_navigation">'+'<a id="openbox_prev" ><span id="openbox_prev_title"></span></a>'+'<a id="openbox_next" ><span id="openbox_next_title"></span></a>'+'<iframe name="openbox_navigation_shim" id="openbox_navigation_shim"></iframe>'+'</div>'+'<div id="openbox_data_slide" >'+'<div id="openbox_data_slide_inner" >'+'<div id="openbox_data_details" >'+'<div id="openbox_data_gallery_container" >'+'<span id="openbox_data_gallery_current"></span>'+'&nbsp;of&nbsp;'+'<span id="openbox_data_gallery_total"></span>'+'</div>'+'<div id="openbox_data_author_container" >'+'<span id="openbox_data_author"></span>'+'</div>'+'</div>'+'<div id="openbox_data_caption" ></div>'+'</div>'+'</div>'+'</div>',fileTypes:{page:['asp','aspx','cgi','cfm','htm','html','pl','php4','php3','php','php5','phtml','rhtml','shtml','txt','vbs','rb'],media:['aif','aiff','aac','au','eps','gsm','mov','mid','midi','mpg','mpeg','mp4','m4a','psd','qt','qtif','qif','qti','snd','tif','tiff','wav','3g2','3pg','flv','mp3','swf','asf','avi','wma','wmv','ra','ram','rm','rpm','rv','smi','smil','xaml','pdf'],image:['bmp','gif','jpg','png']},params:{autoplay:false,proportions:true,caption:false}};$.fn.openbox.clearOpenbox=function(){openbox.bundle=[];};$.fn.openbox.showOpenbox=function(obj){if(obj!=null){initMarkup();var found=false;for(var i=0;i<openbox.bundle.length;i++){if($(obj)[0].rel==openbox.bundle[i][0].collection){for(var j=0;j<openbox.bundle[i].length;j++){if($(obj)[0]==openbox.bundle[i][j].$this){found=true;break;}};if(found)break;}};showOpenboxObject(i,j);};return obj;};$.fn.openbox.preTransition=function(callback){$('#openbox_loading').show();$('#openbox_navigation').hide();$('#openbox_contents').hide();if($('#openbox_data_slide').css('display')=='block'){$('#openbox_data_slide').slideUp('fast');$('#openbox_titlebar').animate({marginTop:'1.7em'},'fast',function(){$(this).hide();return $(callback);});}else{return $(callback);}};$.fn.openbox.postTransition=function(contentSize,callback){w=contentSize[0];h=contentSize[1];$('#openbox_contents').css({width:w,height:h});$('#openbox_data_slide').css({width:w+openbox.opts.padding*2,marginTop:h+openbox.opts.padding*3+'px'});$('#openbox_titlebar').css({width:w+openbox.opts.padding*2});$('#openbox_navigation').css({width:w+openbox.opts.padding*2,height:h+openbox.opts.padding-20});$('#openbox_window').animate({marginLeft:-w/2-openbox.opts.padding+'px'},'normal').animate({marginTop:-h/2-50-openbox.opts.padding+'px'},'normal');$('#openbox_loading').animate({width:w-openbox.opts.padding*2+'px'},'normal').animate({height:h-openbox.opts.padding*3+'px'},'normal');$('#openbox_stage').animate({width:w+'px'},'normal').animate({height:h+'px'},'normal',function(){$('#openbox_titlebar').show().animate({marginTop:'0'},'normal');$('#openbox_data_slide').slideDown('normal',function(){$('#openbox_loading').fadeOut('slow');$('#openbox_contents').fadeIn('slow',function(){$('#openbox_navigation').show(function(){return $(callback);});});});});};$.fn.openbox.buildNavigation=function(i,j){var size=openbox.bundle[i].length;if(size>1&&openbox.opts.loop||j<size-1){openbox.hasNext=true;$('#openbox_next').show().unbind('click').click(function(){navigate(i,j,1)});}else{openbox.hasNext=false;$('#openbox_next').hide();};if(size>1&&openbox.opts.loop||0<j){openbox.hasPrev=true;$('#openbox_prev').show().unbind('click').click(function(){navigate(i,j,-1)});}else{openbox.hasPrev=false;$('#openbox_prev').hide();};$('#openbox_prev, #openbox_next').blur();document.onkeydown=function(e){if(e==null){keycode=event.keyCode;}else{keycode=e.which;};switch(keycode){case 27:removeOpenbox();break;case 190:case 78:case 39:if(openbox.hasNext){document.onkeydown='';navigate(i,j,1);}break;case 188:case 80:case 37:if(openbox.hasPrev){document.onkeydown='';navigate(i,j,-1);}break;}};}})(jQuery);
