Initial OpenECOMP Portal commit
[portal.git] / ecomp-portal-BE / war / static / fusion / sample / js / utils.js
diff --git a/ecomp-portal-BE/war/static/fusion/sample/js/utils.js b/ecomp-portal-BE/war/static/fusion/sample/js/utils.js
new file mode 100644 (file)
index 0000000..d9be853
--- /dev/null
@@ -0,0 +1,252 @@
+/**
+ *
+ * Utilities
+ * Author: Stefan Petre www.eyecon.ro
+ * 
+ */
+(function($) {
+EYE.extend({
+       getPosition : function(e, forceIt)
+       {
+               var x = 0;
+               var y = 0;
+               var es = e.style;
+               var restoreStyles = false;
+               if (forceIt && jQuery.curCSS(e,'display') == 'none') {
+                       var oldVisibility = es.visibility;
+                       var oldPosition = es.position;
+                       restoreStyles = true;
+                       es.visibility = 'hidden';
+                       es.display = 'block';
+                       es.position = 'absolute';
+               }
+               var el = e;
+               if (el.getBoundingClientRect) { // IE
+                       var box = el.getBoundingClientRect();
+                       x = box.left + Math.max(document.documentElement.scrollLeft, document.body.scrollLeft) - 2;
+                       y = box.top + Math.max(document.documentElement.scrollTop, document.body.scrollTop) - 2;
+               } else {
+                       x = el.offsetLeft;
+                       y = el.offsetTop;
+                       el = el.offsetParent;
+                       if (e != el) {
+                               while (el) {
+                                       x += el.offsetLeft;
+                                       y += el.offsetTop;
+                                       el = el.offsetParent;
+                               }
+                       }
+                       if (jQuery.browser.safari && jQuery.curCSS(e, 'position') == 'absolute' ) {
+                               x -= document.body.offsetLeft;
+                               y -= document.body.offsetTop;
+                       }
+                       el = e.parentNode;
+                       while (el && el.tagName.toUpperCase() != 'BODY' && el.tagName.toUpperCase() != 'HTML') 
+                       {
+                               if (jQuery.curCSS(el, 'display') != 'inline') {
+                                       x -= el.scrollLeft;
+                                       y -= el.scrollTop;
+                               }
+                               el = el.parentNode;
+                       }
+               }
+               if (restoreStyles == true) {
+                       es.display = 'none';
+                       es.position = oldPosition;
+                       es.visibility = oldVisibility;
+               }
+               return {x:x, y:y};
+       },
+       getSize : function(e)
+       {
+               var w = parseInt(jQuery.curCSS(e,'width'), 10);
+               var h = parseInt(jQuery.curCSS(e,'height'), 10);
+               var wb = 0;
+               var hb = 0;
+               if (jQuery.curCSS(e, 'display') != 'none') {
+                       wb = e.offsetWidth;
+                       hb = e.offsetHeight;
+               } else {
+                       var es = e.style;
+                       var oldVisibility = es.visibility;
+                       var oldPosition = es.position;
+                       es.visibility = 'hidden';
+                       es.display = 'block';
+                       es.position = 'absolute';
+                       wb = e.offsetWidth;
+                       hb = e.offsetHeight;
+                       es.display = 'none';
+                       es.position = oldPosition;
+                       es.visibility = oldVisibility;
+               }
+               return {w:w, h:h, wb:wb, hb:hb};
+       },
+       getClient : function(e)
+       {
+               var h, w;
+               if (e) {
+                       w = e.clientWidth;
+                       h = e.clientHeight;
+               } else {
+                       var de = document.documentElement;
+                       w = window.innerWidth || self.innerWidth || (de&&de.clientWidth) || document.body.clientWidth;
+                       h = window.innerHeight || self.innerHeight || (de&&de.clientHeight) || document.body.clientHeight;
+               }
+               return {w:w,h:h};
+       },
+       getScroll : function (e)
+       {
+               var t=0, l=0, w=0, h=0, iw=0, ih=0;
+               if (e && e.nodeName.toLowerCase() != 'body') {
+                       t = e.scrollTop;
+                       l = e.scrollLeft;
+                       w = e.scrollWidth;
+                       h = e.scrollHeight;
+               } else  {
+                       if (document.documentElement) {
+                               t = document.documentElement.scrollTop;
+                               l = document.documentElement.scrollLeft;
+                               w = document.documentElement.scrollWidth;
+                               h = document.documentElement.scrollHeight;
+                       } else if (document.body) {
+                               t = document.body.scrollTop;
+                               l = document.body.scrollLeft;
+                               w = document.body.scrollWidth;
+                               h = document.body.scrollHeight;
+                       }
+                       if (typeof pageYOffset != 'undefined') {
+                               t = pageYOffset;
+                               l = pageXOffset;
+                       }
+                       iw = self.innerWidth||document.documentElement.clientWidth||document.body.clientWidth||0;
+                       ih = self.innerHeight||document.documentElement.clientHeight||document.body.clientHeight||0;
+               }
+               return { t: t, l: l, w: w, h: h, iw: iw, ih: ih };
+       },
+       getMargins : function(e, toInteger)
+       {
+               var t = jQuery.curCSS(e,'marginTop') || '';
+               var r = jQuery.curCSS(e,'marginRight') || '';
+               var b = jQuery.curCSS(e,'marginBottom') || '';
+               var l = jQuery.curCSS(e,'marginLeft') || '';
+               if (toInteger)
+                       return {
+                               t: parseInt(t, 10)||0,
+                               r: parseInt(r, 10)||0,
+                               b: parseInt(b, 10)||0,
+                               l: parseInt(l, 10)
+                       };
+               else
+                       return {t: t, r: r,     b: b, l: l};
+       },
+       getPadding : function(e, toInteger)
+       {
+               var t = jQuery.curCSS(e,'paddingTop') || '';
+               var r = jQuery.curCSS(e,'paddingRight') || '';
+               var b = jQuery.curCSS(e,'paddingBottom') || '';
+               var l = jQuery.curCSS(e,'paddingLeft') || '';
+               if (toInteger)
+                       return {
+                               t: parseInt(t, 10)||0,
+                               r: parseInt(r, 10)||0,
+                               b: parseInt(b, 10)||0,
+                               l: parseInt(l, 10)
+                       };
+               else
+                       return {t: t, r: r,     b: b, l: l};
+       },
+       getBorder : function(e, toInteger)
+       {
+               var t = jQuery.curCSS(e,'borderTopWidth') || '';
+               var r = jQuery.curCSS(e,'borderRightWidth') || '';
+               var b = jQuery.curCSS(e,'borderBottomWidth') || '';
+               var l = jQuery.curCSS(e,'borderLeftWidth') || '';
+               if (toInteger)
+                       return {
+                               t: parseInt(t, 10)||0,
+                               r: parseInt(r, 10)||0,
+                               b: parseInt(b, 10)||0,
+                               l: parseInt(l, 10)||0
+                       };
+               else
+                       return {t: t, r: r,     b: b, l: l};
+       },
+       traverseDOM : function(nodeEl, func)
+       {
+               func(nodeEl);
+               nodeEl = nodeEl.firstChild;
+               while(nodeEl){
+                       EYE.traverseDOM(nodeEl, func);
+                       nodeEl = nodeEl.nextSibling;
+               }
+       },
+       getInnerWidth :  function(el, scroll) {
+               var offsetW = el.offsetWidth;
+               return scroll ? Math.max(el.scrollWidth,offsetW) - offsetW + el.clientWidth:el.clientWidth;
+       },
+       getInnerHeight : function(el, scroll) {
+               var offsetH = el.offsetHeight;
+               return scroll ? Math.max(el.scrollHeight,offsetH) - offsetH + el.clientHeight:el.clientHeight;
+       },
+       getExtraWidth : function(el) {
+               if($.boxModel)
+                       return (parseInt($.curCSS(el, 'paddingLeft'))||0)
+                               + (parseInt($.curCSS(el, 'paddingRight'))||0)
+                               + (parseInt($.curCSS(el, 'borderLeftWidth'))||0)
+                               + (parseInt($.curCSS(el, 'borderRightWidth'))||0);
+               return 0;
+       },
+       getExtraHeight : function(el) {
+               if($.boxModel)
+                       return (parseInt($.curCSS(el, 'paddingTop'))||0)
+                               + (parseInt($.curCSS(el, 'paddingBottom'))||0)
+                               + (parseInt($.curCSS(el, 'borderTopWidth'))||0)
+                               + (parseInt($.curCSS(el, 'borderBottomWidth'))||0);
+               return 0;
+       },
+       isChildOf: function(parentEl, el, container) {
+               if (parentEl == el) {
+                       return true;
+               }
+               if (!el || !el.nodeType || el.nodeType != 1) {
+                       return false;
+               }
+               if (parentEl.contains && !$.browser.safari) {
+                       return parentEl.contains(el);
+               }
+               if ( parentEl.compareDocumentPosition ) {
+                       return !!(parentEl.compareDocumentPosition(el) & 16);
+               }
+               var prEl = el.parentNode;
+               while(prEl && prEl != container) {
+                       if (prEl == parentEl)
+                               return true;
+                       prEl = prEl.parentNode;
+               }
+               return false;
+       },
+       centerEl : function(el, axis)
+       {
+               var clientScroll = EYE.getScroll();
+               var size = EYE.getSize(el);
+               if (!axis || axis == 'vertically')
+                       $(el).css(
+                               {
+                                       top: clientScroll.t + ((Math.min(clientScroll.h,clientScroll.ih) - size.hb)/2) + 'px'
+                               }
+                       );
+               if (!axis || axis == 'horizontally')
+                       $(el).css(
+                               {
+                                       left: clientScroll.l + ((Math.min(clientScroll.w,clientScroll.iw) - size.wb)/2) + 'px'
+                               }
+                       );
+       }
+});
+if (!$.easing.easeout) {
+       $.easing.easeout = function(p, n, firstNum, delta, duration) {
+               return -delta * ((n=n/duration-1)*n*n*n - 1) + firstNum;
+       };
+}
+       
+})(jQuery);
\ No newline at end of file