/**
 * jQuery lightBox plugin
 * This jQuery plugin was inspired and based on Lightbox 2 by Lokesh Dhakar (http://www.huddletogether.com/projects/lightbox2/)
 * and adapted to me for use like a plugin from jQuery.
 * @name jquery-lightbox-0.5.js
 * @author Leandro Vieira Pinho - http://leandrovieira.com
 * @version 0.5
 * @date April 11, 2008
 * @category jQuery plugin
 * @copyright (c) 2008 Leandro Vieira Pinho (leandrovieira.com)
 * @license CC Attribution-No Derivative Works 2.5 Brazil - http://creativecommons.org/licenses/by-nd/2.5/br/deed.en_US
 * @example Visit http://leandrovieira.com/projects/jquery/lightbox/ for more informations about this jQuery plugin
 */
var DEFAULT_URL_SITE = "http://www.dabus.com.br/site";
//var DEFAULT_URL_SITE = "http://dabusnew-develop.arcasolutions.com/site";

(function($){
    $.fn.lightBox=function(settings){
	settings=jQuery.extend({
	    overlayBgColor:'#000',
	    overlayOpacity:0.8,
	    fixedNavigation:false,
	    imageLoading: DEFAULT_URL_SITE+'/images/loading.gif',
	    //imageBtnPrev:'images/lightbox-btn-prev.gif',
	    imageBtnPrev:DEFAULT_URL_SITE+'/images/prevlabel.gif',
	    //imageBtnNext:'images/lightbox-btn-next.gif',
	    imageBtnNext:DEFAULT_URL_SITE+'/images/nextlabel.gif',
	    //imageBtnClose:'images/lightbox-btn-close.gif',
	    imageBtnClose:DEFAULT_URL_SITE+'/images/close.gif',
	    imageBlank:DEFAULT_URL_SITE+'/images/lightbox-blank.gif',
	    containerBorderSize:10,
	    containerResizeSpeed:400,
	    txtImage:'Image',
	    txtOf:'of',
	    keyToClose:'c',
	    keyToPrev:'p',
	    keyToNext:'n',
	    imageArray:[],
	    activeImage:0
	},settings);
	var jQueryMatchedObj=this;
	function _initialize(){
	    _start(this,jQueryMatchedObj);
	    return false;
	}
	function _start(objClicked,jQueryMatchedObj){
	    $('embed, object, select').css({
		'visibility':'hidden'
	    });
	    _set_interface();
	    settings.imageArray.length=0;
	    settings.activeImage=0;
	    if(jQueryMatchedObj.length==1){
		settings.imageArray.push(new Array(objClicked.getAttribute('href'),objClicked.getAttribute('title')));
	    }else{
		for(var i=0;i<jQueryMatchedObj.length;i++){
		    settings.imageArray.push(new Array(jQueryMatchedObj[i].getAttribute('href'),jQueryMatchedObj[i].getAttribute('title')));
		}
		}
	while(settings.imageArray[settings.activeImage][0]!=objClicked.getAttribute('href')){
	    settings.activeImage++;
	}
	_set_image_to_view();
    }
    function _set_interface(){
	$('body').append('<div id="jquery-overlay"></div><div id="jquery-lightbox"><div id="lightbox-container-image-box"><div id="lightbox-container-image"><img id="lightbox-image"><div style="" id="lightbox-nav"><a href="#" id="lightbox-nav-btnPrev"></a><a href="#" id="lightbox-nav-btnNext"></a></div><div id="lightbox-loading"><a href="#" id="lightbox-loading-link"><img src="'+settings.imageLoading+'"></a></div></div></div><div id="lightbox-container-image-data-box"><div id="lightbox-container-image-data"><div id="lightbox-image-details"><span id="lightbox-image-details-caption"></span><span id="lightbox-image-details-currentNumber"></span></div><div id="lightbox-secNav"><a href="#" id="lightbox-secNav-btnClose"><img src="'+settings.imageBtnClose+'"></a></div></div></div></div>');
	var arrPageSizes=___getPageSize();
	$('#jquery-overlay').css({
	    backgroundColor:settings.overlayBgColor,
	    opacity:settings.overlayOpacity,
	    width:arrPageSizes[0],
	    height:arrPageSizes[1]
	    }).fadeIn();
	var arrPageScroll=___getPageScroll();
	$('#jquery-lightbox').css({
	    top:arrPageScroll[1]+(arrPageSizes[3]/10),
	    left:arrPageScroll[0]
	    }).show();
	$('#jquery-overlay,#jquery-lightbox').click(function(){
	    _finish();
	});
	$('#lightbox-loading-link,#lightbox-secNav-btnClose').click(function(){
	    _finish();
	    return false;
	});
	$(window).resize(function(){
	    var arrPageSizes=___getPageSize();
	    $('#jquery-overlay').css({
		width:arrPageSizes[0],
		height:arrPageSizes[1]
		});
	    var arrPageScroll=___getPageScroll();
	    $('#jquery-lightbox').css({
		top:arrPageScroll[1]+(arrPageSizes[3]/10),
		left:arrPageScroll[0]
		});
	});
    }
    function _set_image_to_view(){
	$('#lightbox-loading').show();
	if(settings.fixedNavigation){
	    $('#lightbox-image,#lightbox-container-image-data-box,#lightbox-image-details-currentNumber').hide();
	}else{
	    $('#lightbox-image,#lightbox-nav,#lightbox-nav-btnPrev,#lightbox-nav-btnNext,#lightbox-container-image-data-box,#lightbox-image-details-currentNumber').hide();
	}
	var objImagePreloader=new Image();
	objImagePreloader.onload=function(){
	    $('#lightbox-image').attr('src',settings.imageArray[settings.activeImage][0]);
	    _resize_container_image_box(objImagePreloader.width,objImagePreloader.height);
	    objImagePreloader.onload=function(){};

    };

    objImagePreloader.src=settings.imageArray[settings.activeImage][0];
};

function _resize_container_image_box(intImageWidth,intImageHeight){
    var intCurrentWidth=$('#lightbox-container-image-box').width();
    var intCurrentHeight=$('#lightbox-container-image-box').height();
    var intWidth=(intImageWidth+(settings.containerBorderSize*2));
    var intHeight=(intImageHeight+(settings.containerBorderSize*2));
    var intDiffW=intCurrentWidth-intWidth;
    var intDiffH=intCurrentHeight-intHeight;
    $('#lightbox-container-image-box').animate({
	width:intWidth,
	height:intHeight
    },settings.containerResizeSpeed,function(){
	_show_image();
    });
    if((intDiffW==0)&&(intDiffH==0)){
	if($.browser.msie){
	    ___pause(250);
	}else{
	    ___pause(100);
	}
    }
$('#lightbox-container-image-data-box').css({
    width:intImageWidth
});
$('#lightbox-nav-btnPrev,#lightbox-nav-btnNext').css({
    height:intImageHeight+(settings.containerBorderSize*2)
    });
};

function _show_image(){
    $('#lightbox-loading').hide();
    $('#lightbox-image').fadeIn(function(){
	_show_image_data();
	_set_navigation();
    });
    _preload_neighbor_images();
};

function _show_image_data(){
    $('#lightbox-container-image-data-box').slideDown('fast');
    $('#lightbox-image-details-caption').hide();
    if(settings.imageArray[settings.activeImage][1]){
	$('#lightbox-image-details-caption').html(settings.imageArray[settings.activeImage][1]).show();
    }
    if(settings.imageArray.length>1){
	$('#lightbox-image-details-currentNumber').html(settings.txtImage+' '+(settings.activeImage+1)+' '+settings.txtOf+' '+settings.imageArray.length).show();
    }
}
function _set_navigation(){
    $('#lightbox-nav').show();
    $('#lightbox-nav-btnPrev,#lightbox-nav-btnNext').css({
	'background':'transparent url('+settings.imageBlank+') no-repeat'
	});
    if(settings.activeImage!=0){
	if(settings.fixedNavigation){
	    $('#lightbox-nav-btnPrev').css({
		'background':'url('+settings.imageBtnPrev+') left 15% no-repeat'
		}).unbind().bind('click',function(){
		settings.activeImage=settings.activeImage-1;
		_set_image_to_view();
		return false;
	    });
	}else{
	    $('#lightbox-nav-btnPrev').unbind().hover(function(){
		$(this).css({
		    'background':'url('+settings.imageBtnPrev+') left 15% no-repeat'
		    });
	    },function(){
		$(this).css({
		    'background':'transparent url('+settings.imageBlank+') no-repeat'
		    });
	    }).show().bind('click',function(){
		settings.activeImage=settings.activeImage-1;
		_set_image_to_view();
		return false;
	    });
	}
    }
if(settings.activeImage!=(settings.imageArray.length-1)){
    if(settings.fixedNavigation){
	$('#lightbox-nav-btnNext').css({
	    'background':'url('+settings.imageBtnNext+') right 15% no-repeat'
	    }).unbind().bind('click',function(){
	    settings.activeImage=settings.activeImage+1;
	    _set_image_to_view();
	    return false;
	});
    }else{
	$('#lightbox-nav-btnNext').unbind().hover(function(){
	    $(this).css({
		'background':'url('+settings.imageBtnNext+') right 15% no-repeat'
		});
	},function(){
	    $(this).css({
		'background':'transparent url('+settings.imageBlank+') no-repeat'
		});
	}).show().bind('click',function(){
	    settings.activeImage=settings.activeImage+1;
	    _set_image_to_view();
	    return false;
	});
    }
}
_enable_keyboard_navigation();
}
function _enable_keyboard_navigation(){
    $(document).keydown(function(objEvent){
	_keyboard_action(objEvent);
    });
}
function _disable_keyboard_navigation(){
    $(document).unbind();
}
function _keyboard_action(objEvent){
    if(objEvent==null){
	keycode=event.keyCode;
	escapeKey=27;
    }else{
	keycode=objEvent.keyCode;
	escapeKey=objEvent.DOM_VK_ESCAPE;
    }
    key=String.fromCharCode(keycode).toLowerCase();
    if((key==settings.keyToClose)||(key=='x')||(keycode==escapeKey)){
	_finish();
    }
    if((key==settings.keyToPrev)||(keycode==37)){
	if(settings.activeImage!=0){
	    settings.activeImage=settings.activeImage-1;
	    _set_image_to_view();
	    _disable_keyboard_navigation();
	}
    }
if((key==settings.keyToNext)||(keycode==39)){
    if(settings.activeImage!=(settings.imageArray.length-1)){
	settings.activeImage=settings.activeImage+1;
	_set_image_to_view();
	_disable_keyboard_navigation();
    }
}
}
function _preload_neighbor_images(){
    if((settings.imageArray.length-1)>settings.activeImage){
	objNext=new Image();
	objNext.src=settings.imageArray[settings.activeImage+1][0];
    }
    if(settings.activeImage>0){
	objPrev=new Image();
	objPrev.src=settings.imageArray[settings.activeImage-1][0];
    }
}
function _finish(){
    $('#jquery-lightbox').remove();
    $('#jquery-overlay').fadeOut(function(){
	$('#jquery-overlay').remove();
    });
    $('embed, object, select').css({
	'visibility':'visible'
    });
}
function ___getPageSize(){
    var xScroll,yScroll;
    if(window.innerHeight&&window.scrollMaxY){
	xScroll=window.innerWidth+window.scrollMaxX;
	yScroll=window.innerHeight+window.scrollMaxY;
    }else if(document.body.scrollHeight>document.body.offsetHeight){
	xScroll=document.body.scrollWidth;
	yScroll=document.body.scrollHeight;
    }else{
	xScroll=document.body.offsetWidth;
	yScroll=document.body.offsetHeight;
    }
    var windowWidth,windowHeight;
    if(self.innerHeight){
	if(document.documentElement.clientWidth){
	    windowWidth=document.documentElement.clientWidth;
	}else{
	    windowWidth=self.innerWidth;
	}
	windowHeight=self.innerHeight;
    }else if(document.documentElement&&document.documentElement.clientHeight){
	windowWidth=document.documentElement.clientWidth;
	windowHeight=document.documentElement.clientHeight;
    }else if(document.body){
	windowWidth=document.body.clientWidth;
	windowHeight=document.body.clientHeight;
    }
    if(yScroll<windowHeight){
	pageHeight=windowHeight;
    }else{
	pageHeight=yScroll;
    }
    if(xScroll<windowWidth){
	pageWidth=xScroll;
    }else{
	pageWidth=windowWidth;
    }
    arrayPageSize=new Array(pageWidth,pageHeight,windowWidth,windowHeight);
    return arrayPageSize;
};

function ___getPageScroll(){
    var xScroll,yScroll;
    if(self.pageYOffset){
	yScroll=self.pageYOffset;
	xScroll=self.pageXOffset;
    }else if(document.documentElement&&document.documentElement.scrollTop){
	yScroll=document.documentElement.scrollTop;
	xScroll=document.documentElement.scrollLeft;
    }else if(document.body){
	yScroll=document.body.scrollTop;
	xScroll=document.body.scrollLeft;
    }
    arrayPageScroll=new Array(xScroll,yScroll);
    return arrayPageScroll;
};

function ___pause(ms){
    var date=new Date();
    curDate=null;
    do{
	var curDate=new Date();
    }
    while(curDate-date<ms);
};

return this.unbind('click').click(_initialize);
};

})(jQuery);