/*
 * ----------------------------------------------------------------------------
 * "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',
          overlay: 'sure'
       }
   });   
   
   $.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');
           
           tmpimg = new Image();
           tmpimg.src = orig_url;
           $.fn.basebox.settings.width=tmpimg.width+20;
           
            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){      
      if (url){
         var content='';
         url=url.toLowerCase();         
            $.get(url, function(msg){            
               content=msg;
               if (content!=''){         
                  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");
               //alert(url);
                  $(".BB_overlay").fadeIn("fast",function(){            
                  var orig_url=url;               
                  var title='<div class="BB_title">'+boxtitle+'</div>';                   
                  $.fn.basebox.add_box(title,content,'');           
                });         
                }  
            });         
      }   
   }

   $.fn.basebox.showurl_no = function(url,boxtitle,settings){
      if ($(".BB_box")) $(".BB_box").remove(); 
      if (url){
         $.fn.basebox.settings.overlay='no';
         var content='';
         url=url.toLowerCase();         
            $.get(url, function(msg){            
               content=msg;
               if (content!=''){         
                  for (var i in settings) { $.fn.basebox.settings[i] = eval('settings.' + i); }        
                  $.fn.basebox.usersettings=settings;                  
                  var orig_url=url;               
                  var title='<div class="BB_title">'+boxtitle+'</div>';                   
                  $.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.png" class="BB_close"/><div id="BB_box_content">'+content+'</div>'+addcon+'</div>');
      $(document.body).append('<div class="BB_box">'+title+'<img src="'+$.fn.basebox.settings.basedir+'close.png" class="BB_close"/> \
                               <table cellpadding="0" cellspacing="0"><tr id="BB_top"><td id="l"></td><td id="m"></td><td id="r"></td></tr><tr id="BB_middle"><td id="l"></td><td id="m"><div id="BB_box_content">'+content+'</div></div></td><td id="r"></tr><tr id="BB_bottom"><td id="l"></td><td id="m"></td><td id="r"></tr></table>'+addcon+'</div>');
     
      //$(document.body).append('<div class="BB_box">'+title+'<img src="'+$.fn.basebox.settings.basedir+'close.png" 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" val="'+(index-1)+'/'+group+'/'+max+'" ><img border="0" src="'+$.fn.basebox.settings.basedir+'prev.png" /></a>';                 
       if ((index+1)<max) addcon=addcon+'<a class="BB_change" val="'+(index+1)+'/'+group+'/'+max+'" ><img border="0" src="'+$.fn.basebox.settings.basedir+'next.png" /></a>';
       return addcon;
   } 
   
   $.fn.basebox.img_change = function(self){        
        var values = self.attr('val').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('val')+'</div>';
            $(".BB_box").remove();            
            $.fn.basebox.add_box('','<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(){
      if ($.fn.basebox.settings.overlay != 'no'){
         $(".BB_box").fadeOut("fast",function(){          
            $(".BB_overlay").fadeOut("normals",function(){
                $(".BB_box").remove();               
               $(".BB_overlay").remove();
               $(".BB_overlay_helper").remove();               
           });
         });
      } else {
         $(".BB_box").fadeOut("fast",function(){
            $(".BB_box").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);


