1(function($){ 2 3 //closeDOMWindow 4 $.fn.closeDOMWindow = function(settings){ 5 6 if(!settings){settings={};} 7 8 var run = function(passingThis){ 9 10 if(settings.anchoredClassName){ 11 var $anchorClassName = $('.'+settings.anchoredClassName); 12 $anchorClassName.fadeOut('fast',function(){ 13 if($.fn.draggable){ 14 $anchorClassName.draggable('destory').trigger("unload").remove(); 15 }else{ 16 $anchorClassName.trigger("unload").remove(); 17 } 18 }); 19 if(settings.functionCallOnClose){settings.functionCallAfterClose();} 20 }else{ 21 var $DOMWindowOverlay = $('#DOMWindowOverlay'); 22 var $DOMWindow = $('#DOMWindow'); 23 $DOMWindowOverlay.fadeOut('fast',function(){ 24 $DOMWindowOverlay.trigger('unload').unbind().remove(); 25 }); 26 $DOMWindow.fadeOut('fast',function(){ 27 if($.fn.draggable){ 28 $DOMWindow.draggable("destroy").trigger("unload").remove(); 29 }else{ 30 $DOMWindow.trigger("unload").remove(); 31 } 32 }); 33 34 $(window).unbind('scroll.DOMWindow'); 35 $(window).unbind('resize.DOMWindow'); 36 37 if($.fn.openDOMWindow.isIE6){$('#DOMWindowIE6FixIframe').remove();} 38 if(settings.functionCallOnClose){settings.functionCallAfterClose();} 39 } 40 }; 41 42 if(settings.eventType){//if used with $(). 43 return this.each(function(index){ 44 $(this).bind(settings.eventType, function(){ 45 run(this); 46 return false; 47 }); 48 }); 49 }else{//else called as $.function 50 run(); 51 } 52 53 }; 54 55 //allow for public call, pass settings 56 $.closeDOMWindow = function(s){$.fn.closeDOMWindow(s);}; 57 58 //openDOMWindow 59 $.fn.openDOMWindow = function(instanceSettings){ 60 61 var shortcut = $.fn.openDOMWindow; 62 63 //default settings combined with callerSettings//////////////////////////////////////////////////////////////////////// 64 65 shortcut.defaultsSettings = { 66 anchoredClassName:'', 67 anchoredSelector:'', 68 borderColor:'#ccc', 69 borderSize:'4', 70 draggable:0, 71 eventType:null, //click, blur, change, dblclick, error, focus, load, mousedown, mouseout, mouseup etc... 72 fixedWindowY:100, 73 functionCallOnOpen:null, 74 functionCallOnClose:null, 75 height:500, 76 loader:0, 77 loaderHeight:0, 78 loaderImagePath:'', 79 loaderWidth:0, 80 modal:0, 81 overlay:1, 82 overlayColor:'#000', 83 overlayOpacity:'85', 84 positionLeft:0, 85 positionTop:0, 86 positionType:'centered', // centered, anchored, absolute, fixed 87 width:500, 88 windowBGColor:'#fff', 89 windowBGImage:null, // http path 90 windowHTTPType:'get', 91 windowPadding:10, 92 windowSource:'inline', //inline, ajax, iframe 93 windowSourceID:'', 94 windowSourceURL:'', 95 windowSourceAttrURL:'href' 96 }; 97 98 var settings = $.extend({}, $.fn.openDOMWindow.defaultsSettings , instanceSettings || {}); 99 100 //Public functions 101 102 shortcut.viewPortHeight = function(){ return self.innerHeight || document.documentElement.clientHeight || document.body.clientHeight;}; 103 shortcut.viewPortWidth = function(){ return self.innerWidth || document.documentElement.clientWidth || document.body.clientWidth;}; 104 shortcut.scrollOffsetHeight = function(){ return self.pageYOffset || document.documentElement.scrollTop || document.body.scrollTop;}; 105 shortcut.scrollOffsetWidth = function(){ return self.pageXOffset || document.documentElement.scrollLeft || document.body.scrollLeft;}; 106 shortcut.isIE6 = typeof document.body.style.maxHeight === "undefined"; 107 108 //Private Functions///////////////////////////////////////////////////////////////////////////////////////////////////////// 109 110 var sizeOverlay = function(){ 111 var $DOMWindowOverlay = $('#DOMWindowOverlay'); 112 if(shortcut.isIE6){//if IE 6 113 var overlayViewportHeight = document.documentElement.offsetHeight + document.documentElement.scrollTop - 4; 114 var overlayViewportWidth = document.documentElement.offsetWidth - 21; 115 $DOMWindowOverlay.css({'height':overlayViewportHeight +'px','width':overlayViewportWidth+'px'}); 116 }else{//else Firefox, safari, opera, IE 7+ 117 $DOMWindowOverlay.css({'height':'100%','width':'100%','position':'fixed'}); 118 } 119 }; 120 121 var sizeIE6Iframe = function(){
122 var overlayViewportHeight = document.documentElement.offsetHeight + document.documentElement.scrollTop - 4; 123 var overlayViewportWidth = document.documentElement.offsetWidth - 21; 124 $('#DOMWindowIE6FixIframe').css({'height':overlayViewportHeight +'px','width':overlayViewportWidth+'px'}); 125 }; 126 127 var centerDOMWindow = function() { 128 var $DOMWindow = $('#DOMWindow'); 129 if(settings.height + 50 > shortcut.viewPortHeight()){//added 50 to be safe 130 $DOMWindow.css('left',Math.round(shortcut.viewPortWidth()/2) + shortcut.scrollOffsetWidth() - Math.round(($DOMWindow.outerWidth())/2)); 131 }else{ 132 $DOMWindow.css('left',Math.round(shortcut.viewPortWidth()/2) + shortcut.scrollOffsetWidth() - Math.round(($DOMWindow.outerWidth())/2)); 133 $DOMWindow.css('top',Math.round(shortcut.viewPortHeight()/2) + shortcut.scrollOffsetHeight() - Math.round(($DOMWindow.outerHeight())/2)); 134 } 135 }; 136 137 var centerLoader = function() { 138 var $DOMWindowLoader = $('#DOMWindowLoader'); 139 if(shortcut.isIE6){//if IE 6 140 $DOMWindowLoader.css({'left':Math.round(shortcut.viewPortWidth()/2) + shortcut.scrollOffsetWidth() - Math.round(($DOMWindowLoader.innerWidth())/2),'position':'absolute'}); 141 $DOMWindowLoader.css({'top':Math.round(shortcut.viewPortHeight()/2) + shortcut.scrollOffsetHeight() - Math.round(($DOMWindowLoader.innerHeight())/2),'position':'absolute'}); 142 }else{ 143 $DOMWindowLoader.css({'left':'50%','top':'50%','position':'fixed'}); 144 } 145 146 }; 147 148 var fixedDOMWindow = function(){ 149 var $DOMWindow = $('#DOMWindow'); 150 $DOMWindow.css('left', settings.positionLeft + shortcut.scrollOffsetWidth()); 151 $DOMWindow.css('top', + settings.positionTop + shortcut.scrollOffsetHeight()); 152 }; 153 154 var showDOMWindow = function(instance){ 155 if(arguments[0]){ 156 $('.'+instance+' #DOMWindowLoader').remove(); 157 $('.'+instance+' #DOMWindowContent').fadeIn('fast',function(){if(settings.functionCallOnOpen){settings.functionCallOnOpen();}}); 158 $('.'+instance+ '.closeDOMWindow').click(function(){ 159 $.closeDOMWindow(); 160 return false; 161 }); 162 }else{ 163 $('#DOMWindowLoader').remove(); 164 $('#DOMWindow').fadeIn('fast',function(){if(settings.functionCallOnOpen){settings.functionCallOnOpen();}}); 165 $('#DOMWindow .closeDOMWindow').click(function(){ 166 $.closeDOMWindow(); 167 return false; 168 }); 169 } 170 171 }; 172 173 var urlQueryToObject = function(s){ 174 var query = {}; 175 s.replace(/b([^&=]*)=([^&=]*)b/g, function (m, a, d) { 176 if (typeof query[a] != 'undefined') { 177 query[a] += ',' + d; 178 } else { 179 query[a] = d; 180 } 181 }); 182 return query; 183 }; 184 185 //Run Routine /////////////////////////////////////////////////////////////////////////////////////////////////////////////// 186 var run = function(passingThis){ 187 188 //get values from element clicked, or assume its passed as an option 189 settings.windowSourceID = $(passingThis).attr('href') || settings.windowSourceID; 190 settings.windowSourceURL = $(passingThis).attr(settings.windowSourceAttrURL) || settings.windowSourceURL; 191 settings.windowBGImage = settings.windowBGImage ? 'background-image:url('+settings.windowBGImage+')' : ''; 192 var urlOnly, urlQueryObject; 193 194 if(settings.positionType == 'anchored'){//anchored DOM window 195 196 var anchoredPositions = $(settings.anchoredSelector).position(); 197 var anchoredPositionX = anchoredPositions.left + settings.positionLeft; 198 var anchoredPositionY = anchoredPositions.top + settings.positionTop; 199 200 $('body').append('<div class="'+settings.anchoredClassName+'" style="'+settings.windowBGImage+';background-repeat:no-repeat;padding:'+settings.windowPadding+'px;overflow:auto;position:absolute;top:'+anchoredPositionY+'px;left:'+anchoredPositionX+'px;height:'+settings.height+'px;width:'+settings.width+'px;background-color:'+settings.windowBGColor+';border:'+settings.borderSize+'px solid '+settings.borderColor+';z-index:10001"><div id="DOMWindowContent" style="display:none"></div></div>'); 201 //loader 202 if(settings.loader && settings.loaderImagePath !== ''){
203 $('.'+settings.anchoredClassName).append('<div id="DOMWindowLoader" style="width:'+settings.loaderWidth+'px;height:'+settings.loaderHeight+'px;"><img src="'+settings.loaderImagePath+'" /></div>'); 204 205 } 206 207 if($.fn.draggable){ 208 if(settings.draggable){$('.' + settings.anchoredClassName).draggable({cursor:'move'});} 209 } 210 211 switch(settings.windowSource){ 212 case 'inline'://////////////////////////////// inline ////////////////////////////////////////// 213 $('.' + settings.anchoredClassName+" #DOMWindowContent").append($(settings.windowSourceID).children()); 214 $('.' + settings.anchoredClassName).unload(function(){// move elements back when you're finished 215 $('.' + settings.windowSourceID).append( $('.' + settings.anchoredClassName+" #DOMWindowContent").children()); 216 }); 217 showDOMWindow(settings.anchoredClassName); 218 break; 219 case 'iframe'://////////////////////////////// iframe ////////////////////////////////////////// 220 $('.' + settings.anchoredClassName+" #DOMWindowContent").append('<iframe frameborder="0" hspace="0" wspace="0" src="'+settings.windowSourceURL+'" name="DOMWindowIframe'+Math.round(Math.random()*1000)+'" style="width:100%;height:100%;border:none;background-color:#fff;" class="'+settings.anchoredClassName+'Iframe" ></iframe>'); 221 $('.'+settings.anchoredClassName+'Iframe').load(showDOMWindow(settings.anchoredClassName)); 222 break; 223 case 'ajax'://////////////////////////////// ajax ////////////////////////////////////////// 224 if(settings.windowHTTPType == 'post'){ 225 226 if(settings.windowSourceURL.indexOf("?") !== -1){//has a query string 227 urlOnly = settings.windowSourceURL.substr(0, settings.windowSourceURL.indexOf("?")); 228 urlQueryObject = urlQueryToObject(settings.windowSourceURL); 229 }else{ 230 urlOnly = settings.windowSourceURL; 231 urlQueryObject = {}; 232 } 233 $('.' + settings.anchoredClassName+" #DOMWindowContent").load(urlOnly,urlQueryObject,function(){ 234 showDOMWindow(settings.anchoredClassName); 235 }); 236 }else{ 237 if(settings.windowSourceURL.indexOf("?") == -1){ //no query string, so add one 238 settings.windowSourceURL += '?'; 239 } 240 $('.' + settings.anchoredClassName+" #DOMWindowContent").load( 241 settings.windowSourceURL + '&random=' + (new Date().getTime()),function(){ 242 showDOMWindow(settings.anchoredClassName); 243 }); 244 } 245 break; 246 } 247 248 }else{//centered, fixed, absolute DOM window 249 250 //overlay & modal 251 if(settings.overlay){ 252 $('body').append('<div id="DOMWindowOverlay" style="z-index:10000;display:none;position:absolute;top:0;left:0;background-color:'+settings.overlayColor+';filter:alpha(opacity='+settings.overlayOpacity+');-moz-opacity: 0.'+settings.overlayOpacity+';opacity: 0.'+settings.overlayOpacity+';"></div>'); 253 if(shortcut.isIE6){//if IE 6 254 $('body').append('<iframe id="DOMWindowIE6FixIframe" src="blank.html" style="width:100%;height:100%;z-index:9999;position:absolute;top:0;left:0;filter:alpha(opacity=0);"></iframe>'); 255 sizeIE6Iframe(); 256 } 257 sizeOverlay(); 258 var $DOMWindowOverlay = $('#DOMWindowOverlay'); 259 $DOMWindowOverlay.fadeIn('fast'); 260 if(!settings.modal){$DOMWindowOverlay.click(function(){$.closeDOMWindow();});} 261 } 262 263 //loader 264 if(settings.loader && settings.loaderImagePath !== ''){ 265 $('body').append('<div id="DOMWindowLoader" style="z-index:10002;width:'+settings.loaderWidth+'px;height:'+settings.loaderHeight+'px;"><img src="'+settings.loaderImagePath+'" /></div>'); 266 centerLoader(); 267 } 268 269 //add DOMwindow 270 $('body').append('<div id="DOMWindow" style="background-repeat:no-repeat;'+settings.windowBGImage+';overflow:auto;padding:'+settings.windowPadding+'px;display:none;height:'+settings.height+'px;width:'+settings.width+'px;background-color:'+settings.windowBGColor+';border:'+settings.borderSize+'px solid '+settings.borderColor+'; position:absolute;z-index:10001"></div>'); 271 272 var $DOMWindow = $('#DOMWindow'); 273 //centered, absolute, or fixed 274 switch(settings.positionType){ 275 case 'centered': 276 centerDOMWindow(); 277 if(settings.height + 50 > shortcut.viewPortHeight()){//added 50 to be safe 278 $DOMWindow.css('top', (settings.fixedWindowY + shortcut.scrollOffsetHeight()) + 'px'); 279 } 280 break; 281 case 'absolute': 282 $DOMWindow.css({'top':(settings.positionTop+shortcut.scrollOffsetHeight())+'px','left':(settings.positionLeft+shortcut.scrollOffsetWidth())+'px'}); 283 if($.fn.draggable){ 284 if(settings.draggable){$DOMWindow.draggable({cursor:'move'});} 285 } 286 break; 287 case 'fixed': 288 fixedDOMWindow(); 289 break; 290 case 'anchoredSingleWindow': 291 var anchoredPositions = $(settings.anchoredSelector).position(); 292 var anchoredPositionX = anchoredPositions.left + settings.positionLeft; 293 var anchoredPositionY = anchoredPositions.top + settings.positionTop; 294 $DOMWindow.css({'top':anchoredPositionY + 'px','left':anchoredPositionX+'px'}); 295 296 break; 297 } 298 299 $(window).bind('scroll.DOMWindow',function(){ 300 if(settings.overlay){sizeOverlay();} 301 if(shortcut.isIE6){sizeIE6Iframe();} 302 if(settings.positionType == 'centered'){centerDOMWindow();} 303 if(settings.positionType == 'fixed'){fixedDOMWindow();} 304 }); 305 306 $(window).bind('resize.DOMWindow',function(){ 307 if(shortcut.isIE6){sizeIE6Iframe();} 308 if(settings.overlay){sizeOverlay();} 309 if(settings.positionType == 'centered'){centerDOMWindow();} 310 }); 311 312 switch(settings.windowSource){
313 case 'inline'://////////////////////////////// inline ////////////////////////////////////////// 314 $DOMWindow.append($(settings.windowSourceID).children()); 315 $DOMWindow.unload(function(){// move elements back when you're finished 316 $(settings.windowSourceID).append($DOMWindow.children()); 317 }); 318 showDOMWindow(); 319 break; 320 case 'iframe'://////////////////////////////// iframe ////////////////////////////////////////// 321 $DOMWindow.append('<iframe frameborder="0" hspace="0" wspace="0" src="'+settings.windowSourceURL+'" name="DOMWindowIframe'+Math.round(Math.random()*1000)+'" style="width:100%;height:100%;border:none;background-color:#fff;" id="DOMWindowIframe" ></iframe>'); 322 $('#DOMWindowIframe').load(showDOMWindow()); 323 break; 324 case 'ajax'://////////////////////////////// ajax ////////////////////////////////////////// 325 if(settings.windowHTTPType == 'post'){ 326 327 if(settings.windowSourceURL.indexOf("?") !== -1){//has a query string 328 urlOnly = settings.windowSourceURL.substr(0, settings.windowSourceURL.indexOf("?")); 329 urlQueryObject = urlQueryToObject(settings.windowSourceURL); 330 }else{ 331 urlOnly = settings.windowSourceURL; 332 urlQueryObject = {}; 333 } 334 $DOMWindow.load(urlOnly,urlQueryObject,function(){ 335 showDOMWindow(); 336 }); 337 }else{ 338 if(settings.windowSourceURL.indexOf("?") == -1){ //no query string, so add one 339 settings.windowSourceURL += '?'; 340 } 341 $DOMWindow.load( 342 settings.windowSourceURL + '&random=' + (new Date().getTime()),function(){ 343 showDOMWindow(); 344 }); 345 } 346 break; 347 } 348 349 }//end if anchored, or absolute, fixed, centered 350 351 };//end run() 352 353 if(settings.eventType){//if used with $(). 354 return this.each(function(index){ 355 $(this).bind(settings.eventType,function(){ 356 run(this); 357 return false; 358 }); 359 }); 360 }else{//else called as $.function 361 run(); 362 } 363 364 };//end function openDOMWindow 365 366 //allow for public call, pass settings 367 $.openDOMWindow = function(s){$.fn.openDOMWindow(s);}; 368 369})(jQuery); 370 371
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.