GIF89a;
Direktori : /home/serb/www/ |
Current File : /home/serb/www/ns-window.js |
/** * * Author : MD. Sheik Mohideen K.H * * * */ ; (function ($, window, undefined) { $.nsWindow = { name: 'nsWindow', version: '1.0', window: null, options: null, bind: function (type, callback) { $(document).bind(type, callback); return this; }, unbind: function (type) { $(document).unbind(type); return this; }, open: function (options) { this.options = $.extend(true, { title: 'Untitled', top: 0, left: 0, width: 300, height: 300, useOverlay: true, animate: true, showControlBar: true, titleBarHeight: 0, closable: true, movable: false, resizable: false, overlay: { background: '#000', opacity: .60, zIndex: 1000, clickToClose: true, destroyOnClose: false }, dataUrl: null, data: null, theme: 'yellow', loadingMessage: 'Loading...' }, options); var opt = this.options, self = this; this.bind($.nsWindowEvent.onOpen, _openAndCloseHandler).bind($.nsWindowEvent.onClose, _openAndCloseHandler); var body = $(document.body); if (body.find('> .nswindowOverlay, > .nswindowContainer').length > 0) { body.find('> .nswindowOverlay, > .nswindowContainer').show(); this.window = $('.nswindowContainer #nswindow').get(0); } else { var pg = _createOverlay(opt, body); this.window = $('<div>').attr('id', 'nswindow').get(0); pg.append(this.window); } var t = ''; if (opt.showControlBar == true) { t = '<div id="ctrlbar" class="controlbar"><div class="title">' + opt.title + '</div>'; if (_isEmpty(opt.closable) || opt.closable == true) { t += '<a class="close" title="close" href="javascript:void(0)">Close</a>'; } t += '</div>'; } t += '<div id="nswindowContent"> </div>'; $(this.window).addClass(opt.theme).html(t); var w = parseInt($(this.window).css('width')), h = parseInt($(this.window).css('height')) // Get width & height from css. this.options.width = (_isEmpty(options.width) && w > 0) ? w : this.options.width; this.options.height = (_isEmpty(options.height) && h > 0) ? h : this.options.height; //alert(w); if (opt.showControlBar == true) { var ctrlbar = $('.controlbar', this.window); if (opt.titleBarHeight == 0) { opt.titleBarHeight = parseInt(ctrlbar.css('height')); } else { ctrlbar.css('height', opt.titleBarHeight + 'px'); } $('#nswindowContent', this.window).css('top', (opt.titleBarHeight + 1) + 'px'); $('.title', this.window).css({ marginTop: (opt.titleBarHeight / 2 - 8) + 'px' }) } $('.close', this.window).click(function () { self.close(); return false; }); _trigger($.nsWindowEvent.onOpen, this); return this; }, close: function (option) { var me = this; var o = $.extend({ delay: 0 }, option); if (o.delay > 0) { setTimeout(_t, o.delay); } else { _t(); } function _t() { _trigger($.nsWindowEvent.onClose, me); } }, showLoading: function (msg, clearContainer) { msg = _isEmpty(msg) ? this.options.loadingMessage : msg; clearContainer = _isEmpty(clearContainer) ? false : clearContainer; _showLoading(this.window, msg, clearContainer); } } //-------------------------------------------------------------------------------------// $.nsWindowEvent = { onOpen: $.nsWindow.name + 'OnOpen', onClose: $.nsWindow.name + 'OnClose' } //-------------------------------------------------------------------------------------// function _trigger(type, context) { $(document).trigger(jQuery.Event(type, { context: context, window: context.window, dataContainer: $('#nswindowContent', context.window).get(0), options: context.options })); } //-------------------------------------------------------------------------------------// function _createOverlay(opt, body) { var overlay = opt.overlay; if (opt.useOverlay == true) { $('<div>').addClass('nswindowOverlay').html(' ').css({ opacity: overlay.opacity, filter: 'alpha(opacity=' + (overlay.opacity * 100) + ')', background: overlay.background, zIndex: overlay.zIndex }).appendTo(body); } var pg = $('<div>'); if (overlay.clickToClose) { pg.click(function (event) { if (!event.isDefaultPrevented() && event.target == this) { $.nsWindow.close(); } }) } pg.addClass('nswindowContainer').css({ zIndex: overlay.zIndex + 10 }); body.append(pg); return pg; } //-------------------------------------------------------------------------------------// function _closeWindow(event) { var body = $(document.body); if (event.options.overlay.destroyOnClose) { body.find('.nswindowOverlay,.nswindowContainer').remove(); } else { $(event.window).removeAttr('style').removeAttr('class').html(''); body.find('.nswindowOverlay,.nswindowContainer').hide(); } } //-------------------------------------------------------------------------------------// function _showLoading(win, msg, clearContainer) { var w = $('#nswindowContent', win); $('.loader', win).remove(); if (clearContainer == true) { w.html('') } w.append('<div class="loader" align="center">' + msg + '</div>'); } //-------------------------------------------------------------------------------------// function _openAndCloseHandler(event) { if (typeof event != 'undefined' && event.isDefaultPrevented()) { return; } var opt = event.options, win = $(event.window); var tw = opt.width / 8, th = opt.height / 8; opt.left = opt.left == 0 ? $(window).width() / 2 - opt.width / 2 : opt.left; opt.top = opt.top == 0 ? $(window).height() / 2 - opt.height / 2 : opt.top; var css1 = { width: tw + 'px', height: th + 'px', left: (opt.left + tw * 3.5) + 'px', top: (opt.top + th * 3.5) + 'px', opacity: 0.0 }, css2 = { left: opt.left + 'px', top: opt.top + 'px', width: opt.width + 'px', height: opt.height + 'px', opacity: 1.0 } if (event.type == $.nsWindowEvent.onOpen) { if (opt.animate == true) { win.css(css1).stop().animate(css2, { duration: 300, easing: 'easeOutBack', complete: function (e) { _configWindow(event); } }); } else { win.css(css2); _configWindow(event); } } else { if (opt.animate == true) { win.stop().animate(css1, { duration: 300, easing: 'easeOutBack', complete: function () { opt.left = 0; opt.top = 0; _closeWindow(event); } }); } else { _closeWindow(event); } $.nsWindow.unbind($.nsWindowEvent.onOpen).unbind($.nsWindowEvent.onClose); } } //-------------------------------------------------------------------------------------// function _configWindow(event) { var opt = event.options, win = $(event.window); event.context.showLoading(opt.loadingMessage); /* if ($.browser.msie) { $(event.dataContainer).css({ width: (opt.width - 12) + 'px', height: (opt.height - opt.titleBarHeight - 7) + 'px' }) } */ if (opt.movable == true) { win.draggable({ handle: ".controlbar" }); } if (opt.resizable == true) { win.resizable(); } if (_isEmpty(opt.dataUrl)) { return; } $.ajax({ url: opt.dataUrl, dataType: 'html', cache: false, success: function (data) { event.dataContainer.innerHTML = data; } }) } //-------------------------------------------------------------------------------------// function _isEmpty(value) { return typeof value == 'undefined' || value == null || value == 'null' || $.trim(value) == '' } //-------------------------------------------------------------------------------------// function _log(msg) { //console.log(msg); } })(jQuery, window); /** * JQuery Easing Function * */ //-------------------------------------------------------------------------------------// jQuery.easing.jswing=jQuery.easing.swing;jQuery.extend(jQuery.easing,{def:"easeOutQuad",swing:function(e,f,a,h,g){return jQuery.easing[jQuery.easing.def](e,f,a,h,g)},easeInQuad:function(e,f,a,h,g){return h*(f/=g)*f+a},easeOutQuad:function(e,f,a,h,g){return -h*(f/=g)*(f-2)+a},easeInOutQuad:function(e,f,a,h,g){if((f/=g/2)<1){return h/2*f*f+a}return -h/2*((--f)*(f-2)-1)+a},easeInCubic:function(e,f,a,h,g){return h*(f/=g)*f*f+a},easeOutCubic:function(e,f,a,h,g){return h*((f=f/g-1)*f*f+1)+a},easeInOutCubic:function(e,f,a,h,g){if((f/=g/2)<1){return h/2*f*f*f+a}return h/2*((f-=2)*f*f+2)+a},easeInQuart:function(e,f,a,h,g){return h*(f/=g)*f*f*f+a},easeOutQuart:function(e,f,a,h,g){return -h*((f=f/g-1)*f*f*f-1)+a},easeInOutQuart:function(e,f,a,h,g){if((f/=g/2)<1){return h/2*f*f*f*f+a}return -h/2*((f-=2)*f*f*f-2)+a},easeInQuint:function(e,f,a,h,g){return h*(f/=g)*f*f*f*f+a},easeOutQuint:function(e,f,a,h,g){return h*((f=f/g-1)*f*f*f*f+1)+a},easeInOutQuint:function(e,f,a,h,g){if((f/=g/2)<1){return h/2*f*f*f*f*f+a}return h/2*((f-=2)*f*f*f*f+2)+a},easeInSine:function(e,f,a,h,g){return -h*Math.cos(f/g*(Math.PI/2))+h+a},easeOutSine:function(e,f,a,h,g){return h*Math.sin(f/g*(Math.PI/2))+a},easeInOutSine:function(e,f,a,h,g){return -h/2*(Math.cos(Math.PI*f/g)-1)+a},easeInExpo:function(e,f,a,h,g){return(f==0)?a:h*Math.pow(2,10*(f/g-1))+a},easeOutExpo:function(e,f,a,h,g){return(f==g)?a+h:h*(-Math.pow(2,-10*f/g)+1)+a},easeInOutExpo:function(e,f,a,h,g){if(f==0){return a}if(f==g){return a+h}if((f/=g/2)<1){return h/2*Math.pow(2,10*(f-1))+a}return h/2*(-Math.pow(2,-10*--f)+2)+a},easeInCirc:function(e,f,a,h,g){return -h*(Math.sqrt(1-(f/=g)*f)-1)+a},easeOutCirc:function(e,f,a,h,g){return h*Math.sqrt(1-(f=f/g-1)*f)+a},easeInOutCirc:function(e,f,a,h,g){if((f/=g/2)<1){return -h/2*(Math.sqrt(1-f*f)-1)+a}return h/2*(Math.sqrt(1-(f-=2)*f)+1)+a},easeInElastic:function(f,h,e,l,k){var i=1.70158;var j=0;var g=l;if(h==0){return e}if((h/=k)==1){return e+l}if(!j){j=k*0.3}if(g<Math.abs(l)){g=l;var i=j/4}else{var i=j/(2*Math.PI)*Math.asin(l/g)}return -(g*Math.pow(2,10*(h-=1))*Math.sin((h*k-i)*(2*Math.PI)/j))+e},easeOutElastic:function(f,h,e,l,k){var i=1.70158;var j=0;var g=l;if(h==0){return e}if((h/=k)==1){return e+l}if(!j){j=k*0.3}if(g<Math.abs(l)){g=l;var i=j/4}else{var i=j/(2*Math.PI)*Math.asin(l/g)}return g*Math.pow(2,-10*h)*Math.sin((h*k-i)*(2*Math.PI)/j)+l+e},easeInOutElastic:function(f,h,e,l,k){var i=1.70158;var j=0;var g=l;if(h==0){return e}if((h/=k/2)==2){return e+l}if(!j){j=k*(0.3*1.5)}if(g<Math.abs(l)){g=l;var i=j/4}else{var i=j/(2*Math.PI)*Math.asin(l/g)}if(h<1){return -0.5*(g*Math.pow(2,10*(h-=1))*Math.sin((h*k-i)*(2*Math.PI)/j))+e}return g*Math.pow(2,-10*(h-=1))*Math.sin((h*k-i)*(2*Math.PI)/j)*0.5+l+e},easeInBack:function(e,f,a,i,h,g){if(g==undefined){g=1.70158}return i*(f/=h)*f*((g+1)*f-g)+a},easeOutBack:function(e,f,a,i,h,g){if(g==undefined){g=1.70158}return i*((f=f/h-1)*f*((g+1)*f+g)+1)+a},easeInOutBack:function(e,f,a,i,h,g){if(g==undefined){g=1.70158}if((f/=h/2)<1){return i/2*(f*f*(((g*=(1.525))+1)*f-g))+a}return i/2*((f-=2)*f*(((g*=(1.525))+1)*f+g)+2)+a},easeInBounce:function(e,f,a,h,g){return h-jQuery.easing.easeOutBounce(e,g-f,0,h,g)+a},easeOutBounce:function(e,f,a,h,g){if((f/=g)<(1/2.75)){return h*(7.5625*f*f)+a}else{if(f<(2/2.75)){return h*(7.5625*(f-=(1.5/2.75))*f+0.75)+a}else{if(f<(2.5/2.75)){return h*(7.5625*(f-=(2.25/2.75))*f+0.9375)+a}else{return h*(7.5625*(f-=(2.625/2.75))*f+0.984375)+a}}}},easeInOutBounce:function(e,f,a,h,g){if(f<g/2){return jQuery.easing.easeInBounce(e,f*2,0,h,g)*0.5+a}return jQuery.easing.easeOutBounce(e,f*2-g,0,h,g)*0.5+h*0.5+a}}); //-------------------------------------------------------------------------------------//