/*
 * ----------------------------------------------------------------------------
 * "THE BEER-WARE LICENSE" (Revision Base-10):
 * <phk@FreeBSD.ORG> inspired this file. As long as you retain this notice you
 * can do whatever you want with this source code, as long as you don't claim 
 * we wrote the modified version. If you think this source code is worth it,
 * you can buy us a beer or more in return. Base-10 Design & Development Inc.
 * ----------------------------------------------------------------------------
 */

(function($) {
   $.fn.basebox = function(settings) {        
        for (var i in settings) { $.fn.basebox.settings[i] = eval('settings.' + i); }        
        $.fn.basebox.usersettings=settings;
	return this.each(function() {
			var $this = $(this);                     
			$this.unbind('click').click(function() {                            
                            $.fn.basebox.show($this);
                            return false;                            
			});                       
		});
	};
        
   $.extend($.fn.basebox, {
       settings: {
          opacity: 0.7,
          width : '-1',
          basedir: 'basebox/',
          show_loading_image : '1'          
       }
   });   
   
   $.fn.basebox.show = function(obj){          
      $(document.body).append('<iframe frameborder="0" class="BB_overlay_helper" ></iframe><div class="BB_overlay">&nbsp</div>');      
      $(".BB_overlay_helper").css("height",$(document).height()+"px");      
      $(".BB_overlay").hide();
      $(".BB_overlay").css("opacity",$.fn.basebox.settings.opacity);
      $(".BB_overlay").css("height",$(document).height()+"px");
      
      $(".BB_overlay").fadeIn("fast",function(){
        var orig_url=obj.attr('href');
        var url=obj.attr('href').toLowerCase();
        var title='<div class="BB_title">'+obj.attr('title')+'</div>';        
        var content='';        
        if (url.match(/.jpeg$|.jpg$|.gif$|.png$/)){
           var group=obj.attr('rel');                        
            content='<img id="BB_content_image" src="'+orig_url+'"/>';
            var addcon=' ';
            if (group) {                             
                var len=0;
                $('[rel="'+group+'"]').each(function(){len++;});                
                addcon=$.fn.basebox.gen_links($('[rel="'+group+'"]').index(obj),group,len);                
            }                        
            $.fn.basebox.add_box(title,content,addcon,'image');             
        } else if ((url.match(/#/))||(url.match(/#/))){
            var t = obj.find(".box_content").html();
            $.fn.basebox.add_box(title,t,'');             
        } else {            
            $.get(url, function(content){ $.fn.basebox.add_box(title,content,''); });
        }           
      });      
   }
   
   $.fn.basebox.showurl = function(url,boxtitle,settings){
      for (var i in settings) { $.fn.basebox.settings[i] = eval('settings.' + i); }        
      $.fn.basebox.usersettings=settings;
      $(document.body).append('<iframe frameborder="0" class="BB_overlay_helper" ></iframe><div class="BB_overlay">&nbsp</div>');      
      $(".BB_overlay_helper").css("height",$(document).height()+"px");      
      $(".BB_overlay").hide();
      $(".BB_overlay").css("opacity",$.fn.basebox.settings.opacity);
      $(".BB_overlay").css("height",$(document).height()+"px");      
      $(".BB_overlay").fadeIn("fast",function(){         
        var orig_url=url;
        //var url=url.toLowerCase();        
        var title='<div class="BB_title">'+boxtitle+'</div>';        
        var content='';        
        $.get(url, function(content){            
            $.fn.basebox.add_box(title,content,'');
        });        
      });      
   }   
   
   $.fn.basebox.add_box = function(title,content,addcon,type){
      $(document.body).append('<div class="BB_box">'+title+'<img src="'+$.fn.basebox.settings.basedir+'close.gif" class="BB_close"/><div id="BB_box_content">'+content+'</div>'+addcon+'</div>');                             
      var wt= $("#boxwidth").attr("val");
      if (wt) $.fn.basebox.settings.width= wt;         
      
      $.fn.basebox.show_loading_img();
      if (type=='image'){           
          $.fn.basebox.show_box_image();
      } else {
          $.fn.basebox.show_box();
      }               
   }
   
   $.fn.basebox.gen_links = function(index,group,max){
       addcon='';
       if (index>0) addcon='<a class="BB_change" title="'+(index-1)+'/'+group+'/'+max+'" ><img border="0" src="'+$.fn.basebox.settings.basedir+'prev.gif" /></a>';                 
       if ((index+1)<max) addcon=addcon+'<a class="BB_change" title="'+(index+1)+'/'+group+'/'+max+'" ><img border="0" src="'+$.fn.basebox.settings.basedir+'next.gif" /></a>';
       return addcon;
   } 
   
   $.fn.basebox.img_change = function(self){        
        var values = self.attr('title').split("/");        
        var cur=parseInt(values[0]);
        var group=values[1];
        var len=parseInt(values[2]);        
        var current=$('[rel="'+group+'"]').eq(cur);        
        $(".BB_box").fadeOut("fast", function(){                              
            addcon=$.fn.basebox.gen_links(cur,group,len);
            var title='<div class="BB_title">'+current.attr('title')+'</div>';
            $(".BB_box").remove();            
            $.fn.basebox.add_box(title,'<img id="BB_content_image" src="'+current.attr('href')+'" />',addcon,'image');            
        });        
   }
   
   $.fn.basebox.load_url = function(self){        
        var values = self.attr('title').split("/");        
        var cur=parseInt(values[0]);
        var group=values[1];
        var len=parseInt(values[2]);        
        var current=$('[rel="'+group+'"]').eq(cur);        
        $(".BB_box").fadeOut("fast", function(){                              
            addcon=$.fn.basebox.gen_links(cur,group,len);
            var title='<div class="BB_title">'+self.attr('title')+'</div>';
            $(".BB_box").remove();
            url=self.attr('href');            
            $.get(url, function(content){ $.fn.basebox.add_box(title,content,''); });            
        });        
   }
     
   $.fn.basebox.show_loading_img = function(){      
      if ($.fn.basebox.settings.show_loading_image=='1'){
         $(document.body).append('<img id="BB_loading" src="'+$.fn.basebox.settings.basedir+'loading.gif"/>');      
         var load=$("#BB_loading");
         var pos=load.position();
         $.fn.basebox.position(load,pos);
         load.show();
       }    
   }
  
   $.fn.basebox.close = function(){
       $(".BB_box").fadeOut("fast",function(){$(".BB_overlay").fadeOut("normals",function(){
               $(".BB_box").remove();
               $(".BB_overlay").remove();
               $(".BB_overlay_helper").remove();               
               return false;
           });           
       });       
   }
   
   $.fn.basebox.position = function(element,p){      
       var w=element.width();       
       var h=element.height();       
       var t=p.top;
       var l=p.left;
       
       element.css("left",($(window).scrollLeft()+l)+"px");
       element.css("top", ($(window).scrollTop()+t)+"px");
       
       if ($.fn.basebox.settings.width != '-1') {          
           if (element.attr('id')!='BB_loading') w=$.fn.basebox.settings.width;
       }
       element.css("width",w+"px");      
       element.css("height",h+"px");
       element.css("margin-left",-(w/2)+"px");
       if ((h/2) < ($(window).scrollTop()+t)){
           element.css("margin-top",-(h/2)+"px");
       } else {
           element.css("top",($(window).scrollTop()+100)+"px");
       }
   }
   
   $.fn.basebox.show_box_image = function(){
       var box=$(".BB_box");       
       var p=box.position();
       
       box.hide();        
        $('#BB_content_image').load(
           function(){               
               $.fn.basebox.show_box_content(box,p);
           });              
   }
   $.fn.basebox.show_box_content = function(box,p){      
       $.fn.basebox.position(box,p);       
       box.fadeIn("fast",function(){             
              $(".BB_overlay_helper").css("height",$(document).height()+"px");
              $(".BB_overlay").css("height",($(document).height())+"px");
              
              if ($.fn.basebox.settings.show_loading_image =='1') $("#BB_loading").remove();
              $(".BB_close").unbind('click').click(function() { $.fn.basebox.close(); });
              $(".BB_overlay").unbind('click').click(function() { $.fn.basebox.close(); });
              $(".BB_load").unbind('click').click(function() { $.fn.basebox.load_url($(this));return false; });
              $(".BB_change").unbind('click').click(function() { $.fn.basebox.img_change($(this));return false; });              
       });       
   }
   
   $.fn.basebox.show_box = function(){
       var box=$(".BB_box");
       var p=box.position();
       
       box.hide();
       $.fn.basebox.show_box_content(box,p);       
   }   
          
})(jQuery);


