UNPKG

ns-components-angular

Version:

Angular Wrapper Components for NSComponents

1 lines 71.9 kB
export declare const NSTabNavigatorCode = "var nsModuleExport = function(root,name,prototype)\r\n\t{\r\n\t\tif(typeof exports === 'object' && typeof module === 'object')\r\n\t\t{\r\n\t\t\tmodule.exports[name] = prototype;\r\n\t\t}\r\n\t\telse if (typeof define === \"function\" && define.amd)\r\n\t\t{\r\n\t\t\tdefine(name,[], function () {return prototype;});\r\n\t\t}\r\n\t\telse if(typeof exports === 'object')\r\n\t\t{\r\n\t\t\texports[name] = prototype;\r\n\t\t}\r\n\t\telse\r\n\t\t{\r\n\t\t\troot[name] = prototype;\r\n\t\t}\r\n\t};var nsIsWeb = function(root)\r\n\t{\r\n\t\tif(typeof exports === 'object' && typeof module === 'object')\r\n\t\t{\r\n\t\t\treturn false;\r\n\t\t}\r\n\t\telse if (typeof define === \"function\" && define.amd)\r\n\t\t{\r\n\t\t\treturn false;\r\n\t\t}\r\n\t\telse if(typeof exports === 'object')\r\n\t\t{\r\n\t\t\treturn false;\r\n\t\t}\r\n\t\telse\r\n\t\t{\r\n\t\t\treturn true;\r\n\t\t}\r\n\t};if(!nsIsWeb())\r\n\t\t{\r\nvar nsutilRef = require('./nsUtil.min.js');\r\nvar NSUtil = nsutilRef.NSUtil;\r\nvar nscontainerbaseRef = require('./nsContainerBase.min.js');\r\nvar nsExtendPrototype = nscontainerbaseRef.nsExtendPrototype;\r\nvar NSContainerBase = nscontainerbaseRef.NSContainerBase;\r\n\r\n\t\t}\r\n\"use strict\";\r\nvar NSCarousel = (function()\r\n{\r\n\tfunction NSCarousel(setting) \r\n\t{\r\n\t\tvar config = null;\r\n\t\tvar self = this;\r\n\t\tvar util = null;\r\n\t\t\r\n\t\tvar win = null;\r\n\t\tvar doc = null;\r\n\t\tvar deviceSupport = null;\r\n\t\tvar objSetUp = {};\r\n\t\tvar events = {};\r\n\t\t\r\n\t\t\r\n var initialize = function()\r\n \t{\r\n \t\tutil = new NSUtil();\r\n \t\tvar obj = util.getDomVariables();\r\n \t\twin = obj.win;\r\n \t\tdoc = obj.doc;\r\n \t\tdeviceSupport = util.getSupportedEvents();\r\n \t\tif(!setting)\r\n \t\t{\r\n \t\t\tsetting = {};\r\n \t\t}\r\n \t\tconfig = {\r\n \t\t\t\tcontext: setting[\"context\"] || win,\r\n \t\t\t\telement: setting[\"element\"],\r\n \t\t\t\tstartSlide: parseInt(setting[\"startSlide\"], 10) || 0,\r\n \t\t\t\tvisibleSlides: parseInt(setting[\"visibleSlides\"], 10) || 1,\r\n \t\t\t\tenableTouch: util.isUndefinedOrNull(setting[\"enableTouch\"]) ? true : Boolean.parse(setting[\"enableTouch\"]),\r\n \t\t\t\tenableVertical: Boolean.parse(setting[\"enableVertical\"]),\r\n \t\t\t\tenableAutoPlay: Boolean.parse(setting[\"enableAutoPlay\"]),\r\n \t\t\t\t// values between 0 and 1, where 1 means you have to drag to the center of the slide (a value of 1 equals the ios behaviour)\r\n \t\t\t\tminDistanceBeforeSlide: setting[\"minDistanceBeforeSlide\"] || 0.5, \r\n \t\t\t\tinterval: setting[\"interval\"] || 300,\r\n \t\t\t\tallowedSwipeTime: setting[\"allowedSwipeTime\"] || 300,// maximum time allowed to travel that distance\r\n \t\t\t\tthreshold: setting[\"threshold\"] || 0,//required min distance traveled to be considered swipe\r\n \t\t\t\tspaceBetween: util.isUndefinedOrNull(setting[\"spaceBetween\"]) ? 0 : setting[\"spaceBetween\"],\r\n \t\t\t\tpostionBuffer: util.isUndefinedOrNull(setting[\"postionBuffer\"]) ? 0 : setting[\"postionBuffer\"],\t\t\r\n \t\t\t\tanimationType: setting[\"animationType\"] || 'ease-out',\r\n \t\t\t\tenableTouchResistance: util.isUndefinedOrNull(setting[\"enableTouchResistance\"]) ? true : Boolean.parse(setting[\"enableTouchResistance\"]),\r\n \t\t\t\ttouchResistanceRatio:setting[\"touchResistanceRatio\"] || 0.85,\r\n \t\t\t\tenablePageNavigation: Boolean.parse(setting[\"enablePageNavigation\"]),\r\n \t\t\t\tenableDirectionNavigation: Boolean.parse(setting[\"enableDirectionNavigation\"]),\r\n \t\t\t\tdirectionNavigation : setting[\"directionNavigation\"] || {previous: null,next: null},\r\n \t\t\t\tenable3DAnimation: Boolean.parse(setting[\"enable3DAnimation\"]),\r\n \t\t\t\tbeforeSlideCallback: (setting[\"beforeSlideCallback\"] ? util.getFunction(setting[\"beforeSlideCallback\"]) : null),\r\n \t\t\t\tafterSlideCallback: (setting[\"afterSlideCallback\"] ? util.getFunction(setting[\"afterSlideCallback\"]) : null),\r\n \t\t\t\tpageRendererCallback: (setting[\"pageRendererCallback\"] ? util.getFunction(setting[\"pageRendererCallback\"]) : null),\r\n \t\t\t\tpreviousRendererCallback: (setting[\"previousRendererCallback\"] ? util.getFunction(setting[\"previousRendererCallback\"]) : null),\r\n \t\t\t\tnextRendererCallback: (setting[\"nextRendererCallback\"] ? util.getFunction(setting[\"nextRendererCallback\"]) : null)\r\n \t\t};\r\n \t\tif(!config.element)\r\n \t\t{\r\n \t\t\tutil.throwNSError(\"NSCarousel\",\"Element in setting is missing\");\r\n \t\t}\r\n \t\tif(!setting.customClass)\r\n \t\t{\r\n \t\t\tsetting.customClass = {};\r\n \t\t}\r\n \t\tconfig.customClass = {container:setting.customClass[\"container\"],previous:setting.customClass[\"previous\"],next:setting.customClass[\"next\"],page:setting.customClass[\"page\"],pageActive:setting.customClass[\"pageActive\"]};\r\n\r\n \t\tcreateComp();\r\n \t};\r\n \t\r\n \tvar createComp = function()\r\n \t{\r\n \t\tif(!objSetUp.container)\r\n \t\t{\r\n \t\t\tobjSetUp.container = util.createDiv(null,\"nsCarousel\");\r\n \t\t\tapplyCustomClass(objSetUp.container,\"container\");\r\n \t\t\tvar parentElement = config.element.parentElement;\r\n \t\t\tparentElement.insertBefore(objSetUp.container,config.element);\r\n \t\t\tobjSetUp.container.appendChild(config.element);\r\n \t\t\tutil.addStyleClass(config.element,\"nsCarouselSlideContainer\");\r\n \t\t\t//container.style.visibility = \"hidden\";\r\n \t\t\tsetUp();\r\n \t\t\taddEventListeners();\r\n \t\t\tcreatePageNavigation();\r\n \t\t\tcreateDirectionNavigation();\r\n \t\t\tsetActivePage();\r\n \t\t\tstartAutoPlay();\r\n \t\t\t/*if (config.enableContinuous) \r\n \t\t\t{\r\n \t\t\t\tmoveSlide(getSlideDesiredIndex(config.startSlide - 1), (-1 * objSetUp.containerWidth), 0);\r\n \t\t\t\tmoveSlide(getSlideDesiredIndex(config.startSlide + 1), objSetUp.containerWidth, 0);\r\n \t\t\t}*/\r\n \t\t\t//container.style.visibility = \"visible\";\r\n \t\t}\r\n \t};\r\n \t\r\n \tvar setUp = function()\r\n \t{\r\n \t\tsetUpVars();\r\n\t\t\t//config.element.style[objSetUp.dimensionName] = (objSetUp.dimension * objSetUp.numPages) + \"px\";\r\n\t\t\tsetUpSlides();\r\n\t\t\tevents = { start: deviceSupport.touch ? 'touchstart' : deviceSupport.pointerEvents ? 'pointerdown' : 'mousedown',\r\n\t \t\t\tmove: deviceSupport.touch ? 'touchmove' : deviceSupport.pointerEvents ? 'pointermove' : 'mousemove',\r\n\t \t\t\tend: deviceSupport.touch ? 'touchend touchcancel touchleave' : deviceSupport.pointerEvents ? 'pointerup pointerout pointerleave pointercancel' : 'mouseup mouseout mouseleave',\r\n\t\t\t \t };\r\n\t\t\tutil.addStyleClass(objSetUp.container,\"nsCarousel\" + (objSetUp.isVertical ? \"Vertical\" : \"Horizontal\"));\r\n \t};\r\n \t\r\n \tvar setUpVars = function()\r\n \t{\r\n \t\tobjSetUp.isVertical = config.enableVertical;\r\n \t\tobjSetUp.slides = config.element.children;\r\n \t\tobjSetUp.numPages = Math.ceil(objSetUp.slides.length / config.visibleSlides);\r\n \t\tobjSetUp.previousPage = null;\r\n \t\tobjSetUp.currentPage = getSlideDesiredIndex(config.startSlide);\r\n \t\tobjSetUp.dimensionName = objSetUp.isVertical ? \"height\" : \"width\";\r\n \t\tobjSetUp.dimension = objSetUp.container.getBoundingClientRect()[objSetUp.dimensionName];\r\n \t\tvar padding = 0;\r\n \t\tif(objSetUp.isVertical)\r\n \t\t{\r\n \t\t\tpadding = parseInt(util.getStyleValue(objSetUp.container,'padding-top',true),10) + parseInt(util.getStyleValue(objSetUp.container,'padding-bottom',true),10);\r\n \t\t}\r\n \t\telse\r\n \t\t{\r\n \t\t\tpadding = parseInt(util.getStyleValue(objSetUp.container,'padding-left',true),10) + parseInt(util.getStyleValue(objSetUp.container,'padding-right',true),10);\r\n \t\t}\r\n \t\tobjSetUp.dimension = objSetUp.dimension - padding;\r\n \t\tobjSetUp.padding = padding;\r\n \t\tobjSetUp.marginName = objSetUp.isVertical ? \"Bottom\" : \"Right\";\r\n \t\tobjSetUp.minDistanceBeforeSlide = config.minDistanceBeforeSlide * (objSetUp.dimension / 2);\r\n \t\tvar spaceBetween = config.spaceBetween;\r\n \t\tif (typeof spaceBetween === 'string' && spaceBetween.indexOf('%') >= 0) \r\n \t\t{\r\n \t\t\tspaceBetween = (parseFloat(spaceBetween.replace('%', '')) / 100) * objSetUp.dimension;\r\n \t\t}\r\n \t\tobjSetUp.spaceBetween = spaceBetween;\r\n \t\tobjSetUp.snapGrid = [];\r\n \t\tobjSetUp.slidesGrid = [];\r\n \t\tobjSetUp.touch = {};\r\n \t\tobjSetUp.isAnimating = false;\r\n \t};\r\n \t\r\n \tvar setUpSlides = function()\r\n \t{\r\n \t\tvar index = 0;\r\n \t\tvar slidePosition = 0;\r\n \t\tvar length = objSetUp.slides.length;\r\n \t while(length--) \r\n \t {\r\n \t \tvar slide = objSetUp.slides[length];\r\n \t \tutil.addStyleClass(slide,\"nsCarouselSlide\");\r\n \t \tvar slideSize = (objSetUp.dimension - ((config.visibleSlides - 1) * objSetUp.spaceBetween)) / config.visibleSlides;\r\n \t \tslide.style[objSetUp.dimensionName] = slideSize + \"px\";\r\n \t \tobjSetUp.slideSize = slideSize;\r\n \t \tslide.style[\"margin\" + objSetUp.marginName] = objSetUp.spaceBetween + \"px\";\r\n \t \tslide.setAttribute(\"data-ns-index\", length);\r\n \t \tif (index % config.visibleSlides === 0) \r\n \t \t{ \r\n \t \t\tobjSetUp.snapGrid.push(slidePosition); \r\n \t \t}\r\n \t \tobjSetUp.slidesGrid.push(slidePosition);\r\n \t slidePosition = slidePosition + slideSize + objSetUp.spaceBetween;\r\n \t \t//move(0,0);\r\n \t \tindex++;\r\n \t }\r\n \t};\r\n \t\r\n \tvar addEventListeners = function()\r\n \t{\r\n \t\tif(config.enableTouch)\r\n \t\t{\r\n \t\t\tutil.addEvent(config.element,events.start,startHandler);\r\n \t\t//util.addEvent(config.element,events.move,moveHandler);\r\n \t\t//util.addEvent(config.element,events.end,endHandler);\r\n \t\t}\r\n \t\tutil.addEvent(config.context,\"resize\",resize);\r\n \t};\r\n \t\r\n \tvar startHandler = function(event)\r\n \t{\r\n \t\tevent = util.getEvent(event);\r\n \t\tobjSetUp.touch.isTouchEvent = (event.type === 'touchstart');\r\n \t if ((!objSetUp.touch.isTouchEvent && 'which' in event && event.which === 3) ||\r\n \t \t\t(objSetUp.touch.isTouchEvent && 'button' in event && event.button > 0)) \r\n \t { \r\n \t \treturn; \r\n \t }\r\n \t util.addEvent(config.element,events.move,moveHandler);\r\n \t\tutil.addEvent(config.element,events.end,endHandler);\r\n \t\tobjSetUp.touch.start = getCoord(event);\r\n \t\tobjSetUp.touch.touchStartTime = new Date().getTime();\r\n \t\tdelete objSetUp.isScroll;\r\n \t\tif(!deviceSupport.touch)\r\n \t\t{\r\n \t\t\tevent.preventDefault();\r\n \t\t}\r\n \t};\r\n \t\r\n \tvar moveHandler = function(event)\r\n \t{\r\n \t\tif(objSetUp.touch.start)\r\n \t\t{\r\n \t\t\tevent = util.getEvent(event);\r\n \t\t\tevent.preventDefault();\r\n \t\t\tobjSetUp.touch.end = getCoord(event);\r\n \t\t var diffX = objSetUp.touch.end.x - objSetUp.touch.start.x;\r\n \t var diffY = objSetUp.touch.end.y - objSetUp.touch.start.y;\r\n \t var diff = objSetUp.isVertical ? diffY : diffX;\r\n \t objSetUp.touch.diff = diff;\r\n \t var swipeDirection = diff > 0 ? 'prev' : 'next';\r\n \t var prop = objSetUp.isVertical ? \"y\" : \"x\";\r\n \t objSetUp.touch.startTranslate = getTranslate(config.element,prop);\r\n \t objSetUp.touch.currentTranslate = diff + objSetUp.touch.startTranslate;\r\n \t console.log( objSetUp.touch.startTranslate + \" == \" + objSetUp.touch.currentTranslate);\r\n \t var disableParentSwiper = true;\r\n \t if ((diff > 0 && objSetUp.touch.currentTranslate > minTranslate())) \r\n \t {\r\n \t disableParentSwiper = false;\r\n \t if (config.enableTouchResistance) \r\n \t { \r\n \t \tobjSetUp.touch.currentTranslate = (minTranslate() - 1) + (Math.pow((-1 * minTranslate() + objSetUp.touch.startTranslate + diff), config.touchResistanceRatio)); \r\n \t }\r\n \t } \r\n \t else if (diff < 0 && objSetUp.touch.currentTranslate < maxTranslate()) \r\n \t {\r\n \t disableParentSwiper = false;\r\n \t if (config.enableTouchResistance) \r\n \t {\r\n \t \tobjSetUp.touch.currentTranslate = (maxTranslate() + 1) + (Math.pow((maxTranslate() - objSetUp.touch.startTranslate - diff), config.touchResistanceRatio));\r\n \t }\r\n \t }\r\n \t console.log( objSetUp.touch.startTranslate + \" == \" + objSetUp.touch.currentTranslate);\r\n \t if (disableParentSwiper) \r\n \t {\r\n \t event.preventedByNestedSwiper = true;\r\n \t }\r\n \t if (config.threshold > 0) \r\n \t {\r\n \t if (Math.abs(diff) > config.threshold) \r\n \t {\r\n \t \tobjSetUp.touch.start = objSetUp.touch.end;\r\n \t objSetUp.touch.currentTranslate = objSetUp.touch.startTranslate;\r\n \t diffX = objSetUp.touch.end.x - objSetUp.touch.start.x;\r\n \t diffY = objSetUp.touch.end.y - objSetUp.touch.start.y;\r\n \t diff = objSetUp.isVertical ? diffY : diffX;\r\n \t objSetUp.touch.diff = diff;\r\n \t return;\r\n \t }\r\n \t else \r\n \t {\r\n \t \tobjSetUp.touch.currentTranslate = objSetUp.touch.startTranslate;\r\n \t \t return;\r\n \t }\r\n \t }\r\n \t setTranslate(config.element,objSetUp.touch.currentTranslate,true);\r\n \t\t}\r\n \t};\r\n \t\r\n \tvar endHandler = function(event)\r\n \t{\r\n \t\tevent = util.getEvent(event);\r\n \t\tutil.removeEvent(config.element,events.move,moveHandler);\r\n \t\tutil.removeEvent(config.element,events.end,endHandler);\r\n \t\tif (!objSetUp.isScroll) \r\n \t\t{\r\n \t\t\tvar stopIndex = 0;\r\n \t\t var groupSize = objSetUp.slideSize;\r\n \t\t var currentPos = objSetUp.currentPos;\r\n \t\t for (var i = 0; i < objSetUp.slidesGrid.length; i += config.visibleSlides) \r\n \t\t {\r\n \t\t \tif (typeof objSetUp.slidesGrid[i + config.visibleSlides] !== 'undefined') \r\n \t\t \t{\r\n \t\t \t\tif (currentPos >= objSetUp.slidesGrid[i] && currentPos < objSetUp.slidesGrid[i + config.visibleSlides]) \r\n \t\t \t\t{\r\n \t\t \t\t\tstopIndex = i;\r\n \t\t \t\t\tgroupSize = objSetUp.slidesGrid[i + config.visibleSlides] - objSetUp.slidesGrid[i];\r\n \t\t \t\t}\r\n \t\t \t} \r\n \t\t \telse if (currentPos >= objSetUp.slidesGrid[i]) \r\n \t\t \t{\r\n \t\t \t\tstopIndex = i;\r\n \t\t \t\tgroupSize = objSetUp.slidesGrid[objSetUp.slidesGrid.length - 1] - objSetUp.slidesGrid[objSetUp.slidesGrid.length - 2];\r\n \t\t \t}\r\n \t\t }\r\n \t\t var pageIndex = Math.floor(stopIndex / config.visibleSlides);\r\n \t var elapsedTime = new Date().getTime() - objSetUp.touch.touchStartTime;\r\n \t if(elapsedTime <= config.allowedSwipeTime)\r\n \t {\r\n \t \tif(Math.abs(objSetUp.touch.diff) >= config.threshold)\r\n \t \t{\r\n \t \t\tobjSetUp.touch.swipeDirection = objSetUp.touch.diff < 0 ? 'next' : (objSetUp.touch.diff > 0 ? 'prev' : 'reset') ;\r\n \t \t\tif(objSetUp.touch.swipeDirection === 'next') \r\n \t \t\t {\r\n \t \t\t \tsetPage(pageIndex + 1);\r\n \t \t\t }\r\n \t \t\t else if (objSetUp.touch.swipeDirection === 'prev') \r\n \t \t\t {\r\n \t \t\t \tsetPage(pageIndex - 1);\r\n \t \t\t }\r\n \t \t\t else\r\n \t \t\t {\r\n \t \t\t \tsetPage(pageIndex);\r\n \t \t\t }\r\n \t \t}\r\n \t }\r\n \t\t \r\n \t\t}\r\n \t\tobjSetUp.touch = {};\r\n \t\tevent.preventDefault();\r\n \t};\r\n \t\r\n \tvar setTranslate = function(element,translate,isTouch)\r\n \t{\r\n \t\tvar animationStyle = getAnimationStyle(translate,isTouch);\r\n \t var transforms = \"\";\r\n \t\tfor (var key in animationStyle)\r\n \t\t{\r\n \t\t\ttransforms += key + '(' + animationStyle[key] + ') ';\r\n \t\t}\r\n \t var elStyle = element.style;\r\n \t elStyle.webkitTransform = transforms;\r\n \t elStyle.transform = transforms;\r\n \t};\r\n \t\r\n \tvar minTranslate = function() \r\n \t{\r\n \t return (-1 * objSetUp.snapGrid[0]);\r\n \t};\r\n\r\n \tvar maxTranslate = function() \r\n \t{\r\n \t return (-1 * objSetUp.snapGrid[objSetUp.snapGrid.length - 1]);\r\n \t};\r\n \t\r\n \tvar getCoord = function(event) \r\n \t{\r\n \t var eve = deviceSupport.touch ? (event.targetTouches[0] || event.changedTouches[0]) : event;\r\n \t return {x: eve.pageX,y: eve.pageY };\r\n \t};\r\n \t \r\n \tvar getDistance = function(isVertical) \r\n \t{\r\n \t var prop = isVertical ? \"y\" : \"x\";\r\n \t var retValue = 0;\r\n \t try \r\n \t { \r\n \t \tretValue = objSetUp.touch.end[prop] - objSetUp.touch.start[prop];\r\n \t } \r\n \t catch(error) \r\n \t {\r\n \t \treturn 0;\r\n \t }\r\n \t return retValue;\r\n \t};\r\n \t\r\n \tvar move = function(distance,duration,callback) \r\n \t{\r\n \t\tvar callBackWrapper = function()\r\n \t\t{\r\n \t\t\tif(callback)\r\n \t\t\t{\r\n \t\t\t\tcallback();\r\n \t\t\t}\r\n \t\t\tif(config.afterSlideCallback)\r\n \t\t\t{\r\n \t\t\t\tconfig.afterSlideCallback(objSetUp.currentPage,objSetUp.previousPage);\r\n \t\t\t}\r\n \t\t};\r\n \t\tvar isTouch = (objSetUp.touch && objSetUp.touch.isTouchEvent);\r\n \t\tvar animationStyle = getAnimationStyle(null,isTouch);\r\n \t\t//animate(config.element,animationStyle,{ duration: config.interval, easing:config.animationType,complete: callback });\r\n \t\tanimate(config.element,animationStyle,config.interval,config.animationType,callBackWrapper);\r\n \t};\r\n \t\r\n \tvar animate = function(element,properties,duration,ease,callback)\r\n \t{\r\n \t\tvar objTemp = {};\r\n \t\tfunction setDuration(duration) \r\n \t\t{\r\n \t\t if (typeof duration !== 'string') \r\n \t\t {\r\n \t\t \tduration = duration + \"ms\";\r\n \t\t }\r\n \t\t var elStyle = element.style;\r\n \t\t \telStyle.webkitTransitionDuration = duration;\r\n \t\t \telStyle.transitionDuration = duration;\r\n \t\t};\r\n \t\t\r\n \t\tfunction setTransform(transform)\r\n \t\t{\r\n \t\t\t var elStyle = element.style;\r\n \t\t elStyle.webkitTransform = transform;\r\n \t\t elStyle.transform = transform;\r\n \t\t};\r\n \t\t\r\n \t\tfunction transitionEnd()\r\n \t\t{\r\n \t\t\tobjTemp.isAnimating = false;\r\n\t\t\t\tsetDuration(0);\r\n\t\t\t\tif(callback)\r\n\t\t\t\t{\r\n\t\t\t\t\tcallback();\r\n\t\t\t\t}\r\n \t\t};\r\n \t\t\r\n \t\tfunction callLater()\r\n \t\t{\r\n \t\t\tif(objTemp.transitionEnd)\r\n \t\t\t{\r\n \t\t\t\tutil.dispatchEvent(element,\"transitionend\");\r\n \t\t\t\tutil.dispatchEvent(element,\"webkitTransitionEnd\");\r\n \t\t\t\t/*var event = new Event('transitionend');\r\n \t element.dispatchEvent(event);\r\n \t event = new Event('webkitTransitionEnd');\r\n \t element.dispatchEvent(event);*/\r\n \t\t\t}\r\n \t\t};\r\n \t\t\r\n \t\tsetDuration(duration);\r\n\t \tvar transforms = \"\";\r\n \t\tfor (var key in properties)\r\n \t\t{\r\n \t\t\ttransforms += key + '(' + properties[key] + ') ';\r\n \t\t}\r\n \t\tsetTransform(transforms);\r\n \t\t//transitionStart(runCallbacks, direction);\r\n \t\tif (!objTemp.isAnimating) \r\n \t\t{\r\n \t\t\tobjTemp.isAnimating = true;\r\n \t\t\tif(!objTemp.transitionEnd)\r\n \t\t{\r\n \t\t\tobjTemp.transitionEnd = function(event)\r\n \t\t{\r\n \t\t\t\tevent = util.getEvent(event);\r\n \t\t\t\tif (event.target !== element) \r\n \t\t\t\t{ \r\n \t\t\t\t\treturn; \r\n \t\t\t\t}\r\n \t\t\t\tutil.removeEvent(element,\"transitionend\",objTemp.transitionEnd);\r\n \t\t\t\tutil.removeEvent(element,\"webkitTransitionEnd\",objTemp.transitionEnd);\r\n \t\t\t\tobjTemp.transitionEnd = null;\r\n \t\t delete objTemp.transitionEnd;\r\n \t\t transitionEnd();\r\n \t\t};\r\n \t\t}\r\n \t\t\tutil.addEvent(element,\"transitionend\",objTemp.transitionEnd);\r\n \t\t\tutil.addEvent(element,\"webkitTransitionEnd\",objTemp.transitionEnd);\r\n \t\t\tsetTimeout(function(){\r\n \t\t\t\tcallLater();\r\n \t\t\t},duration + 100);\r\n \t\t}\r\n \t};\r\n \t\r\n \t//from zepto.js\r\n \t/*var animate = function(element,properties,duration,ease,callback)\r\n \t{\r\n \t\tif(typeof duration == \"object\")\r\n \t\t{\r\n \t\t\tease = duration.easing;\r\n \t\t\tcallback = duration.complete;\r\n \t\t\tduration = duration.duration;\r\n \t\t}\r\n\t\t\tif (duration === undefined) \r\n\t\t\t{\r\n\t\t\t\tduration = 0.4;\r\n\t\t\t}\r\n\t\t\tvar cssValues = {};\r\n\t\t\tif (typeof properties == \"string\") \r\n\t\t\t{\r\n// \t\t\t\tcssValues[animationName] = properties\r\n// \t\t\t cssValues[animationDuration] = duration + 's'\r\n// \t\t\t cssValues[animationTiming] = (ease || 'linear')\r\n// \t\t\t endEvent = $.fx.animationEnd\r\n\t\t\t}\r\n\t\t\telse\r\n\t\t\t{\r\n\t\t\t\tvar supportedTransforms = /^((translate|rotate|scale)(X|Y|Z|3d)?|matrix(3d)?|perspective|skew(X|Y)?)$/i;\r\n \t \tvar transforms = \"\";\r\n \t \tvar cssProperties = [];\r\n \t\tfor (var key in properties)\r\n \t\t{\r\n \t\t\tif(supportedTransforms.test(key))\r\n \t\t\t{\r\n \t\t\t\ttransforms += key + '(' + properties[key] + ') ';\r\n \t\t\t}\r\n \t\t else \r\n \t\t {\r\n \t\t \tcssValues[key] = properties[key];\r\n \t\t \tcssProperties.push(dasherize(key));\r\n \t\t }\r\n \t\t}\r\n \t\tif(transforms)\r\n \t\t{\r\n \t\t\t cssValues[\"transform\"] = transforms;\r\n \t\t\t cssProperties.push(\"transform\");\r\n \t\t}\r\n \t\tif (duration > 0 && typeof properties === 'object') \r\n \t\t{\r\n \t cssValues[\"transition-property\"] = cssProperties.join(', ');\r\n \t cssValues[\"transition-duration\"] = duration + 's';\r\n \t cssValues[\"transition-timing-function\"] = (ease || 'linear');\r\n \t }\r\n\t\t\t}\r\n \t\t\t\r\n \t\telement.clientLeft;\r\n \t\tutil.css(element,cssValues);\r\n \t};*/\r\n \t\r\n \tvar dasherize = function(str) \r\n \t{\r\n \t\treturn str.toLowerCase()(str.replace(/([a-z])([A-Z])/, '$1-$2'));\r\n \t};\r\n \t\r\n \tvar getAnimationStyle = function(position,isTouch) \r\n \t{\r\n \t\tif(util.isUndefinedOrNull(position))\r\n \t\t{\r\n \t\t\tvar index = objSetUp.currentPage;\r\n \t if (index >= objSetUp.snapGrid.length) \r\n \t { \r\n \t \tindex = snapGrid.length - 1; \r\n \t }\r\n \t //for some reason the currentPos is of by 15px\r\n \t objSetUp.currentPos = objSetUp.snapGrid[index] + 15 + config.postionBuffer;\r\n \t position = -1 * objSetUp.currentPos;\r\n \t\t}\r\n \t\telse\r\n \t\t{\r\n \t\t\t//objSetUp.currentPos = position;\r\n \t\t}\r\n \t\tposition = position + \"px\";\r\n \t\t//var position = -1 * objSetUp.currentPage * objSetUp.dimension + distance + \"px\";\r\n \t var props = {};\r\n \t if (config.enable3DAnimation) \r\n \t {\r\n \t \tprops[\"translate3d\"] = (objSetUp.isVertical ? \"0,\" + position : position + \",0\") + \",0\";\r\n \t } \r\n \t else \r\n \t {\r\n \t \tprops [objSetUp.isVertical ? \"translateY\" : \"translateX\"] = position;\r\n \t }\r\n \t return props;\r\n \t};\r\n \t\r\n \tvar getTranslate = function(element,axis)\r\n \t{\r\n \t\tif(!axis)\r\n \t\t{\r\n \t\t\t axis = \"x\";\r\n \t\t}\r\n \t\tvar matrix;\r\n \t var curTransform;\r\n \t var transformMatrix;\r\n\r\n \t var curStyle = win.getComputedStyle(element, null);\r\n \t if (win.WebKitCSSMatrix) \r\n \t {\r\n \t curTransform = curStyle.transform || curStyle.webkitTransform;\r\n \t if(curTransform.split(',').length > 6) \r\n \t {\r\n \t curTransform = curTransform.split(', ').map(function (a) { return a.replace(',', '.'); }).join(', ');\r\n \t }\r\n \t transformMatrix = new win.WebKitCSSMatrix(curTransform === 'none' ? '' : curTransform);\r\n \t } \r\n \t else \r\n \t {\r\n \t transformMatrix = curStyle.MozTransform || curStyle.OTransform || curStyle.MsTransform || curStyle.msTransform || curStyle.transform || curStyle.getPropertyValue('transform').replace('translate(', 'matrix(1, 0, 0, 1,');\r\n \t matrix = transformMatrix.toString().split(',');\r\n \t }\r\n \t if (axis === 'x') \r\n \t {\r\n \t if (win.WebKitCSSMatrix) \r\n \t { \r\n \t \tcurTransform = transformMatrix.m41; \r\n \t }\r\n \t // IE10 Matrix\r\n \t else if (matrix.length === 16) \r\n \t { \r\n \t \tcurTransform = parseFloat(matrix[12]); \r\n \t }\r\n \t // Normal Browsers\r\n \t else \r\n \t { \r\n \t \tcurTransform = parseFloat(matrix[4]); \r\n \t }\r\n \t }\r\n \t else if (axis === 'y') \r\n \t {\r\n \t if (win.WebKitCSSMatrix) \r\n \t { \r\n \t \tcurTransform = transformMatrix.m42; \r\n \t }\r\n \t // IE10 Matrix\r\n \t else if (matrix.length === 16) \r\n \t { \r\n \t \tcurTransform = parseFloat(matrix[13]); \r\n \t }\r\n \t // Normal Browsers\r\n \t else \r\n \t { \r\n \t \tcurTransform = parseFloat(matrix[5]); \r\n \t }\r\n \t }\r\n \t return curTransform || 0;\r\n \t};\r\n \t\r\n \tvar getSlideDesiredIndex = function(index)\r\n \t{\r\n \t\tvar retIndex = Math.max(Math.min(index,objSetUp.numPages - 1), 0);//(objSetUp.slides.length + (index % objSetUp.slides.length)) % objSetUp.slides.length;\r\n \t\treturn retIndex;\r\n \t};\r\n \t\r\n \tvar getResistanceDistance = function(distance)\r\n \t{\r\n \t\tif (isFirst() && distance > 0 || isLast() && distance < 0) \r\n \t\t{\r\n \t\t\tdistance /= (1 + Math.abs(distance) / objSetUp.dimension);\r\n \t\t}\r\n \t\treturn distance;\r\n \t};\r\n \t\r\n \tvar createPageNavigation = function()\r\n \t{\r\n \t\tif(config.enablePageNavigation)\r\n \t\t{\r\n \t\t\tvar divPagination = util.createDiv(null,\"nsCarouselPageCon\");\r\n \t\t\tvar length = objSetUp.snapGrid.length;\r\n \t\t\tvar html = \"\";\r\n \t\t\tfor (var count = 0; count < length; count++) \r\n \t\t\t{\r\n\t\t\t if (config.pageRendererCallback) \r\n\t\t\t {\r\n\t\t\t \t html += config.pageRendererCallback(count);\r\n\t\t\t } \r\n\t\t\t else \r\n\t\t\t {\r\n\t\t\t \t html += \"<span class=\\\"nsCarouselPage\\\"></span>\";\r\n\t\t\t }\r\n \t\t\t}\r\n \t\t\tdivPagination.innerHTML = html;\r\n \t\t\tvar pages = divPagination.querySelectorAll(\"span\");\r\n \t\t\tobjSetUp.pages = pages;\r\n \t\t\tvar cssClass= \"nsCarouselPage\" + (objSetUp.isVertical ? \"Vertical\" : \"Horizontal\");\r\n \t\t\tfor (var count = 0; count < pages.length; count++) \r\n \t\t\t{\r\n \t\t\t\tvar page = pages[count];\r\n \t\t\t\tapplyCustomClass(page,\"page\");\r\n \t\t\t\tutil.addStyleClass(page,cssClass);\r\n \t\t\t\tpage.setAttribute(\"data-ns-index\",count);\r\n \t\t\t\tutil.addEvent(page,\"click\",pageClickHandler.bind(null,count));\r\n \t\t\t}\r\n \t\t\tobjSetUp.container.appendChild(divPagination);\r\n \t\t}\r\n \t};\r\n \t\r\n \tvar setActivePage = function()\r\n \t{\r\n \t\tif(objSetUp.pages && objSetUp.pages.length > 0)\r\n \t\t{\r\n \t\t\tvar pages = objSetUp.pages;\r\n \t\t\tvar cssClass = \"nsCarouselPageActive\";\r\n \t\t\tif(config.customClass[\"pageActive\"])\r\n \t\t\t{\r\n \t\t\t\tcssClass = config.customClass[\"pageActive\"];\r\n \t\t\t}\r\n \t\tfor (var count = 0; count < pages.length; count++) \r\n \t\t\t{\r\n \t\t\tvar page = pages[count];\r\n \t\t\t\tutil.removeStyleClass(page,cssClass);\r\n \t\t\t};\r\n \t\t\tutil.addStyleClass(pages[objSetUp.currentPage],cssClass);\r\n \t\t}\r\n \t};\r\n \t\r\n \tvar pageClickHandler = function(index,event)\r\n \t{\r\n \t\tevent = util.getEvent(event);\r\n \t\tsetPage(index);\r\n \t\tevent.stopPropagation();\r\n \t\tevent.stopImmediatePropagation();\r\n \t};\r\n \t\r\n \tvar createDirectionNavigation = function()\r\n \t{\r\n \t\tif(config.enableDirectionNavigation)\r\n \t\t{\r\n \t\t\tif(!config.directionNavigation)\r\n \t\t\t{\r\n \t\t\t\tconfig.directionNavigation = {};\r\n \t\t\t}\r\n \t\t\tif(!config.directionNavigation.previous)\r\n \t\t\t{\r\n \t\t\t\tvar divLeftCon = util.createDiv(null,\"nsCarouselButtonCon nsCarouselPrevCon\");\r\n \t\t\t\tif(config.previousRendererCallback) \r\n\t\t\t {\r\n \t\t\t\t\tvar html = config.previousRendererCallback();\r\n \t\t\t\t\tdivLeftCon.innerHTML = html;\r\n\t\t\t }\r\n \t\t\t\telse\r\n \t\t\t\t{\r\n \t\t\t\t\tvar spanLeft = util.createElement(\"span\",null,\"nsCarouselButtonNav nsCarouselPrev\");\r\n \t\t\t\tdivLeftCon.appendChild(spanLeft);\r\n \t\t\t\t}\r\n \t\t\t\tutil.addStyleClass(divLeftCon.children[0],\"nsCarouselButton nsCarouselButtonPrev\");\r\n \t\t\t\tobjSetUp.container.appendChild(divLeftCon);\r\n \t\t\t\tconfig.directionNavigation.previous = divLeftCon;\r\n \t\t\t}\r\n \t\t\tif(!config.directionNavigation.next)\r\n \t\t\t{\r\n \t\t\t\tvar divRightCon = util.createDiv(null,\"nsCarouselButtonCon nsCarouselNextCon\");\r\n \t\t\t\tif(config.nextRendererCallback) \r\n\t\t\t {\r\n \t\t\t\t\tvar html = config.nextRendererCallback();\r\n \t\t\t\t\tdivRightCon.innerHTML = html;\r\n\t\t\t }\r\n \t\t\t\telse\r\n \t\t\t\t{\r\n \t\t\t\t\tvar spanRight = util.createElement(\"span\",null,\"nsCarouselButtonNav nsCarouselNext\");\r\n \t\t\t\tdivRightCon.appendChild(spanRight);\r\n \t\t\t\t}\r\n \t\t\t\tutil.addStyleClass(divRightCon.children[0],\"nsCarouselButton nsCarouselButtonNext\");\r\n \t\t\t\tobjSetUp.container.appendChild(divRightCon);\r\n \t\t\t\tconfig.directionNavigation.next = divRightCon;\r\n \t\t\t}\r\n \t\t\tapplyCustomClass(config.directionNavigation.previous,\"previous\");\r\n \t\t\tapplyCustomClass(config.directionNavigation.next,\"next\");\r\n \t\t\tutil.addEvent(config.directionNavigation.previous,\"click\",prev);\r\n \t\t\tutil.addEvent(config.directionNavigation.next,\"click\",next);\r\n \t\t}\r\n \t};\r\n \t\r\n \tvar applyCustomClass = function(element,type)\r\n \t{\r\n \t\tif(element && type && config.customClass[type])\r\n \t\t{\r\n \t\t\tutil.addStyleClass(element,config.customClass[type]);\r\n \t\t}\r\n \t};\r\n \t\r\n \tvar startAutoPlay = function()\r\n \t{\r\n \t\tif(config.enableAutoPlay)\r\n \t\t{\r\n \t\t\tstopAutoPlay();\r\n \t \tvar func = isLast() ? first : next;\r\n \t \tobjSetUp.timeOutInterval = setTimeout(func,config.interval); \r\n \t\t}\r\n \t};\r\n \t\r\n \tvar stopAutoPlay = function()\r\n \t{\r\n \t\tif(objSetUp.timeOutInterval)\r\n \t\t{\r\n \t\t\tclearTimeout(objSetUp.timeOutInterval);\r\n \t objSetUp.timeOutInterval = null;\r\n \t\t}\r\n \t};\r\n \t\r\n \tvar setPage = function(index)\r\n \t{\r\n \t\tindex = util.isUndefinedOrNull(index) ? 0 : index;\r\n \t\tstopAutoPlay();\r\n \t\tvar newPage = validPage(index);\r\n \t\tif (objSetUp.currentPage != newPage) \r\n \t\t{\r\n \t\t\tif(config.beforeSlideCallback)\r\n \t\t\t{\r\n \t\t\t\tconfig.beforeSlideCallback(objSetUp.currentPage,newPage);\r\n \t\t\t}\r\n \t\t\tobjSetUp.previousPage = objSetUp.currentPage;\r\n \t\t\tobjSetUp.currentPage = newPage;\r\n \t\t}\r\n \t\tmove(0,config.interval,startAutoPlay);\r\n \t\tsetActivePage();\r\n \t};\r\n \t\r\n \tvar first = function()\r\n \t{ \r\n \t\tsetPage(0);\r\n \t};\r\n \t\r\n \tvar next = function()\r\n \t{ \r\n \t\tsetPage(objSetUp.currentPage + 1);\r\n \t};\r\n \t\r\n \tvar prev = function()\r\n \t{ \r\n \t\tsetPage(objSetUp.currentPage - 1);\r\n \t};\r\n \t\r\n \tvar last = function()\r\n \t{ \r\n \t\tsetPage(objSetUp.numPages - 1);\r\n \t};\r\n \t\r\n \tvar isFirst = function()\r\n \t{ \r\n \t\tif(objSetUp.currentPage == 0)\r\n \t\t{\r\n \t\t\treturn true;\r\n \t\t}\r\n \t\treturn false;\r\n \t};\r\n \t\r\n \tvar isLast = function()\r\n \t{ \r\n \t\tif(objSetUp.currentPage == objSetUp.numPages - 1)\r\n \t\t{\r\n \t\t\treturn true;\r\n \t\t}\r\n \t\treturn false;\r\n \t};\r\n \t\r\n \tvar validPage = function(index)\r\n \t{ \r\n \t\treturn Math.max(Math.min(index,objSetUp.numPages - 1), 0);\r\n \t};\r\n \t\r\n \tvar visibleSlides = function()\r\n \t{\r\n \t return objSetUp.slides.slice(objSetUp.currentPage, objSetUp.currentPage + config.visibleSlides);\r\n \t};\r\n \t\r\n \tvar resize = function()\r\n \t{\r\n \t\tsetUp();\r\n \t};\r\n \t\r\n \t\r\n \tinitialize();\r\n \t\r\n \tself.startAutoPlay = startAutoPlay;\r\n \tself.stopAutoPlay = stopAutoPlay;\r\n \tself.setPage = setPage;\r\n \tself.first = first;\r\n \tself.next = next;\r\n \tself.prev = prev;\r\n \tself.last = last;\r\n \tself.isFirst = isFirst;\r\n \tself.isLast = isLast;\r\n \tself.validPage = validPage;\r\n \tself.visibleSlides = visibleSlides;\r\n \tself.resize = resize;\r\n \t\r\n\t};\r\n\t\r\n\treturn NSCarousel;\r\n})();\r\nnsModuleExport(this,\"NSCarousel\",NSCarousel);\"use strict\";\r\nvar NSScrollAnimator = (function()\r\n{\r\n\tfunction NSScrollAnimator(config) \r\n\t{\r\n\t\tvar self = this;\r\n\t\tvar setting = {};\r\n\t\t\r\n\t\tvar util = null;\r\n\t\tvar stopScroll = false;\r\n\t\tvar start = 0;\r\n\t\tvar startTime = 0;\r\n\t\tvar destinationOffsetToScroll = 0;\r\n\t\tvar animationFunction = {};\r\n\t\tvar props = {};\r\n\t\tvar propItem = {};\r\n\t\tvar interval = null;\r\n\t\t\r\n\t\tvar initialize = function()\r\n\t\t{\r\n\t\t\tif(!config)\r\n\t\t\t{\r\n\t\t\t\tconfig = {};\r\n\t\t\t}\r\n\t\t\tutil = new NSUtil();\r\n\t\t\tinitAnimationFunc();\r\n\t\t\tsetting = {\r\n\t\t\t\telement: config[\"element\"] || window,\r\n\t\t\t\tdirection: config[\"direction\"] || \"vertical\",\r\n\t\t\t\tduration: !util.isUndefinedOrNull(config[\"duration\"]) ? parseInt(config[\"duration\"]) : 500,\r\n\t\t\t\teasing: config[\"easing\"] || \"easeInOutQuad\",\r\n\t\t\t\tcallback: config[\"callback\"] || null,\r\n\t\t\t};\r\n\t\t\tif(setting.element === window)\r\n\t\t\t{\r\n\t\t\t\tsetting.refElement = document.documentElement;\r\n\t\t\t}\r\n\t\t\telse \r\n\t\t\t{\r\n\t\t\t\tsetting.refElement = setting.element;\r\n\t\t\t}\r\n\t\t\tprops = { vertical:{scroll: \"scrollTop\", scrollSize: \"scrollHeight\",client: \"clientHeight\",offset: \"offsetHeight\",inner: \"innerHeight\",offsetPos: \"offsetTop\",},\r\n\t\t\t\t\t horizontal:{scroll: \"scrollLeft\", scrollSize: \"scrollWidth\",client: \"clientWidth\",offset: \"offsetWidth\",inner: \"innerWidth\",offsetPos: \"offsetLeft\",}\r\n\t\t\t};\r\n\t\t\tpropItem = props[setting.direction];\r\n\t\t};\r\n\t\t\r\n\t\tvar scrollTo = function(newPos)\r\n\t\t{\r\n\t\t\tif(!util.isUndefinedOrNull(newPos))\r\n\t\t\t{\r\n\t\t\t\tstart = setting.refElement[propItem.scroll];\r\n\t\t\t\tstartTime = 'now' in window.performance ? performance.now() : new Date().getTime();\r\n\t\t\t\tvar outerSize = Math.max(setting.refElement[propItem.scrollSize], setting.refElement[propItem.offset], setting.refElement[propItem.offset]);\r\n\t\t\t\tvar innerSize = setting.refElement[propItem.inner] || setting.refElement[propItem.offset];\r\n\t\t\t\tvar destinationOffset = typeof newPos === 'number' ? newPos : newPos[propItem.offsetPos];\r\n\t\t\t\tdestinationOffsetToScroll = Math.round(outerSize - destinationOffset < innerSize ? outerSize - innerSize : destinationOffset);\r\n\t\t\t\tanimateScroll();\r\n\t\t\t}\r\n\t\t};\r\n\t\t\r\n\t\tvar getMaxScrollPos = function()\r\n\t\t{\r\n\t\t\treturn setting.refElement[propItem.scrollSize] - setting.refElement[propItem.client];\r\n\t\t};\r\n\t\t\r\n\t\tvar getScrollPos = function()\r\n\t\t{\r\n\t\t\treturn setting.refElement[propItem.scroll];\r\n\t\t};\r\n\t\t\r\n\t\tvar stop = function()\r\n\t\t{\r\n\t\t\tstopScroll = true;\r\n\t\t};\r\n\t\t\r\n\t\tvar animateScroll = function() \r\n\t\t{\r\n if (!stopScroll) \r\n {\r\n \t var now = 'now' in window.performance ? performance.now() : new Date().getTime();\r\n \t var time = Math.min(1, ((now - startTime) / setting.duration));\r\n \t var timeFunction = animationFunction[setting.easing](time);\r\n \t var val = Math.ceil((timeFunction * (destinationOffsetToScroll - start)) + start);\r\n setting.refElement[propItem.scroll] = val;\r\n if (setting.refElement[propItem.scroll] === destinationOffsetToScroll) \r\n {\r\n \t if(setting.callback)\r\n {\r\n \t setting.callback();\r\n }\r\n \t return;\r\n }\r\n interval = util.getRequestAnimationFrame.bind(window)(animateScroll);\r\n }\r\n else\r\n {\r\n \t util.getCancelAnimationFrame.bind(window)(interval);\r\n \t setting.refElement[propItem.scroll] = destinationOffsetToScroll;\r\n \t if(setting.callback)\r\n \t {\r\n \t\t setting.callback();\r\n \t }\r\n }\r\n };\r\n \r\n var initAnimationFunc = function()\r\n {\r\n \t animationFunction = {\r\n\t\t\t\t linear: function(t) {\r\n\t\t\t\t return t;\r\n\t\t\t\t },\r\n\t\t\t\t easeInQuad: function(t) {\r\n\t\t\t\t return t * t;\r\n\t\t\t\t },\r\n\t\t\t\t easeOutQuad: function(t) {\r\n\t\t\t\t return t * (2 - t);\r\n\t\t\t\t },\r\n\t\t\t\t easeInOutQuad: function(t) {\r\n\t\t\t\t return t < 0.5 ? 2 * t * t : -1 + (4 - 2 * t) * t;\r\n\t\t\t\t },\r\n\t\t\t\t easeInCubic: function(t) {\r\n\t\t\t\t return t * t * t;\r\n\t\t\t\t },\r\n\t\t\t\t easeOutCubic: function(t) {\r\n\t\t\t\t return (--t) * t * t + 1;\r\n\t\t\t\t },\r\n\t\t\t\t easeInOutCubic: function(t) {\r\n\t\t\t\t return t < 0.5 ? 4 * t * t * t : (t - 1) * (2 * t - 2) * (2 * t - 2) + 1;\r\n\t\t\t\t },\r\n\t\t\t\t easeInQuart: function(t) {\r\n\t\t\t\t return t * t * t * t;\r\n\t\t\t\t },\r\n\t\t\t\t easeOutQuart: function(t) {\r\n\t\t\t\t return 1 - (--t) * t * t * t;\r\n\t\t\t\t },\r\n\t\t\t\t easeInOutQuart: function(t) {\r\n\t\t\t\t return t < 0.5 ? 8 * t * t * t * t : 1 - 8 * (--t) * t * t * t;\r\n\t\t\t\t },\r\n\t\t\t\t easeInQuint: function(t) {\r\n\t\t\t\t return t * t * t * t * t;\r\n\t\t\t\t },\r\n\t\t\t\t easeOutQuint: function(t) {\r\n\t\t\t\t return 1 + (--t) * t * t * t * t;\r\n\t\t\t\t },\r\n\t\t\t\t easeInOutQuint: function(t) {\r\n\t\t\t\t return t < 0.5 ? 16 * t * t * t * t * t : 1 + 16 * (--t) * t * t * t * t;\r\n\t\t\t\t }\r\n\t\t\t};\r\n\r\n };\r\n \r\n self.scrollTo = scrollTo;\r\n self.getScrollPos = getScrollPos;\r\n self.getMaxScrollPos = getMaxScrollPos;\r\n self.stop = stop;\r\n\t\t\r\n\t\tinitialize();\r\n\t};\r\n\treturn NSScrollAnimator;\r\n})();\r\nnsModuleExport(this,\"NSScrollAnimator\",NSScrollAnimator);var NSTabNavigator = (function()\r\n{\r\n\tfunction NSTabNavigator(component,setting) \r\n\t{\r\n\t\tthis.__setting = setting;\r\n\t\tthis.__config = null;\r\n\t\t\r\n\t\tthis.__animationType = {fade:{css:\"nsAnimateOpacity\"},\r\n\t\t\t\t\t\t\t\tleft:{css:\"nsAnimateLeft\"},\r\n\t\t\t\t\t\t\t\tright:{css:\"nsAnimateRight\"},\r\n\t\t\t\t\t\t\t\ttop:{css:\"nsAnimateTop\"},\r\n\t\t\t\t\t\t\t\tbottom:{css:\"nsAnimateBottom\"},\r\n\t\t\t\t\t\t\t\tzoom:{css:\"nsAnimateZoom\"},\r\n\t\t\t\t\t\t\t\tslide:{css:\"nsAnimateSlide\",init:function(tabNav){\r\n\t\t\t\t\t\t\t\t\tif(!tabNav.carousel)\r\n\t\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\t\tif(tabNav.__config.contentParent != this.__doc)\r\n\t\t\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\t\t\tvar setting = {element:tabNav.__config.contentParent,enableTouch: false,enable3DAnimation: false,\r\n\t\t\t\t\t\t\t\t\t\t\t\t\tenableDirectionNavigation: false,enablePageNavigation: false,postionBuffer:0};\r\n\t\t\t\t\t\t\t\t\t\t\tvar carousel = new NSCarousel(setting);\r\n\t\t\t\t\t\t\t\t\t\t\ttabNav.carousel = carousel;\r\n\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t\telse\r\n\t\t\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\t\t\ttabNav.util.warning(\"NSTabNavigator\",\"Slide Animation cannot be applied on document.\");\r\n\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t},setIndex: function(tabNav,index,item){\r\n\t\t\t\t\t\t\t\t\tif(tabNav.carousel)\r\n\t\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\t\ttabNav.carousel.setPage(index);\r\n\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t};\r\n\t\tthis.__isVertical = false;\r\n\t\tthis.__navInterval = null;\r\n\t\tthis.__overflowIsAnimating = false;\r\n\t\tthis.__overFlowScrollPos = 0;\r\n\t\tthis.__compIndicator = null;\r\n\t\tthis.__animationItem = null;\r\n\t\tthis.__objBrowser = null;\r\n\t\t\r\n\t\tthis.base.__setBaseComponent.call(this,component,true);\r\n\t};\r\n\tnsExtendPrototype(NSContainerBase,NSTabNavigator);\r\n\tNSTabNavigator.prototype.constructor = NSTabNavigator;\r\n\t\r\n\tNSTabNavigator.prototype.reRender = function()\r\n\t{\r\n\t\tthis.__resizeHandler();\r\n\t};\r\n\t\r\n\tNSTabNavigator.prototype.initializeComponent = function() \r\n\t{\r\n\t\tthis.base.initializeComponent.call(this);\r\n\t\tthis.__setSetting();\r\n\t};\r\n\t\r\n\tNSTabNavigator.prototype.setComponentProperties = function() \r\n\t{\r\n\t\tthis.base.setComponentProperties.call(this);\r\n\t\tthis.__objBrowser = this.util.getBrowser();\r\n\t\tthis.__initTabs();\r\n\t};\r\n\t\r\n\tNSTabNavigator.prototype.propertyChange = function(attrName, oldVal, newVal, setProperty)\r\n\t{\r\n\t\tvar attributeName = attrName.toLowerCase();\r\n\t\tthis.base.propertyChange.call(this,attrName, oldVal, newVal, setProperty);\r\n\t};\r\n\t\r\n\tNSTabNavigator.prototype.componentResized = function(event) \r\n\t{\r\n\t\tthis.base.componentResized(event);\r\n\t};\r\n\t\r\n\tNSTabNavigator.prototype.removeComponent = function() \r\n\t{\r\n\t\tthis.base.removeComponent.call(this);\r\n\t};\r\n\t\r\n\tNSTabNavigator.prototype.renderAddedComponents = function() \r\n\t{\r\n\t\t//assuming ContentSelector as Unique key here\r\n\t\tif(this.__config.arrObjTabs && this.__config.arrObjTabs.length) {\r\n\t\t\tvar objTabs = this.__config.arrObjTabs.reduce(function(obj, item, index) {\r\n\t\t\t\t obj[item.contentSelector] = {item: item, index: index, found: false};\r\n\t\t\t\t return obj;\r\n\t\t\t}, {});\r\n\t\t\tvar arrTabs = this.__config.tabContainer.querySelectorAll(this.__config.tabParentElement);\r\n\t\t\tfor(var count = 0;count < arrTabs.length;count++)\r\n\t\t\t{\r\n\t\t\t\tvar objTab = this.__getTabObject(arrTabs[count]);\r\n\t\t\t\tif(objTab)\r\n\t\t\t\t{\r\n\t\t\t\t\t//exists\r\n\t\t\t\t\tif(objTabs[objTab.contentSelector]) {\r\n\t\t\t\t\t\tobjTabs[objTab.contentSelector].found = true;\r\n\t\t\t\t\t}\r\n\t\t\t\t\t//not exists\r\n\t\t\t\t\telse {\r\n\t\t\t\t\t\tthis.__config.arrObjTabs.push(objTab);\r\n\t\t\t\t\t\tthis.__initTab(objTab);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\tvar contentSelector = null;\r\n\t\t\tfor (contentSelector in objTabs) {\r\n\t\t\t if (objTabs.hasOwnProperty(contentSelector) && !objTabs[contentSelector].found) {\r\n\t\t\t \tthis.__config.arrObjTabs.splice(objTabs[contentSelector].index,1);\r\n\t\t\t }\r\n\t\t\t}\r\n\t\t}\r\n\t\t//this.__setDefault();\r\n\t\tthis.__resizeHandler();\r\n\t};\r\n\t\r\n\tNSTabNavigator.prototype.__setSetting = function()\r\n\t{\r\n\t\tvar setting = this.__setting;\r\n\t\tif(!setting)\r\n\t\t{\r\n\t\t\tsetting = {};\r\n\t\t}\r\n\t\tthis.__config = {\r\n\t\t\tcontext: setting[\"context\"] || this.__win,\r\n\t\t\tenableCreateTabs: Boolean.parse(setting[\"enableCreateTabs\"]),\r\n\t\t\tarrTabs: setting[\"arrTabs\"],\r\n\t\t\ttabParentElement: (this.util.isUndefined(setting[\"tabParentElement\"])) ? \"li\" : setting[\"tabParentElement\"],\r\n\t\t\ttabElement: setting[\"tabElement\"] || \"a\",\r\n\t\t\ttabAttribute: setting[\"tabAttribute\"] || \"href\",\r\n\t\t\tcontentParent: this.util.isUndefinedOrNull(setting[\"contentParent\"]) ? this.__doc : this.util.getElement(setting[\"contentParent\"]),\r\n\t\t\tevent: setting[\"event\"] || \"click\",\r\n\t\t\ttabTemplateCallback: setting[\"tabTemplateCallback\"],\r\n\t\t\tenableHashChange: Boolean.parse(setting[\"enableHashChange\"]),\r\n\t\t\tenableClose: Boolean.parse(setting[\"enableClose\"]),\r\n\t\t\tenableAnimation: Boolean.parse(setting[\"enableAnimation\"]),\r\n\t\t\tanimationType: setting[\"animationType\"] || \"Fade\",\r\n\t\t\tenableOverflow: this.util.isUndefinedOrNull(setting[\"enableOverflow\"]) ? true : Boolean.parse(setting[\"enableOverflow\"]),\r\n\t\t\textraLeftButtons:setting[\"extraLeftButtons\"],\r\n\t\t\textraRightButtons:setting[\"extraRightButtons\"],\r\n\t\t\toverflowScrollDistance: setting[\"overflowScrollDistance\"] || 300,\r\n\t\t\toverflowScrollDuration: setting[\"overflowScrollDuration\"] || 300,\r\n\t\t\tenableIndicator: this.util.isUndefinedOrNull(setting[\"enableIndicator\"]) ? true : Boolean.parse(setting[\"enableIndicator\"]),\r\n\t\t};\r\n\t};\r\n\t\r\n\tNSTabNavigator.prototype.__initTabs = function()\r\n\t{\r\n\t\tthis.__config.arrObjTabs = [];\r\n\t\tif(this.__config.contentParent != this.__doc)\r\n\t\t{\r\n\t\t\tthis.util.addStyleClass(this.__config.contentParent,\"nsTabContentParent\");\r\n\t\t\tthis.__applyTheme(this.__config.contentParent,\"nsTabContentParent\");\r\n\t\t}\r\n\t\tthis.__config.tabContainer = this.__baseComponent;\r\n\t\tif(this.__config.enableCreateTabs)\r\n\t\t{\r\n\t\t\tif(this.__config.arrTabs && this.__config.arrTabs.length > 0)\r\n\t\t\t{\r\n\t\t\t\tthis.__createTabs();\r\n\t\t\t}\r\n\t\t\telse\r\n\t\t\t{\r\n\t\t\t\tthis.util.throwNSError(\"NSTabNavigator\",\"arrTabs property is blank for creating Dynamic Tabs.\");\r\n\t\t\t}\r\n\t\t}\r\n\t\tvar parentElement = this.__config.tabContainer.parentElement;\r\n\t\tvar divParentParentParent = this.util.createDiv(this.getID() + \"ParentParentParent\",\"nsTabNavigatorParentParentParent\");\r\n\t\tvar divParentParent = this.util.createDiv(this.getID() + \"ParentParent\",\"nsTabNavigatorParentParent\");\r\n\t\tvar divParent = this.util.createDiv(this.getID() + \"Parent\",\"nsTabNavigatorParent\");\r\n\t\tdivParentParent.appendChild(divParent);\r\n\t\tdivParentParentParent.appendChild(divParentParent);\r\n\t\tparentElement.insertBefore(divParentParentParent,this.__config.tabContainer);\r\n\t\tdivParent.appendChild(this.__config.tabContainer);\r\n\t\tthis.__config.tabContainerParent = divParent;\r\n\t\tthis.__config.tabContainerParentParent = divParentParent;\r\n\t\tthis.__config.tabContainerParentParentParent = divParentParentParent;\r\n\t\tvar isLeftNavigator = (this.__config.enableOverflow || (this.__config.extraLeftButtons && this.__config.extraLeftButtons.length > 0));\r\n\t\tvar isRightNavigator = (this.__config.enableOverflow || (this.__config.extraRightButtons && this.__config.extraRightButtons.length > 0));\r\n\t\tif(isLeftNavigator)\r\n\t\t{\r\n\t\t\tvar divLeftNavigator = this.util.createDiv(this.getID() + \"Left\",\"nsTabNavigatorLeft\");\r\n\t\t\tdivParentParent.insertBefore(divLeftNavigator,divParent);\r\n\t\t\tthis.__config.leftNavigator = divLeftNavigator;\r\n\t\t}\r\n\t\tif(isRightNavigator)\r\n\t\t{\r\n\t\t\tvar divRightNavigator = this.util.createDiv(this.getID() + \"Right\",\"nsTabNavigatorRight\");\r\n\t\t\tdivParentParent.appendChild(divRightNavigator);\r\n\t\t\tthis.__config.rightNavigator = divRightNavigator;\r\n\t\t}\r\n\t\tif(this.__config.enableOverflow)\r\n\t\t{\r\n\t\t\tthis.__createOverflowComp();\r\n\t\t}\r\n\t\tthis.util.addStyleClass(this.__config.tabContainer,\"nsTabNavigator\");\r\n\t\tthis.__applyTheme(this.__config.tabContainer,\"nsTabNavigator\");\r\n\t\tvar arrTabs = this.__config.tabContainer.querySelectorAll(this.__config.tabPar