File "edit_layers_timeline.js"

Full Path: /home/vantageo/public_html/cache/cache/.wp-cli/wp-content/plugins/revslider/admin/assets/js/edit_layers_timeline.js
File size: 247.15 KB
MIME-type: text/plain
Charset: utf-8

/************************************************
 * REVOLUTION 5.4.6.4 EDIT LAYER TIMELINE JS 
 * @version: 2.1 (06.03.2018)
 * @author ThemePunch
************************************************/

/* perfect-scrollbar v0.6.11 */
!function t(e,n,r){function o(l,a){if(!n[l]){if(!e[l]){var s="function"==typeof require&&require;if(!a&&s)return s(l,!0);if(i)return i(l,!0);var c=new Error("Cannot find module '"+l+"'");throw c.code="MODULE_NOT_FOUND",c}var u=n[l]={exports:{}};e[l][0].call(u.exports,function(t){var n=e[l][1][t];return o(n?n:t)},u,u.exports,t,e,n,r)}return n[l].exports}for(var i="function"==typeof require&&require,l=0;l<r.length;l++)o(r[l]);return o}({1:[function(t,e,n){"use strict";function r(t){t.fn.perfectScrollbar=function(t){return this.each(function(){if("object"==typeof t||"undefined"==typeof t){var e=t;i.get(this)||o.initialize(this,e)}else{var n=t;"update"===n?o.update(this):"destroy"===n&&o.destroy(this)}})}}var o=t("../main"),i=t("../plugin/instances");if("function"==typeof define&&define.amd)define(["jquery"],r);else{var l=window.jQuery?window.jQuery:window.$;"undefined"!=typeof l&&r(l)}e.exports=r},{"../main":7,"../plugin/instances":18}],2:[function(t,e,n){"use strict";function r(t,e){var n=t.className.split(" ");n.indexOf(e)<0&&n.push(e),t.className=n.join(" ")}function o(t,e){var n=t.className.split(" "),r=n.indexOf(e);r>=0&&n.splice(r,1),t.className=n.join(" ")}n.add=function(t,e){t.classList?t.classList.add(e):r(t,e)},n.remove=function(t,e){t.classList?t.classList.remove(e):o(t,e)},n.list=function(t){return t.classList?Array.prototype.slice.apply(t.classList):t.className.split(" ")}},{}],3:[function(t,e,n){"use strict";function r(t,e){return window.getComputedStyle(t)[e]}function o(t,e,n){return"number"==typeof n&&(n=n.toString()+"px"),t.style[e]=n,t}function i(t,e){for(var n in e){var r=e[n];"number"==typeof r&&(r=r.toString()+"px"),t.style[n]=r}return t}var l={};l.e=function(t,e){var n=document.createElement(t);return n.className=e,n},l.appendTo=function(t,e){return e.appendChild(t),t},l.css=function(t,e,n){return"object"==typeof e?i(t,e):"undefined"==typeof n?r(t,e):o(t,e,n)},l.matches=function(t,e){return"undefined"!=typeof t.matches?t.matches(e):"undefined"!=typeof t.matchesSelector?t.matchesSelector(e):"undefined"!=typeof t.webkitMatchesSelector?t.webkitMatchesSelector(e):"undefined"!=typeof t.mozMatchesSelector?t.mozMatchesSelector(e):"undefined"!=typeof t.msMatchesSelector?t.msMatchesSelector(e):void 0},l.remove=function(t){"undefined"!=typeof t.remove?t.remove():t.parentNode&&t.parentNode.removeChild(t)},l.queryChildren=function(t,e){return Array.prototype.filter.call(t.childNodes,function(t){return l.matches(t,e)})},e.exports=l},{}],4:[function(t,e,n){"use strict";var r=function(t){this.element=t,this.events={}};r.prototype.bind=function(t,e){"undefined"==typeof this.events[t]&&(this.events[t]=[]),this.events[t].push(e),this.element.addEventListener(t,e,!1)},r.prototype.unbind=function(t,e){var n="undefined"!=typeof e;this.events[t]=this.events[t].filter(function(r){return n&&r!==e?!0:(this.element.removeEventListener(t,r,!1),!1)},this)},r.prototype.unbindAll=function(){for(var t in this.events)this.unbind(t)};var o=function(){this.eventElements=[]};o.prototype.eventElement=function(t){var e=this.eventElements.filter(function(e){return e.element===t})[0];return"undefined"==typeof e&&(e=new r(t),this.eventElements.push(e)),e},o.prototype.bind=function(t,e,n){this.eventElement(t).bind(e,n)},o.prototype.unbind=function(t,e,n){this.eventElement(t).unbind(e,n)},o.prototype.unbindAll=function(){for(var t=0;t<this.eventElements.length;t++)this.eventElements[t].unbindAll()},o.prototype.once=function(t,e,n){var r=this.eventElement(t),o=function(t){r.unbind(e,o),n(t)};r.bind(e,o)},e.exports=o},{}],5:[function(t,e,n){"use strict";e.exports=function(){function t(){return Math.floor(65536*(1+Math.random())).toString(16).substring(1)}return function(){return t()+t()+"-"+t()+"-"+t()+"-"+t()+"-"+t()+t()+t()}}()},{}],6:[function(t,e,n){"use strict";var r=t("./class"),o=t("./dom"),i=n.toInt=function(t){return parseInt(t,10)||0},l=n.clone=function(t){if(null===t)return null;if(t.constructor===Array)return t.map(l);if("object"==typeof t){var e={};for(var n in t)e[n]=l(t[n]);return e}return t};n.extend=function(t,e){var n=l(t);for(var r in e)n[r]=l(e[r]);return n},n.isEditable=function(t){return o.matches(t,"input,[contenteditable]")||o.matches(t,"select,[contenteditable]")||o.matches(t,"textarea,[contenteditable]")||o.matches(t,"button,[contenteditable]")},n.removePsClasses=function(t){for(var e=r.list(t),n=0;n<e.length;n++){var o=e[n];0===o.indexOf("ps-")&&r.remove(t,o)}},n.outerWidth=function(t){return i(o.css(t,"width"))+i(o.css(t,"paddingLeft"))+i(o.css(t,"paddingRight"))+i(o.css(t,"borderLeftWidth"))+i(o.css(t,"borderRightWidth"))},n.startScrolling=function(t,e){r.add(t,"ps-in-scrolling"),"undefined"!=typeof e?r.add(t,"ps-"+e):(r.add(t,"ps-x"),r.add(t,"ps-y"))},n.stopScrolling=function(t,e){r.remove(t,"ps-in-scrolling"),"undefined"!=typeof e?r.remove(t,"ps-"+e):(r.remove(t,"ps-x"),r.remove(t,"ps-y"))},n.env={isWebKit:"WebkitAppearance"in document.documentElement.style,supportsTouch:"ontouchstart"in window||window.DocumentTouch&&document instanceof window.DocumentTouch,supportsIePointer:null!==window.navigator.msMaxTouchPoints}},{"./class":2,"./dom":3}],7:[function(t,e,n){"use strict";var r=t("./plugin/destroy"),o=t("./plugin/initialize"),i=t("./plugin/update");e.exports={initialize:o,update:i,destroy:r}},{"./plugin/destroy":9,"./plugin/initialize":17,"./plugin/update":21}],8:[function(t,e,n){"use strict";e.exports={handlers:["click-rail","drag-scrollbar","keyboard","wheel","touch"],maxScrollbarLength:null,minScrollbarLength:null,scrollXMarginOffset:0,scrollYMarginOffset:0,stopPropagationOnClick:!0,suppressScrollX:!1,suppressScrollY:!1,swipePropagation:!0,useBothWheelAxes:!1,wheelPropagation:!1,wheelSpeed:1,theme:"default"}},{}],9:[function(t,e,n){"use strict";var r=t("../lib/helper"),o=t("../lib/dom"),i=t("./instances");e.exports=function(t){var e=i.get(t);e&&(e.event.unbindAll(),o.remove(e.scrollbarX),o.remove(e.scrollbarY),o.remove(e.scrollbarXRail),o.remove(e.scrollbarYRail),r.removePsClasses(t),i.remove(t))}},{"../lib/dom":3,"../lib/helper":6,"./instances":18}],10:[function(t,e,n){"use strict";function r(t,e){function n(t){return t.getBoundingClientRect()}var r=function(t){t.stopPropagation()};e.settings.stopPropagationOnClick&&e.event.bind(e.scrollbarY,"click",r),e.event.bind(e.scrollbarYRail,"click",function(r){var i=o.toInt(e.scrollbarYHeight/2),s=e.railYRatio*(r.pageY-window.pageYOffset-n(e.scrollbarYRail).top-i),c=e.railYRatio*(e.railYHeight-e.scrollbarYHeight),u=s/c;0>u?u=0:u>1&&(u=1),a(t,"top",(e.contentHeight-e.containerHeight)*u),l(t),r.stopPropagation()}),e.settings.stopPropagationOnClick&&e.event.bind(e.scrollbarX,"click",r),e.event.bind(e.scrollbarXRail,"click",function(r){var i=o.toInt(e.scrollbarXWidth/2),s=e.railXRatio*(r.pageX-window.pageXOffset-n(e.scrollbarXRail).left-i),c=e.railXRatio*(e.railXWidth-e.scrollbarXWidth),u=s/c;0>u?u=0:u>1&&(u=1),a(t,"left",(e.contentWidth-e.containerWidth)*u-e.negativeScrollAdjustment),l(t),r.stopPropagation()})}var o=t("../../lib/helper"),i=t("../instances"),l=t("../update-geometry"),a=t("../update-scroll");e.exports=function(t){var e=i.get(t);r(t,e)}},{"../../lib/helper":6,"../instances":18,"../update-geometry":19,"../update-scroll":20}],11:[function(t,e,n){"use strict";function r(t,e){function n(n){var o=r+n*e.railXRatio,l=Math.max(0,e.scrollbarXRail.getBoundingClientRect().left)+e.railXRatio*(e.railXWidth-e.scrollbarXWidth);0>o?e.scrollbarXLeft=0:o>l?e.scrollbarXLeft=l:e.scrollbarXLeft=o;var a=i.toInt(e.scrollbarXLeft*(e.contentWidth-e.containerWidth)/(e.containerWidth-e.railXRatio*e.scrollbarXWidth))-e.negativeScrollAdjustment;c(t,"left",a)}var r=null,o=null,a=function(e){n(e.pageX-o),s(t),e.stopPropagation(),e.preventDefault()},u=function(){i.stopScrolling(t,"x"),e.event.unbind(e.ownerDocument,"mousemove",a)};e.event.bind(e.scrollbarX,"mousedown",function(n){o=n.pageX,r=i.toInt(l.css(e.scrollbarX,"left"))*e.railXRatio,i.startScrolling(t,"x"),e.event.bind(e.ownerDocument,"mousemove",a),e.event.once(e.ownerDocument,"mouseup",u),n.stopPropagation(),n.preventDefault()})}function o(t,e){function n(n){var o=r+n*e.railYRatio,l=Math.max(0,e.scrollbarYRail.getBoundingClientRect().top)+e.railYRatio*(e.railYHeight-e.scrollbarYHeight);0>o?e.scrollbarYTop=0:o>l?e.scrollbarYTop=l:e.scrollbarYTop=o;var a=i.toInt(e.scrollbarYTop*(e.contentHeight-e.containerHeight)/(e.containerHeight-e.railYRatio*e.scrollbarYHeight));c(t,"top",a)}var r=null,o=null,a=function(e){n(e.pageY-o),s(t),e.stopPropagation(),e.preventDefault()},u=function(){i.stopScrolling(t,"y"),e.event.unbind(e.ownerDocument,"mousemove",a)};e.event.bind(e.scrollbarY,"mousedown",function(n){o=n.pageY,r=i.toInt(l.css(e.scrollbarY,"top"))*e.railYRatio,i.startScrolling(t,"y"),e.event.bind(e.ownerDocument,"mousemove",a),e.event.once(e.ownerDocument,"mouseup",u),n.stopPropagation(),n.preventDefault()})}var i=t("../../lib/helper"),l=t("../../lib/dom"),a=t("../instances"),s=t("../update-geometry"),c=t("../update-scroll");e.exports=function(t){var e=a.get(t);r(t,e),o(t,e)}},{"../../lib/dom":3,"../../lib/helper":6,"../instances":18,"../update-geometry":19,"../update-scroll":20}],12:[function(t,e,n){"use strict";function r(t,e){function n(n,r){var o=t.scrollTop;if(0===n){if(!e.scrollbarYActive)return!1;if(0===o&&r>0||o>=e.contentHeight-e.containerHeight&&0>r)return!e.settings.wheelPropagation}var i=t.scrollLeft;if(0===r){if(!e.scrollbarXActive)return!1;if(0===i&&0>n||i>=e.contentWidth-e.containerWidth&&n>0)return!e.settings.wheelPropagation}return!0}var r=!1;e.event.bind(t,"mouseenter",function(){r=!0}),e.event.bind(t,"mouseleave",function(){r=!1});var l=!1;e.event.bind(e.ownerDocument,"keydown",function(c){if(!c.isDefaultPrevented||!c.isDefaultPrevented()){var u=i.matches(e.scrollbarX,":focus")||i.matches(e.scrollbarY,":focus");if(r||u){var d=document.activeElement?document.activeElement:e.ownerDocument.activeElement;if(d){if("IFRAME"===d.tagName)d=d.contentDocument.activeElement;else for(;d.shadowRoot;)d=d.shadowRoot.activeElement;if(o.isEditable(d))return}var p=0,f=0;switch(c.which){case 37:p=-30;break;case 38:f=30;break;case 39:p=30;break;case 40:f=-30;break;case 33:f=90;break;case 32:f=c.shiftKey?90:-90;break;case 34:f=-90;break;case 35:f=c.ctrlKey?-e.contentHeight:-e.containerHeight;break;case 36:f=c.ctrlKey?t.scrollTop:e.containerHeight;break;default:return}s(t,"top",t.scrollTop-f),s(t,"left",t.scrollLeft+p),a(t),l=n(p,f),l&&c.preventDefault()}}})}var o=t("../../lib/helper"),i=t("../../lib/dom"),l=t("../instances"),a=t("../update-geometry"),s=t("../update-scroll");e.exports=function(t){var e=l.get(t);r(t,e)}},{"../../lib/dom":3,"../../lib/helper":6,"../instances":18,"../update-geometry":19,"../update-scroll":20}],13:[function(t,e,n){"use strict";function r(t,e){function n(n,r){var o=t.scrollTop;if(0===n){if(!e.scrollbarYActive)return!1;if(0===o&&r>0||o>=e.contentHeight-e.containerHeight&&0>r)return!e.settings.wheelPropagation}var i=t.scrollLeft;if(0===r){if(!e.scrollbarXActive)return!1;if(0===i&&0>n||i>=e.contentWidth-e.containerWidth&&n>0)return!e.settings.wheelPropagation}return!0}function r(t){var e=t.deltaX,n=-1*t.deltaY;return"undefined"!=typeof e&&"undefined"!=typeof n||(e=-1*t.wheelDeltaX/6,n=t.wheelDeltaY/6),t.deltaMode&&1===t.deltaMode&&(e*=10,n*=10),e!==e&&n!==n&&(e=0,n=t.wheelDelta),[e,n]}function o(e,n){var r=t.querySelector("textarea:hover, .ps-child:hover");if(r){if("TEXTAREA"!==r.tagName&&!window.getComputedStyle(r).overflow.match(/(scroll|auto)/))return!1;var o=r.scrollHeight-r.clientHeight;if(o>0&&!(0===r.scrollTop&&n>0||r.scrollTop===o&&0>n))return!0;var i=r.scrollLeft-r.clientWidth;if(i>0&&!(0===r.scrollLeft&&0>e||r.scrollLeft===i&&e>0))return!0}return!1}function a(a){var c=r(a),u=c[0],d=c[1];o(u,d)||(s=!1,e.settings.useBothWheelAxes?e.scrollbarYActive&&!e.scrollbarXActive?(d?l(t,"top",t.scrollTop-d*e.settings.wheelSpeed):l(t,"top",t.scrollTop+u*e.settings.wheelSpeed),s=!0):e.scrollbarXActive&&!e.scrollbarYActive&&(u?l(t,"left",t.scrollLeft+u*e.settings.wheelSpeed):l(t,"left",t.scrollLeft-d*e.settings.wheelSpeed),s=!0):(l(t,"top",t.scrollTop-d*e.settings.wheelSpeed),l(t,"left",t.scrollLeft+u*e.settings.wheelSpeed)),i(t),s=s||n(u,d),s&&(a.stopPropagation(),a.preventDefault()))}var s=!1;"undefined"!=typeof window.onwheel?e.event.bind(t,"wheel",a):"undefined"!=typeof window.onmousewheel&&e.event.bind(t,"mousewheel",a)}var o=t("../instances"),i=t("../update-geometry"),l=t("../update-scroll");e.exports=function(t){var e=o.get(t);r(t,e)}},{"../instances":18,"../update-geometry":19,"../update-scroll":20}],14:[function(t,e,n){"use strict";function r(t,e){e.event.bind(t,"scroll",function(){i(t)})}var o=t("../instances"),i=t("../update-geometry");e.exports=function(t){var e=o.get(t);r(t,e)}},{"../instances":18,"../update-geometry":19}],15:[function(t,e,n){"use strict";function r(t,e){function n(){var t=window.getSelection?window.getSelection():document.getSelection?document.getSelection():"";return 0===t.toString().length?null:t.getRangeAt(0).commonAncestorContainer}function r(){c||(c=setInterval(function(){return i.get(t)?(a(t,"top",t.scrollTop+u.top),a(t,"left",t.scrollLeft+u.left),void l(t)):void clearInterval(c)},50))}function s(){c&&(clearInterval(c),c=null),o.stopScrolling(t)}var c=null,u={top:0,left:0},d=!1;e.event.bind(e.ownerDocument,"selectionchange",function(){t.contains(n())?d=!0:(d=!1,s())}),e.event.bind(window,"mouseup",function(){d&&(d=!1,s())}),e.event.bind(window,"mousemove",function(e){if(d){var n={x:e.pageX,y:e.pageY},i={left:t.offsetLeft,right:t.offsetLeft+t.offsetWidth,top:t.offsetTop,bottom:t.offsetTop+t.offsetHeight};n.x<i.left+3?(u.left=-5,o.startScrolling(t,"x")):n.x>i.right-3?(u.left=5,o.startScrolling(t,"x")):u.left=0,n.y<i.top+3?(i.top+3-n.y<5?u.top=-5:u.top=-20,o.startScrolling(t,"y")):n.y>i.bottom-3?(n.y-i.bottom+3<5?u.top=5:u.top=20,o.startScrolling(t,"y")):u.top=0,0===u.top&&0===u.left?s():r()}})}var o=t("../../lib/helper"),i=t("../instances"),l=t("../update-geometry"),a=t("../update-scroll");e.exports=function(t){var e=i.get(t);r(t,e)}},{"../../lib/helper":6,"../instances":18,"../update-geometry":19,"../update-scroll":20}],16:[function(t,e,n){"use strict";function r(t,e,n,r){function o(n,r){var o=t.scrollTop,i=t.scrollLeft,l=Math.abs(n),a=Math.abs(r);if(a>l){if(0>r&&o===e.contentHeight-e.containerHeight||r>0&&0===o)return!e.settings.swipePropagation}else if(l>a&&(0>n&&i===e.contentWidth-e.containerWidth||n>0&&0===i))return!e.settings.swipePropagation;return!0}function s(e,n){a(t,"top",t.scrollTop-n),a(t,"left",t.scrollLeft-e),l(t)}function c(){Y=!0}function u(){Y=!1}function d(t){return t.targetTouches?t.targetTouches[0]:t}function p(t){return t.targetTouches&&1===t.targetTouches.length?!0:!(!t.pointerType||"mouse"===t.pointerType||t.pointerType===t.MSPOINTER_TYPE_MOUSE)}function f(t){if(p(t)){w=!0;var e=d(t);v.pageX=e.pageX,v.pageY=e.pageY,g=(new Date).getTime(),null!==y&&clearInterval(y),t.stopPropagation()}}function h(t){if(!w&&e.settings.swipePropagation&&f(t),!Y&&w&&p(t)){var n=d(t),r={pageX:n.pageX,pageY:n.pageY},i=r.pageX-v.pageX,l=r.pageY-v.pageY;s(i,l),v=r;var a=(new Date).getTime(),c=a-g;c>0&&(m.x=i/c,m.y=l/c,g=a),o(i,l)&&(t.stopPropagation(),t.preventDefault())}}function b(){!Y&&w&&(w=!1,clearInterval(y),y=setInterval(function(){return i.get(t)?Math.abs(m.x)<.01&&Math.abs(m.y)<.01?void clearInterval(y):(s(30*m.x,30*m.y),m.x*=.8,void(m.y*=.8)):void clearInterval(y)},10))}var v={},g=0,m={},y=null,Y=!1,w=!1;n&&(e.event.bind(window,"touchstart",c),e.event.bind(window,"touchend",u),e.event.bind(t,"touchstart",f),e.event.bind(t,"touchmove",h),e.event.bind(t,"touchend",b)),r&&(window.PointerEvent?(e.event.bind(window,"pointerdown",c),e.event.bind(window,"pointerup",u),e.event.bind(t,"pointerdown",f),e.event.bind(t,"pointermove",h),e.event.bind(t,"pointerup",b)):window.MSPointerEvent&&(e.event.bind(window,"MSPointerDown",c),e.event.bind(window,"MSPointerUp",u),e.event.bind(t,"MSPointerDown",f),e.event.bind(t,"MSPointerMove",h),e.event.bind(t,"MSPointerUp",b)))}var o=t("../../lib/helper"),i=t("../instances"),l=t("../update-geometry"),a=t("../update-scroll");e.exports=function(t){if(o.env.supportsTouch||o.env.supportsIePointer){var e=i.get(t);r(t,e,o.env.supportsTouch,o.env.supportsIePointer)}}},{"../../lib/helper":6,"../instances":18,"../update-geometry":19,"../update-scroll":20}],17:[function(t,e,n){"use strict";var r=t("../lib/helper"),o=t("../lib/class"),i=t("./instances"),l=t("./update-geometry"),a={"click-rail":t("./handler/click-rail"),"drag-scrollbar":t("./handler/drag-scrollbar"),keyboard:t("./handler/keyboard"),wheel:t("./handler/mouse-wheel"),touch:t("./handler/touch"),selection:t("./handler/selection")},s=t("./handler/native-scroll");e.exports=function(t,e){e="object"==typeof e?e:{},o.add(t,"ps-container");var n=i.add(t);n.settings=r.extend(n.settings,e),o.add(t,"ps-theme-"+n.settings.theme),n.settings.handlers.forEach(function(e){a[e](t)}),s(t),l(t)}},{"../lib/class":2,"../lib/helper":6,"./handler/click-rail":10,"./handler/drag-scrollbar":11,"./handler/keyboard":12,"./handler/mouse-wheel":13,"./handler/native-scroll":14,"./handler/selection":15,"./handler/touch":16,"./instances":18,"./update-geometry":19}],18:[function(t,e,n){"use strict";function r(t){function e(){s.add(t,"ps-focus")}function n(){s.remove(t,"ps-focus")}var r=this;r.settings=a.clone(c),r.containerWidth=null,r.containerHeight=null,r.contentWidth=null,r.contentHeight=null,r.isRtl="rtl"===u.css(t,"direction"),r.isNegativeScroll=function(){var e=t.scrollLeft,n=null;return t.scrollLeft=-1,n=t.scrollLeft<0,t.scrollLeft=e,n}(),r.negativeScrollAdjustment=r.isNegativeScroll?t.scrollWidth-t.clientWidth:0,r.event=new d,r.ownerDocument=t.ownerDocument||document,r.scrollbarXRail=u.appendTo(u.e("div","ps-scrollbar-x-rail"),t),r.scrollbarX=u.appendTo(u.e("div","ps-scrollbar-x"),r.scrollbarXRail),r.scrollbarX.setAttribute("tabindex",0),r.event.bind(r.scrollbarX,"focus",e),r.event.bind(r.scrollbarX,"blur",n),r.scrollbarXActive=null,r.scrollbarXWidth=null,r.scrollbarXLeft=null,r.scrollbarXBottom=a.toInt(u.css(r.scrollbarXRail,"bottom")),r.isScrollbarXUsingBottom=r.scrollbarXBottom===r.scrollbarXBottom,r.scrollbarXTop=r.isScrollbarXUsingBottom?null:a.toInt(u.css(r.scrollbarXRail,"top")),r.railBorderXWidth=a.toInt(u.css(r.scrollbarXRail,"borderLeftWidth"))+a.toInt(u.css(r.scrollbarXRail,"borderRightWidth")),u.css(r.scrollbarXRail,"display","block"),r.railXMarginWidth=a.toInt(u.css(r.scrollbarXRail,"marginLeft"))+a.toInt(u.css(r.scrollbarXRail,"marginRight")),u.css(r.scrollbarXRail,"display",""),r.railXWidth=null,r.railXRatio=null,r.scrollbarYRail=u.appendTo(u.e("div","ps-scrollbar-y-rail"),t),r.scrollbarY=u.appendTo(u.e("div","ps-scrollbar-y"),r.scrollbarYRail),r.scrollbarY.setAttribute("tabindex",0),r.event.bind(r.scrollbarY,"focus",e),r.event.bind(r.scrollbarY,"blur",n),r.scrollbarYActive=null,r.scrollbarYHeight=null,r.scrollbarYTop=null,r.scrollbarYRight=a.toInt(u.css(r.scrollbarYRail,"right")),r.isScrollbarYUsingRight=r.scrollbarYRight===r.scrollbarYRight,r.scrollbarYLeft=r.isScrollbarYUsingRight?null:a.toInt(u.css(r.scrollbarYRail,"left")),r.scrollbarYOuterWidth=r.isRtl?a.outerWidth(r.scrollbarY):null,r.railBorderYWidth=a.toInt(u.css(r.scrollbarYRail,"borderTopWidth"))+a.toInt(u.css(r.scrollbarYRail,"borderBottomWidth")),u.css(r.scrollbarYRail,"display","block"),r.railYMarginHeight=a.toInt(u.css(r.scrollbarYRail,"marginTop"))+a.toInt(u.css(r.scrollbarYRail,"marginBottom")),u.css(r.scrollbarYRail,"display",""),r.railYHeight=null,r.railYRatio=null}function o(t){return t.getAttribute("data-ps-id")}function i(t,e){t.setAttribute("data-ps-id",e)}function l(t){t.removeAttribute("data-ps-id")}var a=t("../lib/helper"),s=t("../lib/class"),c=t("./default-setting"),u=t("../lib/dom"),d=t("../lib/event-manager"),p=t("../lib/guid"),f={};n.add=function(t){var e=p();return i(t,e),f[e]=new r(t),f[e]},n.remove=function(t){delete f[o(t)],l(t)},n.get=function(t){return f[o(t)]}},{"../lib/class":2,"../lib/dom":3,"../lib/event-manager":4,"../lib/guid":5,"../lib/helper":6,"./default-setting":8}],19:[function(t,e,n){"use strict";function r(t,e){return t.settings.minScrollbarLength&&(e=Math.max(e,t.settings.minScrollbarLength)),t.settings.maxScrollbarLength&&(e=Math.min(e,t.settings.maxScrollbarLength)),e}function o(t,e){var n={width:e.railXWidth};e.isRtl?n.left=e.negativeScrollAdjustment+t.scrollLeft+e.containerWidth-e.contentWidth:n.left=t.scrollLeft,e.isScrollbarXUsingBottom?n.bottom=e.scrollbarXBottom-t.scrollTop:n.top=e.scrollbarXTop+t.scrollTop,a.css(e.scrollbarXRail,n);var r={top:t.scrollTop,height:e.railYHeight};e.isScrollbarYUsingRight?e.isRtl?r.right=e.contentWidth-(e.negativeScrollAdjustment+t.scrollLeft)-e.scrollbarYRight-e.scrollbarYOuterWidth:r.right=e.scrollbarYRight-t.scrollLeft:e.isRtl?r.left=e.negativeScrollAdjustment+t.scrollLeft+2*e.containerWidth-e.contentWidth-e.scrollbarYLeft-e.scrollbarYOuterWidth:r.left=e.scrollbarYLeft+t.scrollLeft,a.css(e.scrollbarYRail,r),a.css(e.scrollbarX,{left:e.scrollbarXLeft,width:e.scrollbarXWidth-e.railBorderXWidth}),a.css(e.scrollbarY,{top:e.scrollbarYTop,height:e.scrollbarYHeight-e.railBorderYWidth})}var i=t("../lib/helper"),l=t("../lib/class"),a=t("../lib/dom"),s=t("./instances"),c=t("./update-scroll");e.exports=function(t){var e=s.get(t);e.containerWidth=t.clientWidth,e.containerHeight=t.clientHeight,e.contentWidth=t.scrollWidth,e.contentHeight=t.scrollHeight;var n;t.contains(e.scrollbarXRail)||(n=a.queryChildren(t,".ps-scrollbar-x-rail"),n.length>0&&n.forEach(function(t){a.remove(t)}),a.appendTo(e.scrollbarXRail,t)),t.contains(e.scrollbarYRail)||(n=a.queryChildren(t,".ps-scrollbar-y-rail"),n.length>0&&n.forEach(function(t){a.remove(t)}),a.appendTo(e.scrollbarYRail,t)),!e.settings.suppressScrollX&&e.containerWidth+e.settings.scrollXMarginOffset<e.contentWidth?(e.scrollbarXActive=!0,e.railXWidth=e.containerWidth-e.railXMarginWidth,e.railXRatio=e.containerWidth/e.railXWidth,e.scrollbarXWidth=r(e,i.toInt(e.railXWidth*e.containerWidth/e.contentWidth)),e.scrollbarXLeft=i.toInt((e.negativeScrollAdjustment+t.scrollLeft)*(e.railXWidth-e.scrollbarXWidth)/(e.contentWidth-e.containerWidth))):e.scrollbarXActive=!1,!e.settings.suppressScrollY&&e.containerHeight+e.settings.scrollYMarginOffset<e.contentHeight?(e.scrollbarYActive=!0,e.railYHeight=e.containerHeight-e.railYMarginHeight,e.railYRatio=e.containerHeight/e.railYHeight,e.scrollbarYHeight=r(e,i.toInt(e.railYHeight*e.containerHeight/e.contentHeight)),e.scrollbarYTop=i.toInt(t.scrollTop*(e.railYHeight-e.scrollbarYHeight)/(e.contentHeight-e.containerHeight))):e.scrollbarYActive=!1,e.scrollbarXLeft>=e.railXWidth-e.scrollbarXWidth&&(e.scrollbarXLeft=e.railXWidth-e.scrollbarXWidth),e.scrollbarYTop>=e.railYHeight-e.scrollbarYHeight&&(e.scrollbarYTop=e.railYHeight-e.scrollbarYHeight),o(t,e),e.scrollbarXActive?l.add(t,"ps-active-x"):(l.remove(t,"ps-active-x"),e.scrollbarXWidth=0,e.scrollbarXLeft=0,c(t,"left",0)),e.scrollbarYActive?l.add(t,"ps-active-y"):(l.remove(t,"ps-active-y"),e.scrollbarYHeight=0,e.scrollbarYTop=0,c(t,"top",0))}},{"../lib/class":2,"../lib/dom":3,"../lib/helper":6,"./instances":18,"./update-scroll":20}],20:[function(t,e,n){"use strict";var r,o,i=t("./instances"),l=document.createEvent("Event"),a=document.createEvent("Event"),s=document.createEvent("Event"),c=document.createEvent("Event"),u=document.createEvent("Event"),d=document.createEvent("Event"),p=document.createEvent("Event"),f=document.createEvent("Event"),h=document.createEvent("Event"),b=document.createEvent("Event");l.initEvent("ps-scroll-up",!0,!0),a.initEvent("ps-scroll-down",!0,!0),s.initEvent("ps-scroll-left",!0,!0),c.initEvent("ps-scroll-right",!0,!0),u.initEvent("ps-scroll-y",!0,!0),d.initEvent("ps-scroll-x",!0,!0),p.initEvent("ps-x-reach-start",!0,!0),f.initEvent("ps-x-reach-end",!0,!0),h.initEvent("ps-y-reach-start",!0,!0),b.initEvent("ps-y-reach-end",!0,!0),e.exports=function(t,e,n){if("undefined"==typeof t)throw"You must provide an element to the update-scroll function";if("undefined"==typeof e)throw"You must provide an axis to the update-scroll function";if("undefined"==typeof n)throw"You must provide a value to the update-scroll function";"top"===e&&0>=n&&(t.scrollTop=n=0,t.dispatchEvent(h)),"left"===e&&0>=n&&(t.scrollLeft=n=0,t.dispatchEvent(p));var v=i.get(t);"top"===e&&n>=v.contentHeight-v.containerHeight&&(n=v.contentHeight-v.containerHeight,n-t.scrollTop<=1?n=t.scrollTop:t.scrollTop=n,t.dispatchEvent(b)),"left"===e&&n>=v.contentWidth-v.containerWidth&&(n=v.contentWidth-v.containerWidth,n-t.scrollLeft<=1?n=t.scrollLeft:t.scrollLeft=n,t.dispatchEvent(f)),r||(r=t.scrollTop),o||(o=t.scrollLeft),"top"===e&&r>n&&t.dispatchEvent(l),"top"===e&&n>r&&t.dispatchEvent(a),"left"===e&&o>n&&t.dispatchEvent(s),"left"===e&&n>o&&t.dispatchEvent(c),"top"===e&&(t.scrollTop=r=n,t.dispatchEvent(u)),"left"===e&&(t.scrollLeft=o=n,t.dispatchEvent(d))}},{"./instances":18}],21:[function(t,e,n){"use strict";var r=t("../lib/helper"),o=t("../lib/dom"),i=t("./instances"),l=t("./update-geometry"),a=t("./update-scroll");e.exports=function(t){var e=i.get(t);e&&(e.negativeScrollAdjustment=e.isNegativeScroll?t.scrollWidth-t.clientWidth:0,o.css(e.scrollbarXRail,"display","block"),o.css(e.scrollbarYRail,"display","block"),e.railXMarginWidth=r.toInt(o.css(e.scrollbarXRail,"marginLeft"))+r.toInt(o.css(e.scrollbarXRail,"marginRight")),e.railYMarginHeight=r.toInt(o.css(e.scrollbarYRail,"marginTop"))+r.toInt(o.css(e.scrollbarYRail,"marginBottom")),o.css(e.scrollbarXRail,"display","none"),o.css(e.scrollbarYRail,"display","none"),l(t),a(t,"top",t.scrollTop),a(t,"left",t.scrollLeft),o.css(e.scrollbarXRail,"display",""),o.css(e.scrollbarYRail,"display",""))}},{"../lib/dom":3,"../lib/helper":6,"./instances":18,"./update-geometry":19,"./update-scroll":20}]},{},[1]);

// AUDIO CONTEXT
window.AudioContext = window.AudioContext || window.webkitAudioContext ;
if (window.AudioContext) {
	var audioContext = new AudioContext(),
		audiosource = audioContext.createBufferSource(); 	// creates a sound source
} else {
	audiosource = null;
}



/*****************************************************
	-	THE  TIME LINE AND ANIMATION FUNCTIONS 	-
*****************************************************/

