(function($) { /** * $ is an alias to jQuery object * */ $.fn.cBox = function(settings) { // Settings to configure the jQuery lightBox plugin how you like settings = jQuery.extend({ // Configuration related to overlay overlayBgColor: '#C7B299', // (string) Background color to overlay; inform a hexadecimal value like: #RRGGBB. Where RR, GG, and BB are the hexadecimal values for the red, green, and blue values of the color. overlayOpacity: 0.8, // (integer) Opacity value to overlay; inform: 0.X. Where X are number from 0 to 9 borderWidth: 0, borderColor: '#C7B299', width: 400, height: 400, closeImage: '/images/cbox/btn_close.gif', showScrollerbar:false, callback:null },settings); // Caching the jQuery object with all elements matched var jQueryMatchedObj = this; // This, in this context, refer to jQuery object /** * Initializing the plugin calling the start function * * @return boolean false */ function _initialize() { _start(this,jQueryMatchedObj); // This, in this context, refer to object (link) which the user have clicked return false; // Avoid the browser following the link } /** * Start the jQuery lightBox plugin * * @param object objClicked The object (link) whick the user have clicked * @param object jQueryMatchedObj The jQuery object with all elements matched */ function _start(objClicked,jQueryMatchedObj) { // Hide some elements to avoid conflict with overlay in IE. These elements appear above the overlay. $('embed, object, .select').css({ 'visibility' : 'hidden' }); //$('embed, object').css({ 'visibility' : 'hidden' }); // Call the function to create the markup structure; style some elements; assign events in some elements. _set_interface(); // alert('abc'); _open(objClicked); // Assigning click events in elements to close overlay } function _set_interface() { var overlay = $('
'); var arrPageSizes = ___getPageSize(); overlay.css({width: '100%', height:arrPageSizes[1], position: 'absolute', left: 0, top: 0, zIndex: 99}); overlay.css({backgroundColor:settings.overlayBgColor, opacity: settings.overlayOpacity}); $('body').append(overlay); overlay.fadeIn(); } function _open(href){ var wrapper = $('
'); var arrPageSizes = ___getPageSize(); var arrPageScroll = ___getPageScroll(); wrapper.css({width: '100%', height:arrPageSizes[1], background:'none', position: 'absolute', left: 0, top: 0, zIndex: 100}); wrapper.html(''); $('img', wrapper).css({position:'absolute', top:arrPageSizes[3]/2-9, left:arrPageSizes[2]/2 - 110}); $('body').append(wrapper); var ndiv = $('
'); ndiv.css({top:arrPageScroll[1] + (arrPageSizes[3]/2-settings.height/2), left:arrPageSizes[2]/2 - settings.width/2}); ndiv.css({width:settings.width, height:settings.height, border: settings.borderWidth+'px solid '+ settings.borderColor, background:'none', position:'absolute', overflow:'hidden'}); if(settings.showScrollerbar){ ndiv.css({overflow:'scroll'}); } // ndiv.html(''); //alert(href); var href = href + ''; if(href.search(/inline/) == -1){ var href = href + ''; var pos = href.indexOf("?"); if(pos != -1){ var url = href.substr(0, pos-1); var data = href.substr(pos+1); }else{ var url = href; var data = ''; } $.ajax({ type:"POST", url:url, data:data + '&from_cBox=true', success:function(html){ //ndiv.html('').append(html); //___pause(500); ndiv.html(html); wrapper.html(ndiv); _apply_action(); if(settings.callback != null){ settings.callback(); } } }); } else { var id = href.substr(href.indexOf("inline")+6); //var html = $(id).html(); ndiv.html($('#'+id).children(':first').clone()); wrapper.html(ndiv); } //_apply_action(); } function _apply_action(){ /*$('#cbox_overlay').click(function() { _finish(); }); $('#cbox_wrapper').click(function() { _finish(); });*/ // Assign the _finish function to lightbox-loading-link and lightbox-secNav-btnClose objects $('#cbox_close_link').click(function() { _finish(); return false; }); } /** * Remove jQuery lightBox plugin HTML markup * */ function _finish() { $('#cbox_wrapper').remove(); $('#cbox_overlay').fadeOut(function() { $('#cbox_overlay').remove(); }); // Show some elements to avoid conflict with overlay in IE. These elements appear above the overlay. $('embed, object, .select').css({ 'visibility' : 'visible' }); } /** / THIRD FUNCTION * getPageSize() by quirksmode.com * * @return Array Return an array with page width, height and window width, height */ /* function ___getPageSize() { //var pageWidth = $(document).width(); //var pageHeight = $(document).height(); //var windowWidth = $(window).width(); //var windowHeight = $(window).height(); //var xScroll, yScroll; arrayPageSize = new Array(pageWidth,pageHeight,windowWidth,windowHeight); return arrayPageSize; };*/ /** / THIRD FUNCTION * getPageSize() by quirksmode.com * * @return Array Return an array with page width, height and window width, height */ 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){ // all but Explorer Mac xScroll = document.body.scrollWidth; yScroll = document.body.scrollHeight; } else { // Explorer Mac...would also work in Explorer 6 Strict, Mozilla and Safari xScroll = document.body.offsetWidth; yScroll = document.body.offsetHeight; } var windowWidth, windowHeight; if (self.innerHeight) { // all except Explorer if(document.documentElement.clientWidth){ windowWidth = document.documentElement.clientWidth; } else { windowWidth = self.innerWidth; } windowHeight = self.innerHeight; } else if (document.documentElement && document.documentElement.clientHeight) { // Explorer 6 Strict Mode windowWidth = document.documentElement.clientWidth; windowHeight = document.documentElement.clientHeight; } else if (document.body) { // other Explorers windowWidth = document.body.clientWidth; windowHeight = document.body.clientHeight; } // for small pages with total height less then height of the viewport if(yScroll < windowHeight){ pageHeight = windowHeight; } else { pageHeight = yScroll; } // for small pages with total width less then width of the viewport if(xScroll < windowWidth){ pageWidth = xScroll; } else { pageWidth = windowWidth; } arrayPageSize = new Array(pageWidth,pageHeight,windowWidth,windowHeight); return arrayPageSize; }; /** / THIRD FUNCTION * getPageScroll() by quirksmode.com * * @return Array Return an array with x,y page scroll values. */ function ___getPageScroll() { var xScroll, yScroll; if (self.pageYOffset) { yScroll = self.pageYOffset; xScroll = self.pageXOffset; } else if (document.documentElement && document.documentElement.scrollTop) { // Explorer 6 Strict yScroll = document.documentElement.scrollTop; xScroll = document.documentElement.scrollLeft; } else if (document.body) {// all other Explorers yScroll = document.body.scrollTop; xScroll = document.body.scrollLeft; } arrayPageScroll = new Array(xScroll,yScroll); return arrayPageScroll; }; /** * Stop the code execution from a escified time in milisecond * */ function ___pause(ms) { var date = new Date(); curDate = null; do { var curDate = new Date(); } while ( curDate - date < ms); }; // Return the jQuery object for chaining. The unbind method is used to avoid click conflict when the plugin is called more than once return this.unbind('click').click(_initialize); }; })(jQuery); // Call and execute the function immediately passing the jQuery object function resize_cBox(width, height){ var pageWidth = $(document).width(); var pageHeight = $(document).height(); var windowWidth = $(window).width(); var windowHeight = $(window).height(); var left = windowWidth/2 - width/2; var top = windowHeight/2 - height/2; $('#cbox_wrapper>div').animate({top:top, height:height, left:left, width:width}, 'slow'); } function remove_cBox(){ $('#cbox_wrapper').remove(); $('#cbox_overlay').fadeOut(function() { $('#cbox_overlay').remove(); }); // Show some elements to avoid conflict with overlay in IE. These elements appear above the overlay. $('embed, object, .select').css({ 'visibility' : 'visible' }); }