diff -r 651f67b66c51 -r 7c994c98d1df web/ldt/media/js/jquery.DOMWindow.js --- a/web/ldt/media/js/jquery.DOMWindow.js Tue Jun 08 15:10:46 2010 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,372 +0,0 @@ -(function($){ - - //closeDOMWindow - $.fn.closeDOMWindow = function(settings){ - - if(!settings){settings={};} - - var run = function(passingThis){ - - if(settings.anchoredClassName){ - var $anchorClassName = $('.'+settings.anchoredClassName); - $anchorClassName.fadeOut('fast',function(){ - if($.fn.draggable){ - $anchorClassName.draggable('destory').trigger("unload").remove(); - }else{ - $anchorClassName.trigger("unload").remove(); - } - }); - if(settings.functionCallOnClose){settings.functionCallAfterClose();} - }else{ - var $DOMWindowOverlay = $('#DOMWindowOverlay'); - var $DOMWindow = $('#DOMWindow'); - $DOMWindowOverlay.fadeOut('fast',function(){ - $DOMWindowOverlay.trigger('unload').unbind().remove(); - }); - $DOMWindow.fadeOut('fast',function(){ - if($.fn.draggable){ - $DOMWindow.draggable("destroy").trigger("unload").remove(); - }else{ - $DOMWindow.trigger("unload").remove(); - } - }); - - $(window).unbind('scroll.DOMWindow'); - $(window).unbind('resize.DOMWindow'); - - if($.fn.openDOMWindow.isIE6){$('#DOMWindowIE6FixIframe').remove();} - if(settings.functionCallOnClose){settings.functionCallAfterClose();} - } - }; - - if(settings.eventType){//if used with $(). - return this.each(function(index){ - $(this).bind(settings.eventType, function(){ - run(this); - return false; - }); - }); - }else{//else called as $.function - run(); - } - - }; - - //allow for public call, pass settings - $.closeDOMWindow = function(s){$.fn.closeDOMWindow(s);}; - - //openDOMWindow - $.fn.openDOMWindow = function(instanceSettings){ - - var shortcut = $.fn.openDOMWindow; - - //default settings combined with callerSettings//////////////////////////////////////////////////////////////////////// - - shortcut.defaultsSettings = { - anchoredClassName:'', - anchoredSelector:'', - borderColor:'#ccc', - borderSize:'4', - draggable:0, - eventType:null, //click, blur, change, dblclick, error, focus, load, mousedown, mouseout, mouseup etc... - fixedWindowY:100, - functionCallOnOpen:null, - functionCallOnClose:null, - height:500, - loader:0, - loaderHeight:0, - loaderImagePath:'', - loaderWidth:0, - modal:0, - overlay:1, - overlayColor:'#000', - overlayOpacity:'85', - positionLeft:0, - positionTop:0, - positionType:'centered', // centered, anchored, absolute, fixed - width:500, - windowBGColor:'#fff', - windowBGImage:null, // http path - windowHTTPType:'get', - windowPadding:10, - windowSource:'inline', //inline, ajax, iframe - windowSourceID:'', - windowSourceURL:'', - windowSourceAttrURL:'href', - windowOverflow : 'auto', - ajaxParameters : {} - }; - - var settings = $.extend({}, $.fn.openDOMWindow.defaultsSettings , instanceSettings || {}); - - //Public functions - - shortcut.viewPortHeight = function(){ return self.innerHeight || document.documentElement.clientHeight || document.body.clientHeight;}; - shortcut.viewPortWidth = function(){ return self.innerWidth || document.documentElement.clientWidth || document.body.clientWidth;}; - shortcut.scrollOffsetHeight = function(){ return self.pageYOffset || document.documentElement.scrollTop || document.body.scrollTop;}; - shortcut.scrollOffsetWidth = function(){ return self.pageXOffset || document.documentElement.scrollLeft || document.body.scrollLeft;}; - shortcut.isIE6 = typeof document.body.style.maxHeight === "undefined"; - - //Private Functions///////////////////////////////////////////////////////////////////////////////////////////////////////// - - var sizeOverlay = function(){ - var $DOMWindowOverlay = $('#DOMWindowOverlay'); - if(shortcut.isIE6){//if IE 6 - var overlayViewportHeight = document.documentElement.offsetHeight + document.documentElement.scrollTop - 4; - var overlayViewportWidth = document.documentElement.offsetWidth - 21; - $DOMWindowOverlay.css({'height':overlayViewportHeight +'px','width':overlayViewportWidth+'px'}); - }else{//else Firefox, safari, opera, IE 7+ - $DOMWindowOverlay.css({'height':'100%','width':'100%','position':'fixed'}); - } - }; - - var sizeIE6Iframe = function(){ - var overlayViewportHeight = document.documentElement.offsetHeight + document.documentElement.scrollTop - 4; - var overlayViewportWidth = document.documentElement.offsetWidth - 21; - $('#DOMWindowIE6FixIframe').css({'height':overlayViewportHeight +'px','width':overlayViewportWidth+'px'}); - }; - - var centerDOMWindow = function() { - var $DOMWindow = $('#DOMWindow'); - if(settings.height + 50 > shortcut.viewPortHeight()){//added 50 to be safe - $DOMWindow.css('left',Math.round(shortcut.viewPortWidth()/2) + shortcut.scrollOffsetWidth() - Math.round(($DOMWindow.outerWidth())/2)); - }else{ - $DOMWindow.css('left',Math.round(shortcut.viewPortWidth()/2) + shortcut.scrollOffsetWidth() - Math.round(($DOMWindow.outerWidth())/2)); - $DOMWindow.css('top',Math.round(shortcut.viewPortHeight()/2) + shortcut.scrollOffsetHeight() - Math.round(($DOMWindow.outerHeight())/2)); - } - }; - - var centerLoader = function() { - var $DOMWindowLoader = $('#DOMWindowLoader'); - if(shortcut.isIE6){//if IE 6 - $DOMWindowLoader.css({'left':Math.round(shortcut.viewPortWidth()/2) + shortcut.scrollOffsetWidth() - Math.round(($DOMWindowLoader.innerWidth())/2),'position':'absolute'}); - $DOMWindowLoader.css({'top':Math.round(shortcut.viewPortHeight()/2) + shortcut.scrollOffsetHeight() - Math.round(($DOMWindowLoader.innerHeight())/2),'position':'absolute'}); - }else{ - $DOMWindowLoader.css({'left':'50%','top':'50%','position':'fixed'}); - } - - }; - - var fixedDOMWindow = function(){ - var $DOMWindow = $('#DOMWindow'); - $DOMWindow.css('left', settings.positionLeft + shortcut.scrollOffsetWidth()); - $DOMWindow.css('top', + settings.positionTop + shortcut.scrollOffsetHeight()); - }; - - var showDOMWindow = function(instance){ - if(arguments[0]){ - $('.'+instance+' #DOMWindowLoader').remove(); - $('.'+instance+' #DOMWindowContent').fadeIn('fast',function(){if(settings.functionCallOnOpen){settings.functionCallOnOpen();}}); - $('.'+instance+ '.closeDOMWindow').click(function(){ - $.closeDOMWindow(); - return false; - }); - }else{ - $('#DOMWindowLoader').remove(); - $('#DOMWindow').fadeIn('fast',function(){if(settings.functionCallOnOpen){settings.functionCallOnOpen();}}); - $('#DOMWindow .closeDOMWindow').click(function(){ - $.closeDOMWindow(); - return false; - }); - } - - }; - - var urlQueryToObject = function(s, q){ - var query = typeof(q) != 'undefined' ? q : {}; - s.replace(/b([^&=]*)=([^&=]*)b/g, function (m, a, d) { - if (typeof query[a] != 'undefined') { - query[a] += ',' + d; - } else { - query[a] = d; - } - }); - return query; - }; - - //Run Routine /////////////////////////////////////////////////////////////////////////////////////////////////////////////// - var run = function(passingThis){ - - //get values from element clicked, or assume its passed as an option - settings.windowSourceID = $(passingThis).attr('href') || settings.windowSourceID; - settings.windowSourceURL = $(passingThis).attr(settings.windowSourceAttrURL) || settings.windowSourceURL; - settings.windowBGImage = settings.windowBGImage ? 'background-image:url('+settings.windowBGImage+')' : ''; - var urlOnly, urlQueryObject; - - if(settings.positionType == 'anchored'){//anchored DOM window - - var anchoredPositions = $(settings.anchoredSelector).position(); - var anchoredPositionX = anchoredPositions.left + settings.positionLeft; - var anchoredPositionY = anchoredPositions.top + settings.positionTop; - - $('body').append('
'); - //loader - if(settings.loader && settings.loaderImagePath !== ''){ - $('.'+settings.anchoredClassName).append('
'); - - } - - if($.fn.draggable){ - if(settings.draggable){$('.' + settings.anchoredClassName).draggable({cursor:'move'});} - } - - switch(settings.windowSource){ - case 'inline'://////////////////////////////// inline ////////////////////////////////////////// - $('.' + settings.anchoredClassName+" #DOMWindowContent").append($(settings.windowSourceID).children()); - $('.' + settings.anchoredClassName).unload(function(){// move elements back when you're finished - $('.' + settings.windowSourceID).append( $('.' + settings.anchoredClassName+" #DOMWindowContent").children()); - }); - showDOMWindow(settings.anchoredClassName); - break; - case 'iframe'://////////////////////////////// iframe ////////////////////////////////////////// - $('.' + settings.anchoredClassName+" #DOMWindowContent").append(''); - $('.'+settings.anchoredClassName+'Iframe').load(showDOMWindow(settings.anchoredClassName)); - break; - case 'ajax'://////////////////////////////// ajax ////////////////////////////////////////// - if(settings.windowHTTPType == 'post'){ - - if(settings.windowSourceURL.indexOf("?") !== -1){//has a query string - urlOnly = settings.windowSourceURL.substr(0, settings.windowSourceURL.indexOf("?")); - urlQueryObject = urlQueryToObject(settings.windowSourceURL, settings.ajaxParameters); - }else{ - urlOnly = settings.windowSourceURL; - urlQueryObject = settings.ajaxParameters; - } - $('.' + settings.anchoredClassName+" #DOMWindowContent").load(urlOnly,urlQueryObject,function(){ - showDOMWindow(settings.anchoredClassName); - }); - }else{ - if(settings.windowSourceURL.indexOf("?") == -1){ //no query string, so add one - settings.windowSourceURL += '?'; - } - $('.' + settings.anchoredClassName+" #DOMWindowContent").load( - settings.windowSourceURL + '&random=' + (new Date().getTime()),function(){ - showDOMWindow(settings.anchoredClassName); - }); - } - break; - } - - }else{//centered, fixed, absolute DOM window - - //overlay & modal - if(settings.overlay){ - $('body').append(''); - if(shortcut.isIE6){//if IE 6 - $('body').append(''); - sizeIE6Iframe(); - } - sizeOverlay(); - var $DOMWindowOverlay = $('#DOMWindowOverlay'); - $DOMWindowOverlay.fadeIn('fast'); - if(!settings.modal){$DOMWindowOverlay.click(function(){$.closeDOMWindow();});} - } - - //loader - if(settings.loader && settings.loaderImagePath !== ''){ - $('body').append('
'); - centerLoader(); - } - - //add DOMwindow - $('body').append(''); - - var $DOMWindow = $('#DOMWindow'); - //centered, absolute, or fixed - switch(settings.positionType){ - case 'centered': - centerDOMWindow(); - if(settings.height + 50 > shortcut.viewPortHeight()){//added 50 to be safe - $DOMWindow.css('top', (settings.fixedWindowY + shortcut.scrollOffsetHeight()) + 'px'); - } - break; - case 'absolute': - $DOMWindow.css({'top':(settings.positionTop+shortcut.scrollOffsetHeight())+'px','left':(settings.positionLeft+shortcut.scrollOffsetWidth())+'px'}); - if($.fn.draggable){ - if(settings.draggable){$DOMWindow.draggable({cursor:'move'});} - } - break; - case 'fixed': - fixedDOMWindow(); - break; - case 'anchoredSingleWindow': - var anchoredPositions = $(settings.anchoredSelector).position(); - var anchoredPositionX = anchoredPositions.left + settings.positionLeft; - var anchoredPositionY = anchoredPositions.top + settings.positionTop; - $DOMWindow.css({'top':anchoredPositionY + 'px','left':anchoredPositionX+'px'}); - - break; - } - - $(window).bind('scroll.DOMWindow',function(){ - if(settings.overlay){sizeOverlay();} - if(shortcut.isIE6){sizeIE6Iframe();} - if(settings.positionType == 'centered'){centerDOMWindow();} - if(settings.positionType == 'fixed'){fixedDOMWindow();} - }); - - $(window).bind('resize.DOMWindow',function(){ - if(shortcut.isIE6){sizeIE6Iframe();} - if(settings.overlay){sizeOverlay();} - if(settings.positionType == 'centered'){centerDOMWindow();} - }); - - switch(settings.windowSource){ - case 'inline'://////////////////////////////// inline ////////////////////////////////////////// - $DOMWindow.append($(settings.windowSourceID).children()); - $DOMWindow.unload(function(){// move elements back when you're finished - $(settings.windowSourceID).append($DOMWindow.children()); - }); - showDOMWindow(); - break; - case 'iframe'://////////////////////////////// iframe ////////////////////////////////////////// - var name = 'DOMWindowIframe'+Math.round(Math.random()*1000); - $DOMWindow.append(''); - $('#DOMWindowIframe').load(showDOMWindow()); - break; - case 'ajax'://////////////////////////////// ajax ////////////////////////////////////////// - if(settings.windowHTTPType == 'post'){ - - if(settings.windowSourceURL.indexOf("?") !== -1){//has a query string - urlOnly = settings.windowSourceURL.substr(0, settings.windowSourceURL.indexOf("?")); - urlQueryObject = urlQueryToObject(settings.windowSourceURL, settings.ajaxParameters); - }else{ - urlOnly = settings.windowSourceURL; - urlQueryObject = settings.ajaxParameters; - } - $DOMWindow.load(urlOnly,urlQueryObject,function(){ - showDOMWindow(); - }); - }else{ - if(settings.windowSourceURL.indexOf("?") == -1){ //no query string, so add one - settings.windowSourceURL += '?'; - } - $DOMWindow.load( - settings.windowSourceURL + '&random=' + (new Date().getTime()),function(){ - showDOMWindow(); - }); - } - break; - } - - }//end if anchored, or absolute, fixed, centered - - };//end run() - - if(settings.eventType){//if used with $(). - return this.each(function(index){ - $(this).bind(settings.eventType,function(){ - run(this); - return false; - }); - }); - }else{//else called as $.function - run(); - } - - };//end function openDOMWindow - - //allow for public call, pass settings - $.openDOMWindow = function(s){$.fn.openDOMWindow(s);}; - -})(jQuery);