var tpLayerTimelinesRev = new function(){
	var t = this,
		u = new Object(),			
		sortMode = "time",
		__ctime,
		__ctimeb,
		__ctimei ,
		__coffset = 0; 

	t.timelinetype ="absolute";
	t.mainMaxTimeLeft = 0;
	t.layout="desktop";
	t.timercorrectur = 0;	

	/***********************************************************
		-	INITIALISE THE TIMELINE AND ANIMATION ELEMENTS	-
	***********************************************************/

	t.init = function() {
		u = UniteLayersRev;
		g_rebuildTimer =999;
		g_slideTime = u.getMaintime();
		g_keyTimer = 0;
		
		t.mainMaxTimeLeft = jQuery('#mastertimer-maxtime').position().left;
		
		initSlideDuration();
		initSortbox();
		initMasterTimer();
		preparePeviewAnimations();
		prepareLoopAnimations();
		showHideTimeines();
		basicClicksAndHovers();
		addIconFunction();

		t.addToSortbox();
		//jQuery('.master-rightcell .layers-wrapper, .master-leftcell .layers-wrapper, #divLayers-wrapper').perfectScrollbar("update");
		
		jQuery('#slide_transition, #slot_amount, #transition_rotation').change(function() {
			
			setFakeAnim();
		});
		
		
		var timer;
		jQuery(window).resize(function() {
				clearTimeout(timer);
				timer = setTimeout(function(){
					t.resetSlideAnimations(false);
				},250);
			});
		var keyboardallowed = false;
		
		jQuery('#thelayer-editor-wrapper').hover(function() {

			keyboardallowed = true;						
						
		},function() {
			keyboardallowed = false;					
		})


		jQuery('#fake-select-title-wrapper').click(function() {
			jQuery('#slide-animation-settings-content-tab').click();
			jQuery('html,body').animate({scrollTop: (-100 + jQuery('#slide-animation-settings-content-tab').offset().top)},200);
		})

		jQuery('.slide-trans-menu-element').each(function() {
			var b = jQuery(this);
			b.text(b.text().toLowerCase());
			b.click(function() {
				var b = jQuery(this);
				jQuery('.slide-trans-menu-element').removeClass("selected");
				b.addClass("selected");
				jQuery('.slide-trans-checkelement').hide();
				jQuery("."+b.data('reference')).show();
			});
		});

		jQuery('.slide-trans-menu-element').first().click();
		
		var createListOfTrans = function() {
			var c = jQuery('.slide-trans-cur-ul');
			for(var key in choosen_slide_transition){
				var data_string = '';
				data_string+= ' data-duration="'+transition_settings['duration'][key]+'"';
				data_string+= ' data-ease_in="'+transition_settings['ease_in'][key]+'"';
				data_string+= ' data-ease_out="'+transition_settings['ease_out'][key]+'"';
				data_string+= ' data-rotation="'+transition_settings['rotation'][key]+'"';
				data_string+= ' data-slot="'+transition_settings['slot'][key]+'"';
				
				c.append('<li value="'+choosen_slide_transition[key]+'"'+data_string+' class="justaddedtrans draggable-trans-element">'+jQuery('input[name="slide_transition[]"][value="'+choosen_slide_transition[key]+'"]').parent().text()+'<i class="remove-trans-from-list eg-icon-cancel"></i></li>');
				jQuery('.justaddedtrans').data('animval',choosen_slide_transition[key]);
				jQuery('.justaddedtrans').removeClass("justaddedtrans");
			}
			
			setFakeAnim();
		};
		
		if(typeof(choosen_slide_transition) !== 'undefined'){ //if not exists, then we are at static slide
			createListOfTrans();
		}
		
		var etl = new punchgs.TimelineLite(),
			ord = 0,
			sto = jQuery('#form_slide_params').offset(),
			tou;

		jQuery('body').on('click','.remove-trans-from-list',function() {
			var t = jQuery(this),
				li = t.parent(),
				v = li.data('animval'),
				found = false;

			jQuery('.slide-trans-checkelement').each(function() {
				var d = jQuery(this),
					inp = d.find('input');
				
				if (inp.val()==v) {
					inp.removeAttr('checked');
					found = true;
				}
			});
			if (found && jQuery('.remove-trans-from-list').length>1) {
				li.remove();
				jQuery('.slide-trans-cur-ul li:first-child').click();
			}else{
				alert(rev_lang.cant_remove_last_transition);
			}
			
			return false;
			
		});

		

		jQuery('.slide-trans-checkelement').on("mouseover", function(e) {		

			var inp = jQuery(this).find('input[name="slide_transition[]"]'),
				a = jQuery('.slide-trans-example-inner .slotholder'),
				b = jQuery('.slide-trans-example-inner .oldslotholder'),
				examp = jQuery('.slide-trans-example');

			
			
			
				a.find('.slot').each(function() { jQuery(this).remove();});
				b.find('.slot').each(function() { jQuery(this).remove();});
				etl.kill()
				punchgs.TweenLite.set(a,{clearProps:"transform"});
				punchgs.TweenLite.set(b,{clearProps:"transform"});
				punchgs.TweenLite.set(a.find('.defaultimg'),{clearProps:"transform",autoAlpha:1});
				punchgs.TweenLite.set(b.find('.defaultimg'),{clearProps:"transform",autoAlpha:1});
				
				etl = slideAnimation(a, b,inp.val(),etl,true);
				etl.pause(0.001);
				punchgs.TweenLite.to(examp,0.2,{top:(e.pageY - sto.top),overwrite:"all",autoAlpha:1,ease:punchgs.Power3.easeInOut,onComplete:function() {
					setTimeout(function() {
							etl.play();
						},100);
				}});
			

		});

		jQuery('.slide-trans-checkelement').on("mouseleave",function() {
			clearTimeout(tou);
			var inp = jQuery(this).find('input[name="slide_transition[]"]'),
				a = jQuery('.slide-trans-example-inner .slotholder'),
				b = jQuery('.slide-trans-example-inner .oldslotholder');
			
			punchgs.TweenLite.to(jQuery('.slide-trans-example'),0.2,{autoAlpha:0,delay:0.2});
		});

		jQuery('input[name="slide_transition[]"]').on("change",function() {
			if (jQuery(this).is(":checked")) {
				var data_string = '';
				data_string+= ' data-duration="default"';
				data_string+= ' data-ease_in="default"';
				data_string+= ' data-ease_out="default"';
				data_string+= ' data-rotation="0"';
				data_string+= ' data-slot="default"';
				
				jQuery('.slide-trans-cur-ul').append('<li value="'+jQuery(this).val()+'"'+data_string+' class="justaddedtrans draggable-trans-element">'+jQuery(this).parent().text()+'<i class="remove-trans-from-list eg-icon-cancel"></i></li>')					
				jQuery('.justaddedtrans').data('animval',jQuery(this).val());
				jQuery('.justaddedtrans').removeClass("justaddedtrans");
			} else {
				if (jQuery('.remove-trans-from-list').length>1) {
					jQuery('.slide-trans-cur-ul').find('li:data[value='+jQuery(this).val()+']').remove();
					jQuery('.slide-trans-cur-ul li:first-child').click();
				}else{
					jQuery(this).attr('checked', true);
					alert(rev_lang.cant_remove_last_transition);
				}
				
			}
			
			setFakeAnim();
		});
		
		jQuery('body').on('click', '.slide-trans-cur-ul li', function(){
			jQuery('.slide-trans-cur-ul li').each(function(){
				jQuery(this).removeClass('selected');
			});
			
			jQuery(this).addClass('selected');
			
			jQuery('input[name="slot_amount"]').val(jQuery(this).data('slot'));
			jQuery('input[name="transition_rotation"]').val(jQuery(this).data('rotation'));			
			jQuery('input[name="transition_duration"]').val(jQuery(this).data('duration'));
			jQuery('select[name="transition_ease_in"] option[value="'+jQuery(this).data('ease_in')+'"]').attr('selected', true);
			jQuery('select[name="transition_ease_out"] option[value="'+jQuery(this).data('ease_out')+'"]').attr('selected', true);
		});
		
		jQuery('.slide-trans-cur-ul li:first-child').click();
		
		jQuery('input[name="slot_amount"]').change(function(){
			jQuery('.slide-trans-cur-ul li.selected').data('slot', jQuery(this).val());
		});
		jQuery('input[name="transition_rotation"]').change(function(){
			jQuery('.slide-trans-cur-ul li.selected').data('rotation', jQuery(this).val());
		});
		jQuery('#transition_duration').change(function(){			
			jQuery('.slide-trans-cur-ul li.selected').data('duration', jQuery(this).val());
			t.setSlideTransitionTimerBar();
		});
		jQuery('#delay').change(function(){
			t.mainMaxTimeLeft = this.value / 10;
			t.setSlideTransitionTimerBar();
		});
		jQuery('select[name="transition_ease_in"]').change(function(){
			jQuery('.slide-trans-cur-ul li.selected').data('ease_in', jQuery(this).val());
		});
		jQuery('select[name="transition_ease_out"]').change(function(){
			jQuery('.slide-trans-cur-ul li.selected').data('ease_out', jQuery(this).val());
		});

		jQuery('.slide-trans-cur-ul').sortable({
			containment: ".slide-trans-cur-selected",
			stop:function() {
				setTimeout(function() {					
					setFakeAnim();
				},200);
			}
		})
			

		jQuery('#abs_rel_timeline').on('change',function() {
			t.timelinetype = jQuery(this).val();			
			t.updateAllLayerTimeline();
		})

		// END OF MAIN TRANSITION SELECTOR 
		jQuery(document).on('keydown', function(event) {	
			 var noinputfocus = jQuery('input:focus').length>0;
			 
			 if (event.ctrlKey || event.metaKey || event.shiftKey) {
			 
		        switch (String.fromCharCode(event.which).toLowerCase()) {
		        	case 's':
		     
		        		if (!event.shiftKey) {
		           			event.preventDefault();
		           			if (jQuery('#button_save_static_slide-tb').length>0)
		           				jQuery('#button_save_static_slide-tb').click();	
		           			else
		            			jQuery('#button_save_slide-tb').click();
		            	}
		            break;		      
		            case 'z':
						if ((event.metaKey || event.ctrlKey) && !noinputfocus) { 		            	
			            	event.preventDefault();
			            	if (event.shiftKey)
			            		u.oneStepRedo();
			            	else
			            		u.oneStepUndo();
			            }
		            break;  
		            case 'y':		            
		            	if ((event.ctrlKey || event.metaKey) && !noinputfocus) {
		            		event.preventDefault();
		            		u.oneStepRedo();
		            	}
		            break;  

		    	}
		    }
		    switch (event) {
				
			}
		});

		jQuery("body").on("keydown keyup",function(e) {
			
			
			if (jQuery('#layer_text').is(":focus")) return true;
			if (jQuery('#layer_text_toggle').is(":focus")) return true;
			
			var code = (e.keyCode ? e.keyCode : e.which),
			dist = jQuery(document.activeElement).data('steps')!=undefined ? parseFloat(jQuery(document.activeElement).data('steps')):1,
			x = Number(parseInt(jQuery('#layer_left').val(),0)),
			y = Number(parseInt(jQuery('#layer_top').val(),0));
			
			if (e.shiftKey) dist = dist*10; 
									
			switch (jQuery(document.activeElement).get(0).tagName.toLowerCase()) {
				case "INPUT":
				case "input":				
					var cv = parseFloat(jQuery(document.activeElement).val());
					
					if (jQuery(document.activeElement).data('suffix')!=undefined && !jQuery(document.activeElement).data('suffix').match(/auto/g)) {
						cv=Number(cv);
						if (jQuery.isNumeric(cv)) 
							switch(code) {
							    case 38: 
									if (e.type=="keyup") reBlurFocus(dist,cv,jQuery(document.activeElement));
									return false;
						        break;
						        case 40:									
									if (e.type=="keyup") reBlurFocus(-dist,cv,jQuery(document.activeElement));			 	
									return false;
						        break;
							}
					}							
				break;
				case "textarea":				
					return true;
				break;
				default:					
					switch(code) {
						case 8:
						case 46:
							e.preventDefault();
							if (e.type=="keydown") {								
								jQuery('#button_delete_layer').click();
								window.deletecalled = true;
							}
						break;
					}

					if (keyboardallowed) 						
						switch(code) {						
							
						    case 40: 
								if (e.type=="keyup") 
									setTimeout(function() {u.updateMovedLayers()},50);
								else
									u.adjustSelectedLayerPositions("top",dist);
								return false;
						    break;
						    case 38:
							    if (e.type=="keyup")
									setTimeout(function() {u.updateMovedLayers();},50);
								else
									u.adjustSelectedLayerPositions("top",-1*dist);				
								return false;
						    break;
						    case 37:
							    if (e.type=="keyup")					    		
									setTimeout(function() {u.updateMovedLayers();},50);
								else
									u.adjustSelectedLayerPositions("left",-1*dist);					
								return false;
						    break;
						    case 39:
							    if (e.type=="keyup") 						    		
									setTimeout(function() {u.updateMovedLayers();},50);	
								else											
									u.adjustSelectedLayerPositions("left",dist);						
								return false;
						    break;
						}					
				break;
			}
		});

		t.deepSelection();

		// DEEP LINK INPUT FIELD ADD ONS
		jQuery('.input-deepselects').each(function() {
			var inp = jQuery(this);
			inp.wrap('<span class="inp-deep-wrapper"></span>');
			inp.parent().append('<div class="inp-deep-list"></div>');
			var dl = inp.parent().find('.inp-deep-list'),
				txt = '<span class="inp-deep-listitems">',
				rev = inp.data('reverse'),
				minw = inp.data('deepwidth'),
				list = inp.data('selects') != undefined ? inp.data('selects').split("||") : "",
				vals = inp.data('svalues') != undefined ? inp.data('svalues').split("||") : "",
				icos = inp.data('icons') != undefined ? inp.data('icons').split("||") : "",
				id = inp.attr('id');
				
			if (minw!==undefined)
				punchgs.TweenLite.set(dl,{minWidth:minw+"px"});

			if (rev=="on") {
				txt = txt+"<span class='reverse_input_wrapper'><span class='reverse_input_text'>Direction Auto Reverse</span><input class='reverse_input_check tp-moderncheckbox' name='"+id+"_reverse' id='"+id+"_reverse' type='checkbox'></span>";
			}
			if (list!==undefined && list!="") {							
				jQuery.each(list,function(i){
					var v = vals[i] || "",
						l = list[i] || "",
						i = icos[i] || "";								
					txt = txt + "<span class='inp-deep-prebutton' data-val='"+v+"'><i class='eg-icon-"+i+"'></i>"+l+"</span>";
				});	
			}
			txt = txt + "</span>";
			
			dl.append(txt);
			if (rev=="on") {
				RevSliderSettings.onoffStatus(jQuery('input[name="'+id+'_reverse"]'));
			}
		})

		jQuery('body').on('click','.inp-deep-prebutton',function() {
			var btn = jQuery(this),
				inp = btn.closest('.inp-deep-wrapper').find('input');
			inp.val(btn.data('val'));			
			inp.blur();
			inp.focus();
			inp.trigger("change");						
		});

		jQuery('body').on('click','.input-deepselects',function() {
				jQuery(this).closest('.inp-deep-wrapper').find('.inp-deep-list').addClass("visible");
				jQuery(this).closest('.inp-deep-wrapper').addClass("selected-deep-wrapper");
		})

		jQuery('.inp-deep-wrapper').on('mouseleave',function() {
			jQuery(this).find('.inp-deep-list').removeClass("visible");
			jQuery(this).removeClass("selected-deep-wrapper");
		});


		// SHOW HIDE MASKING PARAMETERS
		jQuery('input[name="masking-start"]').on("change",function() {		
			if (jQuery(this).attr('checked') ==="checked")
			 	jQuery('.mask-start-settings').show();
			 else									
			 	jQuery('.mask-start-settings').hide();
		})	

		jQuery('input[name="masking-end"]').on("change",function() {			
			if (jQuery(this).attr('checked') ==="checked")
			 	jQuery('.mask-end-settings').show();
			 else									
			 	jQuery('.mask-end-settings').hide();
		});

		jQuery('#use_text_color_start').on("change",function() {
			if (jQuery(this).attr('checked') === "checked")
				jQuery('.use_text_color_wrap_start').show();
			else
				jQuery('.use_text_color_wrap_start').hide();
		});

		jQuery('#use_bg_color_start').on("change",function() {
			if (jQuery(this).attr('checked') === "checked")
				jQuery('.use_bg_color_wrap_start').show();
			else
				jQuery('.use_bg_color_wrap_start').hide();
		});


		jQuery('#use_text_color_end').on("change",function() {
			if (jQuery(this).attr('checked') === "checked")
				jQuery('.use_text_color_wrap_end').show();
			else
				jQuery('.use_text_color_wrap_end').hide();
		});

		jQuery('#use_bg_color_end').on("change",function() {
			if (jQuery(this).attr('checked') === "checked")
				jQuery('.use_bg_color_wrap_end').show();
			else
				jQuery('.use_bg_color_wrap_end').hide();
		});

		

		// OPEN QUICK TIME LINE INPUT FIELDS		
		jQuery('body').on('click','.show_timeline_helper',function() {
			var btn = jQuery(this),
				li = btn.closest('li'),
				tf = btn.closest('.timeline_frame'),
				d = jQuery('#timline-manual-dialog'),
				pl = tf.position().left,
				lw = li.width(),
				fi = tf.data('frameindex'),
				objLayer = u.getLayerByUniqueId(li.data('uniqueid')),
				st = objLayer.frames["frame_"+fi].time,
				sp = objLayer.frames["frame_"+fi].speed;


			d.appendTo(li);
			pl = fi===999 ? (pl-d.width()+tf.width()-20) : fi===0 ? pl : (pl-d.width()/2)+10;
			pl = pl<20 ? 20 : pl;			
			d.css({left:pl});

			// Update Frame Start and Speed in Quick Editor

			jQuery('#clayer_start_time').val(st)
			jQuery('#clayer_start_speed').val(sp)
			d.data('frameindex',fi);
			d.data('uniqueid',objLayer.unique_id);
			d.show();
		})

		// CLOSE QUICK TIME LINE INPUT FIELDS
		jQuery('body').on('click','#timline-manual-closer',function() {
			var d = jQuery('#timline-manual-dialog');
			d.hide();
			d.appendTo(jQuery('#thelayer-editor-wrapper'));
			
		});

		jQuery('body').on('click','#timline-manual-apply',function() {	

			var btn = jQuery(this),
				d = jQuery('#timline-manual-dialog'),																
				fi = d.data('frameindex'),
				frame = document.getElementById("tl_"+d.data('uniqueid')+"_frame_"+fi)
				objLayer = u.getLayerByUniqueId(d.data('uniqueid')),
				objUpdate = {frames:{}};
			
			t.recordFrameStatus(frame);

			objUpdate.frames["frame_"+fi] = {};
			
			objUpdate.frames["frame_"+fi].time = jQuery('#clayer_start_time').val();
			objUpdate.frames["frame_"+fi].speed = jQuery('#clayer_start_speed').val();
	
			d.hide();	
			d.appendTo(jQuery('#thelayer-editor-wrapper'));			
			u.updateLayer(objLayer.serial,objUpdate);
			t.updateLayerTimeline(objLayer);	

	  		t.updateTLFrame(frame,"trigger");
	  		t.updateAllSelectedLayerTimeline(frame);	 	
	  		
			t.updateAllLayerTimeline();  	//PERFORMANCE WIN, ONLY CALL IF LAYER IS A GROUP OR COLUMN ETC... 
		});

		

		// SELECT / DESELECT ALL LAYERS
		jQuery('body').on('click','#timing-all-onoff-checkbox',function() {
			var b = jQuery(this),
				objUpdate = {};
			
			if (b.attr('checked')!="checked" || jQuery('.mastertimer-timeline-selector-row.selected').length==jQuery('.layer-on-timeline-selector').length) {				
				jQuery('.mastertimer-timeline-selector-row.selected').removeClass("selected");
				jQuery('.layer-on-timeline-selector').removeAttr('checked');
			} else {				
				jQuery('.layer-on-timeline-selector').attr('checked','checked');
				jQuery('.sortable_elements .mastertimer-timeline-selector-row').addClass("selected");
			}
			t.checkMultipleSelectedItems();
			checkAvailableAutoTimes();
		});

		jQuery('body').on('click','.list-of-layer-links', function() {
			jQuery(this).toggleClass("showmenow");
		});

		jQuery('body').on('click','.timing-layer-link-type-element',function() {
			var ltype = jQuery(this).data('linktype'),
				objUpdate = {};
			u.selectedLayers = [];
			jQuery('.layer-on-timeline-selector').each(function() {
				var inp = jQuery(this),
					uniqueid = inp.closest('.mastertimer-layer').data('uniqueid'),
					objLayer = u.getLayerByUniqueId(uniqueid);

				if (objLayer.groupLink == ltype) {
					inp.attr('checked','checked');
					u.selectedLayers.push(uniqueid);	
					objLayer.references.htmlLayer.addClass("multiplelayerselected");					
				} else {
					inp.removeAttr('checked','checked');
					objLayer.references.htmlLayer.removeClass("multiplelayerselected");				
				}				
			});	
		});
		jQuery('body').on('change','.layer-on-timeline-selector',function() { t.checkMultipleSelectedItems() });		
	}


	t.deepSelection = function(extend) {
		// DEEP LINK INPUT FIELD ADD ONS
		jQuery('.input-deepselects').each(function() {
			var inp = jQuery(this);
			if (!inp.hasClass("deepselection_ready")) {
				inp.addClass("deepselection_ready");
				inp.wrap('<span class="inp-deep-wrapper"></span>');
				inp.parent().append('<span class="inp-deep-list"></span>');
				var dl = inp.parent().find('.inp-deep-list'),
					txt = '<span class="inp-deep-listitems">',
					rev = inp.data('reverse'),
					minw = inp.data('deepwidth'),
					list = inp.data('selects') != undefined ? inp.data('selects').split("||") : "",
					vals = inp.data('svalues') != undefined ? inp.data('svalues').split("||") : "",
					icos = inp.data('icons') != undefined ? inp.data('icons').split("||") : "",
					id = inp.attr('id');
					
				if (minw!==undefined)
					punchgs.TweenLite.set(dl,{minWidth:minw+"px"});

				if (rev=="on") {
					txt = txt+"<span class='reverse_input_wrapper'><span class='reverse_input_text'>Direction Auto Reverse</span><input class='reverse_input_check tp-moderncheckbox' name='"+id+"_reverse' id='"+id+"_reverse' type='checkbox'></span>";
				}
				if (list!==undefined && list!="") {							
					jQuery.each(list,function(i){
						var v = vals[i] || "",
							l = list[i] || "",
							i = icos[i] || "";								
						txt = txt + "<span class='inp-deep-prebutton' data-val='"+v+"'><i class='eg-icon-"+i+"'></i>"+l+"</span>";
					});	
				}
				txt = txt + "</span>";
				
				dl.append(txt);
				if (rev=="on") {
					RevSliderSettings.onoffStatus(jQuery('input[name="'+id+'_reverse"]'));
				}

				inp.parent().on('mouseleave',function() {					
					jQuery(this).find('.inp-deep-list').removeClass("visible");
					jQuery(this).removeClass("selected-deep-wrapper");
				});
			}

		})

		if (extend!==true) {

			jQuery('body').on('click','.inp-deep-prebutton',function() {
				var btn = jQuery(this),
					inp = btn.closest('.inp-deep-wrapper').find('input');
				inp.val(btn.data('val'));			
				inp.blur();
				inp.focus();
				inp.trigger("change");						
			});

			jQuery('body').on('click','.input-deepselects',function() {					
					jQuery(this).closest('.inp-deep-wrapper').find('.inp-deep-list').addClass("visible");
					jQuery(this).closest('.inp-deep-wrapper').addClass("selected-deep-wrapper");
			})


		}

	}

	t.checkMultipleSelectedItems = function(disableall) {
		u.selectedLayers = [];
		var objUpdate = {};
		jQuery('.layer-on-timeline-selector').each(function() {
			var inp = jQuery(this),
				objLayer = u.getLayerByUniqueId(inp.closest('.mastertimer-layer').data('uniqueid'));

			if (inp.attr('checked') && disableall!==true) {
				objLayer.references.htmlLayer.addClass("multiplelayerselected");
				u.selectedLayers.push(objLayer.unique_id);				
			} else {
				inp.removeAttr('checked');
				objLayer.references.htmlLayer.removeClass("multiplelayerselected");				
			}			
		});					
	}

	// COMPARE SLIDE LENGTH TO LAYERS END, AND UPDATE THE END OF THE LAYERS AS NEEDED
	t.compareLayerEndsVSSlideEnd = function() {				
		var maxtime = (t.mainMaxTimeLeft)*10;		
		jQuery.each(u.arrLayers,function(i,objLayer) {						
			if (objLayer.endWithSlide || maxtime<objLayer.frames["frame_999"].time - objLayer.frames["frame_999"].speed) {				
				objLayer.frames["frame_999"].time = maxtime+objLayer.frames["frame_999"].speed;
				//t.updateLayerTimeline(jQuery('#layer_sort_time_'+objLayer.serial+" .timeline .tl-fullanim"));
			}
		});		
		t.updateAllLayerTimeline();
	}

	function checkAvailableAutoTimes() {
		var sel = jQuery('.mastertimer-timeline-selector-row.selected').length;				
			jQuery('.autotiming-action').addClass("notclickable");
		
		if (sel>1) {
			jQuery('.autotiming-action').removeClass("notclickable");			
		} else

		if (sel==1) {
			jQuery('.autotiming-action-3').removeClass("notclickable");
			jQuery('.autotiming-action-4').removeClass("notclickable");
			jQuery('.autotiming-action-5').removeClass("notclickable");
			jQuery('.autotiming-action-6').removeClass("notclickable");
		}
	}
	
	function addIconFunction() {
		jQuery('#tp-addiconbutton, .addbutton-icon').click(function() {


			var buttons = {"Close":function(){jQuery("#dialog_insert_button").dialog("close")}}			
			jQuery("#dialog_insert_icon").dialog({
				//buttons:buttons,
				width:491,
				height:500,
				dialogClass:"tpdialogs",
				resize:function() {
						var di = jQuery('#dialog_insert_icon');
						di.css({width:(di.parent().width()-30),height:(di.parent().height()-60)});	
				},
				modal:true,
				create:function(event,ui) {
					var cont = jQuery(event.target),
						sheets = document.styleSheets,
						di = jQuery('#dialog_insert_icon');
					di.parent().css({padding:"0px", border:"none", borderRadius:"0px"});
					di.parent().find('.ui-dialog-titlebar.ui-widget-header.ui-corner-all.ui-helper-clearfix.ui-draggable-handle').addClass("tp-slider-new-dialog-title");
					//css({fontSize:"14px", fontWeight:"400",lineHeight:"35px"});
					if (sheets)
					jQuery.each(sheets,function(index,sheet) {
						var found = false,
							markup = "";	
						try{
							if (sheet.cssRules !==null & sheet.cssRules!=undefined)									
								jQuery.each(sheet.cssRules, function(index,rule) {
									
									if (rule && rule!==null && rule !=="null" && rule.selectorText!=undefined) {
										jQuery.each(rs_icon_sets,function(j,prefix){
											if (rule.selectorText.split(prefix).length>1 && rule.cssText.split("content").length>1) {																							
												var csname = rule.selectorText.split("::before")[0].split(":before")[0];
												
												if (csname!=undefined)  {
													csname = csname.split(".")[1];	
													if (csname!=undefined) {													
														if (found==false) {
																found=true;
																markup = '<ul class="tp-icon-preview-list lastaddediconset">';
														}
														markup=markup + '<li><i class="'+csname+'"></i></li>';
													}
												}
											}							
										})
									}
								});
						} catch(e) {}
						if (found) {
							markup = markup + '</ul>';
							cont.append(markup);
							var fli = cont.find('.lastaddediconset').find('li').first().find('i');
							cont.find('.lastaddediconset').prepend('<h3>'+fli.css("fontFamily")+'</h3>').removeClass("lastaddediconset");
						}
					})
					cont.on("click","li",function() {

						if (jQuery('#dialog_addbutton').length>0 && jQuery('#dialog_addbutton').closest('.tpdialogs').css('display')!=="none") {
							if (jQuery('.addbutton-icon:visible').length>0) {
								jQuery('.addbutton-icon').html(jQuery(this).html());
								jQuery("#dialog_insert_icon").dialog("close");
								setExampleButtons();
							} else {
								if (jQuery('.lasteditedlayertext').length>0)
									jQuery('.lasteditedlayertext').val(jQuery('.lasteditedlayertext').val()+jQuery(this).html()).blur().focus();	
								else
									jQuery('#layer_text').val(jQuery('#layer_text').val()+jQuery(this).html()).blur().focus();										
								jQuery("#dialog_insert_icon").dialog("close");
							}																												
						} else {
							if (jQuery('.lasteditedlayertext').length>0)
								jQuery('.lasteditedlayertext').val(jQuery('.lasteditedlayertext').val()+jQuery(this).html()).blur().focus();
							else
								jQuery('.layer_text').val(jQuery('#layer_text').val()+jQuery(this).html()).blur().focus();
							jQuery("#dialog_insert_icon").dialog("close");
						}
						
						u.updateLayerFromFields();
						
					});
				}
			});			
		});

	}

	function reBlurFocus(dist,cv,el) {	

		if (!jQuery('#rs-animation-tab-button').hasClass("selected") && !jQuery('#rs-loopanimation-tab-button').hasClass("selected")) {
			cv = Number(cv) +dist;			
			cv=Math.round(cv*100)/100;		
			el.val(cv);	
			/*  PUT THIS IN EDIT_LAYERS.js */
			jQuery(':focus').blur();
			
			el.focus();
		}
	}



	/***********************************************************
		-	INITIALISE CLICK, LOOP, INOUT ANIMATION HANDLERS	-
	***********************************************************/
	function basicClicksAndHovers() {
		// CHANGING ANY STYLE SHOULD REBUILD THE LAYERS
		jQuery('.rs-staticcustomstylechange').change(function() {

			//setTimeout(function() {
					
					t.rebuildLayerIdle(jQuery('.slide_layer.layer_selected'));
			//	},20);
		})


		// HANDLING OF LAYER ANIMATIONS STOP/PLAY OF SINGLE LAYERS
		jQuery('.rs-layer-settings-tabs li').click(function() {

				var li = jQuery(this);
				if ((li.attr('id') != '#rs-animation-tab-button' && li.closest('#rs-animation-tab-button').length==0) &&
					(li.attr('id') != '#rs-loopanimation-tab-button' && li.closest('#rs-loopanimation-tab-button').length==0)) {

						t.stopAllLayerAnimation();
						setTimeout(function() {
							u.removeCurrentLayerRotatable();
							u.makeCurrentLayerRotatable();
							jQuery('#hide_layer_content_editor').click();
						},19);
				} else
				if (!jQuery(this).hasClass("selected")) {
					t.stopAllLayerAnimation();
					if (li.attr('id') == '#rs-animation-tab-button' || li.closest('#rs-animation-tab-button').length!=0) {
						t.animateCurrentSelectedLayer(3);
						u.removeCurrentLayerRotatable();
						jQuery('#hide_layer_content_editor').click();
					} else {
						t.callCaptionLoops();
						u.removeCurrentLayerRotatable();
						jQuery('#hide_layer_content_editor').click();
					}
				}
		});

		// CLICK ON LAYERS ARE SHOULD STOP ANY LAYER ANIMATION OR LOOPS
		jQuery('#divLayers').click(function() {
			

			t.stopAllLayerAnimation();
			u.removeCurrentLayerRotatable();			
			
			setTimeout(function() {
				if (t.checkAnimationTab()) 
					t.animateCurrentSelectedLayer(4);
				
				if (t.checkLoopTab()) 
					t.callCaptionLoops();
			},19);				

		})

		// Click on LayerAnimation Button the current Selected Layer should be Animated
		jQuery('#layeranimation-playpause').click(function() {

				var btn = jQuery(this);
				if (btn.hasClass("inpause")) {
					btn.removeClass("inpause");
					if (t.checkAnimationTab()) {
						t.stopAllLayerAnimation();
						t.animateCurrentSelectedLayer(5);
						u.removeCurrentLayerRotatable();												
					}
				} else {
					btn.addClass("inpause");

					t.stopAllLayerAnimation();
				}
			})

		// Click on LayerAnimation Button the current Selected Layer should be Animated
		jQuery('#loopanimation-playpause').click(function() {

				var btn = jQuery(this);
				if (btn.hasClass("inpause")) { 
					btn.removeClass("inpause");
					if (t.checkLoopTab()) {
						t.stopAllLayerAnimation();						
						t.callCaptionLoops();						
						u.removeCurrentLayerRotatable();						
					}
				} else {
					btn.addClass("inpause");
					t.stopAllLayerAnimation();					
				}
			})
			
				
		jQuery('#rs-style-tab-button').click(function() {
			setTimeout(function() {
					jQuery('.slide_layer').each(function() {
						
						t.rebuildLayerIdle(jQuery(this));	
						var inlayer = jQuery(this).find('.innerslide_layer').first();
						if (inlayer.length>0 && inlayer.data('hoveranim')!=undefined) {
							var tl = inlayer.data('hoveranim');
							tl.seek(tl.endTime());
						}					
					})
				},19);	
		});
		
		jQuery('#toggle-idle-hover').click(function() {
			setTimeout(function() {					
					t.rebuildLayerIdle(jQuery('.slide_layer.layer_selected'));
			},19);
		})
		

		
		jQuery('#style_form_wrapper').on("colorchanged",function() {			
			t.rebuildLayerIdle(jQuery('.slide_layer.layer_selected'));				
		})
	}

	t.resetIdleSelector = function() {
		var bt = jQuery('#toggle-idle-hover');
		bt.addClass("idleisselected").removeClass("hoverisselected");
		jQuery('#tp-idle-state-advanced-style').show();
		jQuery('#tp-hover-state-advanced-style').hide();
	}

	/************************************************************************************************************************
				-	CHECK IF ANIMATION AND LOOP ANIMATION TABS ARE ACTIVATED AND IN IDLE OR PLAY MODE ARE	-
	**************************************************************************************************************************/

	t.checkAnimationTab = function() {
		return (!jQuery('#layeranimation-playpause').hasClass("inpause") && jQuery('#rs-animation-tab-button').hasClass("selected"));
	}

	t.checkLoopTab = function() {
		return (!jQuery('#loopanimation-playpause').hasClass("inpause") && jQuery('#rs-loopanimation-tab-button').hasClass("selected"));
	}



	/**********************************************************
					-	ANIMATION HANDLING	-
	**********************************************************/

	/*********************************
	-	PREPARE THE ANIMATIONS	-
	********************************/

	function preparePeviewAnimations() {

		// NORMAL FIELDS CHANGED IN IN/OUT ANIMATION
		jQuery('.rs-inoutanimationfield').on("change",
				function() {					
					if (t.checkAnimationTab()) {
						t.stopAllLayerAnimation();
						setTimeout(function() {						
								t.animateCurrentSelectedLayer(50);
						},19);
					}
				});
		// NORMAL FIELDS CHANGED IN LOOP ANIMATIONS
	}

	function prepareLoopAnimations() {

		// NORMAL FIELDS CHANGED IN IN/OUT ANIMATION
		jQuery('.rs-loopanimationfield').on("change",
				function() {
					if (t.checkLoopTab()) {
						t.stopAllLayerAnimation();
						setTimeout(function() {
								t.callCaptionLoops();
						},19);

					}
				});

	}

	/******************************
		-	STOP ALL ANIMATION	-
	********************************/

	t.stopAllLayerAnimation = function() {
		
		document.getElementById('mastertimer-playpause-wrapper').innerHTML = '<i class="eg-icon-play"></i><span>PLAY</span>';
		
		punchgs.TweenLite.set(document.getElementsByClassName('tp-mask-wrap'),{clearProps:"transform",overwrite:"all"});
		jQuery('#divbgholder').find('.tp-blockmask_in, .tp-blockmask_out').remove();
		
		jQuery('.tp-showmask').removeClass('tp-showmask');
		
		var ils = document.getElementsByClassName("innerslide_layer");
		for (var i=0;i<ils.length;i++) {
			var nextcaption = jQuery(ils[i]);			
				if (ils[i].parentNode.classList.contains('rs-preview-inside-looper') || ils[i].parentNode.parentNode.classList.contains('rs-preview-inside-looper'))
					nextcaption.unwrap();

			if (nextcaption.data('tl')!=undefined) {				
				var tl = nextcaption.data('tl');
				tl.clear();
				tl.kill();				
				try{
					if (nextcaption.data('mySplitText')) 
							nextcaption.data('mySplitText').revert();
					} catch(e) {}
				punchgs.TweenLite.set(nextcaption[0].parentNode,{autoAlpha:1});
				
				t.rebuildLayerIdle(nextcaption.closest('.slide_layer'));
				u.removeCurrentLayerRotatable();
			}
		}
		
		punchgs.TweenLite.set(document.getElementById('startanim_wrapper'),{autoAlpha:0});
		punchgs.TweenLite.set(document.getElementById('endanim_wrapper'),{autoAlpha:0});

	}


	/******************************
		-	LOOP ANIMATIONS	-
	********************************/

	t.callCaptionLoops = function() {
		t.stopAllLayerAnimation();
		
		var caption = jQuery('.slide_layer.layer_selected'),
			el = caption.find('.innerslide_layer').first();
		if (el.length==0) {
				return false;
			}

		var	id = u.getSerialFromID(caption.attr('id'));
			params=u.getLayer(id),
			loopanim = params["loop_animation"];



		if (el.closest('.rs-preview-inside-looper').length>0) {
			el.unwrap();
		}

		el.wrap('<div class="rs-preview-inside-looper" style="width:100%;height:100%;position:relative"></div>');

		var loopobj =caption.find('.rs-preview-inside-looper'),
			startdeg = params["loop_startdeg"],
			enddeg = params["loop_enddeg"],
			speed = params["loop_speed"],
			origin = ''+params["loop_xorigin"]+'% '+params["loop_yorigin"]+'%',
			easing = params["loop_easing"],
			angle= params["loop_angle"],
			radius = parseInt(params["loop_radius"],0),
			xs = params["loop_xstart"],
			ys = params["loop_ystart"],
			xe = params["loop_xend"],
			ye = params["loop_yend"],
			zoomstart = params["loop_zoomstart"],
			zoomend = params["loop_zoomend"];

		factor = 1;

        

		var tl = new punchgs.TimelineLite();
		tl.pause();


		// SOME LOOPING ANIMATION ON INTERNAL ELEMENTS
		switch (loopanim) {
			case "rs-pendulum":


					//punchgs.TweenLite.fromTo(loopobj,speed,{force3D:"auto",rotation:startdeg,transformOrigin:origin},{rotation:enddeg,ease:easing});
					tl.add(punchgs.TweenLite.fromTo(loopobj,speed,{force3D:"auto",rotation:startdeg,transformOrigin:origin},{rotation:enddeg,ease:easing}));
					tl.add(punchgs.TweenLite.fromTo(loopobj,speed,{force3D:"auto",rotation:enddeg},{rotation:startdeg,ease:easing,onComplete:function() {
						tl.restart();
					}}));
			break;

			case "rs-rotate":
					tl.add(punchgs.TweenLite.fromTo(loopobj,speed,{force3D:"auto",rotation:startdeg,transformOrigin:origin},{rotation:enddeg,ease:easing,onComplete:function() {
						tl.restart();
					}}));
			break;

			case "rs-slideloop":

					tl.add(punchgs.TweenLite.fromTo(loopobj,speed,{force3D:"auto",x:xs,y:ys},{x:xe,y:ye,ease:easing}));
					tl.add(punchgs.TweenLite.fromTo(loopobj,speed,{force3D:"auto",x:xe,y:ye},{x:xs,y:ys,onComplete:function() {
						tl.restart();
					}}));
			break;

			case "rs-pulse":
					tl.add(punchgs.TweenLite.fromTo(loopobj,speed,{force3D:"auto",scale:zoomstart},{scale:zoomend,ease:easing}));
					tl.add(punchgs.TweenLite.fromTo(loopobj,speed,{force3D:"auto",scale:zoomend},{scale:zoomstart,onComplete:function() {
						tl.restart();
					}}));
			break;

			case "rs-wave":					
					var _ox = ((parseInt(params["loop_xorigin"],0)/100)-0.5) * loopobj.width(),
						_oy = ((parseInt(params["loop_yorigin"],0)/100)-0.5) * loopobj.height(),
						yo = (-1*radius) + _oy,
						xo = 0 + _ox,
						angobj = {a:0, ang : angle, element:loopobj, unit:radius,xoffset:xo,yoffset:yo};

					var ang = parseInt(angle,0);

					tl.add(punchgs.TweenLite.fromTo(angobj,speed,
							{	a:0+ang	},
							{	a:360+ang,
								force3D:"auto",
								ease:punchgs.Linear.easeNone,								
								onUpdate:function() {
									var rad = angobj.a * (Math.PI / 180),
										yy = angobj.yoffset+(angobj.unit * (1 - Math.sin(rad))),
										xx = angobj.xoffset+Math.cos(rad) * angobj.unit;
						            punchgs.TweenLite.to(angobj.element,0.1,{force3D:"auto",x:xx, y:yy});
								},
								onComplete:function() {
									tl.restart();
								}
							}
							));
			break;
		}
		tl.play();
		caption.data('tl',tl);
	}


	/******************************************
		-	REBUILD IDLE STATES OF ITEMS 	-
	******************************************/
	
	t.rebuildLayerIdle = function(caption,timer,isDemo) {				
		timer = timer == undefined ? 50 : timer;
		isDemo = isDemo == undefined ? false : isDemo;
				
		if (g_rebuildTimer == 0) {
			timer = 0;
			g_rebuildTimer = 999;
		}
						
		if (caption==undefined || jQuery(caption).length==0 || caption[0].classList.contains("layer-deleted")) return false;
				
		var cp = jQuery(caption);
		

		clearTimeout(cp.data('idlerebuildtimer'));
						
		t.rebuildLayerIdleProgress(caption);
		
		
		var id = u.getSerialFromID(caption.attr('id')),
			objLayer = u.getLayer(id,isDemo);

		
		var e_img = caption.find('.tp-caption img');
		
		u.updateHtmlLayerPosition(false,objLayer,u.getVal(objLayer, 'top'),u.getVal(objLayer, 'left'),u.getVal(objLayer, 'align_hor'),u.getVal(objLayer, 'align_vert'));

		if (e_img.length>0 && !jQuery(e_img).hasClass("loaded")) {
			jQuery(e_img).addClass("loaded");
			
			var img = new Image();			
			img.onload = function() {					
							 				
				objLayer.originalWidth = this.width;
				objLayer.originalHeight = this.height;
				u.updateHtmlLayerPosition(false,objLayer,u.getVal(objLayer, 'top'),u.getVal(objLayer, 'left'),u.getVal(objLayer, 'align_hor'),u.getVal(objLayer, 'align_vert'));
			}
			img.onerror = function() {				
				e_img[0].src = objLayer.image_url = g_revslider_url+"/admin/assets/images/tp-brokenimage.png";
				u.updateHtmlLayerPosition(false,objLayer,u.getVal(objLayer, 'top'),u.getVal(objLayer, 'left'),u.getVal(objLayer, 'align_hor'),u.getVal(objLayer, 'align_vert'));
			}
			img.onabort = function() {				
				u.updateHtmlLayerPosition(false,objLayer,u.getVal(objLayer, 'top'),u.getVal(objLayer, 'left'),u.getVal(objLayer, 'align_hor'),u.getVal(objLayer, 'align_vert'));
			}

			img.src = e_img[0].src;
		} else {
			//u.updateHtmlLayerPosition(false,caption,objLayer,u.getVal(objLayer, 'top'),u.getVal(objLayer, 'left'),u.getVal(objLayer, 'align_hor'),u.getVal(objLayer, 'align_vert'));
			//update corners
			u.updateHtmlLayerCorners(objLayer);
			//update cross position
			u.updateCrossIconPosition(objLayer);
		}
		u.extendSlideHeightBasedOnRows();
		return true;
	}
	


	////////////////////////////////
	// REBUILD LAYER CSS FOR IDLE //
	////////////////////////////////
	t.rebuildLayerIdleProgress = function(caption) {

		if (caption===undefined) return;
		
		var is_demo = (caption.attr('id') !== caption.attr('id').replace('demo_layer_')) ? true : false;
		
		if (caption==undefined || jQuery(caption).length==0) return false;
		
		var id = u.getSerialFromID(caption.attr('id')),
			params=u.getLayer(id, is_demo);
		if (params==undefined || params==false) return false;

		// CLEAR UP HALF ANIMATED STATUS ON WRAPPING AND HELPING CONTAINERS
		punchgs.TweenLite.set(caption.find('.tp-mask-wrap'), {	 clearProps:"all", visibility:"visible",opacity:1});
		
		if (params.type==="column")
			punchgs.TweenLite.set(caption.find('.column_background').first(),{clearProps:"all",visibility:"visible",opacity:1});
				

		var inlayer = jQuery(caption[0].getElementsByClassName('innerslide_layer')[0]),
			deform = params.deformation,
			deformidle = params.deformation,
			deformhover = params["deformation-hover"],
			ss = params["static_styles"],
			fontcolor = window.RevColor.get(u.getVal(ss,"color")),
			fonttrans = deform["color-transparency"],
			bgcolor = window.RevColor.get(deform["background-color"]),			
			bordercolor = deform["border-color"],
			bordertrans = deform["border-transparency"];

	
		if (params.type=="audio") {
			if (params.video_data.video_show_visibility) {
				caption.addClass("invisible-audio");
			} else {
				caption.removeClass("invisible-audio");
			}
			return false;
		}


		//console.log(params)

		if(is_demo && params.alias == 'First'){
			
		}
		
		// REMOVE SPLITS
		if (inlayer.data('mySplitText') != undefined) {
			try{inlayer.data('mySplitText').revert();} catch(e) {}
			if (params.type=="text" || params.type=="button") {
				inlayer[0].innerHTML = params.text;				
				u.makeCurrentLayerRotatable();
			}
			inlayer.removeData('mySplitText')
		}

		
		// BORDER OPACITY
		if (Number(bordertrans)<1) {
			var rgb = UniteAdminRev.convertHexToRGB(bordercolor);
			bordercolor="rgba("+rgb[0]+","+rgb[1]+","+rgb[2]+","+bordertrans+")";
		}
		

		// SET ELEMENT IDLE		
		var mwidth = u.getVal(params,"max_width"),
			mheight = u.getVal(params,"max_height"),
			cmode = u.getVal(params,"cover_mode"),
			loc_position = "absolute";
		


				
		switch(params.type){
			case 'image':
				mwidth = u.getVal(params,"scaleX");
				mheight = u.getVal(params,"scaleY"); 
			break;
			case 'video':
				mwidth = params.video_data.cover===true || params.video_data.fullwidth===true ? "100%" : u.getVal(params,"video_width");
				mheight = params.video_data.cover===true || params.video_data.fullwidth===true ? "100%" :  u.getVal(params,"video_height"); 						
				caption.find('.slide_layer_video').css({width:parseInt(mwidth,0)+"px",height:parseInt(mheight,0)+"px"});								
			break;
			case 'row':				
				mwidth = "100%";
				if (u.getVal(params,"align_vert")==="bottom") 
					caption[0].style.position = "absolute"					
				else
					caption[0].style.position = "relative"			

				if ((params.column_break_at==="mobile" && t.layout==="mobile") ||
					(params.column_break_at==="tablet" && (t.layout==="tablet" || t.layout==="mobile")) ||
					(params.column_break_at==="notebook" && t.layout!=="desktop")) {
					caption.addClass("rev_breakcolumns");
				} else {
					caption.removeClass("rev_breakcolumns");
				}

			break;
			case 'column':
			
				mwidth = (100*eval(params.column_size))+"%";								
				mheight = "auto";
				caption[0].style.position = "relative";
				caption[0].style.display = "table_cell";
				caption[0].style.minHeight = parseInt(u.getVal(params,"min_height"),0)+"px";				
				caption[0].style.verticalAlign = deform["vertical-align"];
				caption[0].cb = caption[0].cb === undefined ? caption.find('.column_background') : caption[0].cb;
				/*caption[0].style.marginTop = parseInt(u.getVal(params,'margin')[0],0)+"px";
				caption[0].style.marginRight= parseInt(u.getVal(params,'margin')[1],0)+"px";
				caption[0].style.marginBottom = parseInt(u.getVal(params,'margin')[2],0)+"px";
				caption[0].style.marginLeft = parseInt(u.getVal(params,'margin')[3],0)+"px";*/				
				if (params.bgimage_url!==undefined && params.bgimage_url.length>0) {
					caption[0].cb.css({
						backgroundImage:"url('"+params.bgimage_url+"')", 
						backgroundSize:params.layer_bg_size, 
						backgroundPosition:params.layer_bg_position, 
						backgroundRepeat:params.layer_bg_repeat,						
					});									
				} else {
					caption[0].cb.css({
						backgroundImage:"",
						background:bgcolor				
					})	
				}
				
			break;
			case 'group':
				switch(mwidth) {
					case '#1/1#': mwidth="100%";break;
					case '#1/2#': mwidth="50%";break;
					case '#1/3#': mwidth="33.333333%";break;
					case '#2/3#': mwidth="66.666666%";break;
					
					case '#1/4#': mwidth="25%";break;
					case '#3/4#': mwidth="75%";break;
					
					case '#1/5#': mwidth="20%";break;
					case '#2/5#': mwidth="40%";break;
					case '#3/5#': mwidth="60%";break;
					case '#4/5#': mwidth="80%";break;

					case '#1/6#': mwidth="16.666666%";break;
					case '#4/6#': mwidth="66.666666%";break;
					case '#5/6#': mwidth="83.333333%";break;
					


				}
				
				
			break;
			
		}


		//console.log(params.text+"  "+params.groupOrder)
		
		if (deform.overflow===undefined || params.type!=="group")
			deform.overflow = "visible";
		
		if(mwidth == undefined) mwidth = '';
		if(mheight == undefined) mheight = '';

		
		if (params.p_uid!==-1 && u.getObjLayerType(params.p_uid)==="column") 
			punchgs.TweenLite.set(caption,{position:"relative", display:u.getVal(params,"display"), top:"auto",left:"auto",right:"auto",bottom:"auto"});										
		else {
			if (params.type==="column") {			
				punchgs.TweenLite.set(caption,{position:"absolute", display:"table-cell"});					
			}
			else
				punchgs.TweenLite.set(caption,{position:"absolute", display:"block"});
		}

		if (params.type==="column") bgcolor = "transparent"
		
		mwidth = cmode===undefined || cmode==="custom" ?  
				jQuery.isNumeric(mwidth) ? 
					mwidth+"px" : mwidth.match(/px/g) ? 
						parseInt(mwidth,0)+"px" : mwidth.match(/%/g) ? 
							parseFloat(mwidth)+"%" : mwidth :
								cmode === "fullwidth" || cmode ==="cover"  || cmode ==="cover-proportional" ? "100%" : mwidth;

		mheight = cmode===undefined || cmode==="custom" ?  
				jQuery.isNumeric(mheight) ? 
					mheight+"px" : mheight.match(/px/g) ? 
						parseInt(mheight,0)+"px" : mheight.match(/%/g) ? 
							parseFloat(mheight,0)+"%" : mheight :
								cmode === "fullheight" || cmode ==="cover" || cmode ==="cover-proportional"  ? "100%" : mheight;

		

		// SET LAYER WIDTH HEIGHT INNER AND OUTTER
		
		caption[0].style.width = mwidth;
		caption[0].style.height = mheight;
		if (params.type==="row") {			
			caption[0].style.minHeight = mheight;

			//caption[0].style.minWidth = mwidth;
			//caption[0].style.maxWidth = mwidth;			
		}
		
		var fw = parseInt(u.getVal(ss,"font-weight"),0) || 400;

		

		var bgimage = "";
		punchgs.TweenLite.set(inlayer, {	 clearProps:"all", visibility:"visible",opacity:1});

		
		if (params.bgimage_url!==undefined && params.bgimage_url.length>0 && params.type!=="column") 			
			inlayer.css({backgroundImage:"url('"+params.bgimage_url+"')", backgroundSize:params.layer_bg_size, backgroundPosition:params.layer_bg_position, backgroundRepeat:params.layer_bg_repeat});			
		else
			inlayer.css({backgroundImage:"", backgroundSize:params.layer_bg_size, backgroundPosition:params.layer_bg_position, backgroundRepeat:params.layer_bg_repeat});
		
		
		var inlay_object_anim = {
									z:deform.z,												 
									scaleX:parseFloat(deform.scalex),
									scaleY:parseFloat(deform.scaley),
									textAlign:u.getVal(params,"text-align"),
									rotationX:parseFloat(deform.xrotate),
									rotationY:parseFloat(deform.yrotate),
									rotationZ:parseFloat(params["2d_rotation"]),

									skewX:parseFloat(deform.skewx),
									skewY:parseFloat(deform.skewy),

									transformPerspective:parseFloat(deform.pers),
									transformOrigin:params["layer_2d_origin_x"]+"%"+params["layer_2d_origin_y"]+"%",

									autoAlpha:deform.opacity,
									paddingTop:parseInt(u.getVal(params,'padding')[0],0)+"px",
									paddingRight:parseInt(u.getVal(params,'padding')[1],0)+"px",
									paddingBottom:parseInt(u.getVal(params,'padding')[2],0)+"px",
									paddingLeft:parseInt(u.getVal(params,'padding')[3],0)+"px",
																			
									fontSize:parseInt(u.getVal(ss,"font-size"),0)+"px",
									lineHeight:parseInt(u.getVal(ss,"line-height"),0)+"px",		
									fontWeight:fw,		
									color:fontcolor,							
									letterSpacing:parseInt(u.getVal(ss,"letter-spacing"),0)+"px",
														
									fontStyle:deformidle["font-style"],
									textDecoration:deform["text-decoration"],
									textTransform:deform["text-transform"],
									borderColor:bordercolor,
									borderRadius:deform["border-radius"][0]+" "+deform["border-radius"][1]+" "+deform["border-radius"][2]+" "+deform["border-radius"][3],
									borderWidth:deform["border-width"][0]+" "+deform["border-width"][1]+" "+deform["border-width"][2]+" "+deform["border-width"][3],
									//borderWidth:parseInt(deform["border-width"],0)+"px",
									borderStyle:deform["border-style"],
									whiteSpace:u.getVal(params,"whitespace"),
									maxWidth:"100%",
									maxHeight:"100%"		
								}

		// CHECK GRADIENT BG COLOR
		if (bgcolor.indexOf("gradient")>=0) {
				inlay_object_anim.background = bgcolor;
			} else {
				inlay_object_anim.backgroundColor = bgcolor;
			}
		
		
		if ((deform.blurfilter!==undefined && parseInt(deform.blurfilter,0)>0) || (deformhover.blurfilter!==undefined && parseInt(deformhover.blurfilter,0)>0)) {
			var bf = 'blur('+parseInt(deform.blurfilter,0)+'px)';
			inlay_object_anim['-webkit-filter'] = bf;
			inlay_object_anim['filter'] = bf;			
		}


		if ((deform.grayscalefilter!==undefined && parseInt(deform.grayscalefilter,0)>0) || (deformhover.grayscalefilter!==undefined && parseInt(deformhover.grayscalefilter,0)>0)) {
			var gf = 'grayscale('+parseInt(deform.grayscalefilter,0)+'%)';
			inlay_object_anim['-webkit-filter'] = inlay_object_anim['-webkit-filter']===undefined ? gf : inlay_object_anim['-webkit-filter']+' '+gf;
			inlay_object_anim['filter'] = inlay_object_anim['filter']===undefined ? gf: inlay_object_anim['filter']+' '+gf;
		}
		
		if ((deform.brightnessfilter!==undefined && parseInt(deform.brightnessfilter,0)!==100) || (deformhover.brightnessfilter!==undefined && parseInt(deformhover.brightnessfilter,0)!=100)) {
			var brf = 'brightness('+parseInt(deform.brightnessfilter,0)+'%)';
			inlay_object_anim['-webkit-filter'] = inlay_object_anim['-webkit-filter']===undefined ? brf : inlay_object_anim['-webkit-filter']+' '+brf;
			inlay_object_anim['filter'] = inlay_object_anim['filter']===undefined ? brf: inlay_object_anim['filter']+' '+brf;
		}

		
		
		/*if (deform.shadow_idle===true) {
			var shcolor = UniteAdminRev.convertHexToRGB(deform.ds_color);
			shcolor="rgba("+shcolor[0]+","+shcolor[1]+","+shcolor[2]+","+deform.ds_opacity+")";
			var dshadow = "drop-shadow("+parseInt(deform.ds_x,0)+"px "+parseInt(deform.ds_y,0)+"px "+parseInt(deform.ds_blur,0)+"px "+shcolor+")";
			inlay_object_anim['-webkit-filter'] = inlay_object_anim['-webkit-filter']===undefined ? dshadow : inlay_object_anim['-webkit-filter']+' '+dshadow;
			inlay_object_anim['filter'] = inlay_object_anim['filter']===undefined ? dshadow: inlay_object_anim['filter']+' '+dshadow;
		}*/
		
		if (deformidle["font-family"]) inlay_object_anim.fontFamily = deformidle["font-family"];

		
		if (params.type==="group") punchgs.TweenLite.set(inlayer.find('.tp_layer_group_inner_wrapper').first(),{overflow:deform.overflow});
		if (params.type==="row") punchgs.TweenLite.set(inlayer.find('.tp_layer_group_inner_wrapper').first(),{minHeight:mheight});
		
		if (params.layer_blend_mode!==undefined && jQuery.inArray(params.type,["image","shape","text","svg"]>=0))		
			punchgs.TweenLite.set(inlayer.closest('.slide_layer'),{mixBlendMode:params.layer_blend_mode});
		
		switch (params.type) {
			case "shape":
			case "svg":
				punchgs.TweenLite.set(caption, {	
					 marginTop:parseInt(u.getVal(params,'margin')[0],0)+"px",
					 marginRight:parseInt(u.getVal(params,'margin')[1],0)+"px",
					 marginBottom:parseInt(u.getVal(params,'margin')[2],0)+"px",
					 marginLeft:parseInt(u.getVal(params,'margin')[3],0)+"px"
				});
			break;			

			case "column":				
				// Draw Border to fake color Background of Column Content
				punchgs.TweenLite.set(caption.find('.column_background'),{
					 borderTopWidth:parseInt(u.getVal(params,'margin')[0],0)+"px",
					 borderRightWidth:parseInt(u.getVal(params,'margin')[1],0)+"px",
					 borderBottomWidth:parseInt(u.getVal(params,'margin')[2],0)+"px",
					 borderLeftWidth:parseInt(u.getVal(params,'margin')[3],0)+"px"
				});

				// Set Column inner Content Spacing for Column Gap's				
				inlay_object_anim.marginTop=parseInt(u.getVal(params,'margin')[0],0)+"px";
				inlay_object_anim.marginRight=parseInt(u.getVal(params,'margin')[1],0)+"px";
				inlay_object_anim.marginBottom=parseInt(u.getVal(params,'margin')[2],0)+"px";
				inlay_object_anim.marginLeft=parseInt(u.getVal(params,'margin')[3],0)+"px";				
			break;			
			default:
				punchgs.TweenLite.set(caption, {	
					 marginTop:parseInt(u.getVal(params,'margin')[0],0)+"px",
					 marginRight:parseInt(u.getVal(params,'margin')[1],0)+"px",
					 marginBottom:parseInt(u.getVal(params,'margin')[2],0)+"px",
					 marginLeft:parseInt(u.getVal(params,'margin')[3],0)+"px"
				});
			break;
		}
		
		if (params.type==="image") {
			if(params.scaleProportional) {					
				punchgs.TweenLite.set(inlayer.find('img'),{width:"100%",height:"auto"})
				inlay_object_anim.width="100%";
				inlay_object_anim.height="auto";
			} else {					
				punchgs.TweenLite.set(inlayer.find('img'),{width:"100%",height:"100%"})
				inlay_object_anim.width="100%";
				inlay_object_anim.height="100%";				
			}		
		}

		if (params.type==="video") {			
				punchgs.TweenLite.set(inlayer.find('.slide_layer_video'),{width:"100%",height:"100%"})				
				inlay_object_anim.width="100%";
				inlay_object_anim.height="100%";								
		}
		
		if (params.type==="svg" && params.svg!=undefined) {			
			var svgstrokecolor = window.RevColor.get(params.svg["svgstroke-color"]) || "transparent",				
				svgstrokewidth = params.svg["svgstroke-width"] || 0,
				svgstrokedasharray = params.svg["svgstroke-dasharray"] || 0,
				svgstrokedashoffset = params.svg["svgstroke-dashoffset"] || 0;
						
			punchgs.TweenLite.set(inlayer.find('svg'),{
															fill:fontcolor,
															stroke:svgstrokecolor,
															strokeWidth:svgstrokewidth,
															strokeDasharray:svgstrokedasharray,
															strokeDashoffset:svgstrokedashoffset
														});				
			punchgs.TweenLite.set(inlayer.find('svg path'),{
															fill:fontcolor
														});	
		}


		// SET INLAYER STYLE
		
		punchgs.TweenLite.set(inlayer, inlay_object_anim);


		if (params.inline !=undefined && params.inline.idle!=undefined)					
			jQuery.each(params.inline.idle, function(key,value) {
				inlayer.css(key,value);
			})
		
		//SET ELEMENT HOVER (IN CASE IT EXISTS)
		
		if (params.hover===true) {
			deform = params["deformation-hover"];
			var fontcolor = window.RevColor.get(deform.color),
				fonttrans = deform["color-transparency"],		
				bgcolor = window.RevColor.get(deform["background-color"]),
				bgtrans = deform["background-transparency"],
				bordercolor = deform["border-color"],
				bordertrans = deform["border-transparency"];

						

			// BORDER OPACITY
			if (Number(bordertrans)<1) {
				var rgb = UniteAdminRev.convertHexToRGB(bordercolor);
				bordercolor="rgba("+rgb[0]+","+rgb[1]+","+rgb[2]+","+bordertrans+")";
			}
				
			var tl=new punchgs.TimelineLite();				
			tl.pause();
			
			var hoverspeed = parseFloat(deform.speed)/1000;
			hoverspeed = hoverspeed === 0 ? 0.001 : hoverspeed;

			var hover_object_anim =  {
									 scaleX:parseFloat(deform.scalex),
									 scaleY:parseFloat(deform.scaley),

									 rotationX:parseFloat(deform.xrotate),
									 rotationY:parseFloat(deform.yrotate),
									 rotationZ:parseFloat(deform["2d_rotation"]),

									 skewX:parseFloat(deform.skewx),
									 skewY:parseFloat(deform.skewy),
									 autoAlpha:deform.opacity,
									 color:fontcolor,									 					
									 textDecoration:deform["text-decoration"],
									 borderColor:bordercolor,
									 borderRadius:parseInt(deform["border-radius"][0],0)+"px "+parseInt(deform["border-radius"][1],0)+"px "+parseInt(deform["border-radius"][2],0)+"px "+parseInt(deform["border-radius"][3],0)+"px",
									 borderWidth:parseInt(deform["border-width"][0],0)+"px "+parseInt(deform["border-width"][1],0)+"px "+parseInt(deform["border-width"][2],0)+"px "+parseInt(deform["border-width"][3],0)+"px",
									 //borderWidth:parseInt(deform["border-width"],0)+"px",
									 borderStyle:deform["border-style"],
									 onComplete:function() {
									 	if (params.inline && params.inline.hover!=undefined)					
											jQuery.each(params.inline.hover, function(key,value) {
												inlayer.css(key,value);
											})
									 },
									 ease:deform.easing
							}

			if (bgcolor.indexOf("gradient")>=0) {
				hover_object_anim.background = bgcolor;
			} else {
				hover_object_anim.backgroundColor = bgcolor;
			}

			if ((deform.blurfilter!==undefined && parseInt(deform.blurfilter,0)>0) || (deformidle.blurfilter!==undefined && parseInt(deformidle.blurfilter,0)>0)) {
				var bf = 'blur('+parseInt(deform.blurfilter,0)+'px)';
				hover_object_anim['-webkit-filter'] = bf;
				hover_object_anim['filter'] = bf;			
			}

			if ((deform.grayscalefilter!==undefined && parseInt(deform.grayscalefilter,0)>0) || (deformidle.grayscalefilter!==undefined && parseInt(deformidle.grayscalefilter,0)>0)) {
				var gf = 'grayscale('+parseInt(deform.grayscalefilter,0)+'%)';
				hover_object_anim['-webkit-filter'] = hover_object_anim['-webkit-filter']===undefined ? gf : hover_object_anim['-webkit-filter']+' '+gf;
				hover_object_anim['filter'] = hover_object_anim['filter']===undefined ? gf: hover_object_anim['filter']+' '+gf;
			}

			if ((deform.brightnessfilter!==undefined && parseInt(deform.brightnessfilter,0)!=100) || (deformidle.brightnessfilter!==undefined && parseInt(deformidle.brightnessfilter,0)!=100)) {
				var brf = 'brightness('+parseInt(deform.brightnessfilter,0)+'%)';
				hover_object_anim['-webkit-filter'] = hover_object_anim['-webkit-filter']===undefined ? brf : hover_object_anim['-webkit-filter']+' '+brf;
				hover_object_anim['filter'] = hover_object_anim['filter']===undefined ? brf: hover_object_anim['filter']+' '+brf;
			}

			/*if (deformidle.shadow_idle===true) {
				var shcolor = UniteAdminRev.convertHexToRGB(deformidle.ds_color);
				shcolor="rgba("+shcolor[0]+","+shcolor[1]+","+shcolor[2]+","+deformidle.ds_opacity+")";
				var dshadow = "drop-shadow("+parseInt(deformidle.ds_x,0)+"px "+parseInt(deformidle.ds_y,0)+"px "+parseInt(deformidle.ds_blur,0)+"px "+shcolor+")";
				hover_object_anim['-webkit-filter'] = inlay_object_anim['-webkit-filter']===undefined ? dshadow : inlay_object_anim['-webkit-filter']+' '+dshadow;
				hover_object_anim['filter'] = inlay_object_anim['filter']===undefined ? dshadow: inlay_object_anim['filter']+' '+dshadow;
			}*/


			// ANIMATION TO HOVER EFFECT
			tl.add(punchgs.TweenLite.to(inlayer, hoverspeed,hover_object_anim));


			if (params.type==="svg" && params.svg!=undefined) {					
					var svgstrokecolor = window.RevColor.get(params.svg["svgstroke-hover-color"]) || "transparent",						
						svgstrokewidth = params.svg["svgstroke-hover-width"] || 0,
						svgstrokedasharray = params.svg["svgstroke-hover-dasharray"] || 0,
						svgstrokedashoffset = params.svg["svgstroke-hover-dashoffset"] || 0;
					
			
					tl.add(punchgs.TweenLite.to(inlayer.find('svg'),hoverspeed,{
																	fill:fontcolor,
																	stroke:svgstrokecolor,
																	strokeWidth:svgstrokewidth,
																	strokeDasharray:svgstrokedasharray,
																	strokeDashoffset:svgstrokedashoffset,
																	ease:deform.easing
																}),0);		
					tl.add(punchgs.TweenLite.to(inlayer.find('svg path'),hoverspeed,{
															fill:fontcolor
														}),0);	
			}

			inlayer.data('hoveranim',tl);
			

			

			// ADD HOVER ON THE ELEMENT
			if (caption.data('hoverexist')===undefined || caption.data('hoverexist')===false)  {
				caption.hover(function() {
				  if (jQuery('#rs-style-tab-button').hasClass("selected")) {
					if (jQuery('#toggle-idle-hover').hasClass("idleisselected")) {
						var inlayer = jQuery(this).find('.innerslide_layer').first();
						if (inlayer.length>0 && inlayer.data('hoveranim')!=undefined) {
							var tl = inlayer.data('hoveranim');
							tl.play(0);
						}
					}
				  }
				},function() {
					if (jQuery('#rs-style-tab-button').hasClass("selected")) {
						if (jQuery('#toggle-idle-hover').hasClass("idleisselected")) {
							var inlayer = jQuery(this).find('.innerslide_layer').first();
							if (inlayer.length>0 && inlayer.data('hoveranim')!=undefined) {
								var tl = inlayer.data('hoveranim');
								tl.reverse();
							}
						}
					}
				});
				caption.data('hoverexist',true);
			} 


			
			
			
			if (document.getElementById('toggle-idle-hover').classList.contains("hoverisselected")) {				
				tl.seek(tl.endTime());
			} else {				
				tl.seek(0);
				tl.pause(0);
				setTimeout(function() {					
					tl.pause(0);
				},109)
			}
		} else {
			caption.unbind("hover");
			caption.data("hoverexist",false);
		}


		
	}

	/******************************************************************************************
			-	ANIMATE CURRENT SELECTED LAYER IN AND OUT ON SHORT TIMEFRAME	-
	********************************************************************************************/

	t.animateCurrentSelectedLayer = function(delay) {
		

		//	if (delay==undefined) delay = 229;
			u.removeCurrentLayerRotatable();
			var nextcaption = jQuery('.slide_layer.layer_selected').find('.innerslide_layer').first();
			
			if (nextcaption.length==0) {
					return false;
			}
			if (nextcaption.data('tl')==undefined)
				var tl=new punchgs.TimelineLite();
			else
				var tl = nextcaption.data('tl');
			
			tl.clear();
			tl.kill();
			tl.pause();
			
				
	
			nextcaption.data('inanim',theLayerInAnimation(nextcaption));
			nextcaption.data('outanim',theLayerOutAnimation(nextcaption));

			// RUN THE IN ANIMATION
			tl.addLabel("inanimation");
			tl.add(nextcaption.data('inanim'),"=+0.2");

			// ADD SOME ANIMATION ON THE IN/OUT TABS
			tl.addLabel("outanimation");
			tl.add(punchgs.TweenLite.fromTo(jQuery('#startanim_timerunner'),1,{x:0,y:0},{y:41}),"outanimation");
			tl.add(punchgs.TweenLite.fromTo(jQuery('#startanim_timerunnerbox'),1,{x:0,y:0},{y:41}),"outanimation");
			tl.add(punchgs.TweenLite.fromTo(jQuery('#endanim_timerunnerbox'),1,{x:0,y:-41},{x:0,y:0}),"outanimation");
			tl.add(punchgs.TweenLite.fromTo(jQuery('#endanim_timerunner'),1,{x:0,y:-41},{y:0}),"outanimation");
			tl.add(punchgs.TweenLite.set(jQuery('#endanim_wrapper'),{width:67,autoAlpha:1}),"outanimation");

			// RUN THE OUT ANIMATION
			tl.add(nextcaption.data('outanim'));
			tl.eventCallback("onComplete",function() {
				tl.restart();
			})


			tl.play();

			nextcaption.data('tl',tl);
			
		}


	/***************************************
		-	BUILD IN ANIMATION TIMELINE	-
	****************************************/

	var checkAnimValue = function(val,defval,nextcaption,direction,$splitamount) {
		var v = val,
			d = defval;


		if (jQuery.isNumeric(parseFloat(v))) {				
			return parseFloat(v);
		} else 
		if (v===undefined || v==="inherit") {				
			return d;
		} else 
		if (v.split("{").length>1) {
			var min = v.split(",");
				max = min[1].split("}")[0];
			min = min[0].split("{")[1];
			
			if ($splitamount!==undefined && $splitamount>1) {
				v="["+(parseInt(Math.random()*(max-min),0) + parseInt(min,0));
				for (var i=0;i<$splitamount;i++) {
					v = v+"|"+(parseInt(Math.random()*(max-min),0) + parseInt(min,0));
				}
			v = v+"]";
			} else {
				v = Math.random()*(max-min) + min;				
			}
			
			return v;
		} else {
			var cw = jQuery('#divLayers').width(),
				ch = jQuery('#divLayers').height(),
				el = nextcaption.closest('.slide_layer'),
				elw = el.width(),
				elh = el.height(),
				p = el.position();

			if (v.match(/%]/g)) {
				v = v.split("[")[1].split("]")[0];				
				if (direction=="horizontal")
					v = elw*parseInt(v,0)/100;
				else
				if (direction=="vertical")
					v = elh*parseInt(v,0)/100;
			} else 

			switch (v.toLowerCase()) {
				case "top":
				case "stage_top":
					v = 0-elh-p.top;						
				break;
				case "bottom":						
				case "stage_bottom":						
					v = ch;
				break;
				case "stage_left":
				case "left":
					v = 0-elw-p.left;
				break;
				case "right":
				case "stage_right":
					v = cw;
				break;
				case "center":
				case "stage_center":
					v =  (cw/2 - p.left - elw/2);
				break;
				case "middle":
				case "stage_middle":
					v =  (ch/2 - p.top - elh/2);
				break;


				case "layer_top":
					v = 0-elh;						
				break;
				case "layer_bottom":						
					v = elh;
				break;
				case "layer_left":
					v = 0-elw;
				break;
				case "layer_right":
					v = elw;
				break;
				case "layer_center":					
					v =  elw/2;
				break;
				case "layer_middle":
					v =  elh/2;
				break;
				default:
				break;
			}				
			
			return v;
		}		
		return v;	
	}	

	// SFX ANIMATIONS
	function checkSFXAnimations(params,effect,mask,mdelay,easedata,speed) {
		 
		// BLOCK SFX ANIMATIONS
		if (effect!==undefined && effect.indexOf("block")>=0) {
			var $sfx = new Object();
			
			if (mask.find('.tp-blockmask_in').length===0) {
				mask.append('<div class="tp-blockmask_in"></div>');
				mask.append('<div class="tp-blockmask_out"></div>');
			}
			
			$sfx.ft = [{scaleY:1,scaleX:0,transformOrigin:"0% 50%"},{scaleY:1,scaleX:1,ease:easedata,immediateRender:false}];				
			$sfx.t =  {scaleY:1,scaleX:0,transformOrigin:"100% 50%",ease:easedata,immediateRender:false};						
			$sfx.bmask_in = mask.find('.tp-blockmask_in');
			$sfx.bmask_out = mask.find('.tp-blockmask_out');
			$sfx.type = "block";
														
			switch (effect) {			
				case "blocktoleft":
				case "blockfromright":				
					$sfx.ft[0].transformOrigin = "100% 50%";
					$sfx.t.transformOrigin = "0% 50%";
				break;

				case "blockfromtop":
				case "blocktobottom":
					$sfx.ft = [{scaleX:1,scaleY:0,transformOrigin:"50% 0%"},{scaleX:1,scaleY:1,ease:easedata,immediateRender:false}];
					$sfx.t =  {scaleX:1,scaleY:0,transformOrigin:"50% 100%",ease:easedata,immediateRender:false};
				break;

				case "blocktotop":
				case "blockfrombottom":
					$sfx.ft = [{scaleX:1,scaleY:0,transformOrigin:"50% 100%"},{scaleX:1,scaleY:1,ease:easedata,immediateRender:false}];
					$sfx.t =  {scaleX:1,scaleY:0,transformOrigin:"50% 0%",ease:easedata,immediateRender:false};
				break;
			}
			$sfx.ft[1].overwrite = "auto";
			$sfx.t.overwrite = "auto";

			return $sfx;
		} else {
			mask.find('.tp-blockmask').remove();
			return false;
		}
	}

	//////////////////////////////////////////////
	//	-	GET SPLITTEXT DIRECTION ARRAY	-  //
	/////////////////////////////////////////////

	function shuffleArray(array) {
	  var currentIndex = array.length, temporaryValue, randomIndex;

	  // While there remain elements to shuffle...
	  while (0 !== currentIndex) {

	    // Pick a remaining element...
	    randomIndex = Math.floor(Math.random() * currentIndex);
	    currentIndex -= 1;

	    // And swap it with the current element.
	    temporaryValue = array[currentIndex];
	    array[currentIndex] = array[randomIndex];
	    array[randomIndex] = temporaryValue;
	  }
	  return array;
	}

	function getSplitTextDirs(alen,d) {
		var ri = new Array();

		switch (d) {
			case "forward":
			case "random":
				for (var si=0;si<=alen;si++) { ri.push(si);}
				if (d==="random") ri = shuffleArray(ri);
			break;
			case "backward":
				for (var si=0;si<=alen;si++)	{ ri.push(alen-si); }							
			break;
			case "middletoedge":
				var cc = Math.ceil(alen/2),
					mm = cc-1,
					pp = cc+1;							
				ri.push(cc);														
				for (var si=0;si<cc;si++) {
					if (mm>=0) ri.push(mm);
					if (pp<=alen) ri.push(pp);
					mm--;
					pp++;
				}																	
			break;
			case "edgetomiddle":
				var mm = alen,
					pp = 0;														
				for (var si=0;si<=Math.floor(alen/2);si++) {
					ri.push(mm);
					if (pp<mm) ri.push(pp);
					mm--;
					pp++;
				}																						
			break;		
		}
		
		return ri;
	}


	//////////////////////////////////////////////
	//	-	GET SPLITTEXT CYCLES ANIMATION	-  //
	/////////////////////////////////////////////
	function getCycles(anim) {
	 	var _ = {};					  	
		for (var a in anim) {
			if (typeof anim[a] === "string" && anim[a].indexOf("|")>=0) {
				if (_[a]===undefined) _[a] = {index:0};
				_[a].values = ((anim[a].replace("[","")).replace("]","")).split("|");
				_[a].len = _[a].values.length-1; 			
			}								
		}	
		return _;	
	}

	function theLayerInAnimation(nextcaption) {

		
		var sl = nextcaption.closest('.slide_layer'),
			id = u.getSerialFromID(sl.attr('id')),
			params = new Object();		
		params=jQuery.extend(true,{},params, u.getLayer(id));
		
		
		if (sl.children(".tp-mask-wrap").length==0)
			sl.wrapInner('<div style="width:100%;height:100%;position:relative;" class="tp-mask-wrap"></div>');

		
		var	mask = sl.find('.tp-mask-wrap'),
			anim = params.animation,					
			colbg = sl.hasClass("slide_layer_type_column") ? sl.find('.column_background').first() : undefined,
			speed = params.frames["frame_0"].speed/1000,
			easedata = params.frames["frame_0"].easing,
			mdelay = params.frames["frame_0"].splitdelay/100,
			$split = params.frames["frame_0"].split,
			$endsplit = params.frames["frame_999"].split, 
			animobject = nextcaption,
			thesource = new Object(),
			theresult = new Object(),
			$splitdir = params.frames["frame_0"].split_direction;

		

		thesource.transx = 0;
		thesource.transy = 0;
		thesource.transz = 0;
		thesource.rotatex = 0;
		thesource.rotatey = 0;
		thesource.rotatez = 0;
		thesource.scalex = 1;
		thesource.scaley = 1;
		thesource.skewx = 0;
		thesource.skewy = 0;
		thesource.opac = 0;
		thesource.tper = parseFloat(params.deformation.pers);
		thesource.origin = "center,center";

		
		//parseInt(u.getVal(ss,"font-size"),0)+"px",
		theresult.transx = 0;
		theresult.transy = 0;
		theresult.transz = parseFloat(params.deformation.z);
		theresult.rotatex = parseFloat(params.deformation.xrotate);
		theresult.rotatey = parseFloat(params.deformation.yrotate);
		theresult.rotatez = parseFloat(params["2d_rotation"]);
		theresult.scalex = parseFloat(params.deformation.scalex);
		theresult.scaley = parseFloat(params.deformation.scaley);
		theresult.skewx = parseFloat(params.deformation.skewx);
		theresult.skewy = parseFloat(params.deformation.skewy);
		theresult.opac = parseFloat(params.deformation.opacity);
		theresult.tper = parseFloat(params.deformation.pers);
		
		thesource['-webkit-filter'] = "";
		thesource['filter'] = "";			
		theresult['-webkit-filter'] = "";
		theresult['filter'] = "";
		
		//FILTERS
		if ((params.deformation.blurfilter!==undefined && parseInt(params.deformation.blurfilter,0)>0) || (params.blurfilter_start!==undefined && parseInt(params.blurfilter_start,0)>0)) {
			var bfidle = 'blur('+parseInt(params.deformation.blurfilter,0)+'px)',
				bf = params.blurfilter_start==="inherit" ? bfidle : 'blur('+parseInt(params.blurfilter_start,0)+'px)';				
			thesource['-webkit-filter'] = bf;
			thesource['filter'] = bf;			
			theresult['-webkit-filter'] = bfidle;
			theresult['filter'] = bfidle;			
		}

		if ((params.deformation.grayscalefilter!==undefined && parseInt(params.deformation.grayscalefilter,0)>0) || (params.grayscalefilter_start!==undefined && parseInt(params.grayscalefilter_start,0)>0)) {
			var gfidle = 'grayscale('+parseInt(params.deformation.grayscalefilter,0)+'%)',
				gf = params.grayscalefilter_start==="inherit" ? gfidle : 'grayscale('+parseInt(params.grayscalefilter_start,0)+'%)';
				
			thesource['-webkit-filter'] = thesource['-webkit-filter']==="" ? gf : thesource['-webkit-filter']+' '+gf;
			thesource['filter'] = thesource['filter']==="" ? gf: thesource['filter']+' '+gf;
			theresult['-webkit-filter'] = theresult['-webkit-filter']==="" ? gfidle : theresult['-webkit-filter']+' '+gfidle;
			theresult['filter'] = theresult['filter']==="" ? gfidle: theresult['filter']+' '+gfidle;
		}

		if ((params.deformation.brightnessfilter!==undefined && parseInt(params.deformation.brightnessfilter,0)!=100) || (params.brightnessfilter_start!==undefined && parseInt(params.brightnessfilter_start,0)!=100)) {
			var brfidle = 'brightness('+parseInt(params.deformation.brightnessfilter,0)+'%)',
				brr = params.brightnessfilter_start==="inherit" ? brfidle : 'brightness('+parseInt(params.brightnessfilter_start,0)+'%)';
				
			thesource['-webkit-filter'] = thesource['-webkit-filter']==="" ? brr : thesource['-webkit-filter']+' '+brr;
			thesource['filter'] = thesource['filter']==="" ? brr: thesource['filter']+' '+brr;
			theresult['-webkit-filter'] = theresult['-webkit-filter']==="" ? brfidle : theresult['-webkit-filter']+' '+brfidle;
			theresult['filter'] = theresult['filter']==="" ? brfidle: theresult['filter']+' '+brfidle;
		}

		

		var originx = params["layer_2d_origin_x"]+"%",
			originy = params["layer_2d_origin_y"]+"%",
			origin = originx+" "+originy;



		if (nextcaption.data('mySplitText') != undefined)
			if ($split !="none" || $endsplit !="none") 
				try{nextcaption.data('mySplitText').revert();} catch(e) {}

		if ($split == "chars" || $split == "words" || $split == "lines" || $endsplit == "chars" || $endsplit == "words" || $endsplit == "lines" ) {
			if (nextcaption.find('a').length>0)
				nextcaption.data('mySplitText',new SplitText(nextcaption.find('a'),{type:"lines,words,chars"}));
			else
				nextcaption.data('mySplitText',new SplitText(nextcaption,{type:"lines,words,chars"}));
		} else {
			nextcaption.data('mySplitText',"none");
		}

		

		
		switch($split) {
			case "chars":
				animobject = nextcaption.data('mySplitText').chars;
			break;
			case "words":
				animobject = nextcaption.data('mySplitText').words;
			break;
			case "lines":
				animobject = nextcaption.data('mySplitText').lines;
			break;
		}

		var timedelay=((animobject.length*mdelay) + speed)*1000;

		punchgs.TweenLite.killTweensOf(nextcaption,false);
		punchgs.TweenLite.killTweensOf(animobject,false);		
		punchgs.TweenLite.set(mask,{clearProps:"transform"});
		punchgs.TweenLite.set(nextcaption,{clearProps:"transform"});
		punchgs.TweenLite.set(animobject,{clearProps:"transform"});


		var tl = new punchgs.TimelineLite(),
			tt = new punchgs.TimelineLite();
		
		if (animobject != nextcaption) {
			tl.add(punchgs.TweenLite.set(nextcaption, { scaleX:theresult.scalex, scaleY:theresult.scaley,
						  rotationX:theresult.rotatex, rotationY:theresult.rotatey, rotationZ:theresult.rotatez,						 
						  x:theresult.transx, y:theresult.transy, z:theresult.transz+1,
						  skewX:theresult.skewx, skewY:theresult.skewy, 
						  transformPerspective:theresult.tper, transformOrigin:origin,
						  autoAlpha:theresult.opac,overwrite:"all"}));
		}
		

		if (nextcaption.data("timer")) clearTimeout(nextcaption.data('timer'));
		if (nextcaption.data("timera")) clearTimeout(nextcaption.data('timera'));

		var $sfx = checkSFXAnimations(params,params.frames["frame_0"].sfx_effect,mask,mdelay,easedata,speed);

		if ($sfx!==false) {
			if ($sfx.type==="block") {			
				$sfx.ft[0].background = window.RevColor.get(params.frames["frame_0"].sfxcolor);	
				tl.add(punchgs.TweenLite.fromTo($sfx.bmask_in,speed/2, $sfx.ft[0], $sfx.ft[1] ,mdelay));
				tl.add(punchgs.TweenLite.fromTo($sfx.bmask_in,speed/2, $sfx.ft[1], $sfx.t, (mdelay+speed/2)));
				tl.add(tt.set(animobject,{clearProps:"transform"}),0);			
				tl.add(tt.staggerFromTo(animobject,0.05,{ x:0,y:0,scale:1,autoAlpha:0},{x:0,y:0,autoAlpha:1,delay:speed/2},mdelay),0);
			}
		} else {
				
			thesource.transx = checkAnimValue(params.x_start,theresult.transx,nextcaption,"horizontal",animobject.length);
			thesource.transy = checkAnimValue(params.y_start,theresult.transy,nextcaption,"vertical",animobject.length);
			thesource.transz = checkAnimValue(params.z_start,theresult.transz,nextcaption,undefined,animobject.length);
			thesource.rotatex = checkAnimValue(params.x_rotate_start,theresult.rotatex,nextcaption,undefined,animobject.length);
			thesource.rotatey = checkAnimValue(params.y_rotate_start,theresult.rotatey,nextcaption,undefined,animobject.length);
			thesource.rotatez = checkAnimValue(params.z_rotate_start,theresult.rotatez,nextcaption,undefined,animobject.length);
			thesource.scalex = checkAnimValue(params.scale_x_start,theresult.scalex,nextcaption,undefined,animobject.length);
			thesource.scaley = checkAnimValue(params.scale_y_start,theresult.scaley,nextcaption,undefined,animobject.length);
			thesource.skewx = checkAnimValue(params.skew_x_start,theresult.skewx,nextcaption,undefined,animobject.length);
			thesource.skewy =checkAnimValue( params.skew_y_start,theresult.skewy,nextcaption,undefined,animobject.length);
			thesource.opac = checkAnimValue(params.opacity_start,theresult.opac,nextcaption,undefined,animobject.length);
			thesource.tper = params.deformation.pers;


			tl.add(tt.set(animobject,{clearProps:"transform"}),0);

			var animfrom = { scaleX:thesource.scalex,
								  scaleY:thesource.scaley,
								  rotationX:thesource.rotatex, rotationY:thesource.rotatey, rotationZ:thesource.rotatez,
								  x:thesource.transx, y:thesource.transy, z:thesource.transz,
								  skewX:thesource.skewx, skewY:thesource.skewy,
								  transformPerspective:thesource.tper, transformOrigin:origin,
								  autoAlpha:thesource.opac,
								  "-webkit-filter":thesource['-webkit-filter'],
								  filter:thesource['filter'],

								},
				animto = 	{ scaleX:theresult.scalex, scaleY:theresult.scaley,
								  rotationX:theresult.rotatex, rotationY:theresult.rotatey, rotationZ:theresult.rotatez,
								  x:theresult.transx, y:theresult.transy, z:theresult.transz,
								  skewX:theresult.skewx, skewY:Number(theresult.skewy),
								  transformPerspective:theresult.tper, transformOrigin:origin,
								  ease:easedata,
								  autoAlpha:theresult.opac,overwrite:"all",
								  force3D:"auto",
								  "-webkit-filter":theresult['-webkit-filter'],
								  filter:theresult['filter'],
								};
			

			if (params.frames["frame_0"].use_text_c) {
				animfrom.color = params.frames["frame_0"].text_c;
				animto.color = window.RevColor.get(u.getVal(params["static_styles"],"color"));
			}
			
			if (params.frames["frame_0"].use_bg_c) {
				animfrom.backgroundColor = params.frames["frame_0"].bg_c;
				animto.backgroundColor = window.RevColor.get(params.deformation["background-color"]);
			}

			if (animobject.length>1) {
				var ri = getSplitTextDirs(animobject.length-1, $splitdir),
					cycles = {from:getCycles(jQuery.extend({},animfrom,true)), to:getCycles(jQuery.extend({},animto,true))};

					for (var si in animobject) {	
						var $fanim = jQuery.extend({},animfrom,true),
							$tanim = jQuery.extend({},animto,true);						
						for (var k in cycles.from) {
							$fanim[k] = parseInt(cycles.from[k].values[cycles.from[k].index],0);														
							cycles.from[k].index = cycles.from[k].index < cycles.from[k].len ?  cycles.from[k].index+1 : 0;
						}
						
						tl.add(tt.fromTo(animobject[ri[si]],speed,$fanim,$tanim,mdelay*si),0);								
					}
			} else {
				tl.add(tt.staggerFromTo(animobject,speed, jQuery.extend({},animfrom,true),jQuery.extend({},animto,true),mdelay));
			}
		}

		// COLUMN BG ANIMATION
		
		if (colbg!=undefined) {
			
			tl.add(punchgs.TweenLite.fromTo(colbg,speed,
							{ scaleX:thesource.scalex,
							  scaleY:thesource.scaley,
							  rotationX:thesource.rotatex, rotationY:thesource.rotatey, rotationZ:thesource.rotatez,
							  x:thesource.transx, y:thesource.transy, z:thesource.transz,
							  skewX:thesource.skewx, skewY:thesource.skewy,
							  transformPerspective:thesource.tper, transformOrigin:origin,
							  autoAlpha:thesource.opac

							},
							{ scaleX:theresult.scalex, scaleY:theresult.scaley,
							  rotationX:theresult.rotatex, rotationY:theresult.rotatey, rotationZ:theresult.rotatez,
							  x:theresult.transx, y:theresult.transy, z:theresult.transz,
							  skewX:theresult.skewx, skewY:Number(theresult.skewy),
							  transformPerspective:theresult.tper, transformOrigin:origin,
							  ease:easedata,
							  autoAlpha:theresult.opac,overwrite:"all",
							  force3D:"auto"							  
							}),0);
		}

		// MASK ANIMATION
		if (!params.mask_start) tl.add(punchgs.TweenLite.set(mask,{overflow:"visible"}),0);


		// MASK ANIMATION
		if (params.mask_start) {			
			var maskp = new Object();
			maskp.x = checkAnimValue(params.mask_x_start,params.mask_x_start,nextcaption,"horizontal");
			maskp.y = checkAnimValue(params.mask_y_start,params.mask_y_start,nextcaption,"vertical");						
			tl.add(punchgs.TweenLite.fromTo(mask,speed,{overflow:"hidden",x:maskp.x,y:maskp.y},{x:0,y:0,ease:easedata}),0);
		}

		if (params.mask_start || params.mask_end)
			mask.addClass('tp-showmask');
		else
			mask.removeClass('tp-showmask');




		nextcaption.data('startanimobj',thesource);

		tl.add(punchgs.TweenLite.fromTo(jQuery('#startanim_wrapper'),tt.totalDuration(),{autoAlpha:1,width:0},{width:67,ease:easedata}),0);
		if (animobject != nextcaption)
			tl.add(punchgs.TweenLite.fromTo(nextcaption.parent(), 0.2,{autoAlpha:0},{autoAlpha:1}),0);		
		
		return tl;

	}

	/***************************************
		-	BUILD OUT ANIMATION TIMELINE	-
	****************************************/
	function theLayerOutAnimation(nextcaption) {
		var sl = nextcaption.closest('.slide_layer'),
			id = u.getSerialFromID(sl.attr('id')),
			params = new Object();
		
		params=jQuery.extend(true,{},params, u.getLayer(id));


		var	mask = sl.find('.tp-mask-wrap'),			
			colbg = sl.hasClass("slide_layer_type_column") ? sl.find('.column_background').first() : undefined,			
			anim = params.frames["frame_999"].animation,
			speed = params.frames["frame_999"].speed/1000,
			easedata = params.frames["frame_999"].easing,
			mdelay = params.frames["frame_999"].splitdelay/100,
			$split = params.frames["frame_999"].split,
			animobject = nextcaption;
			theanim = new Object(),
			theresult = new Object(),
			originx = params["layer_2d_origin_x"]+"%",
			originy = params["layer_2d_origin_y"]+"%",
			origin = originx+" "+originy,
			$splitdir = params.frames["frame_999"].split_direction;

		easedata = easedata=="nothing" ? params.frames["frame_999"].easing :  easedata;

		theanim.transx = 0;
		theanim.transy = 0;
		theanim.transz = 0;
		theanim.rotatex = 0;
		theanim.rotatey = 0;
		theanim.rotatez = 0;
		theanim.scalex = 1;
		theanim.scaley = 1;
		theanim.skewx = 0;
		theanim.skewy = 0;
		theanim.opac = 0;
		theanim.tper = parseFloat(params.deformation.pers);;


		theresult.transx = 0;
		theresult.transy = 0;
		theresult.transz = parseFloat(params.deformation.z);
		theresult.rotatex = parseFloat(params.deformation.xrotate);
		theresult.rotatey = parseFloat(params.deformation.yrotate);
		theresult.rotatez = parseFloat(params["2d_rotation"]);
		theresult.scalex = parseFloat(params.deformation.scalex);
		theresult.scaley = parseFloat(params.deformation.scaley);
		theresult.skewx = parseFloat(params.deformation.skewx);
		theresult.skewy =parseFloat( params.deformation.skewy);
		theresult.opac = parseFloat(params.deformation.opacity);
		theresult.tper = parseFloat(params.deformation.pers);

		theanim['-webkit-filter'] = "";
		theanim['filter'] = "";			
		theresult['-webkit-filter'] = "";
		theresult['filter'] = "";

		//FILTERS
		if ((params.deformation.blurfilter!==undefined && parseInt(params.deformation.blurfilter,0)>0) || (params.blurfilter_start!==undefined && parseInt(params.blurfilter_start,0)>0)) {
			var bfidle = 'blur('+parseInt(params.deformation.blurfilter,0)+'px)',
				bf = params.blurfilter_end==="inherit" ? bfidle : 'blur('+parseInt(params.blurfilter_end,0)+'px)';	

			theanim['-webkit-filter'] = bf;
			theanim['filter'] = bf;			
			theresult['-webkit-filter'] = bfidle;
			theresult['filter'] = bfidle;			
		}

		if ((params.deformation.grayscalefilter!==undefined && parseInt(params.deformation.grayscalefilter,0)>0) || (params.grayscalefilter_end!==undefined && parseInt(params.grayscalefilter_end,0)>0)) {
			var gfidle = 'grayscale('+parseInt(params.deformation.grayscalefilter,0)+'%)',
				gf = params.grayscalefilter_end==="inherit" ? gfidle : 'grayscale('+parseInt(params.grayscalefilter_end,0)+'%)';
				
			theanim['-webkit-filter'] = theanim['-webkit-filter']==="" ? gf : theanim['-webkit-filter']+' '+gf;
			theanim['filter'] = theanim['filter']==="" ? gf: theanim['filter']+' '+gf;
			theresult['-webkit-filter'] = theresult['-webkit-filter']==="" ? gfidle : theresult['-webkit-filter']+' '+gfidle;
			theresult['filter'] = theresult['filter']==="" ? gfidle: theresult['filter']+' '+gfidle;
		}

		if ((params.deformation.brightnessfilter!==undefined && parseInt(params.deformation.brightnessfilter,0)!=100) || (params.brightnessfilter_end!==undefined && parseInt(params.brightnessfilter_end,0)!=100)) {
			var brfidle = 'brightness('+parseInt(params.deformation.brightnessfilter,0)+'%)',
				brf = params.brightnessfilter_end==="inherit" ? brfidle : 'brightness('+parseInt(params.brightnessfilter_end,0)+'%)';
				
			theanim['-webkit-filter'] = theanim['-webkit-filter']==="" ? brf : theanim['-webkit-filter']+' '+brf;
			theanim['filter'] = theanim['filter']==="" ? brf: theanim['filter']+' '+brf;
			theresult['-webkit-filter'] = theresult['-webkit-filter']==="" ? brfidle : theresult['-webkit-filter']+' '+brfidle;
			theresult['filter'] = theresult['filter']==="" ? brfidle: theresult['filter']+' '+brfidle;
		}


		switch($split) {
			case "chars":
				animobject = nextcaption.data('mySplitText').chars;
			break;
			case "words":
				animobject = nextcaption.data('mySplitText').words;
			break;
			case "lines":
				animobject = nextcaption.data('mySplitText').lines;
			break;
		}
			
		  var timedelay=((animobject.length*mdelay) + speed)*1000;

		  var tl = new punchgs.TimelineLite(),
			  tt = new punchgs.TimelineLite();

		
		if (anim == null) anim = "auto";

		// MASK ANIMATION
		if (!params.mask_end || (anim==="auto" && !params.mask_start)) 			
			tl.add(punchgs.TweenLite.set(mask,{overflow:"visible"}));


		var $sfx = checkSFXAnimations(params,params.frames["frame_999"].sfx_effect,mask,mdelay,easedata,speed);			
		if ($sfx!==false) {
			if ($sfx.type==="block") {		
				$sfx.ft[0].background = window.RevColor.get(params.frames["frame_999"].sfxcolor);		
				tl.add(punchgs.TweenLite.fromTo($sfx.bmask_out,speed/2, $sfx.ft[0], $sfx.ft[1] ,mdelay));
				tl.add(punchgs.TweenLite.fromTo($sfx.bmask_out,speed/2, $sfx.ft[1], $sfx.t, (mdelay+speed/2)));
				tl.add(tt.set(animobject,{clearProps:"transform"}),0);			
				tl.add(tt.staggerTo(animobject,0.05,{x:0,y:0,autoAlpha:0,delay:speed/2},mdelay),0);
			}
		}	else {

			if (anim==="auto") {
				theanim = nextcaption.data('startanimobj');
			} else {		
				var mask_is_on = params.mask_end || (anim==="auto" && params.mask_start) ? true : false;

				theanim.transx = checkAnimValue(params.x_end,theresult.transx,nextcaption,"horizontal",animobject.length);
				theanim.transy = checkAnimValue(params.y_end,theresult.transy,nextcaption,"vertical",animobject.length);
				theanim.transz = checkAnimValue(params.z_end,theresult.transz,nextcaption,undefined,animobject.length);
				theanim.rotatex = checkAnimValue(params.x_rotate_end,theresult.rotatex,nextcaption,undefined,animobject.length);
				theanim.rotatey = checkAnimValue(params.y_rotate_end,theresult.rotatey,nextcaption,undefined,animobject.length);
				theanim.rotatez = checkAnimValue(params.z_rotate_end,theresult.rotatez,nextcaption,undefined,animobject.length);
				theanim.scalex = checkAnimValue(params.scale_x_end,theresult.scalex,nextcaption,undefined,animobject.length);
				theanim.scaley = checkAnimValue(params.scale_y_end,theresult.scaley,nextcaption,undefined,animobject.length);
				theanim.skewx = checkAnimValue(params.skew_x_end,theresult.skewx,nextcaption,undefined,animobject.length);
				theanim.skewy =checkAnimValue( params.skew_y_end,theresult.skewy,nextcaption,undefined,animobject.length);
				theanim.opac = checkAnimValue(params.opacity_end,theresult.opac,nextcaption,undefined,animobject.length);
				theanim.tper = params.deformation.pers;
			}
			
			

			tl.add(tt.staggerTo(animobject,0.001,
									{ "-webkit-filter":theresult['-webkit-filter'],
							  			filter:theresult['filter']
									 },(mdelay-0.001)));
			

			var animto = {
										  scaleX:theanim.scalex,
										  scaleY:theanim.scaley,
										  rotationX:theanim.rotatex,
										  rotationY:theanim.rotatey,
										  rotationZ:theanim.rotatez,
										  x:theanim.transx,
										  y:theanim.transy,
										  z:theanim.transz+1,
										  skewX:theanim.skewx,
										  skewY:theanim.skewy,
										  opacity:theanim.opac,
										  transformPerspective:theanim.tper,
										  transformOrigin:origin,
										  ease:easedata,
										   "-webkit-filter":theanim['-webkit-filter'],
								  			filter:theanim['filter'],
										 };

			if (params.frames["frame_999"].use_text_c) 
				animto.color = params.frames["frame_999"].text_c;
			
			if (params.frames["frame_999"].use_bg_c)
				animto.backgroundColor = params.frames["frame_999"].bg_c;				
			

			if (animobject.length>1) {
				var ri = getSplitTextDirs(animobject.length-1, $splitdir),
					cycles = {to:getCycles(jQuery.extend({},animto,true))};

					for (var si in animobject) {							
						var $fanim = jQuery.extend({},animto,true);						
						for (var k in cycles.to) {
							$fanim[k] = parseInt(cycles.to[k].values[cycles.to[k].index],0);														
							cycles.to[k].index = cycles.to[k].index < cycles.to[k].len ?  cycles.to[k].index+1 : 0;
						}
											
						tl.add(tt.to(animobject[ri[si]],speed,$fanim,mdelay*si),0);								
					}
			} else {

				tl.add(tt.staggerTo(animobject,speed,jQuery.extend({},animto,true),mdelay));
			}

		}
				
		
		


		

		// COLUMN BG ANIMATION
		if (colbg!=undefined) 		
			tl.add(punchgs.TweenLite.to(colbg,speed,
								{
								  scaleX:theanim.scalex,
								  scaleY:theanim.scaley,
								  rotationX:theanim.rotatex,
								  rotationY:theanim.rotatey,
								  rotationZ:theanim.rotatez,
								  x:theanim.transx,
								  y:theanim.transy,
								  z:theanim.transz+1,
								  skewX:theanim.skewx,
								  skewY:theanim.skewy,
								  opacity:theanim.opac,
								  transformPerspective:theanim.tper,
								  transformOrigin:origin,
								  ease:easedata
								 },mdelay),0);
		
			
		// MASK ANIMATION
		if (params.mask_end) {
			var maskp = new Object();					
			maskp.x = checkAnimValue(params.mask_x_end,params.mask_x_end,nextcaption);
			maskp.y = checkAnimValue(params.mask_y_end,params.mask_y_end,nextcaption);					
			tl.add(punchgs.TweenLite.to(mask,speed,{x:maskp.x,y:maskp.y,ease:easedata,overflow:"hidden"},mdelay),0);
		} else 

		if (anim==="auto" && params.mask_start) {
			var maskp = new Object();			
			maskp.x = checkAnimValue(params.mask_x_start,params.mask_x_start,nextcaption);
			maskp.y = checkAnimValue(params.mask_y_start,params.mask_y_start,nextcaption);			
			tl.add(punchgs.TweenLite.to(mask,speed,{x:maskp.x,y:maskp.y,ease:easedata},mdelay),0);
		}

		tl.add(punchgs.TweenLite.fromTo(jQuery('#endanim_timerunnerbox'),tt.totalDuration(),{x:0},{x:-67,ease:easedata}),0);
		tl.add(punchgs.TweenLite.fromTo(jQuery('#endanim_timerunner'),tt.totalDuration(),{x:0},{x:-67,ease:easedata}),0);
		if (animobject != nextcaption)
			tl.add(punchgs.TweenLite.fromTo(nextcaption.parent(), 0.2,{autoAlpha:1},{autoAlpha:0}),(tt.totalDuration()-0.2));		
		return tl;
	}




	/******************************************************************************************
		-	PUT THE BLUE TIMER LINE IN POSITION BASED ON DEFAULT OR PREDEFINED VALUES 	-
	******************************************************************************************/
	var initSlideDuration = function() {

		// SET MAXTIME POSITION
		var duration = jQuery('#delay').val();
		if (duration==undefined || duration==0 || duration=="undefined")
			duration = g_slideTime;
		jQuery('#mastertimer-maxtime').css({left:duration/10});


	}




	/******************************************************************************************
		-	EVENT LISTENER FOR MASTER TIME POSITION CHANGE, ALL ANIMATION MOVE IN POSTION 	-
	********************************************************************************************/

	t.masterTimerPositionChange = function(recreatetimers) {
			
			var mp = jQuery(document.getElementById('mastertimer-position')),	
				tpos =  (((mp[0].getBoundingClientRect().left - document.getElementById('master-rightheader').getBoundingClientRect().left+t.timercorrectur))/100),					
				mst = jQuery(document.getElementById('divbgholder')).data('slidetimeline');
				
			mp[0].className = mp[0].classList.contains("hovering") ? mp[0].className : mp[0].className + " hovering";
			
			
			if (tpos<=0 && (mp.data('wasidle')=="wasnotidle" || mp.data('wasidle')==undefined)) {

				t.stopAllLayerAnimation();
				mp.data('wasidle',"wasidle");
				
				if (mp.data('tl')!=undefined) {
					mp.data('tl').kill();
				}
				if (mst!=undefined) {
					mst.stop();
					mst.seek(100000);
				}
					
				t.allLayerToIdle();
			}

			
			if (tpos>0 && (mp.data('wasidle')=="wasidle" || mp.data('wasidle')==undefined)) {
				mp.data('wasidle','wasnotidle');
				createGlobalTimeline(true);
				document.getElementById('mastertimer-playpause-wrapper').innerHTML = '<i class="eg-icon-play"></i><span>PLAY</span>';
				mp[0].className = mp[0].classList.contains('inaction') ? mp[0].className : mp[0].className+" inaction";
			}

			if (tpos>0 && mp.data('wasidle')=="wasnotidle") {
				if (recreatetimers) createGlobalTimeline(false);
				var mtl = mp.data('tl');
				mtl.stop();
				mst.stop();
				mtl.seek(tpos);
				mst.seek(tpos);
			}
			
			if (tpos>0) {
				var mpst = document.getElementById('mastertimer-poscurtime');
				mpst.className = mpst.classList.contains('movedalready') ? mpst.className : mpst.className+' movedalready';
				mpst.innerHTML = t.convToTime(tpos*100);
				mp.removeClass("timerinidle");
			} else {
				var mpst = document.getElementById('mastertimer-poscurtime');
				if (mpst.classList.contains('movedalready')) {
					mpst.innerHTML = "Idle";
					mp.addClass("timerinidle");
				}

			}
			mp.trigger('poschanged');
			
		}

	t.convToTime = function(tpos) {


		
		var min = Math.floor(tpos/6000),
			sec = Math.floor(Math.ceil(tpos - (min*6000))/100),
			ms = Math.round(tpos-(sec*100)-(min*6000));

		if (min==0) min = "00"
		else
		if (min<10) min = "0"+min.toString();

		if (sec==0) sec = "00"
		else
		if (sec<10) sec = "0"+sec.toString();

		if (ms==0) ms = "00"
		else
		if (ms<10) ms = "0"+ms.toString()
		return min.toString()+":"+sec.toString()+"."+ms.toString();

	}
	
	
	t.allLayerToIdle = function(obj) {		
		var search = obj!=undefined && obj.type!=undefined ? 'slide_layer_type_'+obj.type : 'slide_layer';				
			elements = document.getElementsByClassName(search);
		for (var i=0;i<elements.length;i++) {
			t.rebuildLayerIdle(jQuery(elements[i]));					
		}
				
	}

	/***********************************
		-	INIT THE MASTER TIMER	-
	************************************/
	var initMasterTimer = function() {
		var mw = jQuery('#master-rightheader');


		// CHANGE THE POSITION OF THE TIME LINE
		jQuery('#mastertimer-position').on("poschanged",function() {
			var mp = jQuery(this),
				tpos = Math.round((mp.position().left+t.timercorrectur)),
				str = t.convToTime(tpos);
			if (tpos<0) str="IDLE";
			document.getElementById('master-timer-time').innerHTML = str;
		});


		// BACK TO IDLE
		jQuery('#mastertimer-backtoidle').click(function() {
			jQuery('#mastertimer-position').removeClass("inaction");
			document.getElementById('mastertimer-playpause-wrapper').innerHTML = '<i class="eg-icon-play"></i><span>PLAY</span>';		
			document.getElementById('master-timer-time').innerHTML = 'IDLE';
			t.stopAllLayerAnimation();
			var mp = jQuery('#mastertimer-position'),
				mst = jQuery('#divbgholder').data('slidetimeline');
			mp.css({left:"-15px"});			
			if (mp.data('tl')!=undefined) {
				mp.data('tl').kill();
			}
			if (mst!=undefined) {
				mst.stop();
				mst.seek(100000);
			}

			t.allLayerToIdle();
			
		})
		
		
		// HOVER OUT OF MASTERTIMER SHOULD RESET ANY SETTINGS
		jQuery('#divLayers').hover(function() {

			var mp = jQuery(document.getElementById('mastertimer-position')),
				mpw = document.getElementById('mastertimer-playpause-wrapper'),
				mst = jQuery(document.getElementById('divbgholder')).data('slidetimeline');
			
			if (mp.data('tl')!=undefined)
				mp.data('tl').stop();
			
			if (mst!=undefined) {
				mst.stop();
				mst.seek(100000);
			}

			mp.removeClass("inaction");
			mpw.innerHTML = '<i class="eg-icon-play"></i><span>PLAY</span>';
			if (mp.hasClass("hovering")) {
				mp.removeClass("hovering");
				t.stopAllLayerAnimation();
				t.allLayerToIdle();

				// Click on LayerAnimation Button the current Selected Layer should be Animated
				if (!jQuery('#layeranimation-playpause').hasClass("inpuase")) {
					if (t.checkAnimationTab())
						t.animateCurrentSelectedLayer(1);
				}

				if (!jQuery('#loopanimation-playpause').hasClass("inpuase")) {
					if (t.checkLoopTab())
						t.animateCurrentSelectedLayer(2);
				}
			}

		});

		// HOVER ON THE ANIMATION PART, SHOULD START THE ANIMATION MODE AGAIN
		jQuery('#mastertimer-wrapper').hover(function() {

			if (!jQuery(this).hasClass("overme")) {
				jQuery(this).addClass("overme");
				t.masterTimerPositionChange(true);
			}
		}, function() {
			jQuery(this).removeClass("overme");

		})


		
		// DRAG THE MASTER TIMER SHOULD ANIMATE THINGS IN POSITION
		jQuery('#mastertimer-position').draggable({
			axis:"x",
			start:function(event,ui) {

				punchgs.TweenLite.set(document.getElementById('mastertimer-curtime'),{autoAlpha:0,x:-3,y:-10});
				punchgs.TweenLite.set(document.getElementById('mastertimer-curtime-b'),{autoAlpha:0});		
						
				t.deactivatePerfectScrollBars();

			},
			drag:function(event,ui) {
				ui.position.left = Math.max(-15,ui.position.left);
				t.masterTimerPositionChange(false);
			},
			
			stop:function(event,ui) {
				punchgs.TweenLite.set(document.getElementById('mastertimer-curtime'),{autoAlpha:1,x:-1,y:0,ease:punchgs.Power2.easeInOut});
				punchgs.TweenLite.set(document.getElementById('mastertimer-curtime-b'),{autoAlpha:1});						
			}
		});

		// CLICK SOMEWHERE ON THE LINEAR
		jQuery('#mastertimer-linear').click(function(e) {
			var lo = jQuery('#mastertimer-linear').offset().left,
				sl = jQuery('#master-rightheader').scrollLeft();

			jQuery('#mastertimer-position').css({left:(e.pageX-lo + sl)+"px"});
			t.masterTimerPositionChange();
		})
		
		jQuery('#mastertimer-maxtime').draggable({
			axis:"x",			
			containment:"#master-rightheader",
			create:function(event,ui) {
				t.mainMaxTimeLeft = jQuery('#mastertimer-maxtime').position().left;
				document.getElementById('mastertimer-maxcurtime').innerHTML = t.convToTime(t.mainMaxTimeLeft);
				t.setIdleZones();				
			},
			start:function(event,ui) {
				punchgs.TweenLite.set(document.getElementById('mastertimer-curtime'),{autoAlpha:0,x:-3,y:-10});
				punchgs.TweenLite.set(document.getElementById('mastertimer-curtime-b'),{autoAlpha:0});	
				document.getElementById('mastertimer-maxcurtime').innerHTML = t.convToTime(t.mainMaxTimeLeft);				
				t.setIdleZones();
				t.deactivatePerfectScrollBars();
			},
			drag:function(event,ui) {			
				t.mainMaxTimeLeft = ui.position.left;
				document.getElementById('mastertimer-maxcurtime').innerHTML = t.convToTime(t.mainMaxTimeLeft);				
				document.getElementById('delay').value = t.mainMaxTimeLeft*10;			
				t.setIdleZones();								
				t.compareLayerEndsVSSlideEnd();
				t.setSlideTransitionTimerBar();
			},
			stop:function(event,ui) {
				punchgs.TweenLite.set(document.getElementById('mastertimer-curtime'),{autoAlpha:1,x:-1,y:0,ease:punchgs.Power2.easeInOut});
				punchgs.TweenLite.set(document.getElementById('mastertimer-curtime-b'),{autoAlpha:1});
				t.mainMaxTimeLeft = ui.position.left;
				document.getElementById('mastertimer-maxcurtime').innerHTML = t.convToTime(t.mainMaxTimeLeft);				
				document.getElementById('delay').value = t.mainMaxTimeLeft*10;			
				t.setIdleZones();								
				g_slideTime = t.mainMaxTimeLeft*10;
				u.setMaintime(g_slideTime);
				t.compareLayerEndsVSSlideEnd();
				t.rerenderAllAudioMap();
				t.setSlideTransitionTimerBar();
			}

		});

		
		__ctime = jQuery('#mastertimer-curtime');
		__ctimeb = jQuery('#mastertimer-curtime-b');
		__ctimei = jQuery('#mastertimer-curtimeinner');

		function checklroffset() {
			__coffset = parseInt(jQuery('#layers-right').offset().left,0);
		}

		jQuery(window).resize(function() {
				checklroffset();		
		});

		checklroffset();
		__ctime.data('offset',0);
		
		jQuery('.master-rightcell').on('mousemove',function(e) {
			
			var x = (e.pageX-__coffset)-jQuery(document.getElementById('master-rightheader')).data('left');
			if (__ctime.data('offset') ==0) {				
				punchgs.TweenLite.set(__ctime,{left:x});
				punchgs.TweenLite.set(__ctimeb,{left:x+15});
				__ctimei[0].innerHTML = t.convToTime(x-10);
			}
		});

		
		// CLICK ON PLAY/PAUSE BUTTON SHOULD PLAY OR RESET THINGS
		jQuery('#mastertimer-playpause-wrapper').click(function() {
			var mpw = jQuery(this);
			punchgs.TweenLite.to(jQuery('#mastertimer-poscurtime'),0.3,{autoAlpha:0,x:-3,y:-10,ease:punchgs.Power2.easeInOut});
			if (mpw.find('.eg-icon-pause').length>0) {

				document.getElementById('mastertimer-playpause-wrapper').innerHTML = '<i class="eg-icon-play"></i><span>PLAY</span>';
				t.stopAllLayerAnimation();
				var mp = jQuery('#mastertimer-position');
				if (mp.data('tl')!=undefined) {
					mp.data('tl').kill();
				}
			} else {
				createGlobalTimeline(true);
				document.getElementById('mastertimer-playpause-wrapper').innerHTML ='<i class="eg-icon-pause"></i><span>PAUSE</span>';
				jQuery('#mastertimer-position').addClass("inaction");
				var mp = jQuery('#mastertimer-position'),
					mtl = mp.data('tl'),
					mst = jQuery('#divbgholder').data('slidetimeline'),
					tpos = (mp.position().left)/100;

				mtl.play(tpos);
				mst.play(tpos);
				jQuery('#divbgholder').data('slidetimeline').play(tpos);				
				mtl.eventCallback("onComplete",function() {
					mtl.play(0);
					mst.play(0);
				});
				mtl.eventCallback("onUpdate",function() {
					mp.css({left:((mtl.time()*100))});
					mp.trigger('poschanged');
				})
			}
		})

	}

	t.setIdleZones = function() {
		var el = document.getElementsByClassName('slide-idle-section');
		for (var i=0;i<el.length;i++) {
			el[i].style.left = (t.mainMaxTimeLeft+15)+"px";
		}
	}

	/**********************************
		-	BUILD GLOBAL TIMELINE	-
	***********************************/
	function createGlobalTimeline(firsttime,animsaregenerated) {

		if (firsttime) t.stopAllLayerAnimation();
		var mp = jQuery('#mastertimer-position');


		if (mp.data('tl')!=undefined) {
			mp.data('tl').kill();
		}

		var mtl = new punchgs.TimelineLite();
		mtl.pause();
		
		jQuery(' .slide_layer .innerslide_layer').each(function() {
			var nextcaption = jQuery(this);
		
			nextcaption.data('inanim',theLayerInAnimation(nextcaption));
			nextcaption.data('outanim',theLayerOutAnimation(nextcaption));
			var id = u.getSerialFromID(nextcaption.closest('.slide_layer').attr('id'));
				params=u.getLayer(id);

			
			mtl.add(nextcaption.data('inanim'),params.frames["frame_0"].time/1000);
			var endspeed = params.frames["frame_999"].endspeed;
			if (endspeed==undefined) endspeed = params.frames["frame_0"].speed;			
			mtl.add(nextcaption.data('outanim'),(params.frames["frame_999"].time/1000));

		});

		mp.data('tl',mtl);
	}
	
	var setFakeAnim = function() {
		
		var found=false,
			li = jQuery('.slide-trans-cur-ul li').first();
		
		var comingtransition = li.data('animval'),
			comingtext = li.text();

		if (comingtransition == "random-selected" || comingtransition == "random" || comingtransition == "random-static" || comingtransition == "random-premium") {
			comingtransition = "fade";
			comingtext = "Fade";
		} 

		
		document.getElementById('fake-select-label').innerHTML = '"'+comingtext+'"';
		jQuery('#fake-select-label').data('valu',comingtransition);
		
		removeAllSlots();
		
		slideAnimation();
		found=true;
		
		if (found) return false;		
	}
	/**************************************
		-	ADD SLIDE MAIN TO SORTBOX	-
	**************************************/

	t.setSlideTransitionTimerBar = function() {
		var sist = document.getElementById('slide_in_sort_time'),
			speed = sist.getElementsByClassName('timeline_frame')[0],
			cont = sist.getElementsByClassName('timeline_full')[0],
			dur = document.getElementById('transition_duration') ? document.getElementById('transition_duration').value : 0,
			durcont = sist.getElementsByClassName('duration_cont')[0];

		durcont.innerHTML = dur;
		if (!jQuery.isNumeric(dur)) dur = 500;
		punchgs.TweenLite.set(speed,{width:dur/10});
		
		punchgs.TweenLite.set(cont,{left:15,width:t.mainMaxTimeLeft});
		
	}


	var addSlideToSortbox = function() {
		
		t.setSlideTransitionTimerBar();
		

		var sist = document.getElementById('slide_in_sort_time'),
			speed = sist.getElementsByClassName('timeline_frame')[0],
			durcont = sist.getElementsByClassName('duration_cont')[0];
			
							
		jQuery(speed).resizable({
			minWidth:0,
			handles:"e",
			start:function(event,ui) {
				
			},
			stop:function(event,ui) {								
				document.getElementById('transition_duration').value = ui.size.width*10;
				durcont.innerHTML = (ui.size.width*10);
				jQuery('.slide-trans-cur-ul li.selected').data('duration', (ui.size.width*10));
				t.resetSlideAnimations(true);
			},
			resize:function(event,ui) {
				document.getElementById('transition_duration').value = ui.size.width*10;				
				jQuery('.slide-trans-cur-ul li.selected').data('duration', (ui.size.width*10));
				durcont.innerHTML = (ui.size.width*10);
			}
			//snap:".tl-fullanim"
		});
		
		
		
	}

	
	


	//////////////////////////////////
	// 		SET AUDIO MAP 			//
	//////////////////////////////////

	t.rerenderAllAudioMap = function() {
		jQuery.each(u.arrLayers,function(i,objLayer) {			
			if (objLayer.type == "audio") {				
				t.drawAudioMap(objLayer);
			}
		});
	};


	t.drawAudioMap = function(objLayer) {
	 	
	 //	try {
		 	var li = objLayer.references.sorttable.timeline;	 	
		 	if (li.data('lastaudio') == objLayer.video_data.urlAudio && li.data('audiobuffer')!=undefined) {	 		
		 		displayAudioBuffer(objLayer,li.data('audiobuffer'));
		 	} else {
		 		loadMusicTimeLine(objLayer,objLayer.video_data.urlAudio);
		 	}

		 	li.data('lastaudio',objLayer.video_data.urlAudio);
			

			if (!AudioContext) {
				console.log('Audio Map cannot be drawn  in your Browser. Try a recent Chrome or Firefox. ');
				return false;
			}
	//	} catch(e) { console.log("Drwaring of Audio Map Failer at Initialisation");}
		
	}
	
	

	// MUSIC LOADER + DECODE
	function loadMusicTimeLine(objLayer,url) {   
		if (audioContext === null || !AudioContext) return false;
	    var req = new XMLHttpRequest(),	  
	    	li =   	objLayer.references.sorttable.timeline,
	    	currentBuffer  = null;
	    
	    req.open( "GET", url, true );
	    req.responseType = "arraybuffer";    
	    
	    req.onreadystatechange = function (e) {
	          if (req.readyState == 4) {
	             if(req.status == 200)
	                  audioContext.decodeAudioData(req.response, 
	                    function(buffer) {
	                             currentBuffer = buffer;
	                             li.data('audiobuffer',buffer);
	                             displayAudioBuffer(objLayer,buffer);
	                    }, onDecodeError);
	             else
	                  console.log('error during the load.Wrong url or cross origin issue');
	          }
	    } ;
	    req.send();
	}	

	function onDecodeError() {  alert('error while decoding your Audio file.');  }

	function getStartSec(st) {						
		return st == undefined ? -1 : st=="" ? -1 : st==" " ? -1 : jQuery.isNumeric(st) ? st : st.split(":").length>1 ? parseInt(st.split(":")[0],0)*60 + parseInt(st.split(":")[1],0) : st;
	};

	function displayAudioBuffer(objLayer,buff) {
		try {
			var li = objLayer.references.sorttable.timeline,
				leftChannel = buff.getChannelData(0), // Float32Array describing left channel     
				wr = li.find('.timeline_full'),				
				canvasWidth =buff.duration*100,
			   	canvasHeight = 19,
			   	shift = objLayer.video_data.start_at,		   	
			   	s = getStartSec(objLayer.video_data.start_at),
			   	e = getStartSec(objLayer.video_data.end_at)
			
			s= s==-1 ? 0 : s;
			e= e==-1 ? 999999999 : e;				
			s= s /60;
			e= e /60;			
			e = e>buff.duration ? buff.duration : e;
			s = s*buff.sampleRate;
			e = e*buff.sampleRate;			
			canvasWidth = ((e-s)/buff.sampleRate)*100;
			li.find('canvas').remove();
			
			// CANVAS		
			var newCanvas   = document.createElement('canvas');
			newCanvas.width = ((t.mainMaxTimeLeft));
			newCanvas.height = canvasHeight;	
			li.append('<div class="timeline_audio"></div>');

			li.find('.timeline_audio').append(newCanvas);
			
			var jc = li.find('canvas');			
			punchgs.TweenLite.set(jc,{zIndex:2,top:3,left:0,position:"absolute"});

			var context = newCanvas.getContext('2d'),
				lineOpacity = canvasWidth / leftChannel.length;

			   
		   context.save();
		   context.fillStyle = 'transparent' ;
		   context.fillRect(0,0,canvasWidth,canvasHeight );
		   context.strokeStyle = '#333';	   
		   context.translate(0,canvasHeight / 2);
		   context.globalAlpha = 0.5 ; // lineOpacity ;
		   
		   var pl = 0,
		   	   seglength = e-s;		   	 
			for (var i=0; i<e-s; i=i+200) {
			       // on which line do we get ?
			       var x = Math.floor (canvasWidth * i / seglength );
			       var y = leftChannel[s+i] * canvasHeight;			       
			       context.beginPath();
			       context.moveTo( x  , 0 );
			       context.lineTo( x+1, y );
			       context.stroke();
			       pl++;
			}

			if (objLayer.video_data.videoloop!="none") {
				var imgdata = context.getImageData(0, 0, canvasWidth, canvasHeight),
					lmult = (((t.mainMaxTimeLeft)) / canvasWidth);								
				for (var i=0;i<lmult;i++) {
					context.beginPath();
					context.moveTo(i*canvasWidth,-50);
					context.lineTo(i*canvasWidth,canvasHeight);
					context.lineWidth = 3;
					context.strokeStyle = "#c0392b";
					context.stroke();
					context.putImageData(imgdata,i*canvasWidth,0);
				}

			}

			//playSound(buff);
			
		   context.restore();	   
		   audio = jQuery(objLayer.references.sorttable.timeline[0]).find('.timeline_audio');			
			if (audio!==undefined && audio.length>0)		
				punchgs.TweenLite.set(audio,{left:15+(objLayer.frames["frame_0"].time/10), width:((objLayer.frames["frame_999"].time - objLayer.frames["frame_0"].time) + objLayer.frames["frame_999"].split_extratime + objLayer.frames["frame_999"].speed)/10});
		 } catch(e) { console.log("Drawing of Audio Map failed !")}
	}

	

	

	/******************************
		-	ADD LAYER TO SORTBOX	-
	********************************/
	t.addToSortbox = function(serial,objLayer){

				
		if (document.getElementById('layers-right-ul').children.length===1) 	
			addSlideToSortbox();
		
		if (serial===undefined) return false;

		
		var endslideclass = "",
			isVisible = t.isLayerVisible(objLayer.references.htmlLayer),
			classLI = "",
			classDrop = "",
			sortboxText = t.getSortboxText(objLayer.alias),
			depth = Number(objLayer.order)+5,
			htmlSortbox = "",
			quicksb  = ""
			visibleclass = "in-on",
			groupLink = objLayer.groupLink !==undefined ? objLayer.groupLink : 0;
		
		switch (objLayer.type) {
			case "group":
				classLI=" sortable_elements sortable_group";
				classDrop = " droppable_sortable_group";
			break;
			case "row":
				classLI="  sortable_elements sortable_group sortable_row";
				classDrop = " droppable_sortable_row";
			break;
			case "column":
				classLI=" sortable_elements sortable_column";
				classDrop = " droppable_sortable_column";
			break;
			default:
				classLI=" sortable_elements sortable_layers";
			break;
		}
		
		if (objLayer.deleted) classLI=classLI+" layer-deleted";
							
		htmlSortbox += '<li data-uniqueid="'+objLayer.unique_id+'" id="layer_sort_'+serial+'" data-type="'+objLayer.type+'" class="mastertimer-layer ui-state-default'+classLI+'" data-grouptype="'+objLayer.grouptype+'" data-pid="'+objLayer.p_uid+'">';
		
		htmlSortbox += '	<div class="layer_sort_inner_wrapper '+classDrop+'">';
				
		htmlSortbox += '		<span class="mastertimer-timeline-selector-row tipsy_enabled_top" title="Select Layer in Timeline">';
		htmlSortbox += '			<input data-uniqueid="'+objLayer.unique_id+'"  id="lots_id_'+objLayer.unique_id+'" class="layer-on-timeline-selector" style="margin:0px" type="checkbox"/>';		
		htmlSortbox += '		</span>';
		htmlSortbox += '		<span data-uniqueid="'+objLayer.unique_id+'" class="list-of-layer-links tipsy_enabled_top" title="Choose Layers Group Link">';		
		htmlSortbox += '			<span class="layer-link-type-element layer-link-type-element-cs layer-link-type-'+groupLink+'"></span>';
		htmlSortbox += '			<span class="list-of-layer-links-inner">';		
		htmlSortbox += '				<span data-linktype="1" class="layer-link-type-element layer-link-type-1"></span>';
		htmlSortbox += '				<span data-linktype="2" class="layer-link-type-element layer-link-type-2"></span>';
		htmlSortbox += '				<span data-linktype="3" class="layer-link-type-element layer-link-type-3"></span>';
		htmlSortbox += '				<span data-linktype="4" class="layer-link-type-element layer-link-type-4"></span>';
		htmlSortbox += '				<span data-linktype="5" class="layer-link-type-element layer-link-type-5"></span>';
		htmlSortbox += '				<span data-linktype="0" class="layer-link-type-element layer-link-type-0"></span>';		
		htmlSortbox += '			</span>';				
		htmlSortbox += '		</span>';
		if (objLayer.type!="column") {
			
			if (objLayer.type!=="row") {
				htmlSortbox += '	<span  class="mastertimer-timeline-zindex-row tipsy_enabled_top" title="z-Index">';
				htmlSortbox += '		<i style="margin-left:15px;margin-right:0px;" class="layersortclass eg-icon-sort"></i>';
				htmlSortbox += '		<span class="sortbox_depth" title="z-Index">'+depth+'</span>';
				htmlSortbox += '	</span>';
			} else {
				htmlSortbox += '	<span  class="mastertimer-timeline-zindex-row tipsy_enabled_top" style="cursor:default !important" title="z-Index"></span>';
			}
			
		} else {
			htmlSortbox += ' 	<span class="column_sort_row_spacer"></span>';
		}			
		htmlSortbox += '		<span class="mastertimer-timeline-tillendcontainer" style="">';
		htmlSortbox += '			<span data-uniqueid="'+objLayer.unique_id+'" data-serial="'+serial+'" class="till_slideend tipsy_enabled_top '+endslideclass+'" title="Wait till Slides End / Custom End"><i class="eg-icon-back-in-time"></i><i class="eg-icon-download-2"></i></span>';
		htmlSortbox += '		</span>';		
		htmlSortbox += '		<span class="sort-hover-part layer_sort_layer_text_field">';
		htmlSortbox += '			<span class="sortbox_text"><i class="layertypeclass ';		

		
		switch (objLayer.type) {
			case "group":
				htmlSortbox += 'fa-icon-object-group';
			break;
			case "row":
				htmlSortbox += 'rs-icon-layergroup';		
			break;

			case "column":
				htmlSortbox += 'rs-icon-layercolumns';		
			break;

			case "text":
				htmlSortbox += 'rs-icon-layerfont';
		
			break;
			case "image":
				htmlSortbox += 'rs-icon-layerimage';
		
			break;
			case "video":
				htmlSortbox += 'rs-icon-layervideo';		
			break;

			case "audio":
				htmlSortbox += 'rs-icon-layeraudio';		
			break;
			
			case "button":
				htmlSortbox += 'rs-icon-layerbutton';		
			break;

			case "shape":
				htmlSortbox += 'rs-icon-layershape';		
			break;

			case "svg":
				htmlSortbox += 'rs-icon-layersvg';		
			break;
		}


		htmlSortbox += '"></i>';

		htmlSortbox += '				<input class="timer-layer-text" style="margin-top:-1px !important" type="text" enabled value="'+sortboxText + '">';

		htmlSortbox += '			</span>';
		htmlSortbox += '		</span>';
		if (objLayer.type=="group" || objLayer.type=="row" || objLayer.type=="column") 
			htmlSortbox += '		<span class="sort_group_collapser"><i class="eg-icon-down-dir"></i><i class="eg-icon-right-dir"></i></span>'
		
		if (objLayer.type!="column")
			htmlSortbox += '		<span class="timer-manual-edit"><i class="eg-icon-pencil"></i></span>'
		htmlSortbox += '	</div>';
		
		if (objLayer.type=="group" || objLayer.type=="row") 
			htmlSortbox += '<ul id="sortable_group_'+objLayer.unique_id+'" class="sortable_groups_wrap sgw_def"></ul>';
		if (objLayer.type=="column") 
			htmlSortbox += '<ul id="sortable_columns_'+objLayer.unique_id+'" class="sortable_layers_in_columns sgw_def"></ul>';
		htmlSortbox += '</li>';

		var quickClassE = "";
		if (objLayer.p_uid!=undefined && objLayer.p_uid !==-1 && objLayer.type!=="row" && objLayer.type!=="group") quickClassE = " quick_in_group";
		if (objLayer.type==="row") quickClassE +=" quick_in_row"

		quicksb += '<li id="layer_quicksort_'+serial+'" data-serial="'+serial+'" class="quicksortlayer ui-state-default layer-toolbar-li'+quickClassE+'">';
		var btlist ='<span class="quick-edit-toolbar-in-list">';

		switch (objLayer.type) {
			case "text":
				quicksb += '<span class="layer-short-tool revdarkgray layer-title-with-icon"><i class="rs-icon-layerfont_n"></i>';
				btlist += '<span id="button_edit_layer_'+serial+'" class="button_edit_layer layer-short-tool revblue"><i class="eg-icon-pencil"></i></span>';
				btlist += '<span id="button_reset_size_'+serial+'" class="button_reset_size layer-short-tool revblue"><i class="eg-icon-resize-normal"></i></span>';
			break;
			case "group":			
				quicksb += '<span class="layer-short-tool revdarkgray layer-title-with-icon"><i class="fa-icon-object-group"></i>';				
				btlist += '<span  class="layer-short-tool revdarkgray"></span>';
				btlist += '<span  class="layer-short-tool revdarkgray"></span>';
			break;
			case "row":
				quicksb += '<span class="layer-short-tool revdarkgray layer-title-with-icon"><i class="rs-icon-layergroup_n"></i>';				
				btlist += '<span  class="layer-short-tool revdarkgray"></span>';
				btlist += '<span  class="layer-short-tool revdarkgray"></span>';
			break;
			case "column":			
				quicksb += '<span class="layer-short-tool revdarkgray layer-title-with-icon"><i class="rs-icon-layercolumns_n"></i>';				
				btlist += '<span  class="layer-short-tool revdarkgray"></span>';
				btlist += '<span  class="layer-short-tool revdarkgray"></span>';
				btlist += '<span  class="layer-short-tool revdarkgray"></span>';
				btlist += '<span  class="layer-short-tool revdarkgray"></span>';
			break;	
			case "shape":
				quicksb += '<span class="layer-short-tool revdarkgray layer-title-with-icon"><i class="rs-icon-layershape_n"></i>';
				btlist += '<span id="button_edit_shape_'+serial+'" class="button_edit_shape layer-short-tool revblue"><i class="eg-icon-pencil"></i></span>';
				btlist += '<span  class="layer-short-tool revdarkgray"></span>';
			break;
			case "button":
				quicksb += '<span class="layer-short-tool revdarkgray layer-title-with-icon"><i class="rs-icon-layerbutton_n"></i>';
				btlist += '<span id="button_edit_layer_'+serial+'" class="button_edit_layer layer-short-tool revblue"><i class="eg-icon-pencil"></i></span>';
				btlist += '<span id="button_reset_size_'+serial+'" class="button_reset_size layer-short-tool revblue"><i class="eg-icon-resize-normal"></i></span>';
			break;
			case "image":
				quicksb += '<span class="layer-short-tool revdarkgray layer-title-with-icon"><i class="rs-icon-layerimage_n"></i>';
				btlist += '<span  id="button_change_image_source_'+serial+'" class="button_change_image_source layer-short-tool revblue"><i class="eg-icon-pencil"></i></span>';
				btlist += '<span id="button_reset_size_'+serial+'" class="button_reset_size layer-short-tool revblue"><i class="eg-icon-resize-normal"></i></span>';
			break;
			case "video":
				quicksb += '<span class="layer-short-tool revdarkgray layer-title-with-icon"><i class="rs-icon-layervideo_n"></i>';
				btlist += '<span  id="button_change_video_settings_'+serial+'" class="button_change_video_settings layer-short-tool revblue"><i class="eg-icon-pencil"></i></span>';				
				btlist += '<span  class="layer-short-tool revdarkgray"></span>';
			break;
			case "audio":
				quicksb += '<span class="layer-short-tool revdarkgray layer-title-with-icon"><i class="rs-icon-layeraudio_n"></i>';
				btlist += '<span  id="button_changeaudio_settings_'+serial+'" class="button_change_audio_settings layer-short-tool revblue"><i class="eg-icon-pencil"></i></span>';				
				btlist += '<span  class="layer-short-tool revdarkgray"></span>';
				classLI = " layer-sort-audio-item"
			break;
			case "svg":
				quicksb += '<span class="layer-short-tool revdarkgray layer-title-with-icon"><i class="rs-icon-layersvg_n"></i>';
				btlist += '<span  id="button_changesvg_settings_'+serial+'" class="button_change_svg_settings layer-short-tool revblue"><i class="eg-icon-pencil"></i></span>';				
				btlist += '<span  class="layer-short-tool revdarkgray"></span>';
			break;
		}
		
		quicksb += '<input type="text" class="layer-title-in-list" value="'+sortboxText+'"></span>';
		quicksb += btlist;		
		if (objLayer.type!=="column") {
			quicksb += '<span id="button_delete_layer_'+serial+'" class="button_delete_layer layer-short-tool revred"><i class="rs-lighttrash"></i></span>';
			quicksb += '<span id="button_duplicate_layer_'+serial+'" class="button_duplicate_layer layer-short-tool revyellow" data-isstatic=""><i class="rs-lightcopy"></i></span>';
		} 
		quicksb += '<span style="display:block;float:none;clear:both"></span></span>';
		quicksb += '<span class="quick-layer-view layer-short-tool revdarkgray '+visibleclass+'"><i class="eg-icon-eye"></i></span>';
		quicksb += '<span class="quick-layer-lock layer-short-tool revdarkgray"><i class="eg-icon-lock-open"></i></span>';
		quicksb += '<div style="clear:both;display:block"></div>';
		quicksb +='</li>';
		
		
				
		if (document.getElementById('quick-layers-list-id').childNodes.length>1) document.getElementById('nolayersavailable').style.display='none';

		var htmlTimeline = "",
			grouptypeclass = objLayer.grouptype === "logical_o" ? " hide_timeline" : "";
		htmlTimeline += '<li data-uniqueid="'+objLayer.unique_id+'" data-serial="'+serial+'" id="layer_sort_time_'+serial+'" class="sortable_elements mastertimer-layer ui-state-default'+classLI+grouptypeclass+'" data-grouptype="'+objLayer.grouptype+'" data-pid="'+objLayer.p_uid+'">';
		htmlTimeline += '		<div class="timeline_full"></div>';		
		htmlTimeline += '  <div class="timeline">';		
		htmlTimeline += '  	<div class="timeline-relative-marker trm-groupandrowmarker"></div>';

		htmlTimeline += '		<div data-frameindex="0" id="tl_'+objLayer.unique_id+'_frame_0" class="timeline_frame tf_startframe tl_layer_frame" data-uniqueid="'+objLayer.unique_id+'" data-serial="'+serial+'" style="z-index:50;">';		
		htmlTimeline += ' 			<span class="timebefore_cont"></span>';
		htmlTimeline += '			<div class="tl_speed_wrapper">';			
		htmlTimeline += '				<div class="tlf_speed"><span class="duration_cont"></span></div>';
		htmlTimeline += '				<div class="tlf_splitdelay"></div>';
		htmlTimeline += '			</div>';
		htmlTimeline += '			<span class="show_timeline_helper">EDIT</span>';
		htmlTimeline += '		</div>';		
		htmlTimeline += '		<div data-frameindex="999" id="tl_'+objLayer.unique_id+'_frame_999" class="timeline_frame tf_endframe tl_layer_frame" data-uniqueid="'+objLayer.unique_id+'" data-serial="'+serial+'" style="z-index:48;">';
		htmlTimeline += ' 			<span class="timebefore_cont"></span>';
		htmlTimeline += '			<div class="tl_speed_wrapper">';		
		htmlTimeline += '				<div class="tlf_speed"><span class="duration_cont"></span></div>';
		htmlTimeline += '				<div class="tlf_splitdelay"></div>';
		htmlTimeline += '			</div>';
		htmlTimeline += '			<span class="show_timeline_helper">EDIT</span>';
		htmlTimeline += '		</div>';		
		htmlTimeline += ' </div>';
		htmlTimeline += ' <div class="slide-idle-section"></div>';
		htmlTimeline += '</li>';

		var inserttoend = true;
		if (objLayer.type==="row" && document.getElementById('layers-left-ul').getElementsByClassName('sortable_row').length>0) {
			inserttoend = false;
			document.getElementById('layers-left-ul').getElementsByClassName('sortable_row')[0].insertAdjacentHTML('afterend',htmlSortbox);				
			document.getElementById('quick-layers-list-id').getElementsByClassName('quick_in_row')[0].insertAdjacentHTML('afterend',quicksb);
			document.getElementById('layers-right-ul').getElementsByClassName('sortable_row')[0].insertAdjacentHTML('afterend',htmlTimeline);
		}	

		if (inserttoend) {
			document.getElementById('layers-left-ul').insertAdjacentHTML('beforeend',htmlSortbox);		
			document.getElementById('quick-layers-list-id').insertAdjacentHTML('beforeend',quicksb);
			document.getElementById('layers-right-ul').insertAdjacentHTML('beforeend',htmlTimeline);
		}
		
		
		jQuery('#layer_quicksort_'+serial).on('mouseenter',function(event) {
			jQuery('.layer_due_list_element_selected').removeClass('layer_due_list_element_selected');
			jQuery('#slide_layer_'+jQuery(this).data('serial')).addClass("layer_due_list_element_selected");
		});

		jQuery('#layer_quicksort_'+serial).on('mouseleave',function(event) {
			jQuery('.layer_due_list_element_selected').removeClass('layer_due_list_element_selected');			
		});

		jQuery("#layers-left .tipsy_enabled_top").tipsy({
  				gravity:"s",
  				delayIn: 70
  		});

  		
		reinitSortBox();

		
		var liel= document.getElementById('layer_sort_time_'+serial),
			li = jQuery(liel),
			curel = liel.getElementsByClassName("timeline")[0],
			cur = jQuery(curel);
				

		objLayer.references.sorttable = objLayer.references.sorttable === undefined ? {} : objLayer.references.sorttable;
		objLayer.references.sorttable.layer = jQuery(document.getElementById('layer_sort_'+serial));
		objLayer.references.sorttable.timeline = li;
		objLayer.references.quicklayer = jQuery(document.getElementById('layer_quicksort_'+serial));




		if (objLayer.type=="audio") {
			li.data('objref',objLayer);			

  			t.drawAudioMap(objLayer);

  			li.on('mousemove',function(e) {  				
  				try{
	  				var li = jQuery(this),
	  					objLayer = li.data('objref'),
	  					serial = li.data('serial'),
	  					player = jQuery('#slide_layer_'+serial+" audio")[0];
	  				if (!li.hasClass("ui-state-hover")) return false;
					
					clearTimeout(li.data('audiopreview'));
					li.find('.audio-progress').remove();
					player.pause();
	  				
	  				
	  				li.data('audiopreview',setTimeout(function() {
		  				
		  				var	tf = li.find('.timeline_full'),
		  					dl = tf.position().left,  					
		  					dw = tf.width(),
		  					mousex = (e.pageX-li.offset().left),
		  					time = mousex-dl;

		  				if (mousex <dl || mousex>(dl+dw)) return;
		  				
		  				
		  				li.find('.audio-progress').remove();
		  				li.append('<div class="audio-progress"></div>');
		  				var ap = li.find('.audio-progress'),		  						  				
		  					
		  					_s = getStartSec(objLayer.video_data.start_at),
			   				_e = getStartSec(objLayer.video_data.end_at);

						_s= _s==-1 ? 0 : _s;
						_e= _e==-1 ? 999999999 : _e;				
						_s= _s /60;
						_e= _e /60;			
						_e = _e>player.duration ? player.duration : _e;
						
						var segment = _e-_s,
							shift = Math.floor((time / (segment*100)));
						

		  				if (time>segment*100) 
		  					time = time - ((segment*100)*shift);

		  					  				
		  				if (time>0) {
		  					restw = (segment-time/100) * 100;  					  				
		  					punchgs.TweenLite.fromTo(ap,(segment-time/100),{left:(dl+time+(shift*(segment*100))),transformOrigin:"0% 50%", width:restw,scaleX:0},{scale:1,ease:punchgs.Linear.easeNone, onUpdate:function() {}, onComplete:function() {
		  						player.pause();
		  					}});
		  				}
		  				if (time>0) {
		  					player.play();
		  					player.currentTime = time/100;
		  				} 	
		  			},400));	  				
		  		} catch(er) {

		  		}
  			});

  			li.on('mouseleave',function(e) {
  				try {
  					var li = jQuery(this),  					
	  					serial = li.data('serial'),
	  					player = jQuery('#slide_layer_'+serial+" audio")[0];
	  				clearTimeout(li.data('audiopreview'));
	  				li.find('.audio-progress').remove();
  					player.pause();
  				} catch(er) { }
	  		});
  		}

  		var el = liel.getElementsByClassName('timeline_frame');  		  		
  		for (var i=0;i<el.length;i++) {  			
  			jQuery(el[i]).resizable({
  				handles: 'e,w',
  				minWidth:1,
	  			create: function(event,ui) {
	  				var a = this;		  				 			
	  				t.setTLFrame(a);
	  				setTimeout(function() {
	  					t.frameLimitations(a);
	  				},25);
	  			},
	  			start: function(event,ui) {	  				
	  				t.deactivatePerfectScrollBars();	  	  				
	  				t.updateTLFrame(this,"trigger",undefined,ui.size.width);

	  			},
	  			resize: function(event,ui) {	  					  				
	  				t.updateTLFrame(this,"trigger",undefined,ui.size.width);	  				
	  			},
	  			stop: function(event,ui) {
	  				t.updateTLFrame(this,"trigger");
	  			}
	  		});

	  		jQuery(el[i]).draggable({
	  			axis:"x",
	  			start:function(event,ui) {
	  				t.recordFrameStatus(this,ui);
	  			},
	  			drag:function(event,ui) {	  				
	  				t.frameLimitations(this,ui);
	  				t.updateTLFrame(this,"trigger");	
	  				t.updateAllSelectedLayerTimeline(this);  									
	  			},
	  			stop:function(event,ui) {
	  				t.frameLimitations(this,ui);
	  				t.updateTLFrame(this,"trigger");
	  				t.updateAllSelectedLayerTimeline(this);	  				
	  			}
	  		});
  		}  	
  		t.resetTimeLineHeight();
  		t.setIdleZones();			
	}

	/**
	 Deactivate the Perfect Scroll bars for a while, since elements just simple slow down
	*/
	t.deactivatePerfectScrollBars = function() {
		jQuery('.revolution-template-groups').perfectScrollbar("destroy");		
	}

	t.activatePerfectScrollBars = function() {
		jQuery('.revolution-template-groups').perfectScrollbar();
	}

	/**
	 check if the Layer should go till Slide End, or should animate our before.
	 if objLayer.endWithSlide == true -> the Layer should not get any "data-end" output !!
	*/
	var checkTillSlideEnd = function(objLayer) {
		
		var maxtime = ((t.mainMaxTimeLeft))*10,
			li = document.getElementById('layer_sort_'+objLayer.serial);
			
		if ( objLayer.frames["frame_999"].time >= maxtime) {			
			objLayer.endWithSlide = true;
			if (!li.classList.contains("tillendon")) 			
				li.className += " tillendon";			
		} else {
			objLayer.endWithSlide = false;
			jQuery(li).removeClass("tillendon");
		}	
	}

	t.setTLFrame = function(frame) {
		var speedcont = frame.getElementsByClassName('tlf_speed')[0],
			splitcont = frame.getElementsByClassName('tlf_splitdelay')[0],	
			durcont = frame.getElementsByClassName('duration_cont')[0],	
			timecont = frame.getElementsByClassName('timebefore_cont')[0],				
			trm = frame.parentNode.parentNode.getElementsByClassName('timeline-relative-marker')[0],
			frame=jQuery(frame),			
			objLayer = u.getLayerByUniqueId(frame.data('uniqueid')),
			triggered = u.checkLayerTriggered(objLayer),
			frameslength = u.getObjectLength(objLayer.frames);

		objLayer.frames["frame_0"].time = Math.max(0,objLayer.frames["frame_0"].time);				
		objLayer.frames["frame_999"].time = Math.min(t.mainMaxTimeLeft*10,objLayer.frames["frame_999"].time);


		var fi = frame.data('frameindex'),
			speed = objLayer.frames["frame_"+fi].speed,
			time = objLayer.frames["frame_"+fi].time,
			splitdelay = getSplitCounts(objLayer.text,objLayer.frames["frame_"+fi].split,objLayer.frames["frame_"+fi].splitdelay),
			timedif = time;
										

		objLayer.frames["frame_"+fi].split_extratime = splitdelay;
				
		if (splitdelay!==0) {
			punchgs.TweenLite.set(speedcont,{width:(speed/10)-splitdelay});
			punchgs.TweenLite.set(splitcont,{width:splitdelay});
		} else {
			punchgs.TweenLite.set(speedcont,{width:speed/10});
			punchgs.TweenLite.set(splitcont,{width:0});
		}

		
		punchgs.TweenLite.set(frame,{left:time/10, width:(splitdelay+(speed/10))});		
		durcont.innerHTML = speed;
		
		
		if (objLayer.p_uid!==undefined && objLayer.p_uid!==-1 && u.getLayerByUniqueId(objLayer.p_uid) !==undefined && (typeof u.getLayerByUniqueId(objLayer.p_uid)==='object')) {
			var p_objLayer = u.getLayerByUniqueId(objLayer.p_uid);			
			trm.style.display="block";
			trm.style.width = ((p_objLayer.frames["frame_0"].time/10)-1)+"px";		
			timedif = time - p_objLayer.frames["frame_0"].time;				
		} else {
			trm.style.display="none";
			trm.style.width = "0px";
			if (fi!==0) {				
				var prevframe = fi===999 ? objLayer.frames["frame_"+(frameslength-2)] : objLayer.frames["frame_"+(fi-1)];
				if (prevframe!==undefined)
					timedif = time - (prevframe.time + prevframe.speed + (prevframe.split_extratime*10));
			}
		}


		if (time == t.mainMaxTimeLeft * 10) 
			timecont.innerHTML = '<span class="wait_slide_end">WAIT</span>';								
	
		
		objLayer.frames["frame_"+fi].time_relative = timedif;

		if (fi==0 && triggered.in) timecont.innerHTML = '<span class="triggered_layer_on_timeline">a</span>';
		if (fi==999 && triggered.out) timecont.innerHTML = '<span class="triggered_layer_on_timeline">a</span>';
		t.updateFullTime(objLayer);
		checkTillSlideEnd(objLayer);

	}

	t.updateTLFrame = function(frame,source,ignorerecursive,resizewidth) {
		if (t.recordFrameStatusForce) 
			t.recordFrameStatus(frame);
		

		var curserial = u.getCurrentLayer().serial,
			speedcont = frame.getElementsByClassName('tlf_speed')[0],
			splitcont = frame.getElementsByClassName('tlf_splitdelay')[0],	
			durcont = frame.getElementsByClassName('duration_cont')[0],
			timecont = frame.getElementsByClassName('timebefore_cont')[0],							
			trm = frame.parentNode.parentNode.getElementsByClassName('timeline-relative-marker')[0],
			frame=jQuery(frame),			
			objLayer = u.getLayerByUniqueId(frame.data('uniqueid')),
			objUpdate = {frames:{}},
			frameslength = u.getObjectLength(objLayer.frames),
			triggered = u.checkLayerTriggered(objLayer);	
			fi = frame.data('frameindex'),
			speed = frame.outerWidth()*10,
			time = frame.position().left*10,			
			splitdelay = getSplitCounts(objLayer.text,objLayer.frames["frame_"+fi].split,objLayer.frames["frame_"+fi].splitdelay),
			currentframe = objLayer.frames["frame_"+fi],
			updateTimerText = true,
			timedif = time;
		
		objUpdate.frames["frame_"+fi] = {};
			
		if ((speed-(splitdelay*10))<0) {
			speed = splitdelay*10;			
			punchgs.TweenLite.set(frame,{width:(splitdelay)});
		}


				
		if (splitdelay!==0) {
			punchgs.TweenLite.set(speedcont,{width:(speed/10)-splitdelay});
			punchgs.TweenLite.set(splitcont,{width:splitdelay});
		} else {
			punchgs.TweenLite.set(speedcont,{width:speed/10});
			punchgs.TweenLite.set(splitcont,{width:0});
		}
		
		
		durcont.innerHTML = speed;
		
		if ((time == t.mainMaxTimeLeft * 10) || (fi==0 && triggered.in) || (fi==999 && triggered.out))
			updateTimerText = false;

		// CALCULATE THE DELAYS BETWEEN FRAMES OR PARRENT ELEMENTS				
		if (objLayer.p_uid!==undefined && objLayer.p_uid!==-1 && u.getLayerByUniqueId(objLayer.p_uid) !==undefined && (typeof u.getLayerByUniqueId(objLayer.p_uid)==='object')) {
			
			var p_objLayer = u.getLayerByUniqueId(objLayer.p_uid);			
			timedif = time - p_objLayer.frames["frame_0"].time;
			trm.style.display="block";
		} else {
			
			trm.style.display="none";
			trm.style.width="0px";		
			if (fi!==0) {
				var prevframe = fi===999 ? objLayer.frames["frame_"+(frameslength-2)] : objLayer.frames["frame_"+(fi-1)];							
				if (prevframe)
					timedif = time - (prevframe.time + prevframe.speed + (prevframe.split_extratime*10));
			}
		}
		
		// SET TO "WAIT" IF ELEMENT IS BIGGER THAN SLIDE LENGTH
		if (time == t.mainMaxTimeLeft * 10) timecont.innerHTML = '<span class="wait_slide_end">WAIT</span>';												
		// DRAW AN "A" IF LAYER ACTION TRIGGERED
		if (fi==0 && triggered.in) timecont.innerHTML = '<span class="triggered_layer_on_timeline">a</span>';
		if (fi==999 && triggered.out) timecont.innerHTML = '<span class="triggered_layer_on_timeline">a</span>';
		
		currentframe.time_relative = timedif;		
		objUpdate.frames["frame_"+fi].speed = speed-(splitdelay*10);
		objUpdate.frames["frame_"+fi].time = time;	
		objUpdate.frames["frame_"+fi].time_relative=timedif;	
		objUpdate.frames["frame_"+fi].split_extratime = splitdelay;						
		
		if (objLayer.serial == curserial) {	
			if (fi===0)	document.getElementById('layer_speed').value = objUpdate.frames["frame_0"].speed;
			if (fi===999) document.getElementById('layer_endspeed').value =  objUpdate.frames["frame_999"].speed;
		}
		if (source!=="trigger") {
			currentframe.speed = objUpdate.frames["frame_"+fi].speed;
			currentframe.time = objUpdate.frames["frame_"+fi].time;
		}			

		// MOVE ALL CHILDREN ELEMENTS TOGETHER WITH THE FIRST FRAME
		if (fi===0) {
			if (objLayer.type==="row" || objLayer.type==="column" || objLayer.type=="group") {
				var _list = u.getLayersInGroup(objLayer.unique_id);						
				for (var i=0;i<_list.columns.length;i++) {
					var l_tl = _list.columns[i].references.sorttable.timeline,
						trm = l_tl[0].getElementsByClassName('timeline-relative-marker')[0];
					trm.style.width = ((time/10)-1)+"px";
				}
				for (i=0;i<_list.layers.length;i++) {
					var l_tl = _list.layers[i].references.sorttable.timeline,
						trm = l_tl[0].getElementsByClassName('timeline-relative-marker')[0];

					if (objLayer.type==="row") {
						var p_tl = document.getElementById("tl_"+_list.layers[i].p_uid+"_frame_0");							
						if (p_tl!==null && p_tl!==undefined) {															
							trm.style.width = p_tl.style.left; 							
						}
					} else {
						trm.style.width = ((time/10)-1)+"px";
					}
				}
			}		
		}

		
		// UPDATE DELAYS ON EACH FRAMES COMING AFTER THE CURRENT FRAME 
		if (fi!==999) {
			var nfi = fi+1>=frameslength-1 ? 999 : fi+1,
				nextframe = objLayer.frames["frame_"+nfi];			
			if (nextframe!=undefined) {
				nextframe.time_relative = nextframe.time - (currentframe.time+currentframe.speed+(currentframe.split_extratime*10));				
				objUpdate.frames["frame_"+nfi] = {time_relative : nextframe.time_relative};
				objLayer.frames["frame_"+nfi].time_relative =nextframe.time_relative;
			}
		} else {
			var nfi="frame_0";			
			for (var fri in objLayer.frames) {
				if (fri!=="frame_999")
					nfi = fri;
			}			
			var prevframe = objLayer.frames[nfi];				
			if (prevframe!=undefined) {					
				var time_relative = objLayer.frames["frame_"+fi].time - (prevframe.time+prevframe.speed+(prevframe.split_extratime*10));									
				objUpdate.frames.frame_999.time_relative = time_relative;	
				objLayer.frames.frame_999.time_relative =time_relative;				
			}
		}
		
		if (source=="trigger") {			
			u.updateLayer(objLayer.serial,objUpdate);
		} else 
			currentframe.split_extratime = objUpdate.frames["frame_"+fi].split_extratime;
		
		t.frameLimitations(frame,false,ignorerecursive,{update:updateTimerText,triggered:triggered,timecont:timecont});
		t.updateFullTime(objLayer);
		checkTillSlideEnd(objLayer);
	}

	t.addLayersColumnsToSelectedElements = function(objLayer,fi) {		
		var temp =  u.getLayersInGroup(objLayer.unique_id)
		if (objLayer.type==="row" || objLayer.type=="column" || objLayer.type==="group") {
			for (var sfi=0;sfi<=temp.layers.length-1;sfi++) {
				var _pid = temp.layers[sfi].unique_id;
				if (jQuery.inArray(_pid,u.selectedLayers) == -1 && jQuery.inArray(_pid,u.currentGroupElements) == -1) {					
					var _pel = document.getElementById('tl_'+_pid+'_frame_'+fi);					
					u.currentGroupElementsPositionLeftReset.push(parseInt(_pel.style.left,0));			
					u.currentGroupElements.push(_pid);
				}
			}
			if (objLayer.type==="row")
				for (var sfi=0;sfi<=temp.columns.length-1;sfi++) {
					var _pid = temp.columns[sfi].unique_id;
					if (jQuery.inArray(_pid,u.selectedLayers) == -1 && jQuery.inArray(_pid,u.currentGroupElements) == -1) {					
						var _pel = document.getElementById('tl_'+_pid+'_frame_'+fi);						
						u.currentGroupElementsPositionLeftReset.push(parseInt(_pel.style.left,0));			
						u.currentGroupElements.push(_pid);
					}
				}
		}
		return true;
	}

	// Record the last known Position of Elements before Drag
	t.recordFrameStatus = function(frame,ui) {
		var frame=jQuery(frame),
			fi = frame.data('frameindex'),
			objLayer = u.getLayerByUniqueId(frame.data('uniqueid'));
		
		objLayer.positionLeftReset = ui!==undefined ? ui.position.left : frame.position().left;
		u.selectedLayersPositionLeftReset = [];
		u.currentGroupElements = [];
		u.currentGroupElementsPositionLeftReset = [];
		for (var sfi=0;sfi<=u.selectedLayers.length-1;sfi++) {
			var _pid = u.selectedLayers[sfi],
				_obj = _pid!==-1 ? u.getLayerByUniqueId(_pid) : -1,
				_pel = document.getElementById('tl_'+_pid+'_frame_'+fi);
			u.selectedLayersPositionLeftReset.push(parseInt(_pel.style.left,0));			
			if (_obj!==-1) 				
				t.addLayersColumnsToSelectedElements(_obj,0);
			
		}				
		t.addLayersColumnsToSelectedElements(objLayer,0);
		t.recordFrameStatusForce=false;		
	}

	// CHECK IF LEFT OR RIGHT SIDE OF FRAME ALREADY REACHED, REPRINT DELAYS AND POSITIONS
	t.frameLimitations = function(frame,ui,ignorerecursive,_tc) {
		
		if (t.recordFrameStatusForce) 
			t.recordFrameStatus(frame);
		
		var frame=jQuery(frame),
			objLayer = u.getLayerByUniqueId(frame.data('uniqueid')),
			pframe = frame.prev(),
			nframe = frame.next(),
			nframei = nframe.data('frameindex'),
			fi = frame.data('frameindex'),
			fl = ui!==undefined && ui!==false ? ui.position.left : frame.position().left,
			fw = frame.outerWidth(),
			frameslength = u.getObjectLength(objLayer.frames),
			currentframe = objLayer.frames["frame_"+fi];
			

			
		// LEFT CHECK

		if (pframe.length>0) 			
			fl = Math.max((pframe.position().left+pframe.outerWidth()), fl);			
		
		fl = Math.max(0,fl); 					
		
		// RIGHT CHECK
		if (nframe.length>0 && fi!==999)
			fl = Math.min(nframe.position().left-fw, fl);
		fl = Math.min(t.mainMaxTimeLeft,fl);

		// REWRITE TIME INFO'S
		if (_tc!==undefined && _tc.update) {
			var timedif = 0;
			if (objLayer.p_uid!==undefined && fi===0 && objLayer.p_uid!==-1 && u.getLayerByUniqueId(objLayer.p_uid) !==undefined && (typeof u.getLayerByUniqueId(objLayer.p_uid)==='object')) {				
				var p_objLayer = u.getLayerByUniqueId(objLayer.p_uid);			
				timedif = (fl*10) - p_objLayer.frames["frame_0"].time;
			} else
			if (fi!==0) {
				var prevframe = fi===999 ? objLayer.frames["frame_"+(frameslength-2)] : objLayer.frames["frame_"+(fi-1)];	
				if (prevframe)					
					timedif = (fl*10) - (prevframe.time + prevframe.speed + (prevframe.split_extratime*10));
			}
			
			if (t.timelinetype==="absolute") 
				_tc.timecont.innerHTML = fl*10;
			else 
				_tc.timecont.innerHTML = timedif;
		}

		if (fi!==999 && t.timelinetype!=="absolute") {
			var nextframe = objLayer.frames["frame_"+nframei];
			nextframe.time_relative = nextframe.time - (currentframe.time+(currentframe.split_extratime*10)+currentframe.speed);
			nframe.find('.timebefore_cont').html(nextframe.time_relative);
		}
		
		if (ui!==undefined && ui!==false) ui.position.left = fl;

		
		punchgs.TweenLite.set(frame,{left:fl});

		// Check if more than one Layer selected, and move all Layer parallel to the Master layer				
		if ((u.selectedLayers.length>0 && !ignorerecursive) || (u.currentGroupElements!=undefined && u.currentGroupElements.length>0 && !ignorerecursive)) {
			var dragdif = fl - (objLayer.positionLeftReset);						
			for (var sfi=0;sfi<=u.selectedLayers.length-1;sfi++) {				
				var _pid = u.selectedLayers[sfi];													
				if (_pid != objLayer.unique_id) {					
					var _pel = document.getElementById('tl_'+_pid+'_frame_'+fi);								
					_pel.style.left = (u.selectedLayersPositionLeftReset[sfi] + dragdif)+"px"; 
					t.updateFullTime(u.getLayerByUniqueId(_pid),(u.selectedLayersPositionLeftReset[sfi] + dragdif));				
				}
			}

			if (fi===0 && u.currentGroupElements!==undefined && u.currentGroupElements.length>0)
				for (var sfi=0;sfi<=u.currentGroupElements.length-1;sfi++) {
					var _pid = u.currentGroupElements[sfi];
																	
					if (_pid != objLayer.unique_id) {					
						var _pel = document.getElementById('tl_'+_pid+'_frame_'+fi);																			
						_pel.style.left = (u.currentGroupElementsPositionLeftReset[sfi] + dragdif)+"px";
						t.updateFullTime(u.getLayerByUniqueId(_pid),(u.currentGroupElementsPositionLeftReset[sfi] + dragdif) );
					}
				}
		}	


		t.updateFullTime(objLayer);
		checkTillSlideEnd(objLayer);
	}

	t.updateFullTime = function(objLayer,left) {
		var fullcont = objLayer.references.sorttable.timeline[0].getElementsByClassName('timeline_full')[0],
			audio = jQuery(objLayer.references.sorttable.timeline[0]).find('.timeline_audio'),
			left = left === undefined ? 15+(objLayer.frames["frame_0"].time/10) : left+15,
			newtime = (left - 15) * 10;				
		punchgs.TweenLite.set(fullcont,{left:left, width:((objLayer.frames["frame_999"].time - newtime) + objLayer.frames["frame_999"].split_extratime + objLayer.frames["frame_999"].speed)/10});
		if (audio!==undefined && audio.length>0)		
			punchgs.TweenLite.set(audio,{left:left, width:((objLayer.frames["frame_999"].time - newtime) + objLayer.frames["frame_999"].split_extratime + objLayer.frames["frame_999"].speed)/10});
		
	}
	t.updateLayerTimeline = function(objLayer) {
		var tf = objLayer.references.sorttable.timeline[0].getElementsByClassName('timeline_frame');
			for (var i=0;i<tf.length;i++) { 
			t.setTLFrame(tf[i]);
			t.updateTLFrame(tf[i],false,true);
		}
	}

	t.updateCurrentLayerTimeline = function() {								
		var el = document.getElementById('layer_sort_time_'+u.getCurrentLayer().serial),
			tf = el.getElementsByClassName('timeline_frame');		
  		for (var i=0;i<tf.length;i++) { 
			t.setTLFrame(tf[i],false,true);
		}
	};

	t.updateAllLayerTimeline = function() {
		var tf = document.getElementsByClassName('timeline_frame tl_layer_frame');		
  		for (var i=0;i<tf.length;i++) { 
  			
			t.updateTLFrame(tf[i],false,true);
			
		}
	}

	t.updateAllSelectedLayerTimeline = function(frame) {
		var frame=jQuery(frame),
			frameid = frame.data('uniqueid'),
			fi = frame.data('frameindex');
		if (u.selectedLayers.length>0) 						
			for (var i=0;i<=u.selectedLayers.length-1;i++) {
				var _pid = u.selectedLayers[i];													
				if (_pid != frameid) 
					t.updateTLFrame(document.getElementById('tl_'+_pid+'_frame_'+fi),false,true);
			}
		if (fi===0 && u.currentGroupElements!==undefined && u.currentGroupElements.length>0)
			for (var i=0;i<=u.currentGroupElements.length-1;i++) {
				var _pid = u.currentGroupElements[i];															
				if (_pid != frameid)
					t.updateTLFrame(document.getElementById('tl_'+_pid+'_frame_'+fi),false,true);									
			}
	}


	t.showTimeLineDirectInput = function(objLayer) {
		// SET CURRENT TIMING HELPERS
		jQuery('#clayer_start_time').val(objLayer.time);
		jQuery('#clayer_start_speed').val(objLayer.speed);
	}

	t.manageTimeLineDirectInput = function() {
		jQuery('#clayer_start_time, #clayer_end_time').on("change blur", function() {
			var objLayer = t.getLayer(selectedLayerSerial);
			
			objLayer.time = jQuery('#clayer_start_time').val();
			objLayer.frames["frame_999"].time = jQuery('#clayer_end_time').val();
			objLayer.speed = jQuery('#clayer_start_speed').val();
			objLayer.frames["frame_999"].speed = jQuery('#clayer_end_speed').val();
			
			jQuery('#layer_speed').val(objLayer.speed);
			jQuery('#layer_endspeed').val(objLayer.frames["frame_999"].speed);
			t.updateLayerFromFields();
			u.updateCurrentLayerTimeline();
		});
	}


	/**
		CALCULATE WIDTH TO TIME
	*/
	var msToSec = function(ms) {
		var s = Math.floor(ms / 1000);
		ms = ms - (s*1000);
		var str = s+".";
		if (ms<100)
			str=str+"0";
		str = str+Math.round(ms/10);
		return str;
	}

	// COUNT THE AMOUNT OF CHARS, WORDS, LINES IN A TEXT
	var getSplitCounts = function(txt,split,splitdelay) {
		
		if (txt==undefined) return 0;
		var splitted = new Object();
			ht = jQuery('<div>'+txt+'</div>'),
			w = 1;

		splitted.c = ht.text().replace(/ /g, "").length;
		splitted.w = txt.split(" ").length;
		splitted.l = txt.split('<br').length;
		
		switch (split) {
			case "chars":
				w = splitted.c;
			break;
			case "words":
				w = splitted.w;
			break;
			case "lines":
				w = splitted.l;
			break;
		}

		
		return (w -1) * splitdelay;
	}


	/**
		Show / HIde The Timelines
	*/
	var showHideTimeines = function() {
		/* HIDE / SHOW  TIMELINES */

		jQuery('#button_sort_timing').click(function() {
			var bst = jQuery(this);
			if (bst.hasClass("off")) {
				bst.removeClass("off");
				bst.find('.onoff').html('- on');
				punchgs.TweenLite.to(jQuery('.sortlist .timeline'),0.5,{autoAlpha:0.5,overwrite:"auto"});
			} else {
				punchgs.TweenLite.to(jQuery('.sortlist .timeline'),0.5,{autoAlpha:0,overwrite:"auto"});
				bst.addClass("off");
				bst.find('.onoff').html('- off');
			}
		})
	}


	/**
	 *
	 * delete layer from sortbox
	 */
	t.deleteLayerFromSortbox = function(serial){

		var sortboxLayer = t.getHtmlSortItemFromSerial(serial),
			sortboxTimeLayer = t.getHtmlSortTimeItemFromSerial(serial),
			quickItem = t.getHtmlQuickTimeItemFromSerial(serial);
		try{
			sortboxLayer.remove();
			sortboxTimeLayer.remove();
			quickItem.remove();
		} catch(e) {

		}

		if (jQuery('.quick-layers-list li').length<2) jQuery('.nolayersavailable').show();

	}

	/**
	 *
	 * unselect all items in sortbox
	 */
	t.unselectSortboxItems = function(){

		jQuery(".sortlist li,#layers-right li, .quick-layers-list li").removeClass("ui-state-hover").addClass("ui-state-default");

	}

	/**
	 * Organise groups and objects *
     * This will move one Single Layer into its Group / Row / Column * 
	*/
	
	t.organiseGroupsAndLayer = function(editorupdate,demo,ignore_timelines) {	

		var _A_ = demo ? u.arrLayersDemo : u.arrLayers,		
			sortchanged = false;		
		
		for (var i in _A_) {
		    var objLayer = _A_[i];				    
		    
		    
			if (objLayer.type!="group" && objLayer.type!="row" && objLayer.p_uid!=undefined && objLayer.p_uid!=-1) {					
				
				var sortelement = demo ? null : objLayer.references.sorttable.layer,
					j_gpel = u.getLayerByUniqueId(objLayer.p_uid),
					groupelement =  !demo && j_gpel ? j_gpel.references.sorttable.layer[0].getElementsByClassName("sgw_def")[0] : undefined,
					htmllayer = objLayer.references.htmlLayer,
					grouplayer = j_gpel ? j_gpel.references.htmlLayer : undefined;
				
				
				if (grouplayer && htmllayer && !grouplayer[0].contains(htmllayer[0])) {
					
					var g = grouplayer[0].getElementsByClassName('tp_layer_group_inner_wrapper')[0];					
					if (g!==undefined && htmllayer[0]!==undefined) {
						if (objLayer.type!=="column") {
							var noelement = true,
								so = 99999,
								ib;						
							for (var j in _A_) {
								var objComp = _A_[j];							
								if (objLayer.p_uid === objComp.p_uid && objComp.references.htmlLayer!==undefined && objComp.groupOrder!==undefined && objComp.groupOrder > objLayer.groupOrder && objComp.groupOrder<so) {
									so = objComp.groupOrder;
									noelement = false;
									ib = objComp.references.htmlLayer;					
								}
							}
							if (ib!==undefined && so<99999) {							
								if (ib[0].parentNode == g)
									g.insertBefore(htmllayer[0],ib[0]); 
								else
									g.appendChild(htmllayer[0])
							}
							else
								g.appendChild(htmllayer[0]);
						} else {				
							//console.log("Add Column with ID:"+objLayer.unique_id+"  into Group:"+objLayer.p_uid);
							g.appendChild(htmllayer[0])
						}
					}
					
				} 
			
										
				
				if (!demo && !editorupdate && groupelement!==undefined && !groupelement.contains(sortelement[0])) {					
					sortchanged = true;
					groupelement.appendChild(sortelement[0]);					
				}

				
				if (!demo && groupelement===undefined && objLayer.type==="column") u.deleteLayer(objLayer.serial);	
			} else {
				objLayer.p_uid = -1;
				var htmllayer = objLayer.references.htmlLayer,
					sortelement = demo ? null : objLayer.references.sorttable.layer;

			 
				if (objLayer.type==="row") {	
					
					// PUT IN THE RIGHT ORDER THE ROW IN TO THE ZONE	
					var _zone = "row-zone-"+u.getVal(objLayer, 'align_vert'),													
						_znoelement = true,
						_zso = 99999,
						_zib,
						_zg = document.getElementById(_zone);
					
					//if (htmllayer[0].parentNode.id===_zone) return false;
					
					for (var _j in _A_) {
						var objComp = _A_[_j];
						
						
						if (objComp.type==="row" && objComp.unique_id !== objLayer.unique_id && u.getVal(objLayer, 'align_vert') === u.getVal(objComp, 'align_vert') && objComp.references.htmlLayer!==undefined && objComp.groupOrder!==undefined && objComp.groupOrder >= objLayer.groupOrder && objComp.groupOrder<_zso) {
						
							_zso = objComp.groupOrder;
							_znoelement = false;
							_zib = objComp.references.htmlLayer;					
						}
					}
					
					if (_zib!==undefined && _zso<99999) {							
						if (_zib[0].parentNode == _zg)
							_zg.insertBefore(htmllayer[0],_zib[0]); 
						else
							_zg.appendChild(htmllayer[0])
					}
					else
						_zg.appendChild(htmllayer[0]);
					u.checkRowZoneContents();
				} else {
					if (htmllayer[0].parentNode.id!='divLayers') document.getElementById("divLayers").appendChild(htmllayer[0]);
				}
				
				
				if (!demo && sortelement[0].parentNode.id!='layers-left-ul') {					
					document.getElementById('layers-left-ul').insertBefore(sortelement[0],document.getElementById("last_drop_zone_layers"));
					sortchanged = true;
				}
			}
		}
		
		u.setMiddleRowZone();
		
		if (sortchanged) t.updateOrderFromSortbox(ignore_timelines);
		
	}


	/**
	 * update layers order from sortbox elements
	 */
	t.updateOrderFromSortbox = function(ignore_timelines){
		
		// RESET GROUP AND COLUMN REFERENCES			
		for (i in u.arrLayers) {
			var objLayer = u.arrLayers[i];
			if (objLayer.type!="column" && objLayer.type != "row" && objLayer.type != "group") {
				
				var _t = objLayer.references.sorttable.layer,					
					cc = _t[0].parentNode.parentNode.classList.contains("sortable_column"),
					gg = _t[0].parentNode.parentNode.classList.contains("sortable_group"),					
					uqid = -1; 			
								
				if ((!cc && !gg) || _t[0].parentNode.parentNode.id == "layers-left-ul") {						
					// IGNORE ITEM HERE
				} else {
					var c = jQuery(_t[0].parentNode.parentNode);							
					if (!cc) {	
						
						_t.data('pid',c.data('uniqueid'));
						var gtype = c.data('type');
						
						if (gtype==="row") {
							
							c = _t.prev();
							if (c.length==0) c = _t.next();
							
							c[0].getElementsByClassName("sortable_layers_in_columns")[0].appendChild(_t[0]);							
						} else {
							//c[0].getElementsByClassName("sortable_groups_wrap")[0].appendChild(_t[0]);							
						}
					}	
					uqid = 	c.data('uniqueid');			
				}
				_t.data('pid',uqid);	
				_t.attr('pid',uqid);							
				
				if (objLayer.p_uid != uqid) {				
					objLayer.p_uid = uqid;				
					u.add_layer_change();
				}
			}
		}	
		

		var arrSortLayers = jQuery( "#layers-left-ul" ).sortable("toArray",{attribute:"data-uniqueid"});
		
		for(var i=0;i<arrSortLayers.length;i++){
			var objLayer = u.getLayerByUniqueId(arrSortLayers[i]),
				depth = i+5,				
				objUpdate = {order:i,zIndex:depth};
						
			u.arrLayers[objLayer.serial].order = i;
			u.arrLayers[objLayer.serial].zIndex = depth;
						
			//update sortbox order input
			
			
			
			if (objLayer.references.sorttable.layer[0].getElementsByClassName("sortbox_depth")[0])
				objLayer.references.sorttable.layer[0].getElementsByClassName("sortbox_depth")[0].innerHTML = depth;

			

			document.getElementById("layers-right-ul").appendChild(objLayer.references.sorttable.timeline[0]);

			document.getElementById('quick-layers-list-id').appendChild(objLayer.references.quicklayer[0]);
			
			if (objLayer.p_uid!=-1 && objLayer.p_uid!==undefined && objLayer.type!=="row" && objLayer.type!=="group") 
				objLayer.references.quicklayer.addClass("quick_in_group")
			else
				objLayer.references.quicklayer.removeClass("quick_in_group")

		}
		
		//update z-index of the html window by order
				
		t.updateZIndexByOrder();
		
		
		if (ignore_timelines!=true) t.updateAllLayerTimeline();
		
	}


	t.resetTimeLineHeight = function() {
		// SET HEIGHT OF MASTERTIMER
		var maxh = document.getElementById('layers-right-ul').clientHeight;		
		punchgs.TweenLite.set(jQuery('#mastertimer-position'),{height:maxh+40});						
	}


	t.timeLineTableDimensionUpdate = function() {		
		clearTimeout(timeline_timer);		
		timeline_timer = setTimeout(function() {		
			t.resetTimeLineHeight();	
			var maxh = ((jQuery('#layers-right ul li').length+1)*30) - ((jQuery('#layers-right ul li.layer-deleted').length+1)*30);
			
			punchgs.TweenLite.set(jQuery('.layers-wrapper'),{height:maxh+3});
			punchgs.TweenLite.set(jQuery('#mastertimer-wrapper'),{height:maxh+3})
			jQuery('.master-rightcell .layers-wrapper, .master-leftcell .layers-wrapper, #divLayers-wrapper, .quick-layers-list').perfectScrollbar("update");
		},50);
	}

	/**
	 * update z-index of the layers by order value
	 */
	t.updateZIndexByOrder = function(){
		
		for (var i in u.arrLayers) {
			var objLayer = u.arrLayers[i],
				depth = objLayer.order!==undefined ? objLayer.order+5 : 5,
				objUpdate = {zIndex:depth};

			if (objLayer.order !==undefined)
				punchgs.TweenLite.set(objLayer.references.htmlLayer,{zIndex:(Number(objLayer.order)+100)});

			u.updateLayer(objLayer.serial,objUpdate,false,true);			
		}

	}

	/**
	 * shift order among all the layers, push down all order num beyong the given
	 * need to redraw after this function
	 */
	var shiftOrder = function(orderToFree){

		for(key in u.arrLayers){
			var obj = u.arrLayers[key];
			if(obj.order >= orderToFree){
				obj.order = Number(obj.order)+1;
				u.arrLayers[key] = obj;
			}
		}
	}


	/**
	 * get sortbox text from layer html
	 */
	t.getSortboxText = function(text){
		sorboxTextSize = 20;

		var textSortbox = text===undefined ? "NoText" : UniteAdminRev.stripTags(text);

		//if no content - escape html
		if(textSortbox.length < 2)
			textSortbox = UniteAdminRev.htmlspecialchars(text);

		//short text
		if(textSortbox.length > sorboxTextSize)
			textSortbox = textSortbox.slice(0,sorboxTextSize)+"...";

		return(textSortbox);
	}

	/**
	 *
	 * redraw the sortbox
	 */
	t.redrawSortbox = function(mode){


		if(mode == undefined)
			mode = sortMode;

		emptySortbox();

		var layers_array = getLayersSorted("depth");


		if(layers_array.length == 0) {
			return(false);
		}

		
		for(var i=0; i<layers_array.length;i++){
			var objLayer = layers_array[i];
			t.addToSortbox(objLayer.serial,objLayer);
		}

				

		if(u.selectedLayerSerial != -1)
			t.setSortboxItemSelected(u.selectedLayerSerial);





	}

	
	var reinitSortBox = function(sortable) {	

		jQuery('#last_drop_zone_layers').appendTo('#layers-left-ul');
		//set the sortlist sortable
		if (sortable) {
			jQuery('.layer_sortbox ul').sortable({
				//axis:'y',	
				refreshPositions:true,
				placeholder:"silent-placeholder",
				cancel:"#slide_in_sort, input",
				handle:".mastertimer-timeline-zindex-row",
				items:".sortable_elements",				
				//toleranceElement: '> div',						
				connectWith:"#layers-left-ul, .sortable_groups_wrap, .sortable_layers_in_columns",
				update: function(event,ui){					
					var src = jQuery(ui.item);
					// CANCEL IF ELEMENT IS A ROW
					if (src.hasClass("sortable_row")) jQuery(this).sortable("cancel");
					
					// CANCEL CHANGE IF GROUP MOVED INTO OTHER GROUP
					
					var tg = src.parent(),
						mg = tg.closest('.sortable_group'),
						telement = jQuery('#layers-left-ul');
						
					if ((tg.hasClass("sortable_groups_wrap") || tg.hasClass("sortable_layers_in_columns")) && !src.hasClass("sortable_layers")) {
						
						if (src.index()<tg.children().length/2) 						
							src.insertBefore(mg);						
						else 							
							src.insertAfter(mg);																		
					} 		



					// PUT ITEM BEFORE OR AFTER ROWS IN CASE THE ROW 					
					if (tg.attr("id")==="layers-left-ul" || tg.parent().attr('id')==="layers-left-ul" || src.hasClass("sortable_group")) {
						var rows = telement.find('.sortable_row'),
							fr = rows.first().index(),
							lr = rows.last().index(),
							si = src.index();						
						if (si>fr && si<lr) 
							src.insertAfter(rows.last());					
					}										
					onSortboxSorted();	
					t.organiseGroupsAndLayer();								
				}
			});
		}

	

	jQuery('.droppable_sortable_group,.droppable_sortable_row, .droppable_sortable_column').droppable({
			tolerance:"intersect",
			greedy:true,	
			over:function(ui) {
				jQuery(ui.target).addClass("readytodrop")
			},
			out:function(ui) {
				jQuery(ui.target).removeClass("readytodrop")
			},
			drop:function(ui,a) {				
				var ul = jQuery('#layers-left-ul');				
				jQuery(ui.target).removeClass("readytodrop");
				var cl = jQuery(ui.target).attr('class'),
					src = jQuery(ui.srcElement).closest('.sortable_elements.sortable_layers'),
					tg;
								
				if (!src.length) return false;

				// ADD TO GROUP					
				if (cl.indexOf('droppable_sortable_group')>=0)					
					tg = jQuery(ui.target).closest('li.sortable_group').find('.sortable_groups_wrap');
				
				// ADD TO FIRST COLUMN IN ROW					
				if (cl.indexOf('droppable_sortable_row')>=0)
					tg = jQuery(ui.target).closest('li.sortable_group.sortable_row').find('.sortable_layers_in_columns').first();
				
				// ADD TO COLUMN
				if (cl.indexOf('droppable_sortable_column')>=0) 					
					tg = jQuery(ui.target).closest('li.sortable_column').find('.sortable_layers_in_columns').first();

				setTimeout(function(){
					src.appendTo(tg);
					onSortboxSorted();
					t.organiseGroupsAndLayer();	
				},50);
			}
		})
	}

	//======================================================
	//			Sortbox Functions
	//======================================================
	var initSortbox = function(){

		t.redrawSortbox();
		reinitSortBox(true);
		

		//set click event on full row
		jQuery("body").delegate(".layer_sort_inner_wrapper","mousedown",function(e){
			var li = jQuery(this).closest('.sortable_elements');

			if (li.hasClass("ui-state-hover")) return true;
			if (!li.hasClass("mastertimer-slide")) {				
				var serial = u.getSerialFromSortID(li.attr('id'));
				u.setLayerSelected(serial);
				return false;
			}
			
		});

		//set click event on collapser
		jQuery("body").on("click",".sort_group_collapser",function(e){
			
			var t = jQuery(this),
				c = t.closest('.sortable_column'),
				g = c.length ? c  : t.closest('.sortable_group'),
				cenv = c.length? g.find('.sortable_layers_in_columns') : g.find('.sortable_groups_wrap');
			
			t.toggleClass("collapsed");			
			if (t.hasClass("collapsed"))									
				cenv.css({maxHeight:"0px", overflow:"hidden"});
			else
				cenv.css({maxHeight:"none", overflow:"visible"});
					
			cenv.find('.sortable_elements').each(function(i,a) {				
				var a = jQuery(a),
					uid = a.data('uniqueid');
				
				if (t.hasClass("collapsed"))
					jQuery('#layers-right-ul li[data-uniqueid="'+uid+'"]').addClass("unvisibletimeline");
				else
					jQuery('#layers-right-ul li[data-uniqueid="'+uid+'"]').removeClass("unvisibletimeline");
			});							
		});

		//set click event on timelines
		jQuery("#layers-right").delegate("li","mousedown",function(e){
			var li = jQuery(this);
			t.recordFrameStatusForce = true;
			if (li.hasClass("ui-state-hover")) return true;
			if (!li.hasClass("mastertimer-slide")) {				
				var serial = u.getSerialFromSortID(this.id);
				u.setLayerSelected(serial);
				return false;
			}			
		});


		jQuery('.quick-layer-all-lock').click(function() {
			var b = jQuery(this),
				i = b.find('i');
			if (i.hasClass("eg-icon-lock")) {
				jQuery('.quick-layer-lock i').each(function() {
					jQuery(this).removeClass("eg-icon-lock-open").addClass("eg-icon-lock");
				});
				i.addClass("eg-icon-lock-open").removeClass("eg-icon-lock");
				u.lockAllLayers();
			} else {
				jQuery('.quick-layer-lock i').each(function() {
					jQuery(this).removeClass("eg-icon-lock").addClass("eg-icon-lock-open");
				});
				i.removeClass("eg-icon-lock-open").addClass("eg-icon-lock");
				
				u.unlockAllLayers();
			}
		})

		jQuery('.quick-layer-all-view').click(function() {
			var b = jQuery(this),
				i = b.find('i');
			if (i.hasClass("eg-icon-eye")) {
				jQuery('.quick-layer-view i').each(function() {
					jQuery(this).addClass("eg-icon-eye").removeClass("eg-icon-eye-off");
				});
				i.removeClass("eg-icon-eye").addClass("eg-icon-eye-off");				
				u.showAllLayers();
			} else {
				jQuery('.quick-layer-view i').each(function() {
					jQuery(this).removeClass("eg-icon-eye").addClass("eg-icon-eye-off");
				});
				i.addClass("eg-icon-eye").removeClass("eg-icon-eye-off");
				u.hideAllLayers();
			}
		})



		//on show / hide layer icon click - show / hide layer
		jQuery(".sortlist").delegate(".till_slideend","mousedown",function(event){
			var button = jQuery(this),
				li = button.closest('li'),
				serial = button.data('serial'),
				objLayer = u.getLayer(serial),				
				maxtime = (t.mainMaxTimeLeft)*10;

			if (li.hasClass("tillendon")) {
				li.removeClass("tillendon")
				objLayer.frames["frame_999"].time = objLayer.frames["frame_999"].time-200;
				t.updateLayerTimeline(objLayer);				
			} else {
				li.addClass("tillendon");
				objLayer.frames["frame_999"].time =  maxtime;				
				t.updateLayerTimeline(objLayer);
			}

		});

	}




	/***********************************
		order layers by time
		type can be [time] or [order]
	************************************/
	var getLayersSorted = function(type){

		if(type == undefined)
			type = "time";

		//convert to array
		var layers_array = [];
		for(key in u.arrLayers){
			var obj = u.arrLayers[key];
			obj.serial = key;
			layers_array.push(obj);
		}

		if(layers_array.length == 0)
			return(layers_array);

		//sort layers array
		layers_array.sort(function(layer1,layer2){

			switch(type){
				case "time":

					if(Number(layer1.time) == Number(layer2.time)){
						if(layer1.order == layer2.order)
							return(0);

						if(layer1.order > layer2.order)
							return(1);

						return(-1);
					}

					if(Number(layer1.time) > Number(layer2.time))
						return(1);
				break;
				case "depth":
					if(layer1.order == layer2.order)
						return(0);

					if(layer1.order > layer2.order)
						return(1);
				break;
				default:
					trace("wrong sort type: "+type);
				break;
			}

			return(-1);
		});

		return(layers_array);
	}


	/**
	 * hide in html and sortbox
	 */
	t.hideLayer = function(objLayer,skipGlobalButton){		
		if (objLayer.references===undefined || objLayer.references.htmlLayer===undefined) return;
		var htmlLayer = objLayer.references.htmlLayer;
		
		htmlLayer.css({visibility:"hidden"});
		htmlLayer.addClass("currently_not_visible");
		if (!objLayer.isDemo)
			setSortboxItemHidden(objLayer.serial);
		
		if(skipGlobalButton != true){
			if(t.isAllLayersHidden())
				jQuery("#button_sort_visibility").addClass("e-disabled");
		}
	}


	/**
	 * show layer in html and sortbox
	 */
	t.showLayer = function(objLayer,skipGlobalButton){		
		if (objLayer.references===undefined || objLayer.references.htmlLayer===undefined) return;
		var htmlLayer = objLayer.references.htmlLayer;
		htmlLayer.css({visibility:"visible"});
		htmlLayer.removeClass("currently_not_visible");
		if (!objLayer.isDemo)
			setSortboxItemVisible(objLayer.serial);

		if(skipGlobalButton != true)
			jQuery("#button_sort_visibility").removeClass("e-disabled");
	}


	

	


	/**
	 * get true / false if the layer is hidden
	 */
	t.isLayerVisible = function(htmlLayer){
		var isVisible = true;
		
		if (htmlLayer!=undefined && htmlLayer[0].classList.contains("currently_not_visible"))
			isVisible = false;		
			
		return(isVisible);
	}

	/**
	 * get true / false if all layers hidden
	 */
	t.isAllLayersHidden = function(){
		var i=0;
		for(serial in u.arrLayers){			
			if(u.arrLayers[i]!==undefined && t.isLayerVisible(u.arrLayers[i].references.htmlLayer) == true) return(false);			
			i++;
		}
		return(true);
	}


	/**
	 * get true / false if the layer can be moved
	 */
	t.isLayerLocked = function(htmllayer){		
		return htmllayer.hasClass("layer_on_lock");
	}


	/**
	 * hide in html and sortbox
	 */
	t.lockLayer = function(serial){
		setSortboxItemLocked(serial);

		var layer = u.getHtmlLayerFromSerial(serial);


		layer.addClass("layer_on_lock");
	
	}


	/**
	 * show layer in html and sortbox
	 */
	t.unlockLayer = function(serial){
		setSortboxItemUnlocked(serial);
		var layer = u.getHtmlLayerFromSerial(serial);		
		layer.removeClass("layer_on_lock");
	}


	/**
	 * set sortbox items selected
	 */
	t.setSortboxItemSelected = function(serial){

		var sortItem = t.getHtmlSortItemFromSerial(serial),
			sortTimeItem = t.getHtmlSortTimeItemFromSerial(serial),
			quickItem = t.getHtmlQuickTimeItemFromSerial(serial);
		
		t.unselectSortboxItems();
		if (sortItem)
			sortItem.removeClass("ui-state-default").addClass("ui-state-hover");
		if (sortTimeItem)
			sortTimeItem.removeClass("ui-state-default").addClass("ui-state-hover");
		if (quickItem)
			quickItem.removeClass("ui-state-default").addClass("ui-state-hover");
	}


	/**
	 * set sortbox item hidden mode
	 */
	var setSortboxItemHidden = function(serial){
		var sortItem = t.getHtmlSortItemFromSerial(serial),
			sortTimeItem = t.getHtmlSortTimeItemFromSerial(serial),
			quickItem = t.getHtmlQuickTimeItemFromSerial(serial);

		if (sortItem)
			sortItem.addClass("sortitem-hidden");
		if (sortTimeItem)
			sortTimeItem.addClass("sortitem-hidden");
		if (quickItem) {
			quickItem.addClass("sortitem-hidden");
			quickItem.find('.eg-icon-eye').addClass("eg-icon-eye-off").removeClass('eg-icon-eye');
			quickItem.find('.quick-layer-view').addClass("in-off");
		}
	}

	/**
	 * set sortbox item visible mode
	 */
	var setSortboxItemVisible = function(serial){
		var sortItem = t.getHtmlSortItemFromSerial(serial),
			sortTimeItem = t.getHtmlSortTimeItemFromSerial(serial),
			quickItem = t.getHtmlQuickTimeItemFromSerial(serial);
		if (sortItem)
			sortItem.removeClass("sortitem-hidden");
		if (sortTimeItem)
			sortTimeItem.removeClass("sortitem-hidden");
		if (quickItem) 
			quickItem.removeClass("sortitem-hidden");
	}

	/**
	 * set sortbox item locked mode
	 */
	var setSortboxItemLocked = function(serial){
		var sortItem = t.getHtmlSortItemFromSerial(serial),
			sortTimeItem = t.getHtmlSortTimeItemFromSerial(serial),
			quickItem = t.getHtmlQuickTimeItemFromSerial(serial);
		
		if (sortItem)
			sortItem.addClass("sortitem-locked");
		if (sortTimeItem)
			sortTimeItem.addClass("sortitem-locked");
		if (quickItem)
			quickItem.addClass("sortitem-locked");
	}

	/**
	 * set sortbox item unlocked mode
	 */
	var setSortboxItemUnlocked = function(serial){
		var sortItem = t.getHtmlSortItemFromSerial(serial),
			sortTimeItem = t.getHtmlSortTimeItemFromSerial(serial),
			quickItem = t.getHtmlQuickTimeItemFromSerial(serial);
		
		if (sortItem)
			sortItem.removeClass("sortitem-locked");
		if (sortTimeItem)
			sortTimeItem.removeClass("sortitem-locked");
		if (quickItem)
			quickItem.removeClass("sortitem-locked");
	}

	/**
	 * get sort field element from serial
	 */
	t.getHtmlSortItemFromSerial = function(serial){
		var htmlSortItem = jQuery("#layer_sort_"+serial);
		if(htmlSortItem.length == 0){
			UniteAdminRev.showErrorMessage("Html sort field with serial: "+serial+" not found!");
			return(false);
		}
		return(htmlSortItem);
	}

	t.getHtmlSortTimeItemFromSerial = function(serial){
		var htmlSortItem = jQuery("#layer_sort_time_"+serial);
		if(htmlSortItem.length == 0){
			UniteAdminRev.showErrorMessage("Html sort field with serial: "+serial+" not found!");
			return(false);
		}
		return(htmlSortItem);
	}

	t.getHtmlQuickTimeItemFromSerial = function(serial){
		var htmlSortItem = jQuery("#layer_quicksort_"+serial);
		if(htmlSortItem.length == 0){
			UniteAdminRev.showErrorMessage("Html sort field with serial: "+serial+" not found!");
			return(false);
		}
		return(htmlSortItem);
	}



	/**
	 * remove all from sortbox
	 */
	var emptySortbox = function(){
		jQuery(".sortlist ul").find('.sortable_elements').remove();
		jQuery('#layers-right ul').find('.sortable_elements').remove();
	}


	/**
	 * on sortbox sorted event.
	 */
	var onSortboxSorted = function(){
		
		t.updateOrderFromSortbox();
	}
	//======================================================
	//			Sortbox Functions End
	//======================================================
	
	
	
	///////////////////////
	// PREPARE THE SLIDE //
	//////////////////////
	var prepareOneSlide = function(slotholder,opt,visible,vorh,w,h) {

				var sh=slotholder,
					img = sh.find('.defaultimg'),
					scalestart = sh.data('zoomstart'),
					rotatestart = sh.data('rotationstart'),
					src = sh.find('.defaultimg').css("backgroundImage"),
					bgcolor=sh.find('.defaultimg').css('backgroundColor'),
					off=0,
					bgfit = sh.find('.defaultimg').css("backgroundSize"),
					bgrepeat = sh.find('.defaultimg').css("backgroundRepeat"),
					bgposition = sh.find('.defaultimg').css("backgroundPosition");
				

				src=src.replace('"','');
				src=src.replace('"','');				


				if (bgfit==undefined) bgfit="cover";
				if (bgrepeat==undefined) bgrepeat="no-repeat";
				if (bgposition==undefined) bgposition="center center";
				

				var w= w !=undefined ? w : jQuery('#divbgholder').width(),
					h= h !=undefined ? h : jQuery('#divbgholder').height();
				opt.slotw=Math.ceil(w/opt.slots),
				opt.sloth=Math.ceil(h/opt.slots);
				
				// SET THE MINIMAL SIZE OF A BOX
				var basicsize = 0,
					x = 0,
					y = 0;

				if (opt.sloth>opt.slotw)
					basicsize=opt.sloth
				else
					basicsize=opt.slotw;

				opt.slotw = basicsize;
				opt.sloth = basicsize;
				

				var x=0,
					y=0,
					fulloff = 0,
					fullyoff = 0;
							
									
	
				switch (vorh) {
					// BOX ANIMATION PREPARING
					case "box":
						
						
						for (var j=0;j<opt.slots;j++) {

							y=0;
							for (var i=0;i<opt.slots;i++) 	{


								sh.append('<div class="slot" '+
										  'style="position:absolute;'+
													'top:'+(fullyoff+y)+'px;'+
													'left:'+(fulloff+x)+'px;'+
													'width:'+basicsize+'px;'+
													'height:'+basicsize+'px;'+
													'overflow:hidden;">'+

										  '<div class="slotslide" data-x="'+x+'" data-y="'+y+'" '+
										  			'style="position:absolute;'+
													'top:'+(0)+'px;'+
													'left:'+(0)+'px;'+
													'width:'+basicsize+'px;'+
													'height:'+basicsize+'px;'+
													'overflow:hidden;">'+

										  '<div class="slotslidebg" style="position:absolute;'+
													'top:'+(0-y)+'px;'+
													'left:'+(0-x)+'px;'+
													'width:'+w+'px;'+
													'height:'+h+'px;'+
													'background-color:'+bgcolor+';'+
													'background-image:'+src+';'+
													'background-repeat:'+bgrepeat+';'+
													'background-size:'+bgfit+';background-position:'+bgposition+';">'+
										  '</div></div></div>');
								y=y+basicsize;								
							}
							x=x+basicsize;
						}
					break;

					// SLOT ANIMATION PREPARING
					case "vertical":
					case "horizontal":		
					
				
						 if (vorh == "horizontal") {
							if (!visible) var off=0-opt.slotw;
																											
							for (var i=0;i<opt.slots;i++) {
									
									sh.append('<div class="slot" style="position:absolute;'+
																	'top:'+(0+fullyoff)+'px;'+
																	'left:'+(fulloff+(i*opt.slotw))+'px;'+
																	'overflow:hidden;width:'+(opt.slotw+0.6)+'px;'+
																	'height:'+h+'px">'+
									'<div class="slotslide" style="position:absolute;'+
																	'top:0px;left:'+off+'px;'+
																	'width:'+(opt.slotw+0.6)+'px;'+
																	'height:'+h+'px;overflow:hidden;">'+
									'<div class="slotslidebg" style="background-color:'+bgcolor+';'+
																	'position:absolute;top:0px;'+
																	'left:'+(0-(i*opt.slotw))+'px;'+
																	'width:'+w+'px;height:'+h+'px;'+
																	'background-image:'+src+';'+
																	'background-repeat:'+bgrepeat+';'+
																	'background-size:'+bgfit+';background-position:'+bgposition+';">'+
									'</div></div></div>');									
							}

						} else {
							if (!visible) var off=0-opt.sloth;
						
							for (var i=0;i<opt.slots+2;i++) {
								sh.append('<div class="slot" style="position:absolute;'+
														 'top:'+(fullyoff+(i*opt.sloth))+'px;'+
														 'left:'+(fulloff)+'px;'+
														 'overflow:hidden;'+
														 'width:'+w+'px;'+
														 'height:'+(opt.sloth)+'px">'+

											 '<div class="slotslide" style="position:absolute;'+
																 'top:'+(off)+'px;'+
																 'left:0px;width:'+w+'px;'+
																 'height:'+opt.sloth+'px;'+
																 'overflow:hidden;">'+
											'<div class="slotslidebg" style="background-color:'+bgcolor+';'+
																	'position:absolute;'+
																	'top:'+(0-(i*opt.sloth))+'px;'+
																	'left:0px;'+
																	'width:'+w+'px;height:'+h+'px;'+
																	'background-image:'+src+';'+
																	'background-repeat:'+bgrepeat+';'+
																	'background-size:'+bgfit+';background-position:'+bgposition+';">'+

											'</div></div></div>');
							}
						}
					break;
				}
		}
		
		
		
	//////////////////////////////
	//	SWAP SLIDE PROGRESS		//
	//////////////////////////////
	var slideAnimation = function(nextsh,actsh,comingtransition,givebackmtl,smallpreview) {

		
			if (nextsh!=undefined) {
				var nextli = nextsh,
					actli = actsh,
					container = new Object(),					
					opt = new Object();
					opt.width = nextsh.width();
					opt.height = nextsh.height();
			} else {
				var nextsh = nextli = jQuery('#divbgholder').find('.slotholder'),
					actsh = actli = jQuery('#divbgholder').find('.oldslotholder'), 
					container = new Object(),
					comingtransition = jQuery('#fake-select-label').data('valu'),
					opt = new Object();
					opt.width = jQuery('#divbgholder').width();
					opt.height = jQuery('#divbgholder').height();

					
			}

			if (comingtransition=="slidingoverlayvertical") 
						comingtransition = "slidingoverlayup"	

			if (comingtransition=="slidingoverlayhorizontal") 
						comingtransition = "slidingoverlayleft"	
		
			if (comingtransition=="slideoverhorizontal") 
						comingtransition = "slideoverleft"
			
			if (comingtransition=="slideoververtical") 
						comingtransition = "slideoverup"

			if (comingtransition=="slideremovehorizontal") 
						comingtransition = "slideremoveleft"
			
			if (comingtransition=="slideremovevertical") 
						comingtransition = "slideremoveup"

			if (comingtransition=="slidehorizontal") 
						comingtransition = "slideleft"

			if (comingtransition=="slidevertical") 
						comingtransition = "slideup"

			if (comingtransition=="parallaxhorizontal") 
						comingtransition = "parallaxtoleft"


			if (comingtransition=="parallaxvertical") 
						comingtransition = "parallaxtotop"

			var p1i = punchgs.Power1.easeIn, 
				p1o = punchgs.Power1.easeOut,
				p1io = punchgs.Power1.easeInOut,
				p2i = punchgs.Power2.easeIn,
				p2o = punchgs.Power2.easeOut,
				p2io = punchgs.Power2.easeInOut,
				p3i = punchgs.Power3.easeIn, 
				p3o = punchgs.Power3.easeOut, 
				p3io = punchgs.Power3.easeInOut,
				flatTransitions = [0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45],
				premiumTransitions = [16,17,18,19,20,21,22,23,24,25,27],
				nexttrans =0,
				specials = 1,
				STAindex = 0,
				indexcounter =0,
				STA = new Array,
				transitionsArray = [['boxslide' , 0, 1, 10, 0,'box',false,null,0,p1o,p1o,500,6],
							 ['boxfade', 1, 0, 10, 0,'box',false,null,1,p1io,p1io,700,5],
							 ['slotslide-horizontal', 2, 0, 0, 200,'horizontal',true,false,2,p2io,p2io,700,3],
							 ['slotslide-vertical', 3, 0,0,200,'vertical',true,false,3,p2io,p2io,700,3],
							 ['curtain-1', 4, 3,0,0,'horizontal',true,true,4,p1o,p1o,300,5],
							 ['curtain-2', 5, 3,0,0,'horizontal',true,true,5,p1o,p1o,300,5],
							 ['curtain-3', 6, 3,25,0,'horizontal',true,true,6,p1o,p1o,300,5],
							 ['slotzoom-horizontal', 7, 0,0,400,'horizontal',true,true,7,p1o,p1o,300,7],
							 ['slotzoom-vertical', 8, 0,0,0,'vertical',true,true,8,p2o,p2o,500,8],
							 ['slotfade-horizontal', 9, 0,0,500,'horizontal',true,null,9,p2o,p2o,500,25],
							 ['slotfade-vertical', 10, 0,0 ,500,'vertical',true,null,10,p2o,p2o,500,25],
							 ['fade', 11, 0, 1 ,300,'horizontal',true,null,11,p2io,p2io,1000,1],
							 ['crossfade', 11, 1, 1 ,300,'horizontal',true,null,11,p2io,p2io,1000,1],
							 ['fadethroughdark', 11, 2, 1 ,300,'horizontal',true,null,11,p2io,p2io,1000,1],
							 ['fadethroughlight', 11, 3, 1 ,300,'horizontal',true,null,11,p2io,p2io,1000,1],
							 ['fadethroughtransparent', 11, 4, 1 ,300,'horizontal',true,null,11,p2io,p2io,1000,1],
							 ['slideleft', 12, 0,1,0,'horizontal',true,true,12,p3io,p3io,1000,1],
							 ['slideup', 13, 0,1,0,'horizontal',true,true,13,p3io,p3io,1000,1],
							 ['slidedown', 14, 0,1,0,'horizontal',true,true,14,p3io,p3io,1000,1],
							 ['slideright', 15, 0,1,0,'horizontal',true,true,15,p3io,p3io,1000,1],
							 ['slideoverleft', 12, 7,1,0,'horizontal',true,true,12,p3io,p3io,1000,1],
							 ['slideoverup', 13, 7,1,0,'horizontal',true,true,13,p3io,p3io,1000,1],
							 ['slideoverdown', 14, 7,1,0,'horizontal',true,true,14,p3io,p3io,1000,1],
							 ['slideoverright', 15, 7,1,0,'horizontal',true,true,15,p3io,p3io,1000,1],
							 ['slideremoveleft', 12, 8,1,0,'horizontal',true,true,12,p3io,p3io,1000,1],
							 ['slideremoveup', 13, 8,1,0,'horizontal',true,true,13,p3io,p3io,1000,1],
							 ['slideremovedown', 14, 8,1,0,'horizontal',true,true,14,p3io,p3io,1000,1],
							 ['slideremoveright', 15, 8,1,0,'horizontal',true,true,15,p3io,p3io,1000,1],
							 ['papercut', 16, 0,0,600,'',null,null,16,p3io,p3io,1000,2],
							 ['3dcurtain-horizontal', 17, 0,20,100,'vertical',false,true,17,p1io,p1io,500,7],
							 ['3dcurtain-vertical', 18, 0,10,100,'horizontal',false,true,18,p1io,p1io,500,5],
							 ['cubic', 19, 0,20,600,'horizontal',false,true,19,p3io,p3io,500,1],
							 ['cube',19,0,20,600,'horizontal',false,true,20,p3io,p3io,500,1],
							 ['flyin', 20, 0,4,600,'vertical',false,true,21,p3o,p3io,500,1],
							 ['turnoff', 21, 0,1,500,'horizontal',false,true,22,p3io,p3io,500,1],
							 ['incube', 22, 0,20,200,'horizontal',false,true,23,p2io,p2io,500,1],
							 ['cubic-horizontal', 23, 0,20,500,'vertical',false,true,24,p2o,p2o,500,1],
							 ['cube-horizontal', 23, 0,20,500,'vertical',false,true,25,p2o,p2o,500,1],
							 ['incube-horizontal', 24, 0,20,500,'vertical',false,true,26,p2io,p2io,500,1],
							 ['turnoff-vertical', 25, 0,1,200,'horizontal',false,true,27,p2io,p2io,500,1],
							 ['fadefromright', 12, 1,1,0,'horizontal',true,true,28,p2io,p2io,1000,1],
							 ['fadefromleft', 15, 1,1,0,'horizontal',true,true,29,p2io,p2io,1000,1],
							 ['fadefromtop', 14, 1,1,0,'horizontal',true,true,30,p2io,p2io,1000,1],
							 ['fadefrombottom', 13, 1,1,0,'horizontal',true,true,31,p2io,p2io,1000,1],
							 ['fadetoleftfadefromright', 12, 2,1,0,'horizontal',true,true,32,p2io,p2io,1000,1],
							 ['fadetorightfadefromleft', 15, 2,1,0,'horizontal',true,true,33,p2io,p2io,1000,1],
							 ['fadetobottomfadefromtop', 14, 2,1,0,'horizontal',true,true,34,p2io,p2io,1000,1],
							 ['fadetotopfadefrombottom', 13, 2,1,0,'horizontal',true,true,35,p2io,p2io,1000,1],
							 ['parallaxtoright', 12, 3,1,0,'horizontal',true,true,36,p2io,p2i,1500,1],
							 ['parallaxtoleft', 15, 3,1,0,'horizontal',true,true,37,p2io,p2i,1500,1],
							 ['parallaxtotop', 14, 3,1,0,'horizontal',true,true,38,p2io,p1i,1500,1],
							 ['parallaxtobottom', 13, 3,1,0,'horizontal',true,true,39,p2io,p1i,1500,1],
							 ['scaledownfromright', 12, 4,1,0,'horizontal',true,true,40,p2io,p2i,1000,1],
							 ['scaledownfromleft', 15, 4,1,0,'horizontal',true,true,41,p2io,p2i,1000,1],
							 ['scaledownfromtop', 14, 4,1,0,'horizontal',true,true,42,p2io,p2i,1000,1],
							 ['scaledownfrombottom', 13, 4,1,0,'horizontal',true,true,43,p2io,p2i,1000,1],
							 ['zoomout', 13, 5,1,0,'horizontal',true,true,44,p2io,p2i,1000,1],
							 ['zoomin', 13, 6,1,0,'horizontal',true,true,45,p2io,p2i,1000,1],
							 ['slidingoverlayup', 27, 0,1,0,'horizontal',true,true,47,p1io,p1o,2000,1],
							 ['slidingoverlaydown', 28, 0,1,0,'horizontal',true,true,48,p1io,p1o,2000,1],
							 ['slidingoverlayright', 30, 0,1,0,'horizontal',true,true,49,p1io,p1o,2000,1],
							 ['slidingoverlayleft', 29, 0,1,0,'horizontal',true,true,50,p1io,p1o,2000,1],
							 ['notransition',26,0,1,0,'horizontal',true,null,46,p2io,p2i,1000,1],
							 ['grayscale', 11, 5, 1 ,300,'horizontal',true,null,11,p2io,p2io,1000,1],
							 ['grayscalecross', 11, 6, 1 ,300,'horizontal',true,null,11,p2io,p2io,1000,1],
							 ['brightness', 11, 7, 1 ,300,'horizontal',true,null,11,p2io,p2io,1000,1],
							 ['brightnesscross', 11, 8, 1 ,300,'horizontal',true,null,11,p2io,p2io,1000,1],
							 ['blurlight', 11, 9, 1 ,300,'horizontal',true,null,11,p2io,p2io,1000,1],
							 ['blurlightcross', 11, 10, 1 ,300,'horizontal',true,null,11,p2io,p2io,1000,1],
							 ['blurstrong', 11, 9, 1 ,300,'horizontal',true,null,11,p2io,p2io,1000,1],
							 ['blurstrongcross', 11, 10, 1 ,300,'horizontal',true,null,11,p2io,p2io,1000,1]
						   ];



			

			// RANDOM TRANSITIONS
			if (comingtransition == "random-selected" || comingtransition == "random" || comingtransition == "random-static" || comingtransition == "random-premium") 
				comingtransition = 11;				


			function findTransition() {
				// FIND THE RIGHT TRANSITION PARAMETERS HERE
				if (transitionsArray)
				jQuery.each(transitionsArray,function(inde,trans) {
					if (trans[0] == comingtransition || trans[8] == comingtransition) {
						nexttrans = trans[1];
						specials = trans[2];
						STAindex = indexcounter;
					}
					indexcounter = indexcounter+1;
				})
			}

			findTransition();

			var direction = -1,
				masterspeed = jQuery('#transition_duration').val();
				



			if (nexttrans>30) nexttrans = 30;
			if (nexttrans<0) nexttrans = 0;

			// PREPARED DEFAULT SETTINGS PER TRANSITION
			STA = transitionsArray[STAindex];


			///////////////////////////////
			//	MAIN TIMELINE DEFINITION //
			///////////////////////////////

			var mtl = new punchgs.TimelineLite();
						
			//SET DEFAULT IMG UNVISIBLE AT START
			mtl.add(punchgs.TweenLite.set(nextsh.find('.defaultimg'),{autoAlpha:0}));
			mtl.pause();

			mtl.add(punchgs.TweenLite.set(actsh,{autoAlpha:1,force3D:"auto",zIndex:0}),0);
			mtl.add(punchgs.TweenLite.set(nextsh,{autoAlpha:1,force3D:"auto",zIndex:1}),0);
			


			// ADJUST MASTERSPEED
			/*masterspeed = masterspeed + STA[4];

			if ((nexttrans==4 || nexttrans==5 || nexttrans==6) && opt.slots<3 ) opt.slots=3;

			// ADJUST SLOTS
			if (STA[3] != 0) opt.slots = Math.min(opt.slots,STA[3]);
			if (nexttrans==9) opt.slots = opt.width/20;
			if (nexttrans==10) opt.slots = opt.height/20;*/

			opt.slots = jQuery('#slot_amount').val();
			opt.rotate = jQuery('#transition_rotation').val();

			

			masterspeed = masterspeed==="default" ? STA[11] : masterspeed==="random" ? Math.round(Math.random()*1000+300) : masterspeed!=undefined ? parseInt(masterspeed,0) : STA[11];
			masterspeed = masterspeed > opt.delay ? opt.delay : masterspeed;

			// ADJUST MASTERSPEED
			masterspeed = masterspeed + STA[4];
			
			
			
			///////////////////////
			//	ADJUST SLOTS     //	
			///////////////////////
			
			opt.slots = opt.slots==undefined || opt.slots=="default" ? STA[12] : opt.slots=="random" ? Math.round(Math.random()*12+4) : STA[12];
			opt.slots = opt.slots < 1 ? comingtransition=="boxslide" ? Math.round(Math.random()*6+3) : comingtransition=="flyin" ? Math.round(Math.random()*4+1) : opt.slots : opt.slots;
			opt.slots = (nexttrans==4 || nexttrans==5 || nexttrans==6) && opt.slots<3 ? 3 : opt.slots;
			opt.slots = STA[3] != 0 ? Math.min(opt.slots,STA[3]) : opt.slots;
			opt.slots = nexttrans==9 ? opt.width/20 : nexttrans==10 ? opt.height/20 : opt.slots;
			

			/////////////////////////////////////////////
			//	SET THE ACTUAL AMOUNT OF SLIDES !!     //
			//  SET A RANDOM AMOUNT OF SLOTS          //
			///////////////////////////////////////////
			
			opt.rotate = opt.rotate==undefined || opt.rotate=="default" ? 0 : opt.rotate==999 || opt.rotate=="random" ? Math.round(Math.random()*360) : opt.rotate;
			opt.rotate = (!jQuery.support.transition  || opt.ie || opt.ie9) ? 0 : opt.rotate;
									
			
			opt.slotw=Math.ceil(opt.width/jQuery('#slot_amount').val()),
			opt.sloth=Math.ceil(opt.height/jQuery('#slot_amount').val());

			if (STA[7] !=null) prepareOneSlide(actsh,opt,STA[7],STA[5],opt.width,opt.height);
			if (STA[6] !=null) prepareOneSlide(nextsh,opt,STA[6],STA[5],opt.width,opt.height);			

			var ei= jQuery('select[name=transition_ease_in]').val(),
				eo =jQuery('select[name=transition_ease_out]').val(),
				slidedirection = 1;



			ei = ei==="default" ? STA[9] || punchgs.Power2.easeInOut : ei || STA[9] || punchgs.Power2.easeInOut;
			eo = eo==="default" ? STA[10] || punchgs.Power2.easeInOut : eo || STA[10] || punchgs.Power2.easeInOut;



	/////////////////////////////////////
	// THE SLOTSLIDE - TRANSITION I.  //
	////////////////////////////////////
	if (nexttrans==0) {								// BOXSLIDE


				// ALL NEW SLOTS SHOULD BE SLIDED FROM THE LEFT TO THE RIGHT
				var maxz = Math.ceil(opt.height/opt.sloth);
				var curz = 0;
				nextsh.find('.slotslide').each(function(j) {
					var ss=jQuery(this);
					curz=curz+1;
					if (curz==maxz) curz=0;

					mtl.add(punchgs.TweenLite.from(ss,(masterspeed)/600,
										{opacity:0,top:(0-opt.sloth),left:(0-opt.slotw),rotation:opt.rotate,force3D:"auto",ease:ei}),((j*15) + ((curz)*30))/1500);
				});
	}
	/////////////////////////////////////
	// THE SLOTSLIDE - TRANSITION I.  //
	////////////////////////////////////
	if (nexttrans==1) {

				// ALL NEW SLOTS SHOULD BE SLIDED FROM THE LEFT TO THE RIGHT
				var maxtime,
					maxj = 0;

				nextsh.find('.slotslide').each(function(j) {
					var ss=jQuery(this),
						rand=Math.random()*masterspeed+300,
						rand2=Math.random()*500+200;
					if (rand+rand2>maxtime) {
						maxtime = rand2+rand2;
						maxj = j;
					}
					mtl.add(punchgs.TweenLite.from(ss,rand/1000,
								{autoAlpha:0, force3D:"auto",rotation:opt.rotate,ease:ei}),rand2/1000);
				});
	}


	/////////////////////////////////////
	// THE SLOTSLIDE - TRANSITION I.  //
	////////////////////////////////////
	if (nexttrans==2) {

				var subtl = new punchgs.TimelineLite();
				// ALL OLD SLOTS SHOULD BE SLIDED TO THE RIGHT
				actsh.find('.slotslide').each(function() {
					var ss=jQuery(this);
					subtl.add(punchgs.TweenLite.to(ss,masterspeed/1000,{left:opt.slotw,ease:ei, force3D:"auto",rotation:(0-opt.rotate)}),0);
					mtl.add(subtl,0);
				});

				// ALL NEW SLOTS SHOULD BE SLIDED FROM THE LEFT TO THE RIGHT
				nextsh.find('.slotslide').each(function() {
					var ss=jQuery(this);
					subtl.add(punchgs.TweenLite.from(ss,masterspeed/1000,{left:0-opt.slotw,ease:ei, force3D:"auto",rotation:opt.rotate}),0);
					mtl.add(subtl,0);
				});
	}



	/////////////////////////////////////
	// THE SLOTSLIDE - TRANSITION I.  //
	////////////////////////////////////
	if (nexttrans==3) {
				var subtl = new punchgs.TimelineLite();

				// ALL OLD SLOTS SHOULD BE SLIDED TO THE RIGHT
				actsh.find('.slotslide').each(function() {
					var ss=jQuery(this);
					subtl.add(punchgs.TweenLite.to(ss,masterspeed/1000,{top:opt.sloth,ease:ei,rotation:opt.rotate,force3D:"auto",transformPerspective:600}),0);
					mtl.add(subtl,0);

				});

				// ALL NEW SLOTS SHOULD BE SLIDED FROM THE LEFT TO THE RIGHT
				nextsh.find('.slotslide').each(function() {
					var ss=jQuery(this);
					subtl.add(punchgs.TweenLite.from(ss,masterspeed/1000,{top:0-opt.sloth,rotation:opt.rotate,ease:eo,force3D:"auto",transformPerspective:600}),0);
					mtl.add(subtl,0);
				});
	}



	/////////////////////////////////////
	// THE SLOTSLIDE - TRANSITION I.  //
	////////////////////////////////////
	if (nexttrans==4 || nexttrans==5) {

				setTimeout(function() {
					actsh.find('.defaultimg').css({opacity:0});
				},100);


				// ALL NEW SLOTS SHOULD BE SLIDED FROM THE LEFT TO THE RIGHT
				var cspeed = (masterspeed)/1000,
					ticker = cspeed,
					subtl = new punchgs.TimelineLite();

				actsh.find('.slotslide').each(function(i) {
					var ss=jQuery(this);
					var del = (i*cspeed)/opt.slots;
					if (nexttrans==5) del = ((opt.slots-i-1)*cspeed)/(opt.slots)/1.5;
					subtl.add(punchgs.TweenLite.to(ss,cspeed*3,{transformPerspective:600,force3D:"auto",top:0+opt.height,opacity:0.5,rotation:opt.rotate,ease:ei,delay:del}),0);
					mtl.add(subtl,0);
				});

				// ALL NEW SLOTS SHOULD BE SLIDED FROM THE LEFT TO THE RIGHT
				nextsh.find('.slotslide').each(function(i) {
					var ss=jQuery(this);
					var del = (i*cspeed)/opt.slots;
					if (nexttrans==5) del = ((opt.slots-i-1)*cspeed)/(opt.slots)/1.5;
					subtl.add(punchgs.TweenLite.from(ss,cspeed*3,
									{top:(0-opt.height),opacity:0.5,rotation:opt.rotate,force3D:"auto",ease:punchgs.eo,delay:del}),0);
					mtl.add(subtl,0);

				});


	}

	/////////////////////////////////////
	// THE SLOTSLIDE - TRANSITION I.  //
	////////////////////////////////////
	if (nexttrans==6) {


				if (opt.slots<2) opt.slots=2;
				if (opt.slots % 2) opt.slots = opt.slots+1;

				var subtl = new punchgs.TimelineLite();

				//SET DEFAULT IMG UNVISIBLE
				setTimeout(function() {
					actsh.find('.defaultimg').css({opacity:0});
				},100);

				actsh.find('.slotslide').each(function(i) {
					var ss=jQuery(this);
					if (i+1<opt.slots/2)
						var tempo = (i+2)*90;
					else
						var tempo = (2+opt.slots-i)*90;

					subtl.add(punchgs.TweenLite.to(ss,(masterspeed+tempo)/1000,{top:0+opt.height,opacity:1,force3D:"auto",rotation:opt.rotate,ease:ei}),0);
					mtl.add(subtl,0);
				});

				// ALL NEW SLOTS SHOULD BE SLIDED FROM THE LEFT TO THE RIGHT
				nextsh.find('.slotslide').each(function(i) {
					var ss=jQuery(this);

					if (i+1<opt.slots/2)
						var tempo = (i+2)*90;
					else
						var tempo = (2+opt.slots-i)*90;

					subtl.add(punchgs.TweenLite.from(ss,(masterspeed+tempo)/1000,
											{top:(0-opt.height),opacity:1,force3D:"auto",rotation:opt.rotate,ease:eo}),0);
					mtl.add(subtl,0);
				});
	}


	////////////////////////////////////
	// THE SLOTSZOOM - TRANSITION II. //
	////////////////////////////////////
	if (nexttrans==7) {

				masterspeed = masterspeed *2;
				if (masterspeed>opt.delay) masterspeed=opt.delay;
				var subtl = new punchgs.TimelineLite();

				//SET DEFAULT IMG UNVISIBLE
				setTimeout(function() {
					actsh.find('.defaultimg').css({opacity:0});
				},100);

				// ALL OLD SLOTS SHOULD BE SLIDED TO THE RIGHT
				actsh.find('.slotslide').each(function() {
					var ss=jQuery(this).find('div');
					subtl.add(punchgs.TweenLite.to(ss,masterspeed/1000,{
							left:(0-opt.slotw/2)+'px',
							top:(0-opt.height/2)+'px',
							width:(opt.slotw*2)+"px",
							height:(opt.height*2)+"px",
							opacity:0,
							rotation:opt.rotate,
							force3D:"auto",
							ease:ei}),0);
					mtl.add(subtl,0);

				});

				//////////////////////////////////////////////////////////////
				// ALL NEW SLOTS SHOULD BE SLIDED FROM THE LEFT TO THE RIGHT //
				///////////////////////////////////////////////////////////////
				nextsh.find('.slotslide').each(function(i) {
					var ss=jQuery(this).find('div');

					subtl.add(punchgs.TweenLite.fromTo(ss,masterspeed/1000,
								{left:0,top:0,opacity:0,transformPerspective:600},
								{left:(0-i*opt.slotw)+'px',
								 ease:eo,
								 force3D:"auto",
							     top:(0)+'px',
							     width:opt.width,
							     height:opt.height,
								 opacity:1,rotation:0,
								 delay:0.1}),0);
					mtl.add(subtl,0);
				});
	}




	////////////////////////////////////
	// THE SLOTSZOOM - TRANSITION II. //
	////////////////////////////////////
	if (nexttrans==8) {

				masterspeed = masterspeed * 3;
				if (masterspeed>opt.delay) masterspeed=opt.delay;
				var subtl = new punchgs.TimelineLite();



				// ALL OLD SLOTS SHOULD BE SLIDED TO THE RIGHT
				actsh.find('.slotslide').each(function() {
					var ss=jQuery(this).find('div');
					subtl.add(punchgs.TweenLite.to(ss,masterspeed/1000,
								  {left:(0-opt.width/2)+'px',
								   top:(0-opt.sloth/2)+'px',
								   width:(opt.width*2)+"px",
								   height:(opt.sloth*2)+"px",
								   force3D:"auto",
								   ease:ei,
								   opacity:0,rotation:opt.rotate}),0);
					mtl.add(subtl,0);

				});


				// ALL NEW SLOTS SHOULD BE SLIDED FROM THE LEFT TO THE RIGHT //
				///////////////////////////////////////////////////////////////
				nextsh.find('.slotslide').each(function(i) {
					var ss=jQuery(this).find('div');

					subtl.add(punchgs.TweenLite.fromTo(ss,masterspeed/1000,
								  {left:0, top:0,opacity:0,force3D:"auto"},
								  {'left':(0)+'px',
								   'top':(0-i*opt.sloth)+'px',
								   'width':(nextsh.find('.defaultimg').data('neww'))+"px",
								   'height':(nextsh.find('.defaultimg').data('newh'))+"px",
								   opacity:1,
								   ease:eo,rotation:0,
								   }),0);
					mtl.add(subtl,0);
				});
	}


	////////////////////////////////////////
	// THE SLOTSFADE - TRANSITION III.   //
	//////////////////////////////////////
	if (nexttrans==9 || nexttrans==10) {
				var ssamount=0;
				// ALL NEW SLOTS SHOULD BE SLIDED FROM THE LEFT TO THE RIGHT
				nextsh.find('.slotslide').each(function(i) {
					var ss=jQuery(this);
					ssamount++;
					mtl.add(punchgs.TweenLite.fromTo(ss,masterspeed/1000,{autoAlpha:0,force3D:"auto",transformPerspective:600},
																		 {autoAlpha:1,ease:ei,delay:(i*5)/1000}),0);

				});
	}

	///////////////////////////
	// SIMPLE FADE ANIMATION //
	///////////////////////////
	if (nexttrans==11 || nexttrans==26) {
				var ssamount=0,
					bgcol = specials == 2 ? "#000000" : specials == 3 ? "#ffffff" : "transparent";
				if (nexttrans==26) masterspeed=0;

				if (smallpreview) {
					mtl.add(punchgs.TweenLite.set(nextsh.parent(),{backgroundColor:bgcol,force3D:"auto"}),0);
					switch (specials) {
						case 0: 
							mtl.add(punchgs.TweenLite.fromTo(actsh,masterspeed/1000,{autoAlpha:0,zIndex:1},{autoAlpha:1,zIndex:1,force3D:"auto",ease:ei}),0);
							mtl.add(punchgs.TweenLite.set(nextsh,{autoAlpha:1,force3D:"auto",zIndex:0}),0);
						break;

						case 1:
							mtl.add(punchgs.TweenLite.fromTo(actsh,masterspeed/1000,{autoAlpha:0},{autoAlpha:1,force3D:"auto",ease:ei}),0);
							mtl.add(punchgs.TweenLite.fromTo(nextsh,masterspeed/1000,{autoAlpha:1},{autoAlpha:0,force3D:"auto",ease:ei}),0);
						break;

						case 2:
						case 3:
						case 4:
							mtl.add(punchgs.TweenLite.fromTo(nextsh,masterspeed/2000,{autoAlpha:1},{autoAlpha:0,force3D:"auto",ease:ei}),0);
							mtl.add(punchgs.TweenLite.set(actsh,{autoAlpha:0,force3D:"auto"}),0);
							mtl.add(punchgs.TweenLite.fromTo(actsh,masterspeed/2000,{autoAlpha:0},{autoAlpha:1,force3D:"auto",ease:ei}),masterspeed/2000);							
						break;
						case 5: // GRAYSCALE
						case 6: // GRAYSCALECROSS
						case 7: // BRIGHTNESS					
						case 8: // BRIGHTNESSCROSS
						case 9: // BLUR LIGHT
						case 10: // BLUR LIGHT CROSS
						case 11: // BLUR STRONG
						case 12: // BLUR STRONG CROSS

							
							var _blur = jQuery.inArray(specials,[9,10])>=0 ? 5 : jQuery.inArray(specials,[11,12])>=0 ? 10 : 0,
								_gray = jQuery.inArray(specials,[5,6,7,8])>=0 ? 100 : 0,
								_bright = jQuery.inArray(specials,[7,8])>=0 ? 300 : 0,
								__ff = "blur("+_blur+"px) grayscale("+_gray+"%) brightness("+_bright+"%)",
								__ft = "blur(0px) grayscale(0%) brightness(100%)";

							mtl.add(punchgs.TweenLite.fromTo(nextsh,masterspeed/1000,{autoAlpha:0,filter:__ff, "-webkit-filter":__ff},{autoAlpha:1,filter:__ft, "-webkit-filter":__ft,force3D:"auto",ease:ei}),0);
							if (jQuery.inArray(specials,[6,8,10])>=0)
								mtl.add(punchgs.TweenLite.fromTo(actsh,masterspeed/1000,{autoAlpha:1,filter:__ft, "-webkit-filter":__ft},{autoAlpha:0,force3D:"auto",ease:ei,filter:__ff, "-webkit-filter":__ff}),0);
							
						break;
					}
				} else {				
					nextsh.find('.slotslide').each(function(i) {
						var ss=jQuery(this);
						if (specials<5)
						 	mtl.add(punchgs.TweenLite.fromTo(ss,masterspeed/1000,{autoAlpha:0},{autoAlpha:1,force3D:"auto",ease:ei}),0);
						else {
							var _blur = jQuery.inArray(specials,[9,10])>=0 ? 5 : jQuery.inArray(specials,[11,12])>=0 ? 10 : 0,
								_gray = jQuery.inArray(specials,[5,6,7,8])>=0 ? 100 : 0,
								_bright = jQuery.inArray(specials,[7,8])>=0 ? 300 : 0,
								__ff = "blur("+_blur+"px) grayscale("+_gray+"%) brightness("+_bright+"%)",
								__ft = "blur(0px) grayscale(0%) brightness(100%)";

							mtl.add(punchgs.TweenLite.fromTo(ss,masterspeed/1000,{autoAlpha:0,filter:__ff, "-webkit-filter":__ff},{autoAlpha:1,filter:__ft, "-webkit-filter":__ft,force3D:"auto",ease:ei}),0);
						}
					});
				}
	}

	//////////////////////
	// SLIDING OVERLAYS //
	//////////////////////
		
	if (nexttrans==27||nexttrans==28||nexttrans==29||nexttrans==30) {

		var slot = nextsh.find('.slot'),		
			nd = nexttrans==27 || nexttrans==28 ? 1 : 2,
			mhp = nexttrans==27 || nexttrans==29 ? "-100%" : "+100%",
			php = nexttrans==27 || nexttrans==29 ? "+100%" : "-100%",
			mep = nexttrans==27 || nexttrans==29 ? "-80%" : "80%",
			pep = nexttrans==27 || nexttrans==29 ? "80%" : "-80%",
			ptp = nexttrans==27 || nexttrans==29 ? "10%" : "-10%",
			fa = {overwrite:"all"},
			ta = {autoAlpha:0,zIndex:1,force3D:"auto",ease:punchgs.Power1.easeInOut},
			fb = {position:"inherit",autoAlpha:0,overwrite:"all"},
			tb = {autoAlpha:1,force3D:"auto",ease:punchgs.Power1.easeOut},
			fc = {overwrite:"all",zIndex:2},
			tc = {autoAlpha:1,force3D:"auto",overwrite:"all",ease:punchgs.Power1.easeInOut},
			fd = {overwrite:"all",zIndex:2},
			td = {autoAlpha:1,force3D:"auto",ease:punchgs.Power1.easeInOut},
			at = nd==1 ? "y" : "x";

		fa[at] = "0px";
		ta[at] = mhp;
		fb[at] = ptp;
		tb[at] = "0%";
		fc[at] = php;
		tc[at] = mhp;
		fd[at] = mep;
		td[at] = pep;

		slot.append('<span style="background-color:rgba(0,0,0,0.6);width:100%;height:100%;position:absolute;top:0px;left:0px;display:block;z-index:2"></span>');
		
		
		mtl.add(punchgs.TweenLite.fromTo(actsh,masterspeed/1000,fa,ta),0);						
		mtl.add(punchgs.TweenLite.fromTo(nextsh.find('.defaultimg'),masterspeed/2000,fb,tb),masterspeed/2000);				
		mtl.add(punchgs.TweenLite.fromTo(slot,masterspeed/1000,fc,tc),0);	
		mtl.add(punchgs.TweenLite.fromTo(slot.find('.slotslide div'),masterspeed/1000,fd,td),0);			
	}



	if (nexttrans==12 || nexttrans==13 || nexttrans==14 || nexttrans==15) {
				masterspeed = masterspeed;
				if (masterspeed>opt.delay) masterspeed=opt.delay;
				//masterspeed = 1000;

				setTimeout(function() {
					punchgs.TweenLite.set(actsh.find('.defaultimg'),{autoAlpha:0});

				},100);

				var oow = opt.width,
					ooh = opt.height,
					ssn=nextsh.find('.slotslide'),
					twx = 0,
					twy = 0,
					op = 1,
					scal = 1,
					fromscale = 1,					
					speedy = masterspeed/1000,
					speedy2 = speedy;


				if (opt.sliderLayout=="fullwidth" || opt.sliderLayout=="fullscreen") {
					oow=ssn.width();
					ooh=ssn.height();
				}



				if (nexttrans==12)
					twx = oow;
				else
				if (nexttrans==15)
					twx = 0-oow;
				else
				if (nexttrans==13)
					twy = ooh;
				else
				if (nexttrans==14)
					twy = 0-ooh;


				// DEPENDING ON EXTENDED SPECIALS, DIFFERENT SCALE AND OPACITY FUNCTIONS NEED TO BE ADDED
				if (specials == 1) op = 0;
				if (specials == 2) op = 0;
				if (specials == 3) speedy = masterspeed / 1300;				

				if (specials==4 || specials==5)
					scal=0.6;
				if (specials==6 )
					scal=1.4;


				if (specials==5 || specials==6) {
				    fromscale=1.4;
				    op=0;
				    oow=0;
				    ooh=0;twx=0;twy=0;
				 }
				if (specials==6) fromscale=0.6;
				var dd = 0;

				if (specials==7) {
					oow = 0;
					ooh = 0;
				}

				var inc = nextsh.find('.slotslide'),
					outc = actsh.find('.slotslide');

				mtl.add(punchgs.TweenLite.set(actli,{zIndex:15}),0);
				mtl.add(punchgs.TweenLite.set(nextli,{zIndex:20}),0);

				if (specials==8) {
										
					mtl.add(punchgs.TweenLite.set(actli,{zIndex:20}),0);
					mtl.add(punchgs.TweenLite.set(nextli,{zIndex:15}),0);					
					mtl.add(punchgs.TweenLite.set(inc,{left:0, top:0, scale:1, opacity:1,rotation:0,ease:ei,force3D:"auto"}),0);
				} else {

					mtl.add(punchgs.TweenLite.from(inc,speedy,{left:twx, top:twy, scale:fromscale, opacity:op,rotation:opt.rotate,ease:ei,force3D:"auto"}),0);
				}
				
				if (specials==4 || specials==5) {
					oow = 0; ooh=0;
				}

				if (specials!=1)
					switch (nexttrans) {
						case 12:
							mtl.add(punchgs.TweenLite.to(outc,speedy2,{'left':(0-oow)+'px',force3D:"auto",scale:scal,opacity:op,rotation:opt.rotate,ease:eo}),0);
						break;
						case 15:
							mtl.add(punchgs.TweenLite.to(outc,speedy2,{'left':(oow)+'px',force3D:"auto",scale:scal,opacity:op,rotation:opt.rotate,ease:eo}),0);
						break;
						case 13:						
							mtl.add(punchgs.TweenLite.to(outc,speedy2,{'top':(0-ooh)+'px',force3D:"auto",scale:scal,opacity:op,rotation:opt.rotate,ease:eo}),0);
						break;
						case 14:
							mtl.add(punchgs.TweenLite.to(outc,speedy2,{'top':(ooh)+'px',force3D:"auto",scale:scal,opacity:op,rotation:opt.rotate,ease:eo}),0);
						break;
					}
	
	}

	//////////////////////////////////////
	// THE SLOTSLIDE - TRANSITION XVI.  //
	//////////////////////////////////////
	if (nexttrans==16) {						// PAPERCUT


			var subtl = new punchgs.TimelineLite();
			mtl.add(punchgs.TweenLite.set(actli,{'position':'absolute','z-index':20}),0);
			mtl.add(punchgs.TweenLite.set(nextli,{'position':'absolute','z-index':15}),0);


			// PREPARE THE CUTS
			actli.wrapInner('<div class="tp-half-one" style="position:relative; width:100%;height:100%"></div>');

			actli.find('.tp-half-one').clone(true).appendTo(actli).addClass("tp-half-two");
			actli.find('.tp-half-two').removeClass('tp-half-one');

			var oow = opt.width,
				ooh = opt.height;
			if (opt.autoHeight=="on")
				ooh = container.height();


			actli.find('.tp-half-one .defaultimg').wrap('<div class="tp-papercut" style="width:'+oow+'px;height:'+ooh+'px;"></div>')
			actli.find('.tp-half-two .defaultimg').wrap('<div class="tp-papercut" style="width:'+oow+'px;height:'+ooh+'px;"></div>')
			actli.find('.tp-half-two .defaultimg').css({position:'absolute',top:'-50%'});
			actli.find('.tp-half-two .tp-caption').wrapAll('<div style="position:absolute;top:-50%;left:0px;"></div>');

			mtl.add(punchgs.TweenLite.set(actli.find('.tp-half-two'),
			                 {width:oow,height:ooh,overflow:'hidden',zIndex:15,position:'absolute',top:ooh/2,left:'0px',transformPerspective:600,transformOrigin:"center bottom"}),0);

			mtl.add(punchgs.TweenLite.set(actli.find('.tp-half-one'),
			                 {width:oow,height:ooh/2,overflow:'visible',zIndex:10,position:'absolute',top:'0px',left:'0px',transformPerspective:600,transformOrigin:"center top"}),0);

			// ANIMATE THE CUTS
			var img=actli.find('.defaultimg'),
				ro1=Math.round(Math.random()*20-10),
				ro2=Math.round(Math.random()*20-10),
				ro3=Math.round(Math.random()*20-10),
				xof = Math.random()*0.4-0.2,
				yof = Math.random()*0.4-0.2,
				sc1=Math.random()*1+1,
				sc2=Math.random()*1+1,
				sc3=Math.random()*0.3+0.3;

			mtl.add(punchgs.TweenLite.set(actli.find('.tp-half-one'),{overflow:'hidden'}),0);
			mtl.add(punchgs.TweenLite.fromTo(actli.find('.tp-half-one'),masterspeed/800,
			                 {width:oow,height:ooh/2,position:'absolute',top:'0px',left:'0px',force3D:"auto",transformOrigin:"center top"},
			                 {scale:sc1,rotation:ro1,y:(0-ooh-ooh/4),autoAlpha:0,ease:ei}),0);
			mtl.add(punchgs.TweenLite.fromTo(actli.find('.tp-half-two'),masterspeed/800,
			                 {width:oow,height:ooh,overflow:'hidden',position:'absolute',top:ooh/2,left:'0px',force3D:"auto",transformOrigin:"center bottom"},
			                 {scale:sc2,rotation:ro2,y:ooh+ooh/4,ease:ei,autoAlpha:0,onComplete:function() {
				                // CLEAN UP
								punchgs.TweenLite.set(actli,{'position':'absolute','z-index':15});
								punchgs.TweenLite.set(nextli,{'position':'absolute','z-index':20});
								if (actli.find('.tp-half-one').length>0)  {
									actli.find('.tp-half-one .defaultimg').unwrap();
									actli.find('.tp-half-one .slotholder').unwrap();
								}
								actli.find('.tp-half-two').remove();
			                 }}),0);

			subtl.add(punchgs.TweenLite.set(nextsh.find('.defaultimg'),{autoAlpha:1}),0);

			if (actli.html()!=null)
				mtl.add(punchgs.TweenLite.fromTo(nextli,(masterspeed-200)/1000,
												{scale:sc3,x:(opt.width/4)*xof, y:(ooh/4)*yof,rotation:ro3,force3D:"auto",transformOrigin:"center center",ease:eo},
												{autoAlpha:1,scale:1,x:0,y:0,rotation:0}),0);

			mtl.add(subtl,0);


	}

	////////////////////////////////////////
	// THE SLOTSLIDE - TRANSITION XVII.  //
	///////////////////////////////////////
	if (nexttrans==17) {								// 3D CURTAIN HORIZONTAL


				// ALL NEW SLOTS SHOULD BE SLIDED FROM THE LEFT TO THE RIGHT

				nextsh.find('.slotslide').each(function(j) {
					var ss=jQuery(this);

					mtl.add(punchgs.TweenLite.fromTo(ss,(masterspeed)/800,
									{opacity:0,rotationY:0,scale:0.9,rotationX:-110,force3D:"auto",transformPerspective:600,transformOrigin:"center center"},
									{opacity:1,top:0,left:0,scale:1,rotation:0,rotationX:0,force3D:"auto",rotationY:0,ease:ei,delay:j*0.06}),0);

				});
	}



	////////////////////////////////////////
	// THE SLOTSLIDE - TRANSITION XVIII.  //
	///////////////////////////////////////
	if (nexttrans==18) {								// 3D CURTAIN VERTICAL

				// ALL NEW SLOTS SHOULD BE SLIDED FROM THE LEFT TO THE RIGHT
				nextsh.find('.slotslide').each(function(j) {
					var ss=jQuery(this);

					mtl.add(punchgs.TweenLite.fromTo(ss,(masterspeed)/500,
									{autoAlpha:0,rotationY:110,scale:0.9,rotationX:10,force3D:"auto",transformPerspective:600,transformOrigin:"center center"},
									{autoAlpha:1,top:0,left:0,scale:1,rotation:0,rotationX:0,force3D:"auto",rotationY:0,ease:ei,delay:j*0.06}),0);
				});



	}


	////////////////////////////////////////
	// THE SLOTSLIDE - TRANSITION XIX.  //
	///////////////////////////////////////
	if (nexttrans==19 || nexttrans==22) {								// IN CUBE

				var subtl = new punchgs.TimelineLite();
				//SET DEFAULT IMG UNVISIBLE

				mtl.add(punchgs.TweenLite.set(actli,{zIndex:20}),0);
				mtl.add(punchgs.TweenLite.set(nextli,{zIndex:20}),0);
				setTimeout(function() {
					actsh.find('.defaultimg').css({opacity:0});
				},100);
				var rot = 90,
					op = 1,
					torig ="center center ";

				if (slidedirection==1) rot = -90;

				if (nexttrans==19) {
					torig = torig+"-"+opt.height/2;
					op=0;

				} else {
					torig = torig+opt.height/2;
				}

				// ALL NEW SLOTS SHOULD BE SLIDED FROM THE LEFT TO THE RIGHT
				punchgs.TweenLite.set(container,{transformStyle:"flat",backfaceVisibility:"hidden",transformPerspective:600});

				nextsh.find('.slotslide').each(function(j) {
					var ss=jQuery(this);

					subtl.add(punchgs.TweenLite.fromTo(ss,masterspeed/1000,
									{transformStyle:"flat",backfaceVisibility:"hidden",left:0,rotationY:opt.rotate,z:10,top:0,scale:1,force3D:"auto",transformPerspective:600,transformOrigin:torig,rotationX:rot},
									{left:0,rotationY:0,top:0,z:0, scale:1,force3D:"auto",rotationX:0, delay:(j*50)/1000,ease:ei}),0);
					subtl.add(punchgs.TweenLite.to(ss,0.1,{autoAlpha:1,delay:(j*50)/1000}),0);
					mtl.add(subtl);
				});

				actsh.find('.slotslide').each(function(j) {
					var ss=jQuery(this);
					var rot = -90;
					if (slidedirection==1) rot = 90;

					subtl.add(punchgs.TweenLite.fromTo(ss,masterspeed/1000,
									{transformStyle:"flat",backfaceVisibility:"hidden",autoAlpha:1,rotationY:0,top:0,z:0,scale:1,force3D:"auto",transformPerspective:600,transformOrigin:torig, rotationX:0},
									{autoAlpha:1,rotationY:opt.rotate,top:0,z:10, scale:1,rotationX:rot, delay:(j*50)/1000,force3D:"auto",ease:eo}),0);

					mtl.add(subtl);					
				});
				mtl.add(punchgs.TweenLite.set(actli,{zIndex:18}),0);
	}




	////////////////////////////////////////
	// THE SLOTSLIDE - TRANSITION XX.  //
	///////////////////////////////////////
	if (nexttrans==20 ) {								// FLYIN


				setTimeout(function() {
					actsh.find('.defaultimg').css({opacity:0});
				},100);
				
				if (slidedirection==1) {
				   var ofx = -opt.width
				   var rot  =80;
				   var torig = "20% 70% -"+opt.height/2;
				} else {
					var ofx = opt.width;
					var rot = -80;
					var torig = "80% 70% -"+opt.height/2;
				}


				nextsh.find('.slotslide').each(function(j) {
					var ss=jQuery(this),
						d = (j*50)/1000;

					

					mtl.add(punchgs.TweenLite.fromTo(ss,masterspeed/1000,
									{left:ofx,rotationX:40,z:-600, opacity:op,top:0,scale:1,force3D:"auto",transformPerspective:600,transformOrigin:torig,transformStyle:"flat",rotationY:rot},
									{left:0,rotationX:0,opacity:1,top:0,z:0, scale:1,rotationY:0, delay:d,ease:ei}),0);
				

				});
				actsh.find('.slotslide').each(function(j) {
					var ss=jQuery(this),
						d = (j*50)/1000;
						d = j>0 ?  d + masterspeed/9000 : 0;

					if (slidedirection!=1) {
					   var ofx = -opt.width/2
					   var rot  =30;
					   var torig = "20% 70% -"+opt.height/2;
					} else {
						var ofx = opt.width/2;
						var rot = -30;
						var torig = "80% 70% -"+opt.height/2;
					}
					eo=punchgs.Power2.easeInOut;

					mtl.add(punchgs.TweenLite.fromTo(ss,masterspeed/1000,
									{opacity:1,rotationX:0,top:0,z:0,scale:1,left:0, force3D:"auto",transformPerspective:600,transformOrigin:torig, transformStyle:"flat",rotationY:0},
									{opacity:1,rotationX:20,top:0, z:-600, left:ofx, force3D:"auto",rotationY:rot, delay:d,ease:eo}),0);
					
					
				});
	}

	////////////////////////////////////////
	// THE SLOTSLIDE - TRANSITION XX.  //
	///////////////////////////////////////
	if (nexttrans==21 || nexttrans==25) {								// TURNOFF


				//SET DEFAULT IMG UNVISIBLE

				setTimeout(function() {
					actsh.find('.defaultimg').css({opacity:0});
				},100);
				var rot = 90,
					ofx = -opt.width,
					rot2 = -rot;

				if (slidedirection==1) {
				   if (nexttrans==25) {
				   	 var torig = "center top 0";
				   	 rot = opt.rotate;
				   } else {
				     var torig = "left center 0";
				     rot2 = opt.rotate;
				   }

				} else {
					ofx = opt.width;
					rot = -90;
					if (nexttrans==25) {
				   	 var torig = "center bottom 0"
				   	 rot2 = -rot;
				   	 rot = opt.rotate;
				   } else {
				     var torig = "right center 0";
				     rot2 = opt.rotate;
				   }
				}

				nextsh.find('.slotslide').each(function(j) {
					var ss=jQuery(this),
						ms2 = ((masterspeed/1.5)/3);


					mtl.add(punchgs.TweenLite.fromTo(ss,(ms2*2)/1000,
									{left:0,transformStyle:"flat",rotationX:rot2,z:0, autoAlpha:0,top:0,scale:1,force3D:"auto",transformPerspective:1200,transformOrigin:torig,rotationY:rot},
									{left:0,rotationX:0,top:0,z:0, autoAlpha:1,scale:1,rotationY:0,force3D:"auto",delay:ms2/1000, ease:ei}),0);
				});


				if (slidedirection!=1) {
				   	ofx = -opt.width
				   	rot  = 90;

				   if (nexttrans==25) {
				   	 torig = "center top 0"
				   	 rot2 = -rot;
				   	 rot = opt.rotate;
				   } else {
				     torig = "left center 0";
				     rot2 = opt.rotate;
				   }

				} else {
					ofx = opt.width;
					rot = -90;
					if (nexttrans==25) {
				   	 torig = "center bottom 0"
				   	 rot2 = -rot;
				   	 rot = opt.rotate;
				   } else {
				     torig = "right center 0";
				     rot2 = opt.rotate;
				   }
				}

				actsh.find('.slotslide').each(function(j) {
					var ss=jQuery(this);
					mtl.add(punchgs.TweenLite.fromTo(ss,masterspeed/1000,
									{left:0,transformStyle:"flat",rotationX:0,z:0, autoAlpha:1,top:0,scale:1,force3D:"auto",transformPerspective:1200,transformOrigin:torig,rotationY:0},
									{left:0,rotationX:rot2,top:0,z:0,autoAlpha:1,force3D:"auto", scale:1,rotationY:rot,ease:eo}),0);
				});
	}



	////////////////////////////////////////
	// THE SLOTSLIDE - TRANSITION XX.  //
	///////////////////////////////////////
	if (nexttrans==23 || nexttrans == 24) {								// cube-horizontal - inboxhorizontal

		//SET DEFAULT IMG UNVISIBLE
		setTimeout(function() {
			actsh.find('.defaultimg').css({opacity:0});
		},100);
		var rot = -90,
			op = 1,
			opx=0;

		if (slidedirection==1) rot = 90;
		if (nexttrans==23) {
			var torig = "center center -"+opt.width/2;
			op=0;
		} else
			var torig = "center center "+opt.width/2;

		punchgs.TweenLite.set(container,{transformStyle:"preserve-3d",backfaceVisibility:"hidden",perspective:2500});
						nextsh.find('.slotslide').each(function(j) {
			var ss=jQuery(this);
			mtl.add(punchgs.TweenLite.fromTo(ss,masterspeed/1000,
							{left:opx,rotationX:opt.rotate,force3D:"auto",opacity:op,top:0,scale:1,transformPerspective:1200,transformOrigin:torig,rotationY:rot},
							{left:0,rotationX:0,autoAlpha:1,top:0,z:0, scale:1,rotationY:0, delay:(j*50)/500,ease:ei}),0);
		});

		rot = 90;
		if (slidedirection==1) rot = -90;

		actsh.find('.slotslide').each(function(j) {
			var ss=jQuery(this);
			mtl.add(punchgs.TweenLite.fromTo(ss,masterspeed/1000,
							{left:0,rotationX:0,top:0,z:0,scale:1,force3D:"auto",transformStyle:"flat",transformPerspective:1200,transformOrigin:torig, rotationY:0},
							{left:opx,rotationX:opt.rotate,top:0, scale:1,rotationY:rot, delay:(j*50)/500,ease:eo}),0);
			if (nexttrans==23) mtl.add(punchgs.TweenLite.fromTo(ss,masterspeed/2000,{autoAlpha:1},{autoAlpha:0,delay:(j*50)/500 + masterspeed/3000,ease:eo}),0);

		});
	}	

	

			// SHOW FIRST LI && ANIMATE THE CAPTIONS
			mtl.add(punchgs.TweenLite.set(nextsh.find('.defaultimg'),{autoAlpha:1}));
			mtl.add(punchgs.TweenLite.set(nextsh.find('.slot'),{autoAlpha:0}));		

			mtl.seek(100000);
	
			if (givebackmtl!=undefined)
				return mtl;
			else
				jQuery('#divbgholder').data('slidetimeline',mtl);
			
		}
	

	


	///////////////////////
	//	REMOVE SLOTS	//
	/////////////////////
	var removeAllSlots = function() {
				if (jQuery('#divbgholder').data('slidetimeline')!=undefined) {
					jQuery('#divbgholder').data('slidetimeline').kill();
					jQuery('#divbgholder').find('.slot').each(function() {
						jQuery(this).remove();
					});
				}
				
		}
	
	t.resetSlideAnimations = function(seekinpos) {
		removeAllSlots();
		slideAnimation();
		var mst = jQuery('#divbgholder').data('slidetimeline'),
			mp = jQuery('#mastertimer-position'),
			tpos = (mp.position().left)/100;
		if (mst!=undefined) {
			mst.stop();
			if (seekinpos) mst.seek(tpos);
		}
	}
	
}