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.tabParentElement);\r\n\t\tfor(var count = 0;count < arrTabs.length;count++)\r\n\t\t{\r\n\t\t\tvar objTab = this.__getTabObject(arrTabs[count]);\r\n\t\t\tif(objTab)\r\n\t\t\t{\r\n\t\t\t\tthis.__config.arrObjTabs.push(objTab);\r\n\t\t\t\tthis.__initTab(objTab);\r\n\t\t\t}\r\n\t\t}\r\n\t\tif(this.__config.enableIndicator)\r\n\t\t{\r\n\t\t\tthis.__createIndicator();\r\n\t\t}\r\n\t\tthis.__setDefault();\r\n\t\tthis.__resizeHandler();\r\n\t};\r\n\t\r\n\tNSTabNavigator.prototype.__createTabs = function()\r\n\t{\r\n\t\tif(this.__config.arrTabs && this.__config.arrTabs.length > 0)\r\n\t\t{\r\n\t\t\tfor(var count = 0;count < this.__config.arrTabs.length;count++)\r\n\t\t\t{\r\n\t\t\t\tvar item = this.__config.arrTabs[count];\r\n\t\t\t\tvar tab = this.util.createElement(this.__config.tabElement);\r\n\t\t\t\ttab.appendChild(this.__doc.createTextNode(item.tab));\r\n\t\t\t\tvar tabParent = this.util.createElement(this.__config.tabParentElement);\r\n\t\t\t\ttabParent.appendChild(tab);\r\n\t\t\t\tthis.__config.tabContainer.appendChild(tabParent);\r\n\t\t\t\tvar contentID = item.contentId;\r\n\t\t\t\tif(item.content)\r\n\t\t\t\t{\r\n\t\t\t\t\tcontentID = this.getID() + \"-\" + item.tab;\r\n\t\t\t\t\tvar divContent = this.util.createDiv(contentID);\r\n\t\t\t\t\tdivContent.innerHTML = item.content;\r\n\t\t\t\t\tthis.__config.contentParent.appendChild(divContent);\r\n\t\t\t\t}\r\n\t\t\t\ttab.setAttribute(this.__config.tabAttribute,\"#\" + contentID);\r\n\t\t\t\tif(item.isDisabled)\r\n\t\t\t\t{\r\n\t\t\t\t\ttab.setAttribute(\"data-ns-disabled\",\"true\");\r\n\t\t\t\t}\r\n\t\t\t\tif(item.isHidden)\r\n\t\t\t\t{\r\n\t\t\t\t\ttab.setAttribute(\"data-ns-hidden\",\"true\");\r\n\t\t\t\t}\r\n\t\t\t\tif(item.isDefault)\r\n\t\t\t\t{\r\n\t\t\t\t\ttab.setAttribute(\"data-ns-default\",\"true\");\r\n\t\t\t\t}\r\n\t\t\t\tif(item.indicatorColor)\r\n\t\t\t\t{\r\n\t\t\t\t\ttab.setAttribute(\"data-ns-indicatorcolor\",item.indicatorColor);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t};\r\n\t\r\n\tNSTabNavigator.prototype.__createIndicator = function()\r\n\t{\r\n\t\tif(!this.__compIndicator)\r\n\t\t{\r\n\t\t\tthis.__compIndicator = this.util.createElement(\"span\",this.getID() + \"Indicator\",\"nsTabIndicator\");\r\n\t\t\tthis.__applyTheme(this.__compIndicator,\"nsTabIndicator\");\r\n\t\t\tthis.__config.tabContainer.appendChild(this.__compIndicator);\r\n\t\t}\r\n\t};\r\n\t\r\n\tNSTabNavigator.prototype.__moveIndicator = function(item)\r\n\t{\r\n\t\tif(this.__compIndicator)\r\n\t\t{\r\n\t\t\t var textPosition = item.tabContainer.getBoundingClientRect();\r\n\t         var container = this.__config.tabContainer.getBoundingClientRect().left;\r\n\t         var distance = textPosition.left - container;\r\n             var scroll = this.__config.tabContainer.scrollLeft;\r\n             this.__compIndicator.style.transform = \"translateX(\" + (distance + scroll) + \"px) scaleX(\" + textPosition.width * 0.01 + \")\";\r\n             if (item.indicatorColor) \r\n             {\r\n            \t this.__compIndicator.style.backgroundColor = item.indicatorColor;\r\n             }\r\n\t\t}\r\n\t};\r\n\t\r\n\tNSTabNavigator.prototype.__resizeHandler = function()\r\n\t{\r\n\t\t//IE Bug not taking the Height\r\n\t\t//if(this.__objBrowser.isMSIE)\r\n\t\t//{\r\n\t\t\tif(this.__config.tabContainer.offsetHeight > 0)\r\n\t\t\t{\r\n\t\t\t\tvar height = this.__config.tabContainer.offsetHeight + \"px\";\r\n\t\t\t\tvar parentID = this.getID() + \"ParentParentParent\";\r\n\t\t\t\tthis.util.addCSSClassInDOM([\"#\" + parentID,\"#\" + parentID + \" #\" + this.getID() + \"Left\",\"#\" + parentID + \" #\" + this.getID() + \"Right\"],[\"max-height:\" + height + \";\",\"max-height:\" + height + \";\",\"max-height:\" + height + \";\"]);\r\n\t\t\t}\r\n\t\t//}\r\n\t\tif(this.__config.enableOverflow)\r\n\t\t{\r\n\t\t\tvar overflowValue = this.__checkOverflow(this.__config.tabContainerParent,this.__config.tabContainer);\r\n\t\t\tswitch(overflowValue)\r\n\t\t\t{\r\n\t\t\t\tcase \"none\":\r\n\t\t\t\t\tthis.__setOverflowCompDisplay(false);\r\n\t\t\t\t\tthis.__setOverflowCompEnabled(true,true);\r\n\t\t\t\tbreak;\r\n\t\t\t\tcase \"both\":\r\n\t\t\t\t\tthis.__setOverflowCompEnabled(true,true);\r\n\t\t\t\t\tthis.__setOverflowCompDisplay(true);\r\n\t\t\t\tbreak;\r\n\t\t\t\tcase \"left\":\r\n\t\t\t\t\tthis.__setOverflowCompEnabled(true,false);\r\n\t\t\t\t\tthis.__setOverflowCompDisplay(true);\r\n\t\t\t\tbreak;\r\n\t\t\t\tcase \"right\":\r\n\t\t\t\t\tthis.__setOverflowCompEnabled(false,true);\r\n\t\t\t\t\tthis.__setOverflowCompDisplay(true);\r\n\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t}\r\n\t};\r\n\t\r\n\tNSTabNavigator.prototype.__createOverflowComp = function()\r\n\t{\r\n\t\tvar divOverflowLeft = this.util.createDiv(null,\"nsTabNav nsTabLeftArrow\");\r\n\t\tthis.__applyTheme(divOverflowLeft,\"nsTabNav\");\r\n\t\tdivOverflowLeft.innerHTML = \"<svg viewBox=\\\"0 0 40 40\\\" fill=\\\"currentColor\\\" height=\\\"100%\\\" width=\\\"100%\\\" style=\\\"vertical-align: middle;\\\"><g><path d=\\\"m25.7 12.3l-7.7 7.7 7.7 7.7-2.3 2.3-10-10 10-10z\\\"></path></g></svg>\";\r\n\t\tthis.__config.leftNavigator.appendChild(divOverflowLeft);\r\n\t\tthis.util.addEvent(divOverflowLeft,\"mousedown\",this.__navMouseDownHandler.bind(this,\"left\"));\r\n\t\tthis.util.addEvent(divOverflowLeft,\"mouseup mouseleave\",this.__navMouseLeaveHandler.bind(this,\"left\"));\r\n\t\tthis.__config.leftNav = divOverflowLeft;\r\n\t\tvar divOverflowRight = this.util.createDiv(null,\"nsTabNav nsTabRightArrow\");\r\n\t\tthis.__applyTheme(divOverflowRight,\"nsTabNav\");\r\n\t\tdivOverflowRight.innerHTML = \"<svg viewBox=\\\"0 0 40 40\\\" fill=\\\"currentColor\\\" height=\\\"100%\\\" width=\\\"100%\\\" style=\\\"vertical-align: middle;\\\"><g><path d=\\\"m16.6 10l10 10-10 10-2.3-2.3 7.7-7.7-7.7-7.7z\\\"></path></g></svg>\";\r\n\t\tthis.__config.rightNavigator.appendChild(divOverflowRight);\r\n\t\tthis.util.addEvent(divOverflowRight,\"mousedown\",this.__navMouseDownHandler.bind(this,\"right\"));\r\n\t\tthis.util.addEvent(divOverflowRight,\"mouseup mouseleave\",this.__navMouseLeaveHandler.bind(this,\"right\"));\r\n\t\tthis.__config.rightNav = divOverflowRight;\r\n\t};\r\n\t\r\n\tNSTabNavigator.prototype.__navMouseDownHandler = function(direction,event)\r\n\t{\r\n\t\tevent = this.util.getEvent(event);\r\n\t\tevent.stopPropagation();\r\n\t\tvar tabContainer = this.__config.tabContainer;\r\n\t\t//var left = tabContainer.scrollLeft;\r\n\t\tvar scrollDistance = this.__config.overflowScrollDistance;\r\n\t\tvar maxScrollLeft = tabContainer.scrollWidth - tabContainer.clientWidth;\r\n\t\tvar scrollerAnimate = null;\r\n\t\tvar self = this;\r\n\t\tvar leftHandler = function()\r\n\t\t{\r\n\t\t\tvar left = tabContainer.scrollLeft;\r\n\t\t\tif(left > 0)\r\n\t\t\t{\r\n\t\t\t\tself.__overFlowScrollPos = Math.max(left - scrollDistance,0);\r\n\t\t\t\t//tabContainer.scrollLeft = (left - scrollDistance);\r\n\t\t\t\tanimate(self.__overFlowScrollPos);\r\n\t\t\t\tself.__overflowIsAnimating = true;\r\n\t\t\t}\r\n\t\t\telse\r\n\t\t\t{\r\n\t\t\t\tself.__navMouseLeaveHandler.call(self,\"left\",event);\r\n\t\t\t}\r\n\t\t};\r\n\t\tvar rightHandler = function()\r\n\t\t{\r\n\t\t\tvar left = tabContainer.scrollLeft;\r\n\t\t\tif(maxScrollLeft > left)\r\n\t\t\t{\r\n\t\t\t\tvar outerWidth = self.util.getOuterWidth(tabContainer);\r\n\t\t\t\tself.__overFlowScrollPos = Math.min(left + tabContainer.scrollWidth - outerWidth);\r\n\t\t\t\t//tabContainer.scrollLeft = (left + scrollDistance);\r\n\t\t\t\tanimate(left + scrollDistance);\r\n\t\t\t\tself.__overflowIsAnimating = true;\r\n\t\t\t}\r\n\t\t\telse\r\n\t\t\t{\r\n\t\t\t\tself.__navMouseLeaveHandler.call(self,\"left\",event);\r\n\t\t\t}\r\n\t\t};\r\n\t\tvar animate = function(newPos)\r\n\t\t{\r\n\t\t\tvar scrollAnimateSetting = {element: tabContainer,direction:\"horizontal\",callback: callback};\r\n      \t\tscrollerAnimate = new NSScrollAnimator(scrollAnimateSetting);\r\n      \t\tscrollerAnimate.scrollTo(newPos);\r\n\t\t};\r\n\t\tvar callback = function()\r\n\t\t{\r\n\t\t\tscrollerAnimate.stop();\r\n\t\t\tself.__overflowIsAnimating = false;\r\n\t\t};\r\n\t\tif(this.__navInterval)\r\n\t\t{\r\n\t\t\tclearInterval(this.__navInterval);\r\n\t\t\tthis.__navInterval = null;\r\n\t\t}\r\n\t\tvar func = (direction == \"left\") ? leftHandler : rightHandler;\r\n\t\tfunc();\r\n\t\tthis.__navInterval = setInterval(function(){\r\n\t\t\tif(!self.__overflowIsAnimating)\r\n\t\t\t{\r\n\t\t\t\tfunc();\r\n\t\t\t}\r\n\t    }, this.__config.overflowScrollDuration);\r\n\t};\r\n\t\r\n\tNSTabNavigator.prototype.__navMouseLeaveHandler = function(direction,event)\r\n\t{\r\n\t\tthis.__overflowIsAnimating = false;\r\n\t\tif(this.__navInterval)\r\n\t\t{\r\n\t\t\tclearInterval(this.__navInterval);\r\n\t\t\tthis.__navInterval = null;\r\n\t\t\tvar self = this;\r\n\t\t\tsetTimeout(function(){\r\n\t\t\t\tself.__resizeHandler.call(self);\r\n\t\t\t}, this.__config.overflowScrollDuration);\r\n\t\t}\r\n\t};\r\n\t\r\n\tNSTabNavigator.prototype.__setOverflowCompDisplay = function(isVisible)\r\n\t{\r\n\t\tvar display = isVisible ? \"\" : \"none\";\r\n\t\tif(this.__config.leftNav)\r\n\t\t{\r\n\t\t\tthis.__config.leftNav.style.display = display;\r\n\t\t}\r\n\t\tif(this.__config.rightNav)\r\n\t\t{\r\n\t\t\tthis.__config.rightNav.style.display = display;\r\n\t\t}\r\n\t};\r\n\t\r\n\tNSTabNavigator.prototype.__setOverflowCompEnabled = function(isLeftEnabled,isRightEnabled)\r\n\t{\r\n\t\tif(this.__config.leftNav)\r\n\t\t{\r\n\t\t\tisLeftEnabled ? this.util.removeStyleClass(this.__config.leftNav,\"nsTabNavDisabled\") : this.util.addStyleClass(this.__config.leftNav,\"nsTabNavDisabled\");\r\n\t\t}\r\n\t\tif(this.__config.rightNav)\r\n\t\t{\r\n\t\t\tisRightEnabled ? this.util.removeStyleClass(this.__config.rightNav,\"nsTabNavDisabled\") : this.util.addStyleClass(this.__config.rightNav,\"nsTabNavDisabled\");\r\n\t\t}\r\n\t};\r\n\t\r\n\tNSTabNavigator.prototype.__setDefault = function()\r\n\t{\r\n\t\tfor(var count = 0;count < this.__config.arrObjTabs.length;count++)\r\n\t\t{\r\n\t\t\tvar item = this.__config.arrObjTabs[count];\r\n\t\t\tif(item.isActive)\r\n\t\t\t{\r\n\t\t\t\titem.tabContainer[this.__config.event]();\r\n\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t}\r\n\t\tif(!item || !item.isActive)\r\n\t\t{\r\n\t\t\titem = this.__config.arrObjTabs[0];\r\n\t\t\titem.isActive = true;\r\n\t\t\titem.tabContainer[this.__config.event]();\r\n\t\t}\r\n\t};\r\n\t\r\n\tNSTabNavigator.prototype.__showTab = function(item)\r\n\t{\r\n\t\tvar retValue = false;\r\n\t\tif(this.__isItemNavigatable(item) && (!this.__config.selectedItem || this.__config.selectedItem.tab != item.tab))\r\n\t\t{\r\n\t\t\tfor(var count = 0;count < this.__config.arrObjTabs.length;count++)\r\n\t\t\t{\r\n\t\t\t\tvar itemComp = this.__config.arrObjTabs[count];\r\n\t\t\t\tif(itemComp.tab == item.tab)\r\n\t\t\t\t{\r\n\t\t\t\t\tvar itemDispatch = {tab:itemComp.tab,text:itemComp.tab.textContent,attributeValue:itemComp.contentSelector,content:itemComp.content};\r\n\t\t\t\t\tvar cancelled = this.util.dispatchEvent(this.__baseComponent,NSTabNavigator.TAB_CHANGE_STARTING,itemDispatch,{selectedTab: itemDispatch},null,true);\r\n\t\t\t\t\tif(cancelled)\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tconsole.debug(\"NSTabNavigator: Tab Moved was cancelled\");\r\n\t\t\t\t\t}\r\n\t\t\t\t\telse\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tthis.__config.selectedItem = itemComp;\r\n\t\t\t\t\t\titemComp.isActive = true;\r\n\t\t\t\t\t\tthis.util.addStyleClass(itemComp.tabContainer,\"nsTabContainerActive\");\r\n\t\t\t\t\t\tthis.__updateContent(itemComp);\r\n\t\t\t\t\t\tretValue = true;\r\n\t\t\t\t\t\tif(this.__config.enableHashChange) \r\n\t\t\t\t\t\t{\r\n\t\t                    if(history.pushState) \r\n\t\t                    {\r\n\t\t                        if (!this.__win.location.origin) \r\n\t\t                        {\r\n\t\t                        \tthis.__win.location.origin = this.__win.location.protocol + \"//\" + this.__win.location.hostname + (this.__win.location.port ? ':' + this.__win.location.port: '');\r\n\t\t                        }\r\n\t\t                        history.pushState(null, null, this.__win.location.origin + this.__win.location.pathname + this.__win.location.search + itemComp.contentSelector);\r\n\t\t                    } \r\n\t\t                    else \r\n\t\t                    {\r\n\t\t                    \tthis.__win.location.hash = itemComp.contentSelector;\r\n\t\t                    }\r\n\t\t                }\r\n\t\t\t\t\t\tthis.__moveIndicator(itemComp);\r\n\t\t\t\t\t\tthis.util.dispatchEvent(this.__baseComponent,NSTabNavigator.TAB_CHANGED,itemDispatch,{selectedTab: itemDispatch});\r\n\t\t\t\t\t}\r\n\t\t\t\t\tthis.util.dispatchEvent(this.__baseComponent,NSTabNavigator.TAB_CHANGE_END,itemDispatch,{selectedTab: itemDispatch});\r\n\t\t\t\t}\r\n\t\t\t\telse\r\n\t\t\t\t{\r\n\t\t\t\t\titemComp.isActive = false;\r\n\t\t\t\t\tthis.util.removeStyleClass(itemComp.tabContainer,\"nsTabContainerActive\");\r\n\t\t\t\t\tthis.util.removeStyleClass(itemComp.content,\"nsTabContentActive\");\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn retValue;\r\n\t};\r\n\t\r\n\tNSTabNavigator.prototype.__updateContent = function(item)\r\n\t{\r\n\t\tif(item)\r\n\t\t{\r\n\t\t\tthis.util.addStyleClass(item.content,\"nsTabContentActive\");\r\n\t\t\tif(this.__animationItem && this.__animationItem.setIndex)\r\n\t\t\t{\r\n\t\t\t\tvar index = this.__getIndexByItem(item);\r\n\t\t\t\tthis.__animationItem.setIndex(this,index,item);\r\n\t\t\t}\r\n\t\t\t\r\n\t\t}\r\n\t\t\r\n\t};\r\n\t\r\n\tNSTabNavigator.prototype.__getTabObject = function(tabContainer)\r\n\t{\r\n\t\tif(tabContainer)\r\n\t\t{\r\n\t\t\tvar objReturn = {};\r\n\t\t\tobjReturn.tabContainer = tabContainer;\r\n\t\t\tobjReturn.tab = tabContainer.querySelector(this.__config.tabElement);\r\n\t\t\tobjReturn.contentSelector = objReturn.tab.getAttribute(this.__config.tabAttribute) || objReturn.tabContainer.getAttribute(this.__config.tabAttribute);\r\n\t\t\tobjReturn.content = this.__getContent(objReturn.contentSelector);\r\n\t\t\tif(objReturn.content)\r\n\t\t\t{\r\n\t\t\t\tobjReturn.isDisabled = objReturn.tab.hasAttribute(\"data-ns-disabled\") || objReturn.tabContainer.hasAttribute(\"data-ns-disabled\");\r\n\t\t\t\tobjReturn.isHidden = objReturn.tab.hasAttribute(\"data-ns-hidden\") || objReturn.tabContainer.hasAttribute(\"data-ns-hidden\");\r\n\t\t\t\tobjReturn.isActive = objReturn.tab.hasAttribute(\"data-ns-default\") || objReturn.tabContainer.hasAttribute(\"data-ns-default\");\r\n\t\t\t\tobjReturn.indicatorColor = objReturn.tab.hasAttribute(\"data-ns-indicatorcolor\") ? objReturn.tab.getAttribute(\"data-ns-indicatorcolor\") : (objReturn.tabContainer.hasAttribute(\"data-ns-indicatorcolor\") ? objReturn.tabContainer.hasAttribute(\"data-ns-indicatorcolor\") : null);\r\n\t\t\t\treturn objReturn;\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn null;\r\n\t};\r\n\t\r\n\tNSTabNavigator.prototype.__initTab = function(item)\r\n\t{\r\n\t\tif(item)\r\n\t\t{\r\n\t\t\tthis.util.addEvent(item.tabContainer,this.__config.event,this.__tabClickHandler.bind(this,item));\r\n\t\t\tthis.util.addStyleClass(item.tabContainer,\"nsTabContainer\");\r\n\t\t\tthis.util.addStyleClass(item.tab,\"nsTab\");\r\n\t\t\tthis.util.addStyleClass(item.content,\"nsTabContent\");\r\n\t\t\tthis.__applyTheme(item.content,\"nsTabContent\");\r\n\t\t\tif(item.isHidden)\r\n\t\t\t{\r\n\t\t\t\titem.tab.setAttribute('aria-selected', 'false');\r\n\t\t\t\titem.tab.setAttribute('tabindex', '-1');\r\n\t\t\t\tthis.util.addStyleClass(item.tabContainer,\"nsTabContainerHidden\");\r\n\t\t\t}\r\n\t\t\telse if(item.isDisabled)\r\n\t\t\t{\r\n\t\t\t\tthis.util.addStyleClass(item.tabContainer,\"nsTabContainerDisabled\");\r\n\t\t\t}\r\n\t\t\tif(this.__config.enableClose && this.__isItemNavigatable(item))\r\n\t\t\t{\r\n\t\t\t\tvar spanClose = this.util.createElement(\"span\",null,\"nsTabClose\");\r\n\t\t\t\tspanClose.innerHTML = \"&times;\";\r\n\t\t\t\titem.tabContainer.appendChild(spanClose);\r\n\t\t\t\titem.close = spanClose;\r\n\t\t\t\tthis.util.addEvent(spanClose,\"click\",this.__tabCloseHandler.bind(this,item));\r\n\t\t\t\tthis.util.addStyleClass(item.tab,\"nsTabWithClose\");\r\n\t\t\t}\r\n\t\t\tif(this.__config.enableAnimation && this.__config.animationType)\r\n\t\t\t{\r\n\t\t\t\tif(this.__animationType[this.__config.animationType.toLowerCase()])\r\n\t\t\t\t{\r\n\t\t\t\t\tthis.__animationItem = this.__animationType[this.__config.animationType.toLowerCase()];\r\n\t\t\t\t\tthis.util.addStyleClass(item.content,this.__animationItem.css);\r\n\t\t\t\t\tif(this.__animationItem.init)\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tthis.__animationItem.init(this);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t\telse\r\n\t\t\t\t{\r\n\t\t\t\t\tthis.util.warning(\"NSTabNavigator\",\"Please mention a valid animation Type.\");\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t};\r\n\t\r\n\tNSTabNavigator.prototype.__tabClickHandler = function(item,event)\r\n\t{\r\n\t\tvar hasChanged = this.__showTab(item);\r\n\t\tevent = this.util.getEvent(event);\r\n\t\tevent.preventDefault();\r\n\t\t/*if(this.__config.enableHashChange)\r\n\t\t{\r\n\t\t\tif(!hasChanged)\r\n\t\t\t{\r\n\t\t\t\tevent.preventDefault();\r\n\t\t\t}\r\n\t\t}\r\n\t\telse\r\n\t\t{\r\n\t\t\tevent.preventDefault();\r\n\t\t}*/\r\n\t};\r\n\t\r\n\tNSTabNavigator.prototype.__tabCloseHandler = function(item,event)\r\n\t{\r\n\t\tif(item)\r\n\t\t{\r\n\t\t\tevent = this.util.getEvent(event);\r\n\t\t\tevent.preventDefault();\r\n\t\t\tevent.stopPropagation();\r\n\t\t\titem.isHidden = true;\r\n\t\t\titem.tab.setAttribute('aria-selected', 'false');\r\n\t\t\titem.tab.setAttribute('tabindex', '-1');\r\n\t\t\tthis.util.addStyleClass(item.tabContainer,\"nsTabContainerHidden\");\r\n\t\t\tvar prevItem = this.__getPrevActiveItem(item);\r\n\t\t\tif(prevItem)\r\n\t\t\t{\r\n\t\t\t\tthis.__showTab(prevItem);\r\n\t\t\t}\r\n\t\t\telse\r\n\t\t\t{\r\n\t\t\t\tvar nextItem = this.__getNextActiveItem(item);\r\n\t\t\t\tif(nextItem)\r\n\t\t\t\t{\r\n\t\t\t\t\tthis.__showTab(nextItem);\r\n\t\t\t\t}\r\n\t\t\t\telse\r\n\t\t\t\t{\r\n\t\t\t\t\tthis.util.addStyleClass(item.content,\"nsTabContentHidden\");\r\n\t\t\t\t\tthis.util.removeStyleClass(item.content,\"nsTabContentActive\");\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t};\r\n\t\r\n\tNSTabNavigator.prototype.__isItemNavigatable = function(item)\r\n\t{\r\n\t\tif(item)\r\n\t\t{\r\n\t\t\tif(item.isHidden || item.isDisabled)\r\n\t\t\t{\r\n\t\t\t\treturn false;\r\n\t\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\tNSTabNavigator.prototype.__getContent = function(contentSelector)\r\n\t{\r\n\t\tif(contentSelector)\r\n\t\t{\r\n\t\t\tvar content = this.__config.contentParent.querySelector(contentSelector);\r\n\t\t\treturn content;\r\n\t\t}\r\n\t\treturn null;\r\n\t};\r\n\t\r\n\tNSTabNavigator.prototype.__getPrevActiveItem = function(item)\r\n\t{\r\n\t\tvar prevItem = null;\r\n\t\tif(item)\r\n\t\t{\r\n\t\t\tfor(var count = 0;count < this.__config.arrObjTabs.length;count++)\r\n\t\t\t{\r\n\t\t\t\tvar itemComp = this.__config.arrObjTabs[count];\r\n\t\t\t\tif(itemComp.tab == item.tab)\r\n\t\t\t\t{\r\n\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\t\t\t\tif(this.__isItemNavigatable(itemComp))\r\n\t\t\t\t{\r\n\t\t\t\t\tprevItem = itemComp;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn prevItem;\r\n\t};\r\n\t\r\n\tNSTabNavigator.prototype.__getNextActiveItem = function(item)\r\n\t{\r\n\t\tvar nextItem = null;\r\n\t\tif(item)\r\n\t\t{\r\n\t\t\tvar index = this.__getIndexByItem(item);\r\n\t\t\tif(index > -1)\r\n\t\t\t{\r\n\t\t\t\tfor(var count = index + 1;count < this.__config.arrObjTabs.length;count++)\r\n\t\t\t\t{\r\n\t\t\t\t\tvar itemComp = this.__config.arrObjTabs[count];\r\n\t\t\t\t\tif(this.__isItemNavigatable(itemComp))\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tnextItem = itemComp;\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\t\r\n\t\t}\r\n\t\treturn nextItem;\r\n\t};\r\n\t\r\n\tNSTabNavigator.prototype.__getIndexByItem = function(item)\r\n\t{\r\n\t\tfor(var count = 0;count < this.__config.arrObjTabs.length;count++)\r\n\t\t{\r\n\t\t\tvar itemComp = this.__config.arrObjTabs[count];\r\n\t\t\tif(itemComp.tab == item.tab)\r\n\t\t\t{\r\n\t\t\t\treturn count;\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn -1;\r\n\t};\r\n\t\r\n\tNSTabNavigator.prototype.__checkOverflow = function(parentElement,scrollElement)\r\n\t{\r\n\t\tif(!parentElement || !scrollElement || !this.__isElementVisible(parentElement))\r\n\t\t{\r\n\t\t\treturn \"none\";\r\n\t\t}\r\n\t\t/*var parentElementWidth = this.__isVertical ? parentElement.offsetHeight : parentElement.offsetWidth;\r\n        var scrollElementWidth = this.__isVertical ? scrollElement.offsetHeight : scrollElement.offsetWidth;\r\n        if (parentElementWidth === scrollElementWidth) \r\n        {\r\n            itemWidth = this.itemWidthCal(this.scrollModule ? this.getScrollCntEle(innerItem) : innerItem);\r\n        }*/\r\n\t\tvar outerWidth = this.util.getOuterWidth(scrollElement);\r\n\t\tif(scrollElement.scrollWidth > outerWidth)\r\n\t\t{\r\n\t\t\tif((scrollElement.scrollWidth - outerWidth != scrollElement.scrollLeft) && scrollElement.scrollLeft != 0)\r\n\t\t\t{\r\n\t\t\t\treturn \"both\";\r\n\t\t\t}\r\n\t\t\t//right disabled\r\n\t\t\telse if(scrollElement.scrollWidth - outerWidth == scrollElement.scrollLeft)\r\n\t\t\t{\r\n\t\t\t\treturn \"left\";\r\n\t\t\t}\r\n\t\t\t//left disabled\r\n\t\t\telse if(scrollElement.scrollLeft == 0) \r\n\t\t\t{\r\n\t\t\t\treturn \"right\";\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn \"none\";\r\n\t};\r\n\t\r\n\tNSTabNavigator.prototype.__itemWidthCal = function(element)\r\n\t{\r\n\t\t\r\n\t};\r\n\t\r\n\tNSTabNavigator.prototype.__isElementVisible = function(element)\r\n\t{\r\n\t\treturn (element.style.visibility === \"\" && element.offsetWidth > 0);\r\n\t};\r\n\t\r\n\tNSTabNavigator.TAB_CHANGE_STARTING = \"tabChangeStarting\";\r\n\tNSTabNavigator.TAB_CHANGED = \"tabChanged\";\r\n\tNSTabNavigator.TAB_CHANGE_END = \"tabChangeEnd\";\r\n\t\r\n\treturn NSTabNavigator;\r\n})();\r\nnsModuleExport(this,\"NSTabNavigator\",NSTabNavigator);";
