/* Minification failed. Returning unminified contents.
(12887,61-62): run-time error JS1195: Expected expression: >
(12887,88-89): run-time error JS1004: Expected ';': )
(12901,15-19): run-time error JS1034: Unmatched 'else'; no 'if' defined: else
(12905,5-6): run-time error JS1002: Syntax error: }
(12907,33-34): run-time error JS1004: Expected ';': {
(13318,1-2): run-time error JS1002: Syntax error: }
(13319,29-30): run-time error JS1195: Expected expression: )
(13319,31-32): run-time error JS1004: Expected ';': {
(13499,3-4): run-time error JS1195: Expected expression: )
(13495,5,13498,6): run-time error JS1018: 'return' statement outside of function: return {
        init: init,
        openModal: openModal
    }
(13315,5,13317,6): run-time error JS1018: 'return' statement outside of function: return {
        init: init
    }
 */
/*! jQuery v1.9.1 | (c) 2005, 2012 jQuery Foundation, Inc. | jquery.org/license
//@ sourceMappingURL=jquery.min.map
*/(function(e,t){var n,r,i=typeof t,o=e.document,a=e.location,s=e.jQuery,u=e.$,l={},c=[],p="1.9.1",f=c.concat,d=c.push,h=c.slice,g=c.indexOf,m=l.toString,y=l.hasOwnProperty,v=p.trim,b=function(e,t){return new b.fn.init(e,t,r)},x=/[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/.source,w=/\S+/g,T=/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,N=/^(?:(<[\w\W]+>)[^>]*|#([\w-]*))$/,C=/^<(\w+)\s*\/?>(?:<\/\1>|)$/,k=/^[\],:{}\s]*$/,E=/(?:^|:|,)(?:\s*\[)+/g,S=/\\(?:["\\\/bfnrt]|u[\da-fA-F]{4})/g,A=/"[^"\\\r\n]*"|true|false|null|-?(?:\d+\.|)\d+(?:[eE][+-]?\d+|)/g,j=/^-ms-/,D=/-([\da-z])/gi,L=function(e,t){return t.toUpperCase()},H=function(e){(o.addEventListener||"load"===e.type||"complete"===o.readyState)&&(q(),b.ready())},q=function(){o.addEventListener?(o.removeEventListener("DOMContentLoaded",H,!1),e.removeEventListener("load",H,!1)):(o.detachEvent("onreadystatechange",H),e.detachEvent("onload",H))};b.fn=b.prototype={jquery:p,constructor:b,init:function(e,n,r){var i,a;if(!e)return this;if("string"==typeof e){if(i="<"===e.charAt(0)&&">"===e.charAt(e.length-1)&&e.length>=3?[null,e,null]:N.exec(e),!i||!i[1]&&n)return!n||n.jquery?(n||r).find(e):this.constructor(n).find(e);if(i[1]){if(n=n instanceof b?n[0]:n,b.merge(this,b.parseHTML(i[1],n&&n.nodeType?n.ownerDocument||n:o,!0)),C.test(i[1])&&b.isPlainObject(n))for(i in n)b.isFunction(this[i])?this[i](n[i]):this.attr(i,n[i]);return this}if(a=o.getElementById(i[2]),a&&a.parentNode){if(a.id!==i[2])return r.find(e);this.length=1,this[0]=a}return this.context=o,this.selector=e,this}return e.nodeType?(this.context=this[0]=e,this.length=1,this):b.isFunction(e)?r.ready(e):(e.selector!==t&&(this.selector=e.selector,this.context=e.context),b.makeArray(e,this))},selector:"",length:0,size:function(){return this.length},toArray:function(){return h.call(this)},get:function(e){return null==e?this.toArray():0>e?this[this.length+e]:this[e]},pushStack:function(e){var t=b.merge(this.constructor(),e);return t.prevObject=this,t.context=this.context,t},each:function(e,t){return b.each(this,e,t)},ready:function(e){return b.ready.promise().done(e),this},slice:function(){return this.pushStack(h.apply(this,arguments))},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},eq:function(e){var t=this.length,n=+e+(0>e?t:0);return this.pushStack(n>=0&&t>n?[this[n]]:[])},map:function(e){return this.pushStack(b.map(this,function(t,n){return e.call(t,n,t)}))},end:function(){return this.prevObject||this.constructor(null)},push:d,sort:[].sort,splice:[].splice},b.fn.init.prototype=b.fn,b.extend=b.fn.extend=function(){var e,n,r,i,o,a,s=arguments[0]||{},u=1,l=arguments.length,c=!1;for("boolean"==typeof s&&(c=s,s=arguments[1]||{},u=2),"object"==typeof s||b.isFunction(s)||(s={}),l===u&&(s=this,--u);l>u;u++)if(null!=(o=arguments[u]))for(i in o)e=s[i],r=o[i],s!==r&&(c&&r&&(b.isPlainObject(r)||(n=b.isArray(r)))?(n?(n=!1,a=e&&b.isArray(e)?e:[]):a=e&&b.isPlainObject(e)?e:{},s[i]=b.extend(c,a,r)):r!==t&&(s[i]=r));return s},b.extend({noConflict:function(t){return e.$===b&&(e.$=u),t&&e.jQuery===b&&(e.jQuery=s),b},isReady:!1,readyWait:1,holdReady:function(e){e?b.readyWait++:b.ready(!0)},ready:function(e){if(e===!0?!--b.readyWait:!b.isReady){if(!o.body)return setTimeout(b.ready);b.isReady=!0,e!==!0&&--b.readyWait>0||(n.resolveWith(o,[b]),b.fn.trigger&&b(o).trigger("ready").off("ready"))}},isFunction:function(e){return"function"===b.type(e)},isArray:Array.isArray||function(e){return"array"===b.type(e)},isWindow:function(e){return null!=e&&e==e.window},isNumeric:function(e){return!isNaN(parseFloat(e))&&isFinite(e)},type:function(e){return null==e?e+"":"object"==typeof e||"function"==typeof e?l[m.call(e)]||"object":typeof e},isPlainObject:function(e){if(!e||"object"!==b.type(e)||e.nodeType||b.isWindow(e))return!1;try{if(e.constructor&&!y.call(e,"constructor")&&!y.call(e.constructor.prototype,"isPrototypeOf"))return!1}catch(n){return!1}var r;for(r in e);return r===t||y.call(e,r)},isEmptyObject:function(e){var t;for(t in e)return!1;return!0},error:function(e){throw Error(e)},parseHTML:function(e,t,n){if(!e||"string"!=typeof e)return null;"boolean"==typeof t&&(n=t,t=!1),t=t||o;var r=C.exec(e),i=!n&&[];return r?[t.createElement(r[1])]:(r=b.buildFragment([e],t,i),i&&b(i).remove(),b.merge([],r.childNodes))},parseJSON:function(n){return e.JSON&&e.JSON.parse?e.JSON.parse(n):null===n?n:"string"==typeof n&&(n=b.trim(n),n&&k.test(n.replace(S,"@").replace(A,"]").replace(E,"")))?Function("return "+n)():(b.error("Invalid JSON: "+n),t)},parseXML:function(n){var r,i;if(!n||"string"!=typeof n)return null;try{e.DOMParser?(i=new DOMParser,r=i.parseFromString(n,"text/xml")):(r=new ActiveXObject("Microsoft.XMLDOM"),r.async="false",r.loadXML(n))}catch(o){r=t}return r&&r.documentElement&&!r.getElementsByTagName("parsererror").length||b.error("Invalid XML: "+n),r},noop:function(){},globalEval:function(t){t&&b.trim(t)&&(e.execScript||function(t){e.eval.call(e,t)})(t)},camelCase:function(e){return e.replace(j,"ms-").replace(D,L)},nodeName:function(e,t){return e.nodeName&&e.nodeName.toLowerCase()===t.toLowerCase()},each:function(e,t,n){var r,i=0,o=e.length,a=M(e);if(n){if(a){for(;o>i;i++)if(r=t.apply(e[i],n),r===!1)break}else for(i in e)if(r=t.apply(e[i],n),r===!1)break}else if(a){for(;o>i;i++)if(r=t.call(e[i],i,e[i]),r===!1)break}else for(i in e)if(r=t.call(e[i],i,e[i]),r===!1)break;return e},trim:v&&!v.call("\ufeff\u00a0")?function(e){return null==e?"":v.call(e)}:function(e){return null==e?"":(e+"").replace(T,"")},makeArray:function(e,t){var n=t||[];return null!=e&&(M(Object(e))?b.merge(n,"string"==typeof e?[e]:e):d.call(n,e)),n},inArray:function(e,t,n){var r;if(t){if(g)return g.call(t,e,n);for(r=t.length,n=n?0>n?Math.max(0,r+n):n:0;r>n;n++)if(n in t&&t[n]===e)return n}return-1},merge:function(e,n){var r=n.length,i=e.length,o=0;if("number"==typeof r)for(;r>o;o++)e[i++]=n[o];else while(n[o]!==t)e[i++]=n[o++];return e.length=i,e},grep:function(e,t,n){var r,i=[],o=0,a=e.length;for(n=!!n;a>o;o++)r=!!t(e[o],o),n!==r&&i.push(e[o]);return i},map:function(e,t,n){var r,i=0,o=e.length,a=M(e),s=[];if(a)for(;o>i;i++)r=t(e[i],i,n),null!=r&&(s[s.length]=r);else for(i in e)r=t(e[i],i,n),null!=r&&(s[s.length]=r);return f.apply([],s)},guid:1,proxy:function(e,n){var r,i,o;return"string"==typeof n&&(o=e[n],n=e,e=o),b.isFunction(e)?(r=h.call(arguments,2),i=function(){return e.apply(n||this,r.concat(h.call(arguments)))},i.guid=e.guid=e.guid||b.guid++,i):t},access:function(e,n,r,i,o,a,s){var u=0,l=e.length,c=null==r;if("object"===b.type(r)){o=!0;for(u in r)b.access(e,n,u,r[u],!0,a,s)}else if(i!==t&&(o=!0,b.isFunction(i)||(s=!0),c&&(s?(n.call(e,i),n=null):(c=n,n=function(e,t,n){return c.call(b(e),n)})),n))for(;l>u;u++)n(e[u],r,s?i:i.call(e[u],u,n(e[u],r)));return o?e:c?n.call(e):l?n(e[0],r):a},now:function(){return(new Date).getTime()}}),b.ready.promise=function(t){if(!n)if(n=b.Deferred(),"complete"===o.readyState)setTimeout(b.ready);else if(o.addEventListener)o.addEventListener("DOMContentLoaded",H,!1),e.addEventListener("load",H,!1);else{o.attachEvent("onreadystatechange",H),e.attachEvent("onload",H);var r=!1;try{r=null==e.frameElement&&o.documentElement}catch(i){}r&&r.doScroll&&function a(){if(!b.isReady){try{r.doScroll("left")}catch(e){return setTimeout(a,50)}q(),b.ready()}}()}return n.promise(t)},b.each("Boolean Number String Function Array Date RegExp Object Error".split(" "),function(e,t){l["[object "+t+"]"]=t.toLowerCase()});function M(e){var t=e.length,n=b.type(e);return b.isWindow(e)?!1:1===e.nodeType&&t?!0:"array"===n||"function"!==n&&(0===t||"number"==typeof t&&t>0&&t-1 in e)}r=b(o);var _={};function F(e){var t=_[e]={};return b.each(e.match(w)||[],function(e,n){t[n]=!0}),t}b.Callbacks=function(e){e="string"==typeof e?_[e]||F(e):b.extend({},e);var n,r,i,o,a,s,u=[],l=!e.once&&[],c=function(t){for(r=e.memory&&t,i=!0,a=s||0,s=0,o=u.length,n=!0;u&&o>a;a++)if(u[a].apply(t[0],t[1])===!1&&e.stopOnFalse){r=!1;break}n=!1,u&&(l?l.length&&c(l.shift()):r?u=[]:p.disable())},p={add:function(){if(u){var t=u.length;(function i(t){b.each(t,function(t,n){var r=b.type(n);"function"===r?e.unique&&p.has(n)||u.push(n):n&&n.length&&"string"!==r&&i(n)})})(arguments),n?o=u.length:r&&(s=t,c(r))}return this},remove:function(){return u&&b.each(arguments,function(e,t){var r;while((r=b.inArray(t,u,r))>-1)u.splice(r,1),n&&(o>=r&&o--,a>=r&&a--)}),this},has:function(e){return e?b.inArray(e,u)>-1:!(!u||!u.length)},empty:function(){return u=[],this},disable:function(){return u=l=r=t,this},disabled:function(){return!u},lock:function(){return l=t,r||p.disable(),this},locked:function(){return!l},fireWith:function(e,t){return t=t||[],t=[e,t.slice?t.slice():t],!u||i&&!l||(n?l.push(t):c(t)),this},fire:function(){return p.fireWith(this,arguments),this},fired:function(){return!!i}};return p},b.extend({Deferred:function(e){var t=[["resolve","done",b.Callbacks("once memory"),"resolved"],["reject","fail",b.Callbacks("once memory"),"rejected"],["notify","progress",b.Callbacks("memory")]],n="pending",r={state:function(){return n},always:function(){return i.done(arguments).fail(arguments),this},then:function(){var e=arguments;return b.Deferred(function(n){b.each(t,function(t,o){var a=o[0],s=b.isFunction(e[t])&&e[t];i[o[1]](function(){var e=s&&s.apply(this,arguments);e&&b.isFunction(e.promise)?e.promise().done(n.resolve).fail(n.reject).progress(n.notify):n[a+"With"](this===r?n.promise():this,s?[e]:arguments)})}),e=null}).promise()},promise:function(e){return null!=e?b.extend(e,r):r}},i={};return r.pipe=r.then,b.each(t,function(e,o){var a=o[2],s=o[3];r[o[1]]=a.add,s&&a.add(function(){n=s},t[1^e][2].disable,t[2][2].lock),i[o[0]]=function(){return i[o[0]+"With"](this===i?r:this,arguments),this},i[o[0]+"With"]=a.fireWith}),r.promise(i),e&&e.call(i,i),i},when:function(e){var t=0,n=h.call(arguments),r=n.length,i=1!==r||e&&b.isFunction(e.promise)?r:0,o=1===i?e:b.Deferred(),a=function(e,t,n){return function(r){t[e]=this,n[e]=arguments.length>1?h.call(arguments):r,n===s?o.notifyWith(t,n):--i||o.resolveWith(t,n)}},s,u,l;if(r>1)for(s=Array(r),u=Array(r),l=Array(r);r>t;t++)n[t]&&b.isFunction(n[t].promise)?n[t].promise().done(a(t,l,n)).fail(o.reject).progress(a(t,u,s)):--i;return i||o.resolveWith(l,n),o.promise()}}),b.support=function(){var t,n,r,a,s,u,l,c,p,f,d=o.createElement("div");if(d.setAttribute("className","t"),d.innerHTML="  <link/><table></table><a href='/a'>a</a><input type='checkbox'/>",n=d.getElementsByTagName("*"),r=d.getElementsByTagName("a")[0],!n||!r||!n.length)return{};s=o.createElement("select"),l=s.appendChild(o.createElement("option")),a=d.getElementsByTagName("input")[0],r.style.cssText="top:1px;float:left;opacity:.5",t={getSetAttribute:"t"!==d.className,leadingWhitespace:3===d.firstChild.nodeType,tbody:!d.getElementsByTagName("tbody").length,htmlSerialize:!!d.getElementsByTagName("link").length,style:/top/.test(r.getAttribute("style")),hrefNormalized:"/a"===r.getAttribute("href"),opacity:/^0.5/.test(r.style.opacity),cssFloat:!!r.style.cssFloat,checkOn:!!a.value,optSelected:l.selected,enctype:!!o.createElement("form").enctype,html5Clone:"<:nav></:nav>"!==o.createElement("nav").cloneNode(!0).outerHTML,boxModel:"CSS1Compat"===o.compatMode,deleteExpando:!0,noCloneEvent:!0,inlineBlockNeedsLayout:!1,shrinkWrapBlocks:!1,reliableMarginRight:!0,boxSizingReliable:!0,pixelPosition:!1},a.checked=!0,t.noCloneChecked=a.cloneNode(!0).checked,s.disabled=!0,t.optDisabled=!l.disabled;try{delete d.test}catch(h){t.deleteExpando=!1}a=o.createElement("input"),a.setAttribute("value",""),t.input=""===a.getAttribute("value"),a.value="t",a.setAttribute("type","radio"),t.radioValue="t"===a.value,a.setAttribute("checked","t"),a.setAttribute("name","t"),u=o.createDocumentFragment(),u.appendChild(a),t.appendChecked=a.checked,t.checkClone=u.cloneNode(!0).cloneNode(!0).lastChild.checked,d.attachEvent&&(d.attachEvent("onclick",function(){t.noCloneEvent=!1}),d.cloneNode(!0).click());for(f in{submit:!0,change:!0,focusin:!0})d.setAttribute(c="on"+f,"t"),t[f+"Bubbles"]=c in e||d.attributes[c].expando===!1;return d.style.backgroundClip="content-box",d.cloneNode(!0).style.backgroundClip="",t.clearCloneStyle="content-box"===d.style.backgroundClip,b(function(){var n,r,a,s="padding:0;margin:0;border:0;display:block;box-sizing:content-box;-moz-box-sizing:content-box;-webkit-box-sizing:content-box;",u=o.getElementsByTagName("body")[0];u&&(n=o.createElement("div"),n.style.cssText="border:0;width:0;height:0;position:absolute;top:0;left:-9999px;margin-top:1px",u.appendChild(n).appendChild(d),d.innerHTML="<table><tr><td></td><td>t</td></tr></table>",a=d.getElementsByTagName("td"),a[0].style.cssText="padding:0;margin:0;border:0;display:none",p=0===a[0].offsetHeight,a[0].style.display="",a[1].style.display="none",t.reliableHiddenOffsets=p&&0===a[0].offsetHeight,d.innerHTML="",d.style.cssText="box-sizing:border-box;-moz-box-sizing:border-box;-webkit-box-sizing:border-box;padding:1px;border:1px;display:block;width:4px;margin-top:1%;position:absolute;top:1%;",t.boxSizing=4===d.offsetWidth,t.doesNotIncludeMarginInBodyOffset=1!==u.offsetTop,e.getComputedStyle&&(t.pixelPosition="1%"!==(e.getComputedStyle(d,null)||{}).top,t.boxSizingReliable="4px"===(e.getComputedStyle(d,null)||{width:"4px"}).width,r=d.appendChild(o.createElement("div")),r.style.cssText=d.style.cssText=s,r.style.marginRight=r.style.width="0",d.style.width="1px",t.reliableMarginRight=!parseFloat((e.getComputedStyle(r,null)||{}).marginRight)),typeof d.style.zoom!==i&&(d.innerHTML="",d.style.cssText=s+"width:1px;padding:1px;display:inline;zoom:1",t.inlineBlockNeedsLayout=3===d.offsetWidth,d.style.display="block",d.innerHTML="<div></div>",d.firstChild.style.width="5px",t.shrinkWrapBlocks=3!==d.offsetWidth,t.inlineBlockNeedsLayout&&(u.style.zoom=1)),u.removeChild(n),n=d=a=r=null)}),n=s=u=l=r=a=null,t}();var O=/(?:\{[\s\S]*\}|\[[\s\S]*\])$/,B=/([A-Z])/g;function P(e,n,r,i){if(b.acceptData(e)){var o,a,s=b.expando,u="string"==typeof n,l=e.nodeType,p=l?b.cache:e,f=l?e[s]:e[s]&&s;if(f&&p[f]&&(i||p[f].data)||!u||r!==t)return f||(l?e[s]=f=c.pop()||b.guid++:f=s),p[f]||(p[f]={},l||(p[f].toJSON=b.noop)),("object"==typeof n||"function"==typeof n)&&(i?p[f]=b.extend(p[f],n):p[f].data=b.extend(p[f].data,n)),o=p[f],i||(o.data||(o.data={}),o=o.data),r!==t&&(o[b.camelCase(n)]=r),u?(a=o[n],null==a&&(a=o[b.camelCase(n)])):a=o,a}}function R(e,t,n){if(b.acceptData(e)){var r,i,o,a=e.nodeType,s=a?b.cache:e,u=a?e[b.expando]:b.expando;if(s[u]){if(t&&(o=n?s[u]:s[u].data)){b.isArray(t)?t=t.concat(b.map(t,b.camelCase)):t in o?t=[t]:(t=b.camelCase(t),t=t in o?[t]:t.split(" "));for(r=0,i=t.length;i>r;r++)delete o[t[r]];if(!(n?$:b.isEmptyObject)(o))return}(n||(delete s[u].data,$(s[u])))&&(a?b.cleanData([e],!0):b.support.deleteExpando||s!=s.window?delete s[u]:s[u]=null)}}}b.extend({cache:{},expando:"jQuery"+(p+Math.random()).replace(/\D/g,""),noData:{embed:!0,object:"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000",applet:!0},hasData:function(e){return e=e.nodeType?b.cache[e[b.expando]]:e[b.expando],!!e&&!$(e)},data:function(e,t,n){return P(e,t,n)},removeData:function(e,t){return R(e,t)},_data:function(e,t,n){return P(e,t,n,!0)},_removeData:function(e,t){return R(e,t,!0)},acceptData:function(e){if(e.nodeType&&1!==e.nodeType&&9!==e.nodeType)return!1;var t=e.nodeName&&b.noData[e.nodeName.toLowerCase()];return!t||t!==!0&&e.getAttribute("classid")===t}}),b.fn.extend({data:function(e,n){var r,i,o=this[0],a=0,s=null;if(e===t){if(this.length&&(s=b.data(o),1===o.nodeType&&!b._data(o,"parsedAttrs"))){for(r=o.attributes;r.length>a;a++)i=r[a].name,i.indexOf("data-")||(i=b.camelCase(i.slice(5)),W(o,i,s[i]));b._data(o,"parsedAttrs",!0)}return s}return"object"==typeof e?this.each(function(){b.data(this,e)}):b.access(this,function(n){return n===t?o?W(o,e,b.data(o,e)):null:(this.each(function(){b.data(this,e,n)}),t)},null,n,arguments.length>1,null,!0)},removeData:function(e){return this.each(function(){b.removeData(this,e)})}});function W(e,n,r){if(r===t&&1===e.nodeType){var i="data-"+n.replace(B,"-$1").toLowerCase();if(r=e.getAttribute(i),"string"==typeof r){try{r="true"===r?!0:"false"===r?!1:"null"===r?null:+r+""===r?+r:O.test(r)?b.parseJSON(r):r}catch(o){}b.data(e,n,r)}else r=t}return r}function $(e){var t;for(t in e)if(("data"!==t||!b.isEmptyObject(e[t]))&&"toJSON"!==t)return!1;return!0}b.extend({queue:function(e,n,r){var i;return e?(n=(n||"fx")+"queue",i=b._data(e,n),r&&(!i||b.isArray(r)?i=b._data(e,n,b.makeArray(r)):i.push(r)),i||[]):t},dequeue:function(e,t){t=t||"fx";var n=b.queue(e,t),r=n.length,i=n.shift(),o=b._queueHooks(e,t),a=function(){b.dequeue(e,t)};"inprogress"===i&&(i=n.shift(),r--),o.cur=i,i&&("fx"===t&&n.unshift("inprogress"),delete o.stop,i.call(e,a,o)),!r&&o&&o.empty.fire()},_queueHooks:function(e,t){var n=t+"queueHooks";return b._data(e,n)||b._data(e,n,{empty:b.Callbacks("once memory").add(function(){b._removeData(e,t+"queue"),b._removeData(e,n)})})}}),b.fn.extend({queue:function(e,n){var r=2;return"string"!=typeof e&&(n=e,e="fx",r--),r>arguments.length?b.queue(this[0],e):n===t?this:this.each(function(){var t=b.queue(this,e,n);b._queueHooks(this,e),"fx"===e&&"inprogress"!==t[0]&&b.dequeue(this,e)})},dequeue:function(e){return this.each(function(){b.dequeue(this,e)})},delay:function(e,t){return e=b.fx?b.fx.speeds[e]||e:e,t=t||"fx",this.queue(t,function(t,n){var r=setTimeout(t,e);n.stop=function(){clearTimeout(r)}})},clearQueue:function(e){return this.queue(e||"fx",[])},promise:function(e,n){var r,i=1,o=b.Deferred(),a=this,s=this.length,u=function(){--i||o.resolveWith(a,[a])};"string"!=typeof e&&(n=e,e=t),e=e||"fx";while(s--)r=b._data(a[s],e+"queueHooks"),r&&r.empty&&(i++,r.empty.add(u));return u(),o.promise(n)}});var I,z,X=/[\t\r\n]/g,U=/\r/g,V=/^(?:input|select|textarea|button|object)$/i,Y=/^(?:a|area)$/i,J=/^(?:checked|selected|autofocus|autoplay|async|controls|defer|disabled|hidden|loop|multiple|open|readonly|required|scoped)$/i,G=/^(?:checked|selected)$/i,Q=b.support.getSetAttribute,K=b.support.input;b.fn.extend({attr:function(e,t){return b.access(this,b.attr,e,t,arguments.length>1)},removeAttr:function(e){return this.each(function(){b.removeAttr(this,e)})},prop:function(e,t){return b.access(this,b.prop,e,t,arguments.length>1)},removeProp:function(e){return e=b.propFix[e]||e,this.each(function(){try{this[e]=t,delete this[e]}catch(n){}})},addClass:function(e){var t,n,r,i,o,a=0,s=this.length,u="string"==typeof e&&e;if(b.isFunction(e))return this.each(function(t){b(this).addClass(e.call(this,t,this.className))});if(u)for(t=(e||"").match(w)||[];s>a;a++)if(n=this[a],r=1===n.nodeType&&(n.className?(" "+n.className+" ").replace(X," "):" ")){o=0;while(i=t[o++])0>r.indexOf(" "+i+" ")&&(r+=i+" ");n.className=b.trim(r)}return this},removeClass:function(e){var t,n,r,i,o,a=0,s=this.length,u=0===arguments.length||"string"==typeof e&&e;if(b.isFunction(e))return this.each(function(t){b(this).removeClass(e.call(this,t,this.className))});if(u)for(t=(e||"").match(w)||[];s>a;a++)if(n=this[a],r=1===n.nodeType&&(n.className?(" "+n.className+" ").replace(X," "):"")){o=0;while(i=t[o++])while(r.indexOf(" "+i+" ")>=0)r=r.replace(" "+i+" "," ");n.className=e?b.trim(r):""}return this},toggleClass:function(e,t){var n=typeof e,r="boolean"==typeof t;return b.isFunction(e)?this.each(function(n){b(this).toggleClass(e.call(this,n,this.className,t),t)}):this.each(function(){if("string"===n){var o,a=0,s=b(this),u=t,l=e.match(w)||[];while(o=l[a++])u=r?u:!s.hasClass(o),s[u?"addClass":"removeClass"](o)}else(n===i||"boolean"===n)&&(this.className&&b._data(this,"__className__",this.className),this.className=this.className||e===!1?"":b._data(this,"__className__")||"")})},hasClass:function(e){var t=" "+e+" ",n=0,r=this.length;for(;r>n;n++)if(1===this[n].nodeType&&(" "+this[n].className+" ").replace(X," ").indexOf(t)>=0)return!0;return!1},val:function(e){var n,r,i,o=this[0];{if(arguments.length)return i=b.isFunction(e),this.each(function(n){var o,a=b(this);1===this.nodeType&&(o=i?e.call(this,n,a.val()):e,null==o?o="":"number"==typeof o?o+="":b.isArray(o)&&(o=b.map(o,function(e){return null==e?"":e+""})),r=b.valHooks[this.type]||b.valHooks[this.nodeName.toLowerCase()],r&&"set"in r&&r.set(this,o,"value")!==t||(this.value=o))});if(o)return r=b.valHooks[o.type]||b.valHooks[o.nodeName.toLowerCase()],r&&"get"in r&&(n=r.get(o,"value"))!==t?n:(n=o.value,"string"==typeof n?n.replace(U,""):null==n?"":n)}}}),b.extend({valHooks:{option:{get:function(e){var t=e.attributes.value;return!t||t.specified?e.value:e.text}},select:{get:function(e){var t,n,r=e.options,i=e.selectedIndex,o="select-one"===e.type||0>i,a=o?null:[],s=o?i+1:r.length,u=0>i?s:o?i:0;for(;s>u;u++)if(n=r[u],!(!n.selected&&u!==i||(b.support.optDisabled?n.disabled:null!==n.getAttribute("disabled"))||n.parentNode.disabled&&b.nodeName(n.parentNode,"optgroup"))){if(t=b(n).val(),o)return t;a.push(t)}return a},set:function(e,t){var n=b.makeArray(t);return b(e).find("option").each(function(){this.selected=b.inArray(b(this).val(),n)>=0}),n.length||(e.selectedIndex=-1),n}}},attr:function(e,n,r){var o,a,s,u=e.nodeType;if(e&&3!==u&&8!==u&&2!==u)return typeof e.getAttribute===i?b.prop(e,n,r):(a=1!==u||!b.isXMLDoc(e),a&&(n=n.toLowerCase(),o=b.attrHooks[n]||(J.test(n)?z:I)),r===t?o&&a&&"get"in o&&null!==(s=o.get(e,n))?s:(typeof e.getAttribute!==i&&(s=e.getAttribute(n)),null==s?t:s):null!==r?o&&a&&"set"in o&&(s=o.set(e,r,n))!==t?s:(e.setAttribute(n,r+""),r):(b.removeAttr(e,n),t))},removeAttr:function(e,t){var n,r,i=0,o=t&&t.match(w);if(o&&1===e.nodeType)while(n=o[i++])r=b.propFix[n]||n,J.test(n)?!Q&&G.test(n)?e[b.camelCase("default-"+n)]=e[r]=!1:e[r]=!1:b.attr(e,n,""),e.removeAttribute(Q?n:r)},attrHooks:{type:{set:function(e,t){if(!b.support.radioValue&&"radio"===t&&b.nodeName(e,"input")){var n=e.value;return e.setAttribute("type",t),n&&(e.value=n),t}}}},propFix:{tabindex:"tabIndex",readonly:"readOnly","for":"htmlFor","class":"className",maxlength:"maxLength",cellspacing:"cellSpacing",cellpadding:"cellPadding",rowspan:"rowSpan",colspan:"colSpan",usemap:"useMap",frameborder:"frameBorder",contenteditable:"contentEditable"},prop:function(e,n,r){var i,o,a,s=e.nodeType;if(e&&3!==s&&8!==s&&2!==s)return a=1!==s||!b.isXMLDoc(e),a&&(n=b.propFix[n]||n,o=b.propHooks[n]),r!==t?o&&"set"in o&&(i=o.set(e,r,n))!==t?i:e[n]=r:o&&"get"in o&&null!==(i=o.get(e,n))?i:e[n]},propHooks:{tabIndex:{get:function(e){var n=e.getAttributeNode("tabindex");return n&&n.specified?parseInt(n.value,10):V.test(e.nodeName)||Y.test(e.nodeName)&&e.href?0:t}}}}),z={get:function(e,n){var r=b.prop(e,n),i="boolean"==typeof r&&e.getAttribute(n),o="boolean"==typeof r?K&&Q?null!=i:G.test(n)?e[b.camelCase("default-"+n)]:!!i:e.getAttributeNode(n);return o&&o.value!==!1?n.toLowerCase():t},set:function(e,t,n){return t===!1?b.removeAttr(e,n):K&&Q||!G.test(n)?e.setAttribute(!Q&&b.propFix[n]||n,n):e[b.camelCase("default-"+n)]=e[n]=!0,n}},K&&Q||(b.attrHooks.value={get:function(e,n){var r=e.getAttributeNode(n);return b.nodeName(e,"input")?e.defaultValue:r&&r.specified?r.value:t},set:function(e,n,r){return b.nodeName(e,"input")?(e.defaultValue=n,t):I&&I.set(e,n,r)}}),Q||(I=b.valHooks.button={get:function(e,n){var r=e.getAttributeNode(n);return r&&("id"===n||"name"===n||"coords"===n?""!==r.value:r.specified)?r.value:t},set:function(e,n,r){var i=e.getAttributeNode(r);return i||e.setAttributeNode(i=e.ownerDocument.createAttribute(r)),i.value=n+="","value"===r||n===e.getAttribute(r)?n:t}},b.attrHooks.contenteditable={get:I.get,set:function(e,t,n){I.set(e,""===t?!1:t,n)}},b.each(["width","height"],function(e,n){b.attrHooks[n]=b.extend(b.attrHooks[n],{set:function(e,r){return""===r?(e.setAttribute(n,"auto"),r):t}})})),b.support.hrefNormalized||(b.each(["href","src","width","height"],function(e,n){b.attrHooks[n]=b.extend(b.attrHooks[n],{get:function(e){var r=e.getAttribute(n,2);return null==r?t:r}})}),b.each(["href","src"],function(e,t){b.propHooks[t]={get:function(e){return e.getAttribute(t,4)}}})),b.support.style||(b.attrHooks.style={get:function(e){return e.style.cssText||t},set:function(e,t){return e.style.cssText=t+""}}),b.support.optSelected||(b.propHooks.selected=b.extend(b.propHooks.selected,{get:function(e){var t=e.parentNode;return t&&(t.selectedIndex,t.parentNode&&t.parentNode.selectedIndex),null}})),b.support.enctype||(b.propFix.enctype="encoding"),b.support.checkOn||b.each(["radio","checkbox"],function(){b.valHooks[this]={get:function(e){return null===e.getAttribute("value")?"on":e.value}}}),b.each(["radio","checkbox"],function(){b.valHooks[this]=b.extend(b.valHooks[this],{set:function(e,n){return b.isArray(n)?e.checked=b.inArray(b(e).val(),n)>=0:t}})});var Z=/^(?:input|select|textarea)$/i,et=/^key/,tt=/^(?:mouse|contextmenu)|click/,nt=/^(?:focusinfocus|focusoutblur)$/,rt=/^([^.]*)(?:\.(.+)|)$/;function it(){return!0}function ot(){return!1}b.event={global:{},add:function(e,n,r,o,a){var s,u,l,c,p,f,d,h,g,m,y,v=b._data(e);if(v){r.handler&&(c=r,r=c.handler,a=c.selector),r.guid||(r.guid=b.guid++),(u=v.events)||(u=v.events={}),(f=v.handle)||(f=v.handle=function(e){return typeof b===i||e&&b.event.triggered===e.type?t:b.event.dispatch.apply(f.elem,arguments)},f.elem=e),n=(n||"").match(w)||[""],l=n.length;while(l--)s=rt.exec(n[l])||[],g=y=s[1],m=(s[2]||"").split(".").sort(),p=b.event.special[g]||{},g=(a?p.delegateType:p.bindType)||g,p=b.event.special[g]||{},d=b.extend({type:g,origType:y,data:o,handler:r,guid:r.guid,selector:a,needsContext:a&&b.expr.match.needsContext.test(a),namespace:m.join(".")},c),(h=u[g])||(h=u[g]=[],h.delegateCount=0,p.setup&&p.setup.call(e,o,m,f)!==!1||(e.addEventListener?e.addEventListener(g,f,!1):e.attachEvent&&e.attachEvent("on"+g,f))),p.add&&(p.add.call(e,d),d.handler.guid||(d.handler.guid=r.guid)),a?h.splice(h.delegateCount++,0,d):h.push(d),b.event.global[g]=!0;e=null}},remove:function(e,t,n,r,i){var o,a,s,u,l,c,p,f,d,h,g,m=b.hasData(e)&&b._data(e);if(m&&(c=m.events)){t=(t||"").match(w)||[""],l=t.length;while(l--)if(s=rt.exec(t[l])||[],d=g=s[1],h=(s[2]||"").split(".").sort(),d){p=b.event.special[d]||{},d=(r?p.delegateType:p.bindType)||d,f=c[d]||[],s=s[2]&&RegExp("(^|\\.)"+h.join("\\.(?:.*\\.|)")+"(\\.|$)"),u=o=f.length;while(o--)a=f[o],!i&&g!==a.origType||n&&n.guid!==a.guid||s&&!s.test(a.namespace)||r&&r!==a.selector&&("**"!==r||!a.selector)||(f.splice(o,1),a.selector&&f.delegateCount--,p.remove&&p.remove.call(e,a));u&&!f.length&&(p.teardown&&p.teardown.call(e,h,m.handle)!==!1||b.removeEvent(e,d,m.handle),delete c[d])}else for(d in c)b.event.remove(e,d+t[l],n,r,!0);b.isEmptyObject(c)&&(delete m.handle,b._removeData(e,"events"))}},trigger:function(n,r,i,a){var s,u,l,c,p,f,d,h=[i||o],g=y.call(n,"type")?n.type:n,m=y.call(n,"namespace")?n.namespace.split("."):[];if(l=f=i=i||o,3!==i.nodeType&&8!==i.nodeType&&!nt.test(g+b.event.triggered)&&(g.indexOf(".")>=0&&(m=g.split("."),g=m.shift(),m.sort()),u=0>g.indexOf(":")&&"on"+g,n=n[b.expando]?n:new b.Event(g,"object"==typeof n&&n),n.isTrigger=!0,n.namespace=m.join("."),n.namespace_re=n.namespace?RegExp("(^|\\.)"+m.join("\\.(?:.*\\.|)")+"(\\.|$)"):null,n.result=t,n.target||(n.target=i),r=null==r?[n]:b.makeArray(r,[n]),p=b.event.special[g]||{},a||!p.trigger||p.trigger.apply(i,r)!==!1)){if(!a&&!p.noBubble&&!b.isWindow(i)){for(c=p.delegateType||g,nt.test(c+g)||(l=l.parentNode);l;l=l.parentNode)h.push(l),f=l;f===(i.ownerDocument||o)&&h.push(f.defaultView||f.parentWindow||e)}d=0;while((l=h[d++])&&!n.isPropagationStopped())n.type=d>1?c:p.bindType||g,s=(b._data(l,"events")||{})[n.type]&&b._data(l,"handle"),s&&s.apply(l,r),s=u&&l[u],s&&b.acceptData(l)&&s.apply&&s.apply(l,r)===!1&&n.preventDefault();if(n.type=g,!(a||n.isDefaultPrevented()||p._default&&p._default.apply(i.ownerDocument,r)!==!1||"click"===g&&b.nodeName(i,"a")||!b.acceptData(i)||!u||!i[g]||b.isWindow(i))){f=i[u],f&&(i[u]=null),b.event.triggered=g;try{i[g]()}catch(v){}b.event.triggered=t,f&&(i[u]=f)}return n.result}},dispatch:function(e){e=b.event.fix(e);var n,r,i,o,a,s=[],u=h.call(arguments),l=(b._data(this,"events")||{})[e.type]||[],c=b.event.special[e.type]||{};if(u[0]=e,e.delegateTarget=this,!c.preDispatch||c.preDispatch.call(this,e)!==!1){s=b.event.handlers.call(this,e,l),n=0;while((o=s[n++])&&!e.isPropagationStopped()){e.currentTarget=o.elem,a=0;while((i=o.handlers[a++])&&!e.isImmediatePropagationStopped())(!e.namespace_re||e.namespace_re.test(i.namespace))&&(e.handleObj=i,e.data=i.data,r=((b.event.special[i.origType]||{}).handle||i.handler).apply(o.elem,u),r!==t&&(e.result=r)===!1&&(e.preventDefault(),e.stopPropagation()))}return c.postDispatch&&c.postDispatch.call(this,e),e.result}},handlers:function(e,n){var r,i,o,a,s=[],u=n.delegateCount,l=e.target;if(u&&l.nodeType&&(!e.button||"click"!==e.type))for(;l!=this;l=l.parentNode||this)if(1===l.nodeType&&(l.disabled!==!0||"click"!==e.type)){for(o=[],a=0;u>a;a++)i=n[a],r=i.selector+" ",o[r]===t&&(o[r]=i.needsContext?b(r,this).index(l)>=0:b.find(r,this,null,[l]).length),o[r]&&o.push(i);o.length&&s.push({elem:l,handlers:o})}return n.length>u&&s.push({elem:this,handlers:n.slice(u)}),s},fix:function(e){if(e[b.expando])return e;var t,n,r,i=e.type,a=e,s=this.fixHooks[i];s||(this.fixHooks[i]=s=tt.test(i)?this.mouseHooks:et.test(i)?this.keyHooks:{}),r=s.props?this.props.concat(s.props):this.props,e=new b.Event(a),t=r.length;while(t--)n=r[t],e[n]=a[n];return e.target||(e.target=a.srcElement||o),3===e.target.nodeType&&(e.target=e.target.parentNode),e.metaKey=!!e.metaKey,s.filter?s.filter(e,a):e},props:"altKey bubbles cancelable ctrlKey currentTarget eventPhase metaKey relatedTarget shiftKey target timeStamp view which".split(" "),fixHooks:{},keyHooks:{props:"char charCode key keyCode".split(" "),filter:function(e,t){return null==e.which&&(e.which=null!=t.charCode?t.charCode:t.keyCode),e}},mouseHooks:{props:"button buttons clientX clientY fromElement offsetX offsetY pageX pageY screenX screenY toElement".split(" "),filter:function(e,n){var r,i,a,s=n.button,u=n.fromElement;return null==e.pageX&&null!=n.clientX&&(i=e.target.ownerDocument||o,a=i.documentElement,r=i.body,e.pageX=n.clientX+(a&&a.scrollLeft||r&&r.scrollLeft||0)-(a&&a.clientLeft||r&&r.clientLeft||0),e.pageY=n.clientY+(a&&a.scrollTop||r&&r.scrollTop||0)-(a&&a.clientTop||r&&r.clientTop||0)),!e.relatedTarget&&u&&(e.relatedTarget=u===e.target?n.toElement:u),e.which||s===t||(e.which=1&s?1:2&s?3:4&s?2:0),e}},special:{load:{noBubble:!0},click:{trigger:function(){return b.nodeName(this,"input")&&"checkbox"===this.type&&this.click?(this.click(),!1):t}},focus:{trigger:function(){if(this!==o.activeElement&&this.focus)try{return this.focus(),!1}catch(e){}},delegateType:"focusin"},blur:{trigger:function(){return this===o.activeElement&&this.blur?(this.blur(),!1):t},delegateType:"focusout"},beforeunload:{postDispatch:function(e){e.result!==t&&(e.originalEvent.returnValue=e.result)}}},simulate:function(e,t,n,r){var i=b.extend(new b.Event,n,{type:e,isSimulated:!0,originalEvent:{}});r?b.event.trigger(i,null,t):b.event.dispatch.call(t,i),i.isDefaultPrevented()&&n.preventDefault()}},b.removeEvent=o.removeEventListener?function(e,t,n){e.removeEventListener&&e.removeEventListener(t,n,!1)}:function(e,t,n){var r="on"+t;e.detachEvent&&(typeof e[r]===i&&(e[r]=null),e.detachEvent(r,n))},b.Event=function(e,n){return this instanceof b.Event?(e&&e.type?(this.originalEvent=e,this.type=e.type,this.isDefaultPrevented=e.defaultPrevented||e.returnValue===!1||e.getPreventDefault&&e.getPreventDefault()?it:ot):this.type=e,n&&b.extend(this,n),this.timeStamp=e&&e.timeStamp||b.now(),this[b.expando]=!0,t):new b.Event(e,n)},b.Event.prototype={isDefaultPrevented:ot,isPropagationStopped:ot,isImmediatePropagationStopped:ot,preventDefault:function(){var e=this.originalEvent;this.isDefaultPrevented=it,e&&(e.preventDefault?e.preventDefault():e.returnValue=!1)},stopPropagation:function(){var e=this.originalEvent;this.isPropagationStopped=it,e&&(e.stopPropagation&&e.stopPropagation(),e.cancelBubble=!0)},stopImmediatePropagation:function(){this.isImmediatePropagationStopped=it,this.stopPropagation()}},b.each({mouseenter:"mouseover",mouseleave:"mouseout"},function(e,t){b.event.special[e]={delegateType:t,bindType:t,handle:function(e){var n,r=this,i=e.relatedTarget,o=e.handleObj;
return(!i||i!==r&&!b.contains(r,i))&&(e.type=o.origType,n=o.handler.apply(this,arguments),e.type=t),n}}}),b.support.submitBubbles||(b.event.special.submit={setup:function(){return b.nodeName(this,"form")?!1:(b.event.add(this,"click._submit keypress._submit",function(e){var n=e.target,r=b.nodeName(n,"input")||b.nodeName(n,"button")?n.form:t;r&&!b._data(r,"submitBubbles")&&(b.event.add(r,"submit._submit",function(e){e._submit_bubble=!0}),b._data(r,"submitBubbles",!0))}),t)},postDispatch:function(e){e._submit_bubble&&(delete e._submit_bubble,this.parentNode&&!e.isTrigger&&b.event.simulate("submit",this.parentNode,e,!0))},teardown:function(){return b.nodeName(this,"form")?!1:(b.event.remove(this,"._submit"),t)}}),b.support.changeBubbles||(b.event.special.change={setup:function(){return Z.test(this.nodeName)?(("checkbox"===this.type||"radio"===this.type)&&(b.event.add(this,"propertychange._change",function(e){"checked"===e.originalEvent.propertyName&&(this._just_changed=!0)}),b.event.add(this,"click._change",function(e){this._just_changed&&!e.isTrigger&&(this._just_changed=!1),b.event.simulate("change",this,e,!0)})),!1):(b.event.add(this,"beforeactivate._change",function(e){var t=e.target;Z.test(t.nodeName)&&!b._data(t,"changeBubbles")&&(b.event.add(t,"change._change",function(e){!this.parentNode||e.isSimulated||e.isTrigger||b.event.simulate("change",this.parentNode,e,!0)}),b._data(t,"changeBubbles",!0))}),t)},handle:function(e){var n=e.target;return this!==n||e.isSimulated||e.isTrigger||"radio"!==n.type&&"checkbox"!==n.type?e.handleObj.handler.apply(this,arguments):t},teardown:function(){return b.event.remove(this,"._change"),!Z.test(this.nodeName)}}),b.support.focusinBubbles||b.each({focus:"focusin",blur:"focusout"},function(e,t){var n=0,r=function(e){b.event.simulate(t,e.target,b.event.fix(e),!0)};b.event.special[t]={setup:function(){0===n++&&o.addEventListener(e,r,!0)},teardown:function(){0===--n&&o.removeEventListener(e,r,!0)}}}),b.fn.extend({on:function(e,n,r,i,o){var a,s;if("object"==typeof e){"string"!=typeof n&&(r=r||n,n=t);for(a in e)this.on(a,n,r,e[a],o);return this}if(null==r&&null==i?(i=n,r=n=t):null==i&&("string"==typeof n?(i=r,r=t):(i=r,r=n,n=t)),i===!1)i=ot;else if(!i)return this;return 1===o&&(s=i,i=function(e){return b().off(e),s.apply(this,arguments)},i.guid=s.guid||(s.guid=b.guid++)),this.each(function(){b.event.add(this,e,i,r,n)})},one:function(e,t,n,r){return this.on(e,t,n,r,1)},off:function(e,n,r){var i,o;if(e&&e.preventDefault&&e.handleObj)return i=e.handleObj,b(e.delegateTarget).off(i.namespace?i.origType+"."+i.namespace:i.origType,i.selector,i.handler),this;if("object"==typeof e){for(o in e)this.off(o,n,e[o]);return this}return(n===!1||"function"==typeof n)&&(r=n,n=t),r===!1&&(r=ot),this.each(function(){b.event.remove(this,e,r,n)})},bind:function(e,t,n){return this.on(e,null,t,n)},unbind:function(e,t){return this.off(e,null,t)},delegate:function(e,t,n,r){return this.on(t,e,n,r)},undelegate:function(e,t,n){return 1===arguments.length?this.off(e,"**"):this.off(t,e||"**",n)},trigger:function(e,t){return this.each(function(){b.event.trigger(e,t,this)})},triggerHandler:function(e,n){var r=this[0];return r?b.event.trigger(e,n,r,!0):t}}),function(e,t){var n,r,i,o,a,s,u,l,c,p,f,d,h,g,m,y,v,x="sizzle"+-new Date,w=e.document,T={},N=0,C=0,k=it(),E=it(),S=it(),A=typeof t,j=1<<31,D=[],L=D.pop,H=D.push,q=D.slice,M=D.indexOf||function(e){var t=0,n=this.length;for(;n>t;t++)if(this[t]===e)return t;return-1},_="[\\x20\\t\\r\\n\\f]",F="(?:\\\\.|[\\w-]|[^\\x00-\\xa0])+",O=F.replace("w","w#"),B="([*^$|!~]?=)",P="\\["+_+"*("+F+")"+_+"*(?:"+B+_+"*(?:(['\"])((?:\\\\.|[^\\\\])*?)\\3|("+O+")|)|)"+_+"*\\]",R=":("+F+")(?:\\(((['\"])((?:\\\\.|[^\\\\])*?)\\3|((?:\\\\.|[^\\\\()[\\]]|"+P.replace(3,8)+")*)|.*)\\)|)",W=RegExp("^"+_+"+|((?:^|[^\\\\])(?:\\\\.)*)"+_+"+$","g"),$=RegExp("^"+_+"*,"+_+"*"),I=RegExp("^"+_+"*([\\x20\\t\\r\\n\\f>+~])"+_+"*"),z=RegExp(R),X=RegExp("^"+O+"$"),U={ID:RegExp("^#("+F+")"),CLASS:RegExp("^\\.("+F+")"),NAME:RegExp("^\\[name=['\"]?("+F+")['\"]?\\]"),TAG:RegExp("^("+F.replace("w","w*")+")"),ATTR:RegExp("^"+P),PSEUDO:RegExp("^"+R),CHILD:RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+_+"*(even|odd|(([+-]|)(\\d*)n|)"+_+"*(?:([+-]|)"+_+"*(\\d+)|))"+_+"*\\)|)","i"),needsContext:RegExp("^"+_+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+_+"*((?:-\\d)?\\d*)"+_+"*\\)|)(?=[^-]|$)","i")},V=/[\x20\t\r\n\f]*[+~]/,Y=/^[^{]+\{\s*\[native code/,J=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,G=/^(?:input|select|textarea|button)$/i,Q=/^h\d$/i,K=/'|\\/g,Z=/\=[\x20\t\r\n\f]*([^'"\]]*)[\x20\t\r\n\f]*\]/g,et=/\\([\da-fA-F]{1,6}[\x20\t\r\n\f]?|.)/g,tt=function(e,t){var n="0x"+t-65536;return n!==n?t:0>n?String.fromCharCode(n+65536):String.fromCharCode(55296|n>>10,56320|1023&n)};try{q.call(w.documentElement.childNodes,0)[0].nodeType}catch(nt){q=function(e){var t,n=[];while(t=this[e++])n.push(t);return n}}function rt(e){return Y.test(e+"")}function it(){var e,t=[];return e=function(n,r){return t.push(n+=" ")>i.cacheLength&&delete e[t.shift()],e[n]=r}}function ot(e){return e[x]=!0,e}function at(e){var t=p.createElement("div");try{return e(t)}catch(n){return!1}finally{t=null}}function st(e,t,n,r){var i,o,a,s,u,l,f,g,m,v;if((t?t.ownerDocument||t:w)!==p&&c(t),t=t||p,n=n||[],!e||"string"!=typeof e)return n;if(1!==(s=t.nodeType)&&9!==s)return[];if(!d&&!r){if(i=J.exec(e))if(a=i[1]){if(9===s){if(o=t.getElementById(a),!o||!o.parentNode)return n;if(o.id===a)return n.push(o),n}else if(t.ownerDocument&&(o=t.ownerDocument.getElementById(a))&&y(t,o)&&o.id===a)return n.push(o),n}else{if(i[2])return H.apply(n,q.call(t.getElementsByTagName(e),0)),n;if((a=i[3])&&T.getByClassName&&t.getElementsByClassName)return H.apply(n,q.call(t.getElementsByClassName(a),0)),n}if(T.qsa&&!h.test(e)){if(f=!0,g=x,m=t,v=9===s&&e,1===s&&"object"!==t.nodeName.toLowerCase()){l=ft(e),(f=t.getAttribute("id"))?g=f.replace(K,"\\$&"):t.setAttribute("id",g),g="[id='"+g+"'] ",u=l.length;while(u--)l[u]=g+dt(l[u]);m=V.test(e)&&t.parentNode||t,v=l.join(",")}if(v)try{return H.apply(n,q.call(m.querySelectorAll(v),0)),n}catch(b){}finally{f||t.removeAttribute("id")}}}return wt(e.replace(W,"$1"),t,n,r)}a=st.isXML=function(e){var t=e&&(e.ownerDocument||e).documentElement;return t?"HTML"!==t.nodeName:!1},c=st.setDocument=function(e){var n=e?e.ownerDocument||e:w;return n!==p&&9===n.nodeType&&n.documentElement?(p=n,f=n.documentElement,d=a(n),T.tagNameNoComments=at(function(e){return e.appendChild(n.createComment("")),!e.getElementsByTagName("*").length}),T.attributes=at(function(e){e.innerHTML="<select></select>";var t=typeof e.lastChild.getAttribute("multiple");return"boolean"!==t&&"string"!==t}),T.getByClassName=at(function(e){return e.innerHTML="<div class='hidden e'></div><div class='hidden'></div>",e.getElementsByClassName&&e.getElementsByClassName("e").length?(e.lastChild.className="e",2===e.getElementsByClassName("e").length):!1}),T.getByName=at(function(e){e.id=x+0,e.innerHTML="<a name='"+x+"'></a><div name='"+x+"'></div>",f.insertBefore(e,f.firstChild);var t=n.getElementsByName&&n.getElementsByName(x).length===2+n.getElementsByName(x+0).length;return T.getIdNotName=!n.getElementById(x),f.removeChild(e),t}),i.attrHandle=at(function(e){return e.innerHTML="<a href='#'></a>",e.firstChild&&typeof e.firstChild.getAttribute!==A&&"#"===e.firstChild.getAttribute("href")})?{}:{href:function(e){return e.getAttribute("href",2)},type:function(e){return e.getAttribute("type")}},T.getIdNotName?(i.find.ID=function(e,t){if(typeof t.getElementById!==A&&!d){var n=t.getElementById(e);return n&&n.parentNode?[n]:[]}},i.filter.ID=function(e){var t=e.replace(et,tt);return function(e){return e.getAttribute("id")===t}}):(i.find.ID=function(e,n){if(typeof n.getElementById!==A&&!d){var r=n.getElementById(e);return r?r.id===e||typeof r.getAttributeNode!==A&&r.getAttributeNode("id").value===e?[r]:t:[]}},i.filter.ID=function(e){var t=e.replace(et,tt);return function(e){var n=typeof e.getAttributeNode!==A&&e.getAttributeNode("id");return n&&n.value===t}}),i.find.TAG=T.tagNameNoComments?function(e,n){return typeof n.getElementsByTagName!==A?n.getElementsByTagName(e):t}:function(e,t){var n,r=[],i=0,o=t.getElementsByTagName(e);if("*"===e){while(n=o[i++])1===n.nodeType&&r.push(n);return r}return o},i.find.NAME=T.getByName&&function(e,n){return typeof n.getElementsByName!==A?n.getElementsByName(name):t},i.find.CLASS=T.getByClassName&&function(e,n){return typeof n.getElementsByClassName===A||d?t:n.getElementsByClassName(e)},g=[],h=[":focus"],(T.qsa=rt(n.querySelectorAll))&&(at(function(e){e.innerHTML="<select><option selected=''></option></select>",e.querySelectorAll("[selected]").length||h.push("\\["+_+"*(?:checked|disabled|ismap|multiple|readonly|selected|value)"),e.querySelectorAll(":checked").length||h.push(":checked")}),at(function(e){e.innerHTML="<input type='hidden' i=''/>",e.querySelectorAll("[i^='']").length&&h.push("[*^$]="+_+"*(?:\"\"|'')"),e.querySelectorAll(":enabled").length||h.push(":enabled",":disabled"),e.querySelectorAll("*,:x"),h.push(",.*:")})),(T.matchesSelector=rt(m=f.matchesSelector||f.mozMatchesSelector||f.webkitMatchesSelector||f.oMatchesSelector||f.msMatchesSelector))&&at(function(e){T.disconnectedMatch=m.call(e,"div"),m.call(e,"[s!='']:x"),g.push("!=",R)}),h=RegExp(h.join("|")),g=RegExp(g.join("|")),y=rt(f.contains)||f.compareDocumentPosition?function(e,t){var n=9===e.nodeType?e.documentElement:e,r=t&&t.parentNode;return e===r||!(!r||1!==r.nodeType||!(n.contains?n.contains(r):e.compareDocumentPosition&&16&e.compareDocumentPosition(r)))}:function(e,t){if(t)while(t=t.parentNode)if(t===e)return!0;return!1},v=f.compareDocumentPosition?function(e,t){var r;return e===t?(u=!0,0):(r=t.compareDocumentPosition&&e.compareDocumentPosition&&e.compareDocumentPosition(t))?1&r||e.parentNode&&11===e.parentNode.nodeType?e===n||y(w,e)?-1:t===n||y(w,t)?1:0:4&r?-1:1:e.compareDocumentPosition?-1:1}:function(e,t){var r,i=0,o=e.parentNode,a=t.parentNode,s=[e],l=[t];if(e===t)return u=!0,0;if(!o||!a)return e===n?-1:t===n?1:o?-1:a?1:0;if(o===a)return ut(e,t);r=e;while(r=r.parentNode)s.unshift(r);r=t;while(r=r.parentNode)l.unshift(r);while(s[i]===l[i])i++;return i?ut(s[i],l[i]):s[i]===w?-1:l[i]===w?1:0},u=!1,[0,0].sort(v),T.detectDuplicates=u,p):p},st.matches=function(e,t){return st(e,null,null,t)},st.matchesSelector=function(e,t){if((e.ownerDocument||e)!==p&&c(e),t=t.replace(Z,"='$1']"),!(!T.matchesSelector||d||g&&g.test(t)||h.test(t)))try{var n=m.call(e,t);if(n||T.disconnectedMatch||e.document&&11!==e.document.nodeType)return n}catch(r){}return st(t,p,null,[e]).length>0},st.contains=function(e,t){return(e.ownerDocument||e)!==p&&c(e),y(e,t)},st.attr=function(e,t){var n;return(e.ownerDocument||e)!==p&&c(e),d||(t=t.toLowerCase()),(n=i.attrHandle[t])?n(e):d||T.attributes?e.getAttribute(t):((n=e.getAttributeNode(t))||e.getAttribute(t))&&e[t]===!0?t:n&&n.specified?n.value:null},st.error=function(e){throw Error("Syntax error, unrecognized expression: "+e)},st.uniqueSort=function(e){var t,n=[],r=1,i=0;if(u=!T.detectDuplicates,e.sort(v),u){for(;t=e[r];r++)t===e[r-1]&&(i=n.push(r));while(i--)e.splice(n[i],1)}return e};function ut(e,t){var n=t&&e,r=n&&(~t.sourceIndex||j)-(~e.sourceIndex||j);if(r)return r;if(n)while(n=n.nextSibling)if(n===t)return-1;return e?1:-1}function lt(e){return function(t){var n=t.nodeName.toLowerCase();return"input"===n&&t.type===e}}function ct(e){return function(t){var n=t.nodeName.toLowerCase();return("input"===n||"button"===n)&&t.type===e}}function pt(e){return ot(function(t){return t=+t,ot(function(n,r){var i,o=e([],n.length,t),a=o.length;while(a--)n[i=o[a]]&&(n[i]=!(r[i]=n[i]))})})}o=st.getText=function(e){var t,n="",r=0,i=e.nodeType;if(i){if(1===i||9===i||11===i){if("string"==typeof e.textContent)return e.textContent;for(e=e.firstChild;e;e=e.nextSibling)n+=o(e)}else if(3===i||4===i)return e.nodeValue}else for(;t=e[r];r++)n+=o(t);return n},i=st.selectors={cacheLength:50,createPseudo:ot,match:U,find:{},relative:{">":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace(et,tt),e[3]=(e[4]||e[5]||"").replace(et,tt),"~="===e[2]&&(e[3]=" "+e[3]+" "),e.slice(0,4)},CHILD:function(e){return e[1]=e[1].toLowerCase(),"nth"===e[1].slice(0,3)?(e[3]||st.error(e[0]),e[4]=+(e[4]?e[5]+(e[6]||1):2*("even"===e[3]||"odd"===e[3])),e[5]=+(e[7]+e[8]||"odd"===e[3])):e[3]&&st.error(e[0]),e},PSEUDO:function(e){var t,n=!e[5]&&e[2];return U.CHILD.test(e[0])?null:(e[4]?e[2]=e[4]:n&&z.test(n)&&(t=ft(n,!0))&&(t=n.indexOf(")",n.length-t)-n.length)&&(e[0]=e[0].slice(0,t),e[2]=n.slice(0,t)),e.slice(0,3))}},filter:{TAG:function(e){return"*"===e?function(){return!0}:(e=e.replace(et,tt).toLowerCase(),function(t){return t.nodeName&&t.nodeName.toLowerCase()===e})},CLASS:function(e){var t=k[e+" "];return t||(t=RegExp("(^|"+_+")"+e+"("+_+"|$)"))&&k(e,function(e){return t.test(e.className||typeof e.getAttribute!==A&&e.getAttribute("class")||"")})},ATTR:function(e,t,n){return function(r){var i=st.attr(r,e);return null==i?"!="===t:t?(i+="","="===t?i===n:"!="===t?i!==n:"^="===t?n&&0===i.indexOf(n):"*="===t?n&&i.indexOf(n)>-1:"$="===t?n&&i.slice(-n.length)===n:"~="===t?(" "+i+" ").indexOf(n)>-1:"|="===t?i===n||i.slice(0,n.length+1)===n+"-":!1):!0}},CHILD:function(e,t,n,r,i){var o="nth"!==e.slice(0,3),a="last"!==e.slice(-4),s="of-type"===t;return 1===r&&0===i?function(e){return!!e.parentNode}:function(t,n,u){var l,c,p,f,d,h,g=o!==a?"nextSibling":"previousSibling",m=t.parentNode,y=s&&t.nodeName.toLowerCase(),v=!u&&!s;if(m){if(o){while(g){p=t;while(p=p[g])if(s?p.nodeName.toLowerCase()===y:1===p.nodeType)return!1;h=g="only"===e&&!h&&"nextSibling"}return!0}if(h=[a?m.firstChild:m.lastChild],a&&v){c=m[x]||(m[x]={}),l=c[e]||[],d=l[0]===N&&l[1],f=l[0]===N&&l[2],p=d&&m.childNodes[d];while(p=++d&&p&&p[g]||(f=d=0)||h.pop())if(1===p.nodeType&&++f&&p===t){c[e]=[N,d,f];break}}else if(v&&(l=(t[x]||(t[x]={}))[e])&&l[0]===N)f=l[1];else while(p=++d&&p&&p[g]||(f=d=0)||h.pop())if((s?p.nodeName.toLowerCase()===y:1===p.nodeType)&&++f&&(v&&((p[x]||(p[x]={}))[e]=[N,f]),p===t))break;return f-=i,f===r||0===f%r&&f/r>=0}}},PSEUDO:function(e,t){var n,r=i.pseudos[e]||i.setFilters[e.toLowerCase()]||st.error("unsupported pseudo: "+e);return r[x]?r(t):r.length>1?(n=[e,e,"",t],i.setFilters.hasOwnProperty(e.toLowerCase())?ot(function(e,n){var i,o=r(e,t),a=o.length;while(a--)i=M.call(e,o[a]),e[i]=!(n[i]=o[a])}):function(e){return r(e,0,n)}):r}},pseudos:{not:ot(function(e){var t=[],n=[],r=s(e.replace(W,"$1"));return r[x]?ot(function(e,t,n,i){var o,a=r(e,null,i,[]),s=e.length;while(s--)(o=a[s])&&(e[s]=!(t[s]=o))}):function(e,i,o){return t[0]=e,r(t,null,o,n),!n.pop()}}),has:ot(function(e){return function(t){return st(e,t).length>0}}),contains:ot(function(e){return function(t){return(t.textContent||t.innerText||o(t)).indexOf(e)>-1}}),lang:ot(function(e){return X.test(e||"")||st.error("unsupported lang: "+e),e=e.replace(et,tt).toLowerCase(),function(t){var n;do if(n=d?t.getAttribute("xml:lang")||t.getAttribute("lang"):t.lang)return n=n.toLowerCase(),n===e||0===n.indexOf(e+"-");while((t=t.parentNode)&&1===t.nodeType);return!1}}),target:function(t){var n=e.location&&e.location.hash;return n&&n.slice(1)===t.id},root:function(e){return e===f},focus:function(e){return e===p.activeElement&&(!p.hasFocus||p.hasFocus())&&!!(e.type||e.href||~e.tabIndex)},enabled:function(e){return e.disabled===!1},disabled:function(e){return e.disabled===!0},checked:function(e){var t=e.nodeName.toLowerCase();return"input"===t&&!!e.checked||"option"===t&&!!e.selected},selected:function(e){return e.parentNode&&e.parentNode.selectedIndex,e.selected===!0},empty:function(e){for(e=e.firstChild;e;e=e.nextSibling)if(e.nodeName>"@"||3===e.nodeType||4===e.nodeType)return!1;return!0},parent:function(e){return!i.pseudos.empty(e)},header:function(e){return Q.test(e.nodeName)},input:function(e){return G.test(e.nodeName)},button:function(e){var t=e.nodeName.toLowerCase();return"input"===t&&"button"===e.type||"button"===t},text:function(e){var t;return"input"===e.nodeName.toLowerCase()&&"text"===e.type&&(null==(t=e.getAttribute("type"))||t.toLowerCase()===e.type)},first:pt(function(){return[0]}),last:pt(function(e,t){return[t-1]}),eq:pt(function(e,t,n){return[0>n?n+t:n]}),even:pt(function(e,t){var n=0;for(;t>n;n+=2)e.push(n);return e}),odd:pt(function(e,t){var n=1;for(;t>n;n+=2)e.push(n);return e}),lt:pt(function(e,t,n){var r=0>n?n+t:n;for(;--r>=0;)e.push(r);return e}),gt:pt(function(e,t,n){var r=0>n?n+t:n;for(;t>++r;)e.push(r);return e})}};for(n in{radio:!0,checkbox:!0,file:!0,password:!0,image:!0})i.pseudos[n]=lt(n);for(n in{submit:!0,reset:!0})i.pseudos[n]=ct(n);function ft(e,t){var n,r,o,a,s,u,l,c=E[e+" "];if(c)return t?0:c.slice(0);s=e,u=[],l=i.preFilter;while(s){(!n||(r=$.exec(s)))&&(r&&(s=s.slice(r[0].length)||s),u.push(o=[])),n=!1,(r=I.exec(s))&&(n=r.shift(),o.push({value:n,type:r[0].replace(W," ")}),s=s.slice(n.length));for(a in i.filter)!(r=U[a].exec(s))||l[a]&&!(r=l[a](r))||(n=r.shift(),o.push({value:n,type:a,matches:r}),s=s.slice(n.length));if(!n)break}return t?s.length:s?st.error(e):E(e,u).slice(0)}function dt(e){var t=0,n=e.length,r="";for(;n>t;t++)r+=e[t].value;return r}function ht(e,t,n){var i=t.dir,o=n&&"parentNode"===i,a=C++;return t.first?function(t,n,r){while(t=t[i])if(1===t.nodeType||o)return e(t,n,r)}:function(t,n,s){var u,l,c,p=N+" "+a;if(s){while(t=t[i])if((1===t.nodeType||o)&&e(t,n,s))return!0}else while(t=t[i])if(1===t.nodeType||o)if(c=t[x]||(t[x]={}),(l=c[i])&&l[0]===p){if((u=l[1])===!0||u===r)return u===!0}else if(l=c[i]=[p],l[1]=e(t,n,s)||r,l[1]===!0)return!0}}function gt(e){return e.length>1?function(t,n,r){var i=e.length;while(i--)if(!e[i](t,n,r))return!1;return!0}:e[0]}function mt(e,t,n,r,i){var o,a=[],s=0,u=e.length,l=null!=t;for(;u>s;s++)(o=e[s])&&(!n||n(o,r,i))&&(a.push(o),l&&t.push(s));return a}function yt(e,t,n,r,i,o){return r&&!r[x]&&(r=yt(r)),i&&!i[x]&&(i=yt(i,o)),ot(function(o,a,s,u){var l,c,p,f=[],d=[],h=a.length,g=o||xt(t||"*",s.nodeType?[s]:s,[]),m=!e||!o&&t?g:mt(g,f,e,s,u),y=n?i||(o?e:h||r)?[]:a:m;if(n&&n(m,y,s,u),r){l=mt(y,d),r(l,[],s,u),c=l.length;while(c--)(p=l[c])&&(y[d[c]]=!(m[d[c]]=p))}if(o){if(i||e){if(i){l=[],c=y.length;while(c--)(p=y[c])&&l.push(m[c]=p);i(null,y=[],l,u)}c=y.length;while(c--)(p=y[c])&&(l=i?M.call(o,p):f[c])>-1&&(o[l]=!(a[l]=p))}}else y=mt(y===a?y.splice(h,y.length):y),i?i(null,a,y,u):H.apply(a,y)})}function vt(e){var t,n,r,o=e.length,a=i.relative[e[0].type],s=a||i.relative[" "],u=a?1:0,c=ht(function(e){return e===t},s,!0),p=ht(function(e){return M.call(t,e)>-1},s,!0),f=[function(e,n,r){return!a&&(r||n!==l)||((t=n).nodeType?c(e,n,r):p(e,n,r))}];for(;o>u;u++)if(n=i.relative[e[u].type])f=[ht(gt(f),n)];else{if(n=i.filter[e[u].type].apply(null,e[u].matches),n[x]){for(r=++u;o>r;r++)if(i.relative[e[r].type])break;return yt(u>1&&gt(f),u>1&&dt(e.slice(0,u-1)).replace(W,"$1"),n,r>u&&vt(e.slice(u,r)),o>r&&vt(e=e.slice(r)),o>r&&dt(e))}f.push(n)}return gt(f)}function bt(e,t){var n=0,o=t.length>0,a=e.length>0,s=function(s,u,c,f,d){var h,g,m,y=[],v=0,b="0",x=s&&[],w=null!=d,T=l,C=s||a&&i.find.TAG("*",d&&u.parentNode||u),k=N+=null==T?1:Math.random()||.1;for(w&&(l=u!==p&&u,r=n);null!=(h=C[b]);b++){if(a&&h){g=0;while(m=e[g++])if(m(h,u,c)){f.push(h);break}w&&(N=k,r=++n)}o&&((h=!m&&h)&&v--,s&&x.push(h))}if(v+=b,o&&b!==v){g=0;while(m=t[g++])m(x,y,u,c);if(s){if(v>0)while(b--)x[b]||y[b]||(y[b]=L.call(f));y=mt(y)}H.apply(f,y),w&&!s&&y.length>0&&v+t.length>1&&st.uniqueSort(f)}return w&&(N=k,l=T),x};return o?ot(s):s}s=st.compile=function(e,t){var n,r=[],i=[],o=S[e+" "];if(!o){t||(t=ft(e)),n=t.length;while(n--)o=vt(t[n]),o[x]?r.push(o):i.push(o);o=S(e,bt(i,r))}return o};function xt(e,t,n){var r=0,i=t.length;for(;i>r;r++)st(e,t[r],n);return n}function wt(e,t,n,r){var o,a,u,l,c,p=ft(e);if(!r&&1===p.length){if(a=p[0]=p[0].slice(0),a.length>2&&"ID"===(u=a[0]).type&&9===t.nodeType&&!d&&i.relative[a[1].type]){if(t=i.find.ID(u.matches[0].replace(et,tt),t)[0],!t)return n;e=e.slice(a.shift().value.length)}o=U.needsContext.test(e)?0:a.length;while(o--){if(u=a[o],i.relative[l=u.type])break;if((c=i.find[l])&&(r=c(u.matches[0].replace(et,tt),V.test(a[0].type)&&t.parentNode||t))){if(a.splice(o,1),e=r.length&&dt(a),!e)return H.apply(n,q.call(r,0)),n;break}}}return s(e,p)(r,t,d,n,V.test(e)),n}i.pseudos.nth=i.pseudos.eq;function Tt(){}i.filters=Tt.prototype=i.pseudos,i.setFilters=new Tt,c(),st.attr=b.attr,b.find=st,b.expr=st.selectors,b.expr[":"]=b.expr.pseudos,b.unique=st.uniqueSort,b.text=st.getText,b.isXMLDoc=st.isXML,b.contains=st.contains}(e);var at=/Until$/,st=/^(?:parents|prev(?:Until|All))/,ut=/^.[^:#\[\.,]*$/,lt=b.expr.match.needsContext,ct={children:!0,contents:!0,next:!0,prev:!0};b.fn.extend({find:function(e){var t,n,r,i=this.length;if("string"!=typeof e)return r=this,this.pushStack(b(e).filter(function(){for(t=0;i>t;t++)if(b.contains(r[t],this))return!0}));for(n=[],t=0;i>t;t++)b.find(e,this[t],n);return n=this.pushStack(i>1?b.unique(n):n),n.selector=(this.selector?this.selector+" ":"")+e,n},has:function(e){var t,n=b(e,this),r=n.length;return this.filter(function(){for(t=0;r>t;t++)if(b.contains(this,n[t]))return!0})},not:function(e){return this.pushStack(ft(this,e,!1))},filter:function(e){return this.pushStack(ft(this,e,!0))},is:function(e){return!!e&&("string"==typeof e?lt.test(e)?b(e,this.context).index(this[0])>=0:b.filter(e,this).length>0:this.filter(e).length>0)},closest:function(e,t){var n,r=0,i=this.length,o=[],a=lt.test(e)||"string"!=typeof e?b(e,t||this.context):0;for(;i>r;r++){n=this[r];while(n&&n.ownerDocument&&n!==t&&11!==n.nodeType){if(a?a.index(n)>-1:b.find.matchesSelector(n,e)){o.push(n);break}n=n.parentNode}}return this.pushStack(o.length>1?b.unique(o):o)},index:function(e){return e?"string"==typeof e?b.inArray(this[0],b(e)):b.inArray(e.jquery?e[0]:e,this):this[0]&&this[0].parentNode?this.first().prevAll().length:-1},add:function(e,t){var n="string"==typeof e?b(e,t):b.makeArray(e&&e.nodeType?[e]:e),r=b.merge(this.get(),n);return this.pushStack(b.unique(r))},addBack:function(e){return this.add(null==e?this.prevObject:this.prevObject.filter(e))}}),b.fn.andSelf=b.fn.addBack;function pt(e,t){do e=e[t];while(e&&1!==e.nodeType);return e}b.each({parent:function(e){var t=e.parentNode;return t&&11!==t.nodeType?t:null},parents:function(e){return b.dir(e,"parentNode")},parentsUntil:function(e,t,n){return b.dir(e,"parentNode",n)},next:function(e){return pt(e,"nextSibling")},prev:function(e){return pt(e,"previousSibling")},nextAll:function(e){return b.dir(e,"nextSibling")},prevAll:function(e){return b.dir(e,"previousSibling")},nextUntil:function(e,t,n){return b.dir(e,"nextSibling",n)},prevUntil:function(e,t,n){return b.dir(e,"previousSibling",n)},siblings:function(e){return b.sibling((e.parentNode||{}).firstChild,e)},children:function(e){return b.sibling(e.firstChild)},contents:function(e){return b.nodeName(e,"iframe")?e.contentDocument||e.contentWindow.document:b.merge([],e.childNodes)}},function(e,t){b.fn[e]=function(n,r){var i=b.map(this,t,n);return at.test(e)||(r=n),r&&"string"==typeof r&&(i=b.filter(r,i)),i=this.length>1&&!ct[e]?b.unique(i):i,this.length>1&&st.test(e)&&(i=i.reverse()),this.pushStack(i)}}),b.extend({filter:function(e,t,n){return n&&(e=":not("+e+")"),1===t.length?b.find.matchesSelector(t[0],e)?[t[0]]:[]:b.find.matches(e,t)},dir:function(e,n,r){var i=[],o=e[n];while(o&&9!==o.nodeType&&(r===t||1!==o.nodeType||!b(o).is(r)))1===o.nodeType&&i.push(o),o=o[n];return i},sibling:function(e,t){var n=[];for(;e;e=e.nextSibling)1===e.nodeType&&e!==t&&n.push(e);return n}});function ft(e,t,n){if(t=t||0,b.isFunction(t))return b.grep(e,function(e,r){var i=!!t.call(e,r,e);return i===n});if(t.nodeType)return b.grep(e,function(e){return e===t===n});if("string"==typeof t){var r=b.grep(e,function(e){return 1===e.nodeType});if(ut.test(t))return b.filter(t,r,!n);t=b.filter(t,r)}return b.grep(e,function(e){return b.inArray(e,t)>=0===n})}function dt(e){var t=ht.split("|"),n=e.createDocumentFragment();if(n.createElement)while(t.length)n.createElement(t.pop());return n}var ht="abbr|article|aside|audio|bdi|canvas|data|datalist|details|figcaption|figure|footer|header|hgroup|mark|meter|nav|output|progress|section|summary|time|video",gt=/ jQuery\d+="(?:null|\d+)"/g,mt=RegExp("<(?:"+ht+")[\\s/>]","i"),yt=/^\s+/,vt=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/gi,bt=/<([\w:]+)/,xt=/<tbody/i,wt=/<|&#?\w+;/,Tt=/<(?:script|style|link)/i,Nt=/^(?:checkbox|radio)$/i,Ct=/checked\s*(?:[^=]|=\s*.checked.)/i,kt=/^$|\/(?:java|ecma)script/i,Et=/^true\/(.*)/,St=/^\s*<!(?:\[CDATA\[|--)|(?:\]\]|--)>\s*$/g,At={option:[1,"<select multiple='multiple'>","</select>"],legend:[1,"<fieldset>","</fieldset>"],area:[1,"<map>","</map>"],param:[1,"<object>","</object>"],thead:[1,"<table>","</table>"],tr:[2,"<table><tbody>","</tbody></table>"],col:[2,"<table><tbody></tbody><colgroup>","</colgroup></table>"],td:[3,"<table><tbody><tr>","</tr></tbody></table>"],_default:b.support.htmlSerialize?[0,"",""]:[1,"X<div>","</div>"]},jt=dt(o),Dt=jt.appendChild(o.createElement("div"));At.optgroup=At.option,At.tbody=At.tfoot=At.colgroup=At.caption=At.thead,At.th=At.td,b.fn.extend({text:function(e){return b.access(this,function(e){return e===t?b.text(this):this.empty().append((this[0]&&this[0].ownerDocument||o).createTextNode(e))},null,e,arguments.length)},wrapAll:function(e){if(b.isFunction(e))return this.each(function(t){b(this).wrapAll(e.call(this,t))});if(this[0]){var t=b(e,this[0].ownerDocument).eq(0).clone(!0);this[0].parentNode&&t.insertBefore(this[0]),t.map(function(){var e=this;while(e.firstChild&&1===e.firstChild.nodeType)e=e.firstChild;return e}).append(this)}return this},wrapInner:function(e){return b.isFunction(e)?this.each(function(t){b(this).wrapInner(e.call(this,t))}):this.each(function(){var t=b(this),n=t.contents();n.length?n.wrapAll(e):t.append(e)})},wrap:function(e){var t=b.isFunction(e);return this.each(function(n){b(this).wrapAll(t?e.call(this,n):e)})},unwrap:function(){return this.parent().each(function(){b.nodeName(this,"body")||b(this).replaceWith(this.childNodes)}).end()},append:function(){return this.domManip(arguments,!0,function(e){(1===this.nodeType||11===this.nodeType||9===this.nodeType)&&this.appendChild(e)})},prepend:function(){return this.domManip(arguments,!0,function(e){(1===this.nodeType||11===this.nodeType||9===this.nodeType)&&this.insertBefore(e,this.firstChild)})},before:function(){return this.domManip(arguments,!1,function(e){this.parentNode&&this.parentNode.insertBefore(e,this)})},after:function(){return this.domManip(arguments,!1,function(e){this.parentNode&&this.parentNode.insertBefore(e,this.nextSibling)})},remove:function(e,t){var n,r=0;for(;null!=(n=this[r]);r++)(!e||b.filter(e,[n]).length>0)&&(t||1!==n.nodeType||b.cleanData(Ot(n)),n.parentNode&&(t&&b.contains(n.ownerDocument,n)&&Mt(Ot(n,"script")),n.parentNode.removeChild(n)));return this},empty:function(){var e,t=0;for(;null!=(e=this[t]);t++){1===e.nodeType&&b.cleanData(Ot(e,!1));while(e.firstChild)e.removeChild(e.firstChild);e.options&&b.nodeName(e,"select")&&(e.options.length=0)}return this},clone:function(e,t){return e=null==e?!1:e,t=null==t?e:t,this.map(function(){return b.clone(this,e,t)})},html:function(e){return b.access(this,function(e){var n=this[0]||{},r=0,i=this.length;if(e===t)return 1===n.nodeType?n.innerHTML.replace(gt,""):t;if(!("string"!=typeof e||Tt.test(e)||!b.support.htmlSerialize&&mt.test(e)||!b.support.leadingWhitespace&&yt.test(e)||At[(bt.exec(e)||["",""])[1].toLowerCase()])){e=e.replace(vt,"<$1></$2>");try{for(;i>r;r++)n=this[r]||{},1===n.nodeType&&(b.cleanData(Ot(n,!1)),n.innerHTML=e);n=0}catch(o){}}n&&this.empty().append(e)},null,e,arguments.length)},replaceWith:function(e){var t=b.isFunction(e);return t||"string"==typeof e||(e=b(e).not(this).detach()),this.domManip([e],!0,function(e){var t=this.nextSibling,n=this.parentNode;n&&(b(this).remove(),n.insertBefore(e,t))})},detach:function(e){return this.remove(e,!0)},domManip:function(e,n,r){e=f.apply([],e);var i,o,a,s,u,l,c=0,p=this.length,d=this,h=p-1,g=e[0],m=b.isFunction(g);if(m||!(1>=p||"string"!=typeof g||b.support.checkClone)&&Ct.test(g))return this.each(function(i){var o=d.eq(i);m&&(e[0]=g.call(this,i,n?o.html():t)),o.domManip(e,n,r)});if(p&&(l=b.buildFragment(e,this[0].ownerDocument,!1,this),i=l.firstChild,1===l.childNodes.length&&(l=i),i)){for(n=n&&b.nodeName(i,"tr"),s=b.map(Ot(l,"script"),Ht),a=s.length;p>c;c++)o=l,c!==h&&(o=b.clone(o,!0,!0),a&&b.merge(s,Ot(o,"script"))),r.call(n&&b.nodeName(this[c],"table")?Lt(this[c],"tbody"):this[c],o,c);if(a)for(u=s[s.length-1].ownerDocument,b.map(s,qt),c=0;a>c;c++)o=s[c],kt.test(o.type||"")&&!b._data(o,"globalEval")&&b.contains(u,o)&&(o.src?b.ajax({url:o.src,type:"GET",dataType:"script",async:!1,global:!1,"throws":!0}):b.globalEval((o.text||o.textContent||o.innerHTML||"").replace(St,"")));l=i=null}return this}});function Lt(e,t){return e.getElementsByTagName(t)[0]||e.appendChild(e.ownerDocument.createElement(t))}function Ht(e){var t=e.getAttributeNode("type");return e.type=(t&&t.specified)+"/"+e.type,e}function qt(e){var t=Et.exec(e.type);return t?e.type=t[1]:e.removeAttribute("type"),e}function Mt(e,t){var n,r=0;for(;null!=(n=e[r]);r++)b._data(n,"globalEval",!t||b._data(t[r],"globalEval"))}function _t(e,t){if(1===t.nodeType&&b.hasData(e)){var n,r,i,o=b._data(e),a=b._data(t,o),s=o.events;if(s){delete a.handle,a.events={};for(n in s)for(r=0,i=s[n].length;i>r;r++)b.event.add(t,n,s[n][r])}a.data&&(a.data=b.extend({},a.data))}}function Ft(e,t){var n,r,i;if(1===t.nodeType){if(n=t.nodeName.toLowerCase(),!b.support.noCloneEvent&&t[b.expando]){i=b._data(t);for(r in i.events)b.removeEvent(t,r,i.handle);t.removeAttribute(b.expando)}"script"===n&&t.text!==e.text?(Ht(t).text=e.text,qt(t)):"object"===n?(t.parentNode&&(t.outerHTML=e.outerHTML),b.support.html5Clone&&e.innerHTML&&!b.trim(t.innerHTML)&&(t.innerHTML=e.innerHTML)):"input"===n&&Nt.test(e.type)?(t.defaultChecked=t.checked=e.checked,t.value!==e.value&&(t.value=e.value)):"option"===n?t.defaultSelected=t.selected=e.defaultSelected:("input"===n||"textarea"===n)&&(t.defaultValue=e.defaultValue)}}b.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(e,t){b.fn[e]=function(e){var n,r=0,i=[],o=b(e),a=o.length-1;for(;a>=r;r++)n=r===a?this:this.clone(!0),b(o[r])[t](n),d.apply(i,n.get());return this.pushStack(i)}});function Ot(e,n){var r,o,a=0,s=typeof e.getElementsByTagName!==i?e.getElementsByTagName(n||"*"):typeof e.querySelectorAll!==i?e.querySelectorAll(n||"*"):t;if(!s)for(s=[],r=e.childNodes||e;null!=(o=r[a]);a++)!n||b.nodeName(o,n)?s.push(o):b.merge(s,Ot(o,n));return n===t||n&&b.nodeName(e,n)?b.merge([e],s):s}function Bt(e){Nt.test(e.type)&&(e.defaultChecked=e.checked)}b.extend({clone:function(e,t,n){var r,i,o,a,s,u=b.contains(e.ownerDocument,e);if(b.support.html5Clone||b.isXMLDoc(e)||!mt.test("<"+e.nodeName+">")?o=e.cloneNode(!0):(Dt.innerHTML=e.outerHTML,Dt.removeChild(o=Dt.firstChild)),!(b.support.noCloneEvent&&b.support.noCloneChecked||1!==e.nodeType&&11!==e.nodeType||b.isXMLDoc(e)))for(r=Ot(o),s=Ot(e),a=0;null!=(i=s[a]);++a)r[a]&&Ft(i,r[a]);if(t)if(n)for(s=s||Ot(e),r=r||Ot(o),a=0;null!=(i=s[a]);a++)_t(i,r[a]);else _t(e,o);return r=Ot(o,"script"),r.length>0&&Mt(r,!u&&Ot(e,"script")),r=s=i=null,o},buildFragment:function(e,t,n,r){var i,o,a,s,u,l,c,p=e.length,f=dt(t),d=[],h=0;for(;p>h;h++)if(o=e[h],o||0===o)if("object"===b.type(o))b.merge(d,o.nodeType?[o]:o);else if(wt.test(o)){s=s||f.appendChild(t.createElement("div")),u=(bt.exec(o)||["",""])[1].toLowerCase(),c=At[u]||At._default,s.innerHTML=c[1]+o.replace(vt,"<$1></$2>")+c[2],i=c[0];while(i--)s=s.lastChild;if(!b.support.leadingWhitespace&&yt.test(o)&&d.push(t.createTextNode(yt.exec(o)[0])),!b.support.tbody){o="table"!==u||xt.test(o)?"<table>"!==c[1]||xt.test(o)?0:s:s.firstChild,i=o&&o.childNodes.length;while(i--)b.nodeName(l=o.childNodes[i],"tbody")&&!l.childNodes.length&&o.removeChild(l)
}b.merge(d,s.childNodes),s.textContent="";while(s.firstChild)s.removeChild(s.firstChild);s=f.lastChild}else d.push(t.createTextNode(o));s&&f.removeChild(s),b.support.appendChecked||b.grep(Ot(d,"input"),Bt),h=0;while(o=d[h++])if((!r||-1===b.inArray(o,r))&&(a=b.contains(o.ownerDocument,o),s=Ot(f.appendChild(o),"script"),a&&Mt(s),n)){i=0;while(o=s[i++])kt.test(o.type||"")&&n.push(o)}return s=null,f},cleanData:function(e,t){var n,r,o,a,s=0,u=b.expando,l=b.cache,p=b.support.deleteExpando,f=b.event.special;for(;null!=(n=e[s]);s++)if((t||b.acceptData(n))&&(o=n[u],a=o&&l[o])){if(a.events)for(r in a.events)f[r]?b.event.remove(n,r):b.removeEvent(n,r,a.handle);l[o]&&(delete l[o],p?delete n[u]:typeof n.removeAttribute!==i?n.removeAttribute(u):n[u]=null,c.push(o))}}});var Pt,Rt,Wt,$t=/alpha\([^)]*\)/i,It=/opacity\s*=\s*([^)]*)/,zt=/^(top|right|bottom|left)$/,Xt=/^(none|table(?!-c[ea]).+)/,Ut=/^margin/,Vt=RegExp("^("+x+")(.*)$","i"),Yt=RegExp("^("+x+")(?!px)[a-z%]+$","i"),Jt=RegExp("^([+-])=("+x+")","i"),Gt={BODY:"block"},Qt={position:"absolute",visibility:"hidden",display:"block"},Kt={letterSpacing:0,fontWeight:400},Zt=["Top","Right","Bottom","Left"],en=["Webkit","O","Moz","ms"];function tn(e,t){if(t in e)return t;var n=t.charAt(0).toUpperCase()+t.slice(1),r=t,i=en.length;while(i--)if(t=en[i]+n,t in e)return t;return r}function nn(e,t){return e=t||e,"none"===b.css(e,"display")||!b.contains(e.ownerDocument,e)}function rn(e,t){var n,r,i,o=[],a=0,s=e.length;for(;s>a;a++)r=e[a],r.style&&(o[a]=b._data(r,"olddisplay"),n=r.style.display,t?(o[a]||"none"!==n||(r.style.display=""),""===r.style.display&&nn(r)&&(o[a]=b._data(r,"olddisplay",un(r.nodeName)))):o[a]||(i=nn(r),(n&&"none"!==n||!i)&&b._data(r,"olddisplay",i?n:b.css(r,"display"))));for(a=0;s>a;a++)r=e[a],r.style&&(t&&"none"!==r.style.display&&""!==r.style.display||(r.style.display=t?o[a]||"":"none"));return e}b.fn.extend({css:function(e,n){return b.access(this,function(e,n,r){var i,o,a={},s=0;if(b.isArray(n)){for(o=Rt(e),i=n.length;i>s;s++)a[n[s]]=b.css(e,n[s],!1,o);return a}return r!==t?b.style(e,n,r):b.css(e,n)},e,n,arguments.length>1)},show:function(){return rn(this,!0)},hide:function(){return rn(this)},toggle:function(e){var t="boolean"==typeof e;return this.each(function(){(t?e:nn(this))?b(this).show():b(this).hide()})}}),b.extend({cssHooks:{opacity:{get:function(e,t){if(t){var n=Wt(e,"opacity");return""===n?"1":n}}}},cssNumber:{columnCount:!0,fillOpacity:!0,fontWeight:!0,lineHeight:!0,opacity:!0,orphans:!0,widows:!0,zIndex:!0,zoom:!0},cssProps:{"float":b.support.cssFloat?"cssFloat":"styleFloat"},style:function(e,n,r,i){if(e&&3!==e.nodeType&&8!==e.nodeType&&e.style){var o,a,s,u=b.camelCase(n),l=e.style;if(n=b.cssProps[u]||(b.cssProps[u]=tn(l,u)),s=b.cssHooks[n]||b.cssHooks[u],r===t)return s&&"get"in s&&(o=s.get(e,!1,i))!==t?o:l[n];if(a=typeof r,"string"===a&&(o=Jt.exec(r))&&(r=(o[1]+1)*o[2]+parseFloat(b.css(e,n)),a="number"),!(null==r||"number"===a&&isNaN(r)||("number"!==a||b.cssNumber[u]||(r+="px"),b.support.clearCloneStyle||""!==r||0!==n.indexOf("background")||(l[n]="inherit"),s&&"set"in s&&(r=s.set(e,r,i))===t)))try{l[n]=r}catch(c){}}},css:function(e,n,r,i){var o,a,s,u=b.camelCase(n);return n=b.cssProps[u]||(b.cssProps[u]=tn(e.style,u)),s=b.cssHooks[n]||b.cssHooks[u],s&&"get"in s&&(a=s.get(e,!0,r)),a===t&&(a=Wt(e,n,i)),"normal"===a&&n in Kt&&(a=Kt[n]),""===r||r?(o=parseFloat(a),r===!0||b.isNumeric(o)?o||0:a):a},swap:function(e,t,n,r){var i,o,a={};for(o in t)a[o]=e.style[o],e.style[o]=t[o];i=n.apply(e,r||[]);for(o in t)e.style[o]=a[o];return i}}),e.getComputedStyle?(Rt=function(t){return e.getComputedStyle(t,null)},Wt=function(e,n,r){var i,o,a,s=r||Rt(e),u=s?s.getPropertyValue(n)||s[n]:t,l=e.style;return s&&(""!==u||b.contains(e.ownerDocument,e)||(u=b.style(e,n)),Yt.test(u)&&Ut.test(n)&&(i=l.width,o=l.minWidth,a=l.maxWidth,l.minWidth=l.maxWidth=l.width=u,u=s.width,l.width=i,l.minWidth=o,l.maxWidth=a)),u}):o.documentElement.currentStyle&&(Rt=function(e){return e.currentStyle},Wt=function(e,n,r){var i,o,a,s=r||Rt(e),u=s?s[n]:t,l=e.style;return null==u&&l&&l[n]&&(u=l[n]),Yt.test(u)&&!zt.test(n)&&(i=l.left,o=e.runtimeStyle,a=o&&o.left,a&&(o.left=e.currentStyle.left),l.left="fontSize"===n?"1em":u,u=l.pixelLeft+"px",l.left=i,a&&(o.left=a)),""===u?"auto":u});function on(e,t,n){var r=Vt.exec(t);return r?Math.max(0,r[1]-(n||0))+(r[2]||"px"):t}function an(e,t,n,r,i){var o=n===(r?"border":"content")?4:"width"===t?1:0,a=0;for(;4>o;o+=2)"margin"===n&&(a+=b.css(e,n+Zt[o],!0,i)),r?("content"===n&&(a-=b.css(e,"padding"+Zt[o],!0,i)),"margin"!==n&&(a-=b.css(e,"border"+Zt[o]+"Width",!0,i))):(a+=b.css(e,"padding"+Zt[o],!0,i),"padding"!==n&&(a+=b.css(e,"border"+Zt[o]+"Width",!0,i)));return a}function sn(e,t,n){var r=!0,i="width"===t?e.offsetWidth:e.offsetHeight,o=Rt(e),a=b.support.boxSizing&&"border-box"===b.css(e,"boxSizing",!1,o);if(0>=i||null==i){if(i=Wt(e,t,o),(0>i||null==i)&&(i=e.style[t]),Yt.test(i))return i;r=a&&(b.support.boxSizingReliable||i===e.style[t]),i=parseFloat(i)||0}return i+an(e,t,n||(a?"border":"content"),r,o)+"px"}function un(e){var t=o,n=Gt[e];return n||(n=ln(e,t),"none"!==n&&n||(Pt=(Pt||b("<iframe frameborder='0' width='0' height='0'/>").css("cssText","display:block !important")).appendTo(t.documentElement),t=(Pt[0].contentWindow||Pt[0].contentDocument).document,t.write("<!doctype html><html><body>"),t.close(),n=ln(e,t),Pt.detach()),Gt[e]=n),n}function ln(e,t){var n=b(t.createElement(e)).appendTo(t.body),r=b.css(n[0],"display");return n.remove(),r}b.each(["height","width"],function(e,n){b.cssHooks[n]={get:function(e,r,i){return r?0===e.offsetWidth&&Xt.test(b.css(e,"display"))?b.swap(e,Qt,function(){return sn(e,n,i)}):sn(e,n,i):t},set:function(e,t,r){var i=r&&Rt(e);return on(e,t,r?an(e,n,r,b.support.boxSizing&&"border-box"===b.css(e,"boxSizing",!1,i),i):0)}}}),b.support.opacity||(b.cssHooks.opacity={get:function(e,t){return It.test((t&&e.currentStyle?e.currentStyle.filter:e.style.filter)||"")?.01*parseFloat(RegExp.$1)+"":t?"1":""},set:function(e,t){var n=e.style,r=e.currentStyle,i=b.isNumeric(t)?"alpha(opacity="+100*t+")":"",o=r&&r.filter||n.filter||"";n.zoom=1,(t>=1||""===t)&&""===b.trim(o.replace($t,""))&&n.removeAttribute&&(n.removeAttribute("filter"),""===t||r&&!r.filter)||(n.filter=$t.test(o)?o.replace($t,i):o+" "+i)}}),b(function(){b.support.reliableMarginRight||(b.cssHooks.marginRight={get:function(e,n){return n?b.swap(e,{display:"inline-block"},Wt,[e,"marginRight"]):t}}),!b.support.pixelPosition&&b.fn.position&&b.each(["top","left"],function(e,n){b.cssHooks[n]={get:function(e,r){return r?(r=Wt(e,n),Yt.test(r)?b(e).position()[n]+"px":r):t}}})}),b.expr&&b.expr.filters&&(b.expr.filters.hidden=function(e){return 0>=e.offsetWidth&&0>=e.offsetHeight||!b.support.reliableHiddenOffsets&&"none"===(e.style&&e.style.display||b.css(e,"display"))},b.expr.filters.visible=function(e){return!b.expr.filters.hidden(e)}),b.each({margin:"",padding:"",border:"Width"},function(e,t){b.cssHooks[e+t]={expand:function(n){var r=0,i={},o="string"==typeof n?n.split(" "):[n];for(;4>r;r++)i[e+Zt[r]+t]=o[r]||o[r-2]||o[0];return i}},Ut.test(e)||(b.cssHooks[e+t].set=on)});var cn=/%20/g,pn=/\[\]$/,fn=/\r?\n/g,dn=/^(?:submit|button|image|reset|file)$/i,hn=/^(?:input|select|textarea|keygen)/i;b.fn.extend({serialize:function(){return b.param(this.serializeArray())},serializeArray:function(){return this.map(function(){var e=b.prop(this,"elements");return e?b.makeArray(e):this}).filter(function(){var e=this.type;return this.name&&!b(this).is(":disabled")&&hn.test(this.nodeName)&&!dn.test(e)&&(this.checked||!Nt.test(e))}).map(function(e,t){var n=b(this).val();return null==n?null:b.isArray(n)?b.map(n,function(e){return{name:t.name,value:e.replace(fn,"\r\n")}}):{name:t.name,value:n.replace(fn,"\r\n")}}).get()}}),b.param=function(e,n){var r,i=[],o=function(e,t){t=b.isFunction(t)?t():null==t?"":t,i[i.length]=encodeURIComponent(e)+"="+encodeURIComponent(t)};if(n===t&&(n=b.ajaxSettings&&b.ajaxSettings.traditional),b.isArray(e)||e.jquery&&!b.isPlainObject(e))b.each(e,function(){o(this.name,this.value)});else for(r in e)gn(r,e[r],n,o);return i.join("&").replace(cn,"+")};function gn(e,t,n,r){var i;if(b.isArray(t))b.each(t,function(t,i){n||pn.test(e)?r(e,i):gn(e+"["+("object"==typeof i?t:"")+"]",i,n,r)});else if(n||"object"!==b.type(t))r(e,t);else for(i in t)gn(e+"["+i+"]",t[i],n,r)}b.each("blur focus focusin focusout load resize scroll unload click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup error contextmenu".split(" "),function(e,t){b.fn[t]=function(e,n){return arguments.length>0?this.on(t,null,e,n):this.trigger(t)}}),b.fn.hover=function(e,t){return this.mouseenter(e).mouseleave(t||e)};var mn,yn,vn=b.now(),bn=/\?/,xn=/#.*$/,wn=/([?&])_=[^&]*/,Tn=/^(.*?):[ \t]*([^\r\n]*)\r?$/gm,Nn=/^(?:about|app|app-storage|.+-extension|file|res|widget):$/,Cn=/^(?:GET|HEAD)$/,kn=/^\/\//,En=/^([\w.+-]+:)(?:\/\/([^\/?#:]*)(?::(\d+)|)|)/,Sn=b.fn.load,An={},jn={},Dn="*/".concat("*");try{yn=a.href}catch(Ln){yn=o.createElement("a"),yn.href="",yn=yn.href}mn=En.exec(yn.toLowerCase())||[];function Hn(e){return function(t,n){"string"!=typeof t&&(n=t,t="*");var r,i=0,o=t.toLowerCase().match(w)||[];if(b.isFunction(n))while(r=o[i++])"+"===r[0]?(r=r.slice(1)||"*",(e[r]=e[r]||[]).unshift(n)):(e[r]=e[r]||[]).push(n)}}function qn(e,n,r,i){var o={},a=e===jn;function s(u){var l;return o[u]=!0,b.each(e[u]||[],function(e,u){var c=u(n,r,i);return"string"!=typeof c||a||o[c]?a?!(l=c):t:(n.dataTypes.unshift(c),s(c),!1)}),l}return s(n.dataTypes[0])||!o["*"]&&s("*")}function Mn(e,n){var r,i,o=b.ajaxSettings.flatOptions||{};for(i in n)n[i]!==t&&((o[i]?e:r||(r={}))[i]=n[i]);return r&&b.extend(!0,e,r),e}b.fn.load=function(e,n,r){if("string"!=typeof e&&Sn)return Sn.apply(this,arguments);var i,o,a,s=this,u=e.indexOf(" ");return u>=0&&(i=e.slice(u,e.length),e=e.slice(0,u)),b.isFunction(n)?(r=n,n=t):n&&"object"==typeof n&&(a="POST"),s.length>0&&b.ajax({url:e,type:a,dataType:"html",data:n}).done(function(e){o=arguments,s.html(i?b("<div>").append(b.parseHTML(e)).find(i):e)}).complete(r&&function(e,t){s.each(r,o||[e.responseText,t,e])}),this},b.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(e,t){b.fn[t]=function(e){return this.on(t,e)}}),b.each(["get","post"],function(e,n){b[n]=function(e,r,i,o){return b.isFunction(r)&&(o=o||i,i=r,r=t),b.ajax({url:e,type:n,dataType:o,data:r,success:i})}}),b.extend({active:0,lastModified:{},etag:{},ajaxSettings:{url:yn,type:"GET",isLocal:Nn.test(mn[1]),global:!0,processData:!0,async:!0,contentType:"application/x-www-form-urlencoded; charset=UTF-8",accepts:{"*":Dn,text:"text/plain",html:"text/html",xml:"application/xml, text/xml",json:"application/json, text/javascript"},contents:{xml:/xml/,html:/html/,json:/json/},responseFields:{xml:"responseXML",text:"responseText"},converters:{"* text":e.String,"text html":!0,"text json":b.parseJSON,"text xml":b.parseXML},flatOptions:{url:!0,context:!0}},ajaxSetup:function(e,t){return t?Mn(Mn(e,b.ajaxSettings),t):Mn(b.ajaxSettings,e)},ajaxPrefilter:Hn(An),ajaxTransport:Hn(jn),ajax:function(e,n){"object"==typeof e&&(n=e,e=t),n=n||{};var r,i,o,a,s,u,l,c,p=b.ajaxSetup({},n),f=p.context||p,d=p.context&&(f.nodeType||f.jquery)?b(f):b.event,h=b.Deferred(),g=b.Callbacks("once memory"),m=p.statusCode||{},y={},v={},x=0,T="canceled",N={readyState:0,getResponseHeader:function(e){var t;if(2===x){if(!c){c={};while(t=Tn.exec(a))c[t[1].toLowerCase()]=t[2]}t=c[e.toLowerCase()]}return null==t?null:t},getAllResponseHeaders:function(){return 2===x?a:null},setRequestHeader:function(e,t){var n=e.toLowerCase();return x||(e=v[n]=v[n]||e,y[e]=t),this},overrideMimeType:function(e){return x||(p.mimeType=e),this},statusCode:function(e){var t;if(e)if(2>x)for(t in e)m[t]=[m[t],e[t]];else N.always(e[N.status]);return this},abort:function(e){var t=e||T;return l&&l.abort(t),k(0,t),this}};if(h.promise(N).complete=g.add,N.success=N.done,N.error=N.fail,p.url=((e||p.url||yn)+"").replace(xn,"").replace(kn,mn[1]+"//"),p.type=n.method||n.type||p.method||p.type,p.dataTypes=b.trim(p.dataType||"*").toLowerCase().match(w)||[""],null==p.crossDomain&&(r=En.exec(p.url.toLowerCase()),p.crossDomain=!(!r||r[1]===mn[1]&&r[2]===mn[2]&&(r[3]||("http:"===r[1]?80:443))==(mn[3]||("http:"===mn[1]?80:443)))),p.data&&p.processData&&"string"!=typeof p.data&&(p.data=b.param(p.data,p.traditional)),qn(An,p,n,N),2===x)return N;u=p.global,u&&0===b.active++&&b.event.trigger("ajaxStart"),p.type=p.type.toUpperCase(),p.hasContent=!Cn.test(p.type),o=p.url,p.hasContent||(p.data&&(o=p.url+=(bn.test(o)?"&":"?")+p.data,delete p.data),p.cache===!1&&(p.url=wn.test(o)?o.replace(wn,"$1_="+vn++):o+(bn.test(o)?"&":"?")+"_="+vn++)),p.ifModified&&(b.lastModified[o]&&N.setRequestHeader("If-Modified-Since",b.lastModified[o]),b.etag[o]&&N.setRequestHeader("If-None-Match",b.etag[o])),(p.data&&p.hasContent&&p.contentType!==!1||n.contentType)&&N.setRequestHeader("Content-Type",p.contentType),N.setRequestHeader("Accept",p.dataTypes[0]&&p.accepts[p.dataTypes[0]]?p.accepts[p.dataTypes[0]]+("*"!==p.dataTypes[0]?", "+Dn+"; q=0.01":""):p.accepts["*"]);for(i in p.headers)N.setRequestHeader(i,p.headers[i]);if(p.beforeSend&&(p.beforeSend.call(f,N,p)===!1||2===x))return N.abort();T="abort";for(i in{success:1,error:1,complete:1})N[i](p[i]);if(l=qn(jn,p,n,N)){N.readyState=1,u&&d.trigger("ajaxSend",[N,p]),p.async&&p.timeout>0&&(s=setTimeout(function(){N.abort("timeout")},p.timeout));try{x=1,l.send(y,k)}catch(C){if(!(2>x))throw C;k(-1,C)}}else k(-1,"No Transport");function k(e,n,r,i){var c,y,v,w,T,C=n;2!==x&&(x=2,s&&clearTimeout(s),l=t,a=i||"",N.readyState=e>0?4:0,r&&(w=_n(p,N,r)),e>=200&&300>e||304===e?(p.ifModified&&(T=N.getResponseHeader("Last-Modified"),T&&(b.lastModified[o]=T),T=N.getResponseHeader("etag"),T&&(b.etag[o]=T)),204===e?(c=!0,C="nocontent"):304===e?(c=!0,C="notmodified"):(c=Fn(p,w),C=c.state,y=c.data,v=c.error,c=!v)):(v=C,(e||!C)&&(C="error",0>e&&(e=0))),N.status=e,N.statusText=(n||C)+"",c?h.resolveWith(f,[y,C,N]):h.rejectWith(f,[N,C,v]),N.statusCode(m),m=t,u&&d.trigger(c?"ajaxSuccess":"ajaxError",[N,p,c?y:v]),g.fireWith(f,[N,C]),u&&(d.trigger("ajaxComplete",[N,p]),--b.active||b.event.trigger("ajaxStop")))}return N},getScript:function(e,n){return b.get(e,t,n,"script")},getJSON:function(e,t,n){return b.get(e,t,n,"json")}});function _n(e,n,r){var i,o,a,s,u=e.contents,l=e.dataTypes,c=e.responseFields;for(s in c)s in r&&(n[c[s]]=r[s]);while("*"===l[0])l.shift(),o===t&&(o=e.mimeType||n.getResponseHeader("Content-Type"));if(o)for(s in u)if(u[s]&&u[s].test(o)){l.unshift(s);break}if(l[0]in r)a=l[0];else{for(s in r){if(!l[0]||e.converters[s+" "+l[0]]){a=s;break}i||(i=s)}a=a||i}return a?(a!==l[0]&&l.unshift(a),r[a]):t}function Fn(e,t){var n,r,i,o,a={},s=0,u=e.dataTypes.slice(),l=u[0];if(e.dataFilter&&(t=e.dataFilter(t,e.dataType)),u[1])for(i in e.converters)a[i.toLowerCase()]=e.converters[i];for(;r=u[++s];)if("*"!==r){if("*"!==l&&l!==r){if(i=a[l+" "+r]||a["* "+r],!i)for(n in a)if(o=n.split(" "),o[1]===r&&(i=a[l+" "+o[0]]||a["* "+o[0]])){i===!0?i=a[n]:a[n]!==!0&&(r=o[0],u.splice(s--,0,r));break}if(i!==!0)if(i&&e["throws"])t=i(t);else try{t=i(t)}catch(c){return{state:"parsererror",error:i?c:"No conversion from "+l+" to "+r}}}l=r}return{state:"success",data:t}}b.ajaxSetup({accepts:{script:"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},contents:{script:/(?:java|ecma)script/},converters:{"text script":function(e){return b.globalEval(e),e}}}),b.ajaxPrefilter("script",function(e){e.cache===t&&(e.cache=!1),e.crossDomain&&(e.type="GET",e.global=!1)}),b.ajaxTransport("script",function(e){if(e.crossDomain){var n,r=o.head||b("head")[0]||o.documentElement;return{send:function(t,i){n=o.createElement("script"),n.async=!0,e.scriptCharset&&(n.charset=e.scriptCharset),n.src=e.url,n.onload=n.onreadystatechange=function(e,t){(t||!n.readyState||/loaded|complete/.test(n.readyState))&&(n.onload=n.onreadystatechange=null,n.parentNode&&n.parentNode.removeChild(n),n=null,t||i(200,"success"))},r.insertBefore(n,r.firstChild)},abort:function(){n&&n.onload(t,!0)}}}});var On=[],Bn=/(=)\?(?=&|$)|\?\?/;b.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var e=On.pop()||b.expando+"_"+vn++;return this[e]=!0,e}}),b.ajaxPrefilter("json jsonp",function(n,r,i){var o,a,s,u=n.jsonp!==!1&&(Bn.test(n.url)?"url":"string"==typeof n.data&&!(n.contentType||"").indexOf("application/x-www-form-urlencoded")&&Bn.test(n.data)&&"data");return u||"jsonp"===n.dataTypes[0]?(o=n.jsonpCallback=b.isFunction(n.jsonpCallback)?n.jsonpCallback():n.jsonpCallback,u?n[u]=n[u].replace(Bn,"$1"+o):n.jsonp!==!1&&(n.url+=(bn.test(n.url)?"&":"?")+n.jsonp+"="+o),n.converters["script json"]=function(){return s||b.error(o+" was not called"),s[0]},n.dataTypes[0]="json",a=e[o],e[o]=function(){s=arguments},i.always(function(){e[o]=a,n[o]&&(n.jsonpCallback=r.jsonpCallback,On.push(o)),s&&b.isFunction(a)&&a(s[0]),s=a=t}),"script"):t});var Pn,Rn,Wn=0,$n=e.ActiveXObject&&function(){var e;for(e in Pn)Pn[e](t,!0)};function In(){try{return new e.XMLHttpRequest}catch(t){}}function zn(){try{return new e.ActiveXObject("Microsoft.XMLHTTP")}catch(t){}}b.ajaxSettings.xhr=e.ActiveXObject?function(){return!this.isLocal&&In()||zn()}:In,Rn=b.ajaxSettings.xhr(),b.support.cors=!!Rn&&"withCredentials"in Rn,Rn=b.support.ajax=!!Rn,Rn&&b.ajaxTransport(function(n){if(!n.crossDomain||b.support.cors){var r;return{send:function(i,o){var a,s,u=n.xhr();if(n.username?u.open(n.type,n.url,n.async,n.username,n.password):u.open(n.type,n.url,n.async),n.xhrFields)for(s in n.xhrFields)u[s]=n.xhrFields[s];n.mimeType&&u.overrideMimeType&&u.overrideMimeType(n.mimeType),n.crossDomain||i["X-Requested-With"]||(i["X-Requested-With"]="XMLHttpRequest");try{for(s in i)u.setRequestHeader(s,i[s])}catch(l){}u.send(n.hasContent&&n.data||null),r=function(e,i){var s,l,c,p;try{if(r&&(i||4===u.readyState))if(r=t,a&&(u.onreadystatechange=b.noop,$n&&delete Pn[a]),i)4!==u.readyState&&u.abort();else{p={},s=u.status,l=u.getAllResponseHeaders(),"string"==typeof u.responseText&&(p.text=u.responseText);try{c=u.statusText}catch(f){c=""}s||!n.isLocal||n.crossDomain?1223===s&&(s=204):s=p.text?200:404}}catch(d){i||o(-1,d)}p&&o(s,c,p,l)},n.async?4===u.readyState?setTimeout(r):(a=++Wn,$n&&(Pn||(Pn={},b(e).unload($n)),Pn[a]=r),u.onreadystatechange=r):r()},abort:function(){r&&r(t,!0)}}}});var Xn,Un,Vn=/^(?:toggle|show|hide)$/,Yn=RegExp("^(?:([+-])=|)("+x+")([a-z%]*)$","i"),Jn=/queueHooks$/,Gn=[nr],Qn={"*":[function(e,t){var n,r,i=this.createTween(e,t),o=Yn.exec(t),a=i.cur(),s=+a||0,u=1,l=20;if(o){if(n=+o[2],r=o[3]||(b.cssNumber[e]?"":"px"),"px"!==r&&s){s=b.css(i.elem,e,!0)||n||1;do u=u||".5",s/=u,b.style(i.elem,e,s+r);while(u!==(u=i.cur()/a)&&1!==u&&--l)}i.unit=r,i.start=s,i.end=o[1]?s+(o[1]+1)*n:n}return i}]};function Kn(){return setTimeout(function(){Xn=t}),Xn=b.now()}function Zn(e,t){b.each(t,function(t,n){var r=(Qn[t]||[]).concat(Qn["*"]),i=0,o=r.length;for(;o>i;i++)if(r[i].call(e,t,n))return})}function er(e,t,n){var r,i,o=0,a=Gn.length,s=b.Deferred().always(function(){delete u.elem}),u=function(){if(i)return!1;var t=Xn||Kn(),n=Math.max(0,l.startTime+l.duration-t),r=n/l.duration||0,o=1-r,a=0,u=l.tweens.length;for(;u>a;a++)l.tweens[a].run(o);return s.notifyWith(e,[l,o,n]),1>o&&u?n:(s.resolveWith(e,[l]),!1)},l=s.promise({elem:e,props:b.extend({},t),opts:b.extend(!0,{specialEasing:{}},n),originalProperties:t,originalOptions:n,startTime:Xn||Kn(),duration:n.duration,tweens:[],createTween:function(t,n){var r=b.Tween(e,l.opts,t,n,l.opts.specialEasing[t]||l.opts.easing);return l.tweens.push(r),r},stop:function(t){var n=0,r=t?l.tweens.length:0;if(i)return this;for(i=!0;r>n;n++)l.tweens[n].run(1);return t?s.resolveWith(e,[l,t]):s.rejectWith(e,[l,t]),this}}),c=l.props;for(tr(c,l.opts.specialEasing);a>o;o++)if(r=Gn[o].call(l,e,c,l.opts))return r;return Zn(l,c),b.isFunction(l.opts.start)&&l.opts.start.call(e,l),b.fx.timer(b.extend(u,{elem:e,anim:l,queue:l.opts.queue})),l.progress(l.opts.progress).done(l.opts.done,l.opts.complete).fail(l.opts.fail).always(l.opts.always)}function tr(e,t){var n,r,i,o,a;for(i in e)if(r=b.camelCase(i),o=t[r],n=e[i],b.isArray(n)&&(o=n[1],n=e[i]=n[0]),i!==r&&(e[r]=n,delete e[i]),a=b.cssHooks[r],a&&"expand"in a){n=a.expand(n),delete e[r];for(i in n)i in e||(e[i]=n[i],t[i]=o)}else t[r]=o}b.Animation=b.extend(er,{tweener:function(e,t){b.isFunction(e)?(t=e,e=["*"]):e=e.split(" ");var n,r=0,i=e.length;for(;i>r;r++)n=e[r],Qn[n]=Qn[n]||[],Qn[n].unshift(t)},prefilter:function(e,t){t?Gn.unshift(e):Gn.push(e)}});function nr(e,t,n){var r,i,o,a,s,u,l,c,p,f=this,d=e.style,h={},g=[],m=e.nodeType&&nn(e);n.queue||(c=b._queueHooks(e,"fx"),null==c.unqueued&&(c.unqueued=0,p=c.empty.fire,c.empty.fire=function(){c.unqueued||p()}),c.unqueued++,f.always(function(){f.always(function(){c.unqueued--,b.queue(e,"fx").length||c.empty.fire()})})),1===e.nodeType&&("height"in t||"width"in t)&&(n.overflow=[d.overflow,d.overflowX,d.overflowY],"inline"===b.css(e,"display")&&"none"===b.css(e,"float")&&(b.support.inlineBlockNeedsLayout&&"inline"!==un(e.nodeName)?d.zoom=1:d.display="inline-block")),n.overflow&&(d.overflow="hidden",b.support.shrinkWrapBlocks||f.always(function(){d.overflow=n.overflow[0],d.overflowX=n.overflow[1],d.overflowY=n.overflow[2]}));for(i in t)if(a=t[i],Vn.exec(a)){if(delete t[i],u=u||"toggle"===a,a===(m?"hide":"show"))continue;g.push(i)}if(o=g.length){s=b._data(e,"fxshow")||b._data(e,"fxshow",{}),"hidden"in s&&(m=s.hidden),u&&(s.hidden=!m),m?b(e).show():f.done(function(){b(e).hide()}),f.done(function(){var t;b._removeData(e,"fxshow");for(t in h)b.style(e,t,h[t])});for(i=0;o>i;i++)r=g[i],l=f.createTween(r,m?s[r]:0),h[r]=s[r]||b.style(e,r),r in s||(s[r]=l.start,m&&(l.end=l.start,l.start="width"===r||"height"===r?1:0))}}function rr(e,t,n,r,i){return new rr.prototype.init(e,t,n,r,i)}b.Tween=rr,rr.prototype={constructor:rr,init:function(e,t,n,r,i,o){this.elem=e,this.prop=n,this.easing=i||"swing",this.options=t,this.start=this.now=this.cur(),this.end=r,this.unit=o||(b.cssNumber[n]?"":"px")},cur:function(){var e=rr.propHooks[this.prop];return e&&e.get?e.get(this):rr.propHooks._default.get(this)},run:function(e){var t,n=rr.propHooks[this.prop];return this.pos=t=this.options.duration?b.easing[this.easing](e,this.options.duration*e,0,1,this.options.duration):e,this.now=(this.end-this.start)*t+this.start,this.options.step&&this.options.step.call(this.elem,this.now,this),n&&n.set?n.set(this):rr.propHooks._default.set(this),this}},rr.prototype.init.prototype=rr.prototype,rr.propHooks={_default:{get:function(e){var t;return null==e.elem[e.prop]||e.elem.style&&null!=e.elem.style[e.prop]?(t=b.css(e.elem,e.prop,""),t&&"auto"!==t?t:0):e.elem[e.prop]},set:function(e){b.fx.step[e.prop]?b.fx.step[e.prop](e):e.elem.style&&(null!=e.elem.style[b.cssProps[e.prop]]||b.cssHooks[e.prop])?b.style(e.elem,e.prop,e.now+e.unit):e.elem[e.prop]=e.now}}},rr.propHooks.scrollTop=rr.propHooks.scrollLeft={set:function(e){e.elem.nodeType&&e.elem.parentNode&&(e.elem[e.prop]=e.now)}},b.each(["toggle","show","hide"],function(e,t){var n=b.fn[t];b.fn[t]=function(e,r,i){return null==e||"boolean"==typeof e?n.apply(this,arguments):this.animate(ir(t,!0),e,r,i)}}),b.fn.extend({fadeTo:function(e,t,n,r){return this.filter(nn).css("opacity",0).show().end().animate({opacity:t},e,n,r)},animate:function(e,t,n,r){var i=b.isEmptyObject(e),o=b.speed(t,n,r),a=function(){var t=er(this,b.extend({},e),o);a.finish=function(){t.stop(!0)},(i||b._data(this,"finish"))&&t.stop(!0)};return a.finish=a,i||o.queue===!1?this.each(a):this.queue(o.queue,a)},stop:function(e,n,r){var i=function(e){var t=e.stop;delete e.stop,t(r)};return"string"!=typeof e&&(r=n,n=e,e=t),n&&e!==!1&&this.queue(e||"fx",[]),this.each(function(){var t=!0,n=null!=e&&e+"queueHooks",o=b.timers,a=b._data(this);if(n)a[n]&&a[n].stop&&i(a[n]);else for(n in a)a[n]&&a[n].stop&&Jn.test(n)&&i(a[n]);for(n=o.length;n--;)o[n].elem!==this||null!=e&&o[n].queue!==e||(o[n].anim.stop(r),t=!1,o.splice(n,1));(t||!r)&&b.dequeue(this,e)})},finish:function(e){return e!==!1&&(e=e||"fx"),this.each(function(){var t,n=b._data(this),r=n[e+"queue"],i=n[e+"queueHooks"],o=b.timers,a=r?r.length:0;for(n.finish=!0,b.queue(this,e,[]),i&&i.cur&&i.cur.finish&&i.cur.finish.call(this),t=o.length;t--;)o[t].elem===this&&o[t].queue===e&&(o[t].anim.stop(!0),o.splice(t,1));for(t=0;a>t;t++)r[t]&&r[t].finish&&r[t].finish.call(this);delete n.finish})}});function ir(e,t){var n,r={height:e},i=0;for(t=t?1:0;4>i;i+=2-t)n=Zt[i],r["margin"+n]=r["padding"+n]=e;return t&&(r.opacity=r.width=e),r}b.each({slideDown:ir("show"),slideUp:ir("hide"),slideToggle:ir("toggle"),fadeIn:{opacity:"show"},fadeOut:{opacity:"hide"},fadeToggle:{opacity:"toggle"}},function(e,t){b.fn[e]=function(e,n,r){return this.animate(t,e,n,r)}}),b.speed=function(e,t,n){var r=e&&"object"==typeof e?b.extend({},e):{complete:n||!n&&t||b.isFunction(e)&&e,duration:e,easing:n&&t||t&&!b.isFunction(t)&&t};return r.duration=b.fx.off?0:"number"==typeof r.duration?r.duration:r.duration in b.fx.speeds?b.fx.speeds[r.duration]:b.fx.speeds._default,(null==r.queue||r.queue===!0)&&(r.queue="fx"),r.old=r.complete,r.complete=function(){b.isFunction(r.old)&&r.old.call(this),r.queue&&b.dequeue(this,r.queue)},r},b.easing={linear:function(e){return e},swing:function(e){return.5-Math.cos(e*Math.PI)/2}},b.timers=[],b.fx=rr.prototype.init,b.fx.tick=function(){var e,n=b.timers,r=0;for(Xn=b.now();n.length>r;r++)e=n[r],e()||n[r]!==e||n.splice(r--,1);n.length||b.fx.stop(),Xn=t},b.fx.timer=function(e){e()&&b.timers.push(e)&&b.fx.start()},b.fx.interval=13,b.fx.start=function(){Un||(Un=setInterval(b.fx.tick,b.fx.interval))},b.fx.stop=function(){clearInterval(Un),Un=null},b.fx.speeds={slow:600,fast:200,_default:400},b.fx.step={},b.expr&&b.expr.filters&&(b.expr.filters.animated=function(e){return b.grep(b.timers,function(t){return e===t.elem}).length}),b.fn.offset=function(e){if(arguments.length)return e===t?this:this.each(function(t){b.offset.setOffset(this,e,t)});var n,r,o={top:0,left:0},a=this[0],s=a&&a.ownerDocument;if(s)return n=s.documentElement,b.contains(n,a)?(typeof a.getBoundingClientRect!==i&&(o=a.getBoundingClientRect()),r=or(s),{top:o.top+(r.pageYOffset||n.scrollTop)-(n.clientTop||0),left:o.left+(r.pageXOffset||n.scrollLeft)-(n.clientLeft||0)}):o},b.offset={setOffset:function(e,t,n){var r=b.css(e,"position");"static"===r&&(e.style.position="relative");var i=b(e),o=i.offset(),a=b.css(e,"top"),s=b.css(e,"left"),u=("absolute"===r||"fixed"===r)&&b.inArray("auto",[a,s])>-1,l={},c={},p,f;u?(c=i.position(),p=c.top,f=c.left):(p=parseFloat(a)||0,f=parseFloat(s)||0),b.isFunction(t)&&(t=t.call(e,n,o)),null!=t.top&&(l.top=t.top-o.top+p),null!=t.left&&(l.left=t.left-o.left+f),"using"in t?t.using.call(e,l):i.css(l)}},b.fn.extend({position:function(){if(this[0]){var e,t,n={top:0,left:0},r=this[0];return"fixed"===b.css(r,"position")?t=r.getBoundingClientRect():(e=this.offsetParent(),t=this.offset(),b.nodeName(e[0],"html")||(n=e.offset()),n.top+=b.css(e[0],"borderTopWidth",!0),n.left+=b.css(e[0],"borderLeftWidth",!0)),{top:t.top-n.top-b.css(r,"marginTop",!0),left:t.left-n.left-b.css(r,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){var e=this.offsetParent||o.documentElement;while(e&&!b.nodeName(e,"html")&&"static"===b.css(e,"position"))e=e.offsetParent;return e||o.documentElement})}}),b.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(e,n){var r=/Y/.test(n);b.fn[e]=function(i){return b.access(this,function(e,i,o){var a=or(e);return o===t?a?n in a?a[n]:a.document.documentElement[i]:e[i]:(a?a.scrollTo(r?b(a).scrollLeft():o,r?o:b(a).scrollTop()):e[i]=o,t)},e,i,arguments.length,null)}});function or(e){return b.isWindow(e)?e:9===e.nodeType?e.defaultView||e.parentWindow:!1}b.each({Height:"height",Width:"width"},function(e,n){b.each({padding:"inner"+e,content:n,"":"outer"+e},function(r,i){b.fn[i]=function(i,o){var a=arguments.length&&(r||"boolean"!=typeof i),s=r||(i===!0||o===!0?"margin":"border");return b.access(this,function(n,r,i){var o;return b.isWindow(n)?n.document.documentElement["client"+e]:9===n.nodeType?(o=n.documentElement,Math.max(n.body["scroll"+e],o["scroll"+e],n.body["offset"+e],o["offset"+e],o["client"+e])):i===t?b.css(n,r,s):b.style(n,r,i,s)},n,a?i:t,a,null)}})}),e.jQuery=e.$=b,"function"==typeof define&&define.amd&&define.amd.jQuery&&define("jquery",[],function(){return b})})(window);;
/*! jQuery UI - v1.11.4 - 2015-05-03
* http://jqueryui.com
* Includes: core.js, widget.js, mouse.js, position.js, draggable.js, droppable.js, resizable.js, selectable.js, sortable.js, accordion.js, autocomplete.js, button.js, datepicker.js, dialog.js, menu.js, progressbar.js, selectmenu.js, slider.js, spinner.js, tabs.js, tooltip.js, effect.js, effect-blind.js, effect-bounce.js, effect-clip.js, effect-drop.js, effect-explode.js, effect-fade.js, effect-fold.js, effect-highlight.js, effect-puff.js, effect-pulsate.js, effect-scale.js, effect-shake.js, effect-size.js, effect-slide.js, effect-transfer.js
* Copyright 2015 jQuery Foundation and other contributors; Licensed MIT */

(function(e){"function"==typeof define&&define.amd?define(["jquery"],e):e(jQuery)})(function(e){function t(t,s){var a,n,r,o=t.nodeName.toLowerCase();return"area"===o?(a=t.parentNode,n=a.name,t.href&&n&&"map"===a.nodeName.toLowerCase()?(r=e("img[usemap='#"+n+"']")[0],!!r&&i(r)):!1):(/^(input|select|textarea|button|object)$/.test(o)?!t.disabled:"a"===o?t.href||s:s)&&i(t)}function i(t){return e.expr.filters.visible(t)&&!e(t).parents().addBack().filter(function(){return"hidden"===e.css(this,"visibility")}).length}function s(e){for(var t,i;e.length&&e[0]!==document;){if(t=e.css("position"),("absolute"===t||"relative"===t||"fixed"===t)&&(i=parseInt(e.css("zIndex"),10),!isNaN(i)&&0!==i))return i;e=e.parent()}return 0}function a(){this._curInst=null,this._keyEvent=!1,this._disabledInputs=[],this._datepickerShowing=!1,this._inDialog=!1,this._mainDivId="ui-datepicker-div",this._inlineClass="ui-datepicker-inline",this._appendClass="ui-datepicker-append",this._triggerClass="ui-datepicker-trigger",this._dialogClass="ui-datepicker-dialog",this._disableClass="ui-datepicker-disabled",this._unselectableClass="ui-datepicker-unselectable",this._currentClass="ui-datepicker-current-day",this._dayOverClass="ui-datepicker-days-cell-over",this.regional=[],this.regional[""]={closeText:"Done",prevText:"Prev",nextText:"Next",currentText:"Today",monthNames:["January","February","March","April","May","June","July","August","September","October","November","December"],monthNamesShort:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],dayNames:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],dayNamesShort:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],dayNamesMin:["Su","Mo","Tu","We","Th","Fr","Sa"],weekHeader:"Wk",dateFormat:"mm/dd/yy",firstDay:0,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""},this._defaults={showOn:"focus",showAnim:"fadeIn",showOptions:{},defaultDate:null,appendText:"",buttonText:"...",buttonImage:"",buttonImageOnly:!1,hideIfNoPrevNext:!1,navigationAsDateFormat:!1,gotoCurrent:!1,changeMonth:!1,changeYear:!1,yearRange:"c-10:c+10",showOtherMonths:!1,selectOtherMonths:!1,showWeek:!1,calculateWeek:this.iso8601Week,shortYearCutoff:"+10",minDate:null,maxDate:null,duration:"fast",beforeShowDay:null,beforeShow:null,onSelect:null,onChangeMonthYear:null,onClose:null,numberOfMonths:1,showCurrentAtPos:0,stepMonths:1,stepBigMonths:12,altField:"",altFormat:"",constrainInput:!0,showButtonPanel:!1,autoSize:!1,disabled:!1},e.extend(this._defaults,this.regional[""]),this.regional.en=e.extend(!0,{},this.regional[""]),this.regional["en-US"]=e.extend(!0,{},this.regional.en),this.dpDiv=n(e("<div id='"+this._mainDivId+"' class='ui-datepicker ui-widget ui-widget-content ui-helper-clearfix ui-corner-all'></div>"))}function n(t){var i="button, .ui-datepicker-prev, .ui-datepicker-next, .ui-datepicker-calendar td a";return t.delegate(i,"mouseout",function(){e(this).removeClass("ui-state-hover"),-1!==this.className.indexOf("ui-datepicker-prev")&&e(this).removeClass("ui-datepicker-prev-hover"),-1!==this.className.indexOf("ui-datepicker-next")&&e(this).removeClass("ui-datepicker-next-hover")}).delegate(i,"mouseover",r)}function r(){e.datepicker._isDisabledDatepicker(v.inline?v.dpDiv.parent()[0]:v.input[0])||(e(this).parents(".ui-datepicker-calendar").find("a").removeClass("ui-state-hover"),e(this).addClass("ui-state-hover"),-1!==this.className.indexOf("ui-datepicker-prev")&&e(this).addClass("ui-datepicker-prev-hover"),-1!==this.className.indexOf("ui-datepicker-next")&&e(this).addClass("ui-datepicker-next-hover"))}function o(t,i){e.extend(t,i);for(var s in i)null==i[s]&&(t[s]=i[s]);return t}function h(e){return function(){var t=this.element.val();e.apply(this,arguments),this._refresh(),t!==this.element.val()&&this._trigger("change")}}e.ui=e.ui||{},e.extend(e.ui,{version:"1.11.4",keyCode:{BACKSPACE:8,COMMA:188,DELETE:46,DOWN:40,END:35,ENTER:13,ESCAPE:27,HOME:36,LEFT:37,PAGE_DOWN:34,PAGE_UP:33,PERIOD:190,RIGHT:39,SPACE:32,TAB:9,UP:38}}),e.fn.extend({scrollParent:function(t){var i=this.css("position"),s="absolute"===i,a=t?/(auto|scroll|hidden)/:/(auto|scroll)/,n=this.parents().filter(function(){var t=e(this);return s&&"static"===t.css("position")?!1:a.test(t.css("overflow")+t.css("overflow-y")+t.css("overflow-x"))}).eq(0);return"fixed"!==i&&n.length?n:e(this[0].ownerDocument||document)},uniqueId:function(){var e=0;return function(){return this.each(function(){this.id||(this.id="ui-id-"+ ++e)})}}(),removeUniqueId:function(){return this.each(function(){/^ui-id-\d+$/.test(this.id)&&e(this).removeAttr("id")})}}),e.extend(e.expr[":"],{data:e.expr.createPseudo?e.expr.createPseudo(function(t){return function(i){return!!e.data(i,t)}}):function(t,i,s){return!!e.data(t,s[3])},focusable:function(i){return t(i,!isNaN(e.attr(i,"tabindex")))},tabbable:function(i){var s=e.attr(i,"tabindex"),a=isNaN(s);return(a||s>=0)&&t(i,!a)}}),e("<a>").outerWidth(1).jquery||e.each(["Width","Height"],function(t,i){function s(t,i,s,n){return e.each(a,function(){i-=parseFloat(e.css(t,"padding"+this))||0,s&&(i-=parseFloat(e.css(t,"border"+this+"Width"))||0),n&&(i-=parseFloat(e.css(t,"margin"+this))||0)}),i}var a="Width"===i?["Left","Right"]:["Top","Bottom"],n=i.toLowerCase(),r={innerWidth:e.fn.innerWidth,innerHeight:e.fn.innerHeight,outerWidth:e.fn.outerWidth,outerHeight:e.fn.outerHeight};e.fn["inner"+i]=function(t){return void 0===t?r["inner"+i].call(this):this.each(function(){e(this).css(n,s(this,t)+"px")})},e.fn["outer"+i]=function(t,a){return"number"!=typeof t?r["outer"+i].call(this,t):this.each(function(){e(this).css(n,s(this,t,!0,a)+"px")})}}),e.fn.addBack||(e.fn.addBack=function(e){return this.add(null==e?this.prevObject:this.prevObject.filter(e))}),e("<a>").data("a-b","a").removeData("a-b").data("a-b")&&(e.fn.removeData=function(t){return function(i){return arguments.length?t.call(this,e.camelCase(i)):t.call(this)}}(e.fn.removeData)),e.ui.ie=!!/msie [\w.]+/.exec(navigator.userAgent.toLowerCase()),e.fn.extend({focus:function(t){return function(i,s){return"number"==typeof i?this.each(function(){var t=this;setTimeout(function(){e(t).focus(),s&&s.call(t)},i)}):t.apply(this,arguments)}}(e.fn.focus),disableSelection:function(){var e="onselectstart"in document.createElement("div")?"selectstart":"mousedown";return function(){return this.bind(e+".ui-disableSelection",function(e){e.preventDefault()})}}(),enableSelection:function(){return this.unbind(".ui-disableSelection")},zIndex:function(t){if(void 0!==t)return this.css("zIndex",t);if(this.length)for(var i,s,a=e(this[0]);a.length&&a[0]!==document;){if(i=a.css("position"),("absolute"===i||"relative"===i||"fixed"===i)&&(s=parseInt(a.css("zIndex"),10),!isNaN(s)&&0!==s))return s;a=a.parent()}return 0}}),e.ui.plugin={add:function(t,i,s){var a,n=e.ui[t].prototype;for(a in s)n.plugins[a]=n.plugins[a]||[],n.plugins[a].push([i,s[a]])},call:function(e,t,i,s){var a,n=e.plugins[t];if(n&&(s||e.element[0].parentNode&&11!==e.element[0].parentNode.nodeType))for(a=0;n.length>a;a++)e.options[n[a][0]]&&n[a][1].apply(e.element,i)}};var l=0,u=Array.prototype.slice;e.cleanData=function(t){return function(i){var s,a,n;for(n=0;null!=(a=i[n]);n++)try{s=e._data(a,"events"),s&&s.remove&&e(a).triggerHandler("remove")}catch(r){}t(i)}}(e.cleanData),e.widget=function(t,i,s){var a,n,r,o,h={},l=t.split(".")[0];return t=t.split(".")[1],a=l+"-"+t,s||(s=i,i=e.Widget),e.expr[":"][a.toLowerCase()]=function(t){return!!e.data(t,a)},e[l]=e[l]||{},n=e[l][t],r=e[l][t]=function(e,t){return this._createWidget?(arguments.length&&this._createWidget(e,t),void 0):new r(e,t)},e.extend(r,n,{version:s.version,_proto:e.extend({},s),_childConstructors:[]}),o=new i,o.options=e.widget.extend({},o.options),e.each(s,function(t,s){return e.isFunction(s)?(h[t]=function(){var e=function(){return i.prototype[t].apply(this,arguments)},a=function(e){return i.prototype[t].apply(this,e)};return function(){var t,i=this._super,n=this._superApply;return this._super=e,this._superApply=a,t=s.apply(this,arguments),this._super=i,this._superApply=n,t}}(),void 0):(h[t]=s,void 0)}),r.prototype=e.widget.extend(o,{widgetEventPrefix:n?o.widgetEventPrefix||t:t},h,{constructor:r,namespace:l,widgetName:t,widgetFullName:a}),n?(e.each(n._childConstructors,function(t,i){var s=i.prototype;e.widget(s.namespace+"."+s.widgetName,r,i._proto)}),delete n._childConstructors):i._childConstructors.push(r),e.widget.bridge(t,r),r},e.widget.extend=function(t){for(var i,s,a=u.call(arguments,1),n=0,r=a.length;r>n;n++)for(i in a[n])s=a[n][i],a[n].hasOwnProperty(i)&&void 0!==s&&(t[i]=e.isPlainObject(s)?e.isPlainObject(t[i])?e.widget.extend({},t[i],s):e.widget.extend({},s):s);return t},e.widget.bridge=function(t,i){var s=i.prototype.widgetFullName||t;e.fn[t]=function(a){var n="string"==typeof a,r=u.call(arguments,1),o=this;return n?this.each(function(){var i,n=e.data(this,s);return"instance"===a?(o=n,!1):n?e.isFunction(n[a])&&"_"!==a.charAt(0)?(i=n[a].apply(n,r),i!==n&&void 0!==i?(o=i&&i.jquery?o.pushStack(i.get()):i,!1):void 0):e.error("no such method '"+a+"' for "+t+" widget instance"):e.error("cannot call methods on "+t+" prior to initialization; "+"attempted to call method '"+a+"'")}):(r.length&&(a=e.widget.extend.apply(null,[a].concat(r))),this.each(function(){var t=e.data(this,s);t?(t.option(a||{}),t._init&&t._init()):e.data(this,s,new i(a,this))})),o}},e.Widget=function(){},e.Widget._childConstructors=[],e.Widget.prototype={widgetName:"widget",widgetEventPrefix:"",defaultElement:"<div>",options:{disabled:!1,create:null},_createWidget:function(t,i){i=e(i||this.defaultElement||this)[0],this.element=e(i),this.uuid=l++,this.eventNamespace="."+this.widgetName+this.uuid,this.bindings=e(),this.hoverable=e(),this.focusable=e(),i!==this&&(e.data(i,this.widgetFullName,this),this._on(!0,this.element,{remove:function(e){e.target===i&&this.destroy()}}),this.document=e(i.style?i.ownerDocument:i.document||i),this.window=e(this.document[0].defaultView||this.document[0].parentWindow)),this.options=e.widget.extend({},this.options,this._getCreateOptions(),t),this._create(),this._trigger("create",null,this._getCreateEventData()),this._init()},_getCreateOptions:e.noop,_getCreateEventData:e.noop,_create:e.noop,_init:e.noop,destroy:function(){this._destroy(),this.element.unbind(this.eventNamespace).removeData(this.widgetFullName).removeData(e.camelCase(this.widgetFullName)),this.widget().unbind(this.eventNamespace).removeAttr("aria-disabled").removeClass(this.widgetFullName+"-disabled "+"ui-state-disabled"),this.bindings.unbind(this.eventNamespace),this.hoverable.removeClass("ui-state-hover"),this.focusable.removeClass("ui-state-focus")},_destroy:e.noop,widget:function(){return this.element},option:function(t,i){var s,a,n,r=t;if(0===arguments.length)return e.widget.extend({},this.options);if("string"==typeof t)if(r={},s=t.split("."),t=s.shift(),s.length){for(a=r[t]=e.widget.extend({},this.options[t]),n=0;s.length-1>n;n++)a[s[n]]=a[s[n]]||{},a=a[s[n]];if(t=s.pop(),1===arguments.length)return void 0===a[t]?null:a[t];a[t]=i}else{if(1===arguments.length)return void 0===this.options[t]?null:this.options[t];r[t]=i}return this._setOptions(r),this},_setOptions:function(e){var t;for(t in e)this._setOption(t,e[t]);return this},_setOption:function(e,t){return this.options[e]=t,"disabled"===e&&(this.widget().toggleClass(this.widgetFullName+"-disabled",!!t),t&&(this.hoverable.removeClass("ui-state-hover"),this.focusable.removeClass("ui-state-focus"))),this},enable:function(){return this._setOptions({disabled:!1})},disable:function(){return this._setOptions({disabled:!0})},_on:function(t,i,s){var a,n=this;"boolean"!=typeof t&&(s=i,i=t,t=!1),s?(i=a=e(i),this.bindings=this.bindings.add(i)):(s=i,i=this.element,a=this.widget()),e.each(s,function(s,r){function o(){return t||n.options.disabled!==!0&&!e(this).hasClass("ui-state-disabled")?("string"==typeof r?n[r]:r).apply(n,arguments):void 0}"string"!=typeof r&&(o.guid=r.guid=r.guid||o.guid||e.guid++);var h=s.match(/^([\w:-]*)\s*(.*)$/),l=h[1]+n.eventNamespace,u=h[2];u?a.delegate(u,l,o):i.bind(l,o)})},_off:function(t,i){i=(i||"").split(" ").join(this.eventNamespace+" ")+this.eventNamespace,t.unbind(i).undelegate(i),this.bindings=e(this.bindings.not(t).get()),this.focusable=e(this.focusable.not(t).get()),this.hoverable=e(this.hoverable.not(t).get())},_delay:function(e,t){function i(){return("string"==typeof e?s[e]:e).apply(s,arguments)}var s=this;return setTimeout(i,t||0)},_hoverable:function(t){this.hoverable=this.hoverable.add(t),this._on(t,{mouseenter:function(t){e(t.currentTarget).addClass("ui-state-hover")},mouseleave:function(t){e(t.currentTarget).removeClass("ui-state-hover")}})},_focusable:function(t){this.focusable=this.focusable.add(t),this._on(t,{focusin:function(t){e(t.currentTarget).addClass("ui-state-focus")},focusout:function(t){e(t.currentTarget).removeClass("ui-state-focus")}})},_trigger:function(t,i,s){var a,n,r=this.options[t];if(s=s||{},i=e.Event(i),i.type=(t===this.widgetEventPrefix?t:this.widgetEventPrefix+t).toLowerCase(),i.target=this.element[0],n=i.originalEvent)for(a in n)a in i||(i[a]=n[a]);return this.element.trigger(i,s),!(e.isFunction(r)&&r.apply(this.element[0],[i].concat(s))===!1||i.isDefaultPrevented())}},e.each({show:"fadeIn",hide:"fadeOut"},function(t,i){e.Widget.prototype["_"+t]=function(s,a,n){"string"==typeof a&&(a={effect:a});var r,o=a?a===!0||"number"==typeof a?i:a.effect||i:t;a=a||{},"number"==typeof a&&(a={duration:a}),r=!e.isEmptyObject(a),a.complete=n,a.delay&&s.delay(a.delay),r&&e.effects&&e.effects.effect[o]?s[t](a):o!==t&&s[o]?s[o](a.duration,a.easing,n):s.queue(function(i){e(this)[t](),n&&n.call(s[0]),i()})}}),e.widget;var d=!1;e(document).mouseup(function(){d=!1}),e.widget("ui.mouse",{version:"1.11.4",options:{cancel:"input,textarea,button,select,option",distance:1,delay:0},_mouseInit:function(){var t=this;this.element.bind("mousedown."+this.widgetName,function(e){return t._mouseDown(e)}).bind("click."+this.widgetName,function(i){return!0===e.data(i.target,t.widgetName+".preventClickEvent")?(e.removeData(i.target,t.widgetName+".preventClickEvent"),i.stopImmediatePropagation(),!1):void 0}),this.started=!1},_mouseDestroy:function(){this.element.unbind("."+this.widgetName),this._mouseMoveDelegate&&this.document.unbind("mousemove."+this.widgetName,this._mouseMoveDelegate).unbind("mouseup."+this.widgetName,this._mouseUpDelegate)},_mouseDown:function(t){if(!d){this._mouseMoved=!1,this._mouseStarted&&this._mouseUp(t),this._mouseDownEvent=t;var i=this,s=1===t.which,a="string"==typeof this.options.cancel&&t.target.nodeName?e(t.target).closest(this.options.cancel).length:!1;return s&&!a&&this._mouseCapture(t)?(this.mouseDelayMet=!this.options.delay,this.mouseDelayMet||(this._mouseDelayTimer=setTimeout(function(){i.mouseDelayMet=!0},this.options.delay)),this._mouseDistanceMet(t)&&this._mouseDelayMet(t)&&(this._mouseStarted=this._mouseStart(t)!==!1,!this._mouseStarted)?(t.preventDefault(),!0):(!0===e.data(t.target,this.widgetName+".preventClickEvent")&&e.removeData(t.target,this.widgetName+".preventClickEvent"),this._mouseMoveDelegate=function(e){return i._mouseMove(e)},this._mouseUpDelegate=function(e){return i._mouseUp(e)},this.document.bind("mousemove."+this.widgetName,this._mouseMoveDelegate).bind("mouseup."+this.widgetName,this._mouseUpDelegate),t.preventDefault(),d=!0,!0)):!0}},_mouseMove:function(t){if(this._mouseMoved){if(e.ui.ie&&(!document.documentMode||9>document.documentMode)&&!t.button)return this._mouseUp(t);if(!t.which)return this._mouseUp(t)}return(t.which||t.button)&&(this._mouseMoved=!0),this._mouseStarted?(this._mouseDrag(t),t.preventDefault()):(this._mouseDistanceMet(t)&&this._mouseDelayMet(t)&&(this._mouseStarted=this._mouseStart(this._mouseDownEvent,t)!==!1,this._mouseStarted?this._mouseDrag(t):this._mouseUp(t)),!this._mouseStarted)},_mouseUp:function(t){return this.document.unbind("mousemove."+this.widgetName,this._mouseMoveDelegate).unbind("mouseup."+this.widgetName,this._mouseUpDelegate),this._mouseStarted&&(this._mouseStarted=!1,t.target===this._mouseDownEvent.target&&e.data(t.target,this.widgetName+".preventClickEvent",!0),this._mouseStop(t)),d=!1,!1},_mouseDistanceMet:function(e){return Math.max(Math.abs(this._mouseDownEvent.pageX-e.pageX),Math.abs(this._mouseDownEvent.pageY-e.pageY))>=this.options.distance},_mouseDelayMet:function(){return this.mouseDelayMet},_mouseStart:function(){},_mouseDrag:function(){},_mouseStop:function(){},_mouseCapture:function(){return!0}}),function(){function t(e,t,i){return[parseFloat(e[0])*(p.test(e[0])?t/100:1),parseFloat(e[1])*(p.test(e[1])?i/100:1)]}function i(t,i){return parseInt(e.css(t,i),10)||0}function s(t){var i=t[0];return 9===i.nodeType?{width:t.width(),height:t.height(),offset:{top:0,left:0}}:e.isWindow(i)?{width:t.width(),height:t.height(),offset:{top:t.scrollTop(),left:t.scrollLeft()}}:i.preventDefault?{width:0,height:0,offset:{top:i.pageY,left:i.pageX}}:{width:t.outerWidth(),height:t.outerHeight(),offset:t.offset()}}e.ui=e.ui||{};var a,n,r=Math.max,o=Math.abs,h=Math.round,l=/left|center|right/,u=/top|center|bottom/,d=/[\+\-]\d+(\.[\d]+)?%?/,c=/^\w+/,p=/%$/,f=e.fn.position;e.position={scrollbarWidth:function(){if(void 0!==a)return a;var t,i,s=e("<div style='display:block;position:absolute;width:50px;height:50px;overflow:hidden;'><div style='height:100px;width:auto;'></div></div>"),n=s.children()[0];return e("body").append(s),t=n.offsetWidth,s.css("overflow","scroll"),i=n.offsetWidth,t===i&&(i=s[0].clientWidth),s.remove(),a=t-i},getScrollInfo:function(t){var i=t.isWindow||t.isDocument?"":t.element.css("overflow-x"),s=t.isWindow||t.isDocument?"":t.element.css("overflow-y"),a="scroll"===i||"auto"===i&&t.width<t.element[0].scrollWidth,n="scroll"===s||"auto"===s&&t.height<t.element[0].scrollHeight;return{width:n?e.position.scrollbarWidth():0,height:a?e.position.scrollbarWidth():0}},getWithinInfo:function(t){var i=e(t||window),s=e.isWindow(i[0]),a=!!i[0]&&9===i[0].nodeType;return{element:i,isWindow:s,isDocument:a,offset:i.offset()||{left:0,top:0},scrollLeft:i.scrollLeft(),scrollTop:i.scrollTop(),width:s||a?i.width():i.outerWidth(),height:s||a?i.height():i.outerHeight()}}},e.fn.position=function(a){if(!a||!a.of)return f.apply(this,arguments);a=e.extend({},a);var p,m,g,v,y,b,_=e(a.of),x=e.position.getWithinInfo(a.within),k=e.position.getScrollInfo(x),w=(a.collision||"flip").split(" "),T={};return b=s(_),_[0].preventDefault&&(a.at="left top"),m=b.width,g=b.height,v=b.offset,y=e.extend({},v),e.each(["my","at"],function(){var e,t,i=(a[this]||"").split(" ");1===i.length&&(i=l.test(i[0])?i.concat(["center"]):u.test(i[0])?["center"].concat(i):["center","center"]),i[0]=l.test(i[0])?i[0]:"center",i[1]=u.test(i[1])?i[1]:"center",e=d.exec(i[0]),t=d.exec(i[1]),T[this]=[e?e[0]:0,t?t[0]:0],a[this]=[c.exec(i[0])[0],c.exec(i[1])[0]]}),1===w.length&&(w[1]=w[0]),"right"===a.at[0]?y.left+=m:"center"===a.at[0]&&(y.left+=m/2),"bottom"===a.at[1]?y.top+=g:"center"===a.at[1]&&(y.top+=g/2),p=t(T.at,m,g),y.left+=p[0],y.top+=p[1],this.each(function(){var s,l,u=e(this),d=u.outerWidth(),c=u.outerHeight(),f=i(this,"marginLeft"),b=i(this,"marginTop"),D=d+f+i(this,"marginRight")+k.width,S=c+b+i(this,"marginBottom")+k.height,M=e.extend({},y),N=t(T.my,u.outerWidth(),u.outerHeight());"right"===a.my[0]?M.left-=d:"center"===a.my[0]&&(M.left-=d/2),"bottom"===a.my[1]?M.top-=c:"center"===a.my[1]&&(M.top-=c/2),M.left+=N[0],M.top+=N[1],n||(M.left=h(M.left),M.top=h(M.top)),s={marginLeft:f,marginTop:b},e.each(["left","top"],function(t,i){e.ui.position[w[t]]&&e.ui.position[w[t]][i](M,{targetWidth:m,targetHeight:g,elemWidth:d,elemHeight:c,collisionPosition:s,collisionWidth:D,collisionHeight:S,offset:[p[0]+N[0],p[1]+N[1]],my:a.my,at:a.at,within:x,elem:u})}),a.using&&(l=function(e){var t=v.left-M.left,i=t+m-d,s=v.top-M.top,n=s+g-c,h={target:{element:_,left:v.left,top:v.top,width:m,height:g},element:{element:u,left:M.left,top:M.top,width:d,height:c},horizontal:0>i?"left":t>0?"right":"center",vertical:0>n?"top":s>0?"bottom":"middle"};d>m&&m>o(t+i)&&(h.horizontal="center"),c>g&&g>o(s+n)&&(h.vertical="middle"),h.important=r(o(t),o(i))>r(o(s),o(n))?"horizontal":"vertical",a.using.call(this,e,h)}),u.offset(e.extend(M,{using:l}))})},e.ui.position={fit:{left:function(e,t){var i,s=t.within,a=s.isWindow?s.scrollLeft:s.offset.left,n=s.width,o=e.left-t.collisionPosition.marginLeft,h=a-o,l=o+t.collisionWidth-n-a;t.collisionWidth>n?h>0&&0>=l?(i=e.left+h+t.collisionWidth-n-a,e.left+=h-i):e.left=l>0&&0>=h?a:h>l?a+n-t.collisionWidth:a:h>0?e.left+=h:l>0?e.left-=l:e.left=r(e.left-o,e.left)},top:function(e,t){var i,s=t.within,a=s.isWindow?s.scrollTop:s.offset.top,n=t.within.height,o=e.top-t.collisionPosition.marginTop,h=a-o,l=o+t.collisionHeight-n-a;t.collisionHeight>n?h>0&&0>=l?(i=e.top+h+t.collisionHeight-n-a,e.top+=h-i):e.top=l>0&&0>=h?a:h>l?a+n-t.collisionHeight:a:h>0?e.top+=h:l>0?e.top-=l:e.top=r(e.top-o,e.top)}},flip:{left:function(e,t){var i,s,a=t.within,n=a.offset.left+a.scrollLeft,r=a.width,h=a.isWindow?a.scrollLeft:a.offset.left,l=e.left-t.collisionPosition.marginLeft,u=l-h,d=l+t.collisionWidth-r-h,c="left"===t.my[0]?-t.elemWidth:"right"===t.my[0]?t.elemWidth:0,p="left"===t.at[0]?t.targetWidth:"right"===t.at[0]?-t.targetWidth:0,f=-2*t.offset[0];0>u?(i=e.left+c+p+f+t.collisionWidth-r-n,(0>i||o(u)>i)&&(e.left+=c+p+f)):d>0&&(s=e.left-t.collisionPosition.marginLeft+c+p+f-h,(s>0||d>o(s))&&(e.left+=c+p+f))},top:function(e,t){var i,s,a=t.within,n=a.offset.top+a.scrollTop,r=a.height,h=a.isWindow?a.scrollTop:a.offset.top,l=e.top-t.collisionPosition.marginTop,u=l-h,d=l+t.collisionHeight-r-h,c="top"===t.my[1],p=c?-t.elemHeight:"bottom"===t.my[1]?t.elemHeight:0,f="top"===t.at[1]?t.targetHeight:"bottom"===t.at[1]?-t.targetHeight:0,m=-2*t.offset[1];0>u?(s=e.top+p+f+m+t.collisionHeight-r-n,(0>s||o(u)>s)&&(e.top+=p+f+m)):d>0&&(i=e.top-t.collisionPosition.marginTop+p+f+m-h,(i>0||d>o(i))&&(e.top+=p+f+m))}},flipfit:{left:function(){e.ui.position.flip.left.apply(this,arguments),e.ui.position.fit.left.apply(this,arguments)},top:function(){e.ui.position.flip.top.apply(this,arguments),e.ui.position.fit.top.apply(this,arguments)}}},function(){var t,i,s,a,r,o=document.getElementsByTagName("body")[0],h=document.createElement("div");t=document.createElement(o?"div":"body"),s={visibility:"hidden",width:0,height:0,border:0,margin:0,background:"none"},o&&e.extend(s,{position:"absolute",left:"-1000px",top:"-1000px"});for(r in s)t.style[r]=s[r];t.appendChild(h),i=o||document.documentElement,i.insertBefore(t,i.firstChild),h.style.cssText="position: absolute; left: 10.7432222px;",a=e(h).offset().left,n=a>10&&11>a,t.innerHTML="",i.removeChild(t)}()}(),e.ui.position,e.widget("ui.draggable",e.ui.mouse,{version:"1.11.4",widgetEventPrefix:"drag",options:{addClasses:!0,appendTo:"parent",axis:!1,connectToSortable:!1,containment:!1,cursor:"auto",cursorAt:!1,grid:!1,handle:!1,helper:"original",iframeFix:!1,opacity:!1,refreshPositions:!1,revert:!1,revertDuration:500,scope:"default",scroll:!0,scrollSensitivity:20,scrollSpeed:20,snap:!1,snapMode:"both",snapTolerance:20,stack:!1,zIndex:!1,drag:null,start:null,stop:null},_create:function(){"original"===this.options.helper&&this._setPositionRelative(),this.options.addClasses&&this.element.addClass("ui-draggable"),this.options.disabled&&this.element.addClass("ui-draggable-disabled"),this._setHandleClassName(),this._mouseInit()},_setOption:function(e,t){this._super(e,t),"handle"===e&&(this._removeHandleClassName(),this._setHandleClassName())},_destroy:function(){return(this.helper||this.element).is(".ui-draggable-dragging")?(this.destroyOnClear=!0,void 0):(this.element.removeClass("ui-draggable ui-draggable-dragging ui-draggable-disabled"),this._removeHandleClassName(),this._mouseDestroy(),void 0)},_mouseCapture:function(t){var i=this.options;return this._blurActiveElement(t),this.helper||i.disabled||e(t.target).closest(".ui-resizable-handle").length>0?!1:(this.handle=this._getHandle(t),this.handle?(this._blockFrames(i.iframeFix===!0?"iframe":i.iframeFix),!0):!1)},_blockFrames:function(t){this.iframeBlocks=this.document.find(t).map(function(){var t=e(this);return e("<div>").css("position","absolute").appendTo(t.parent()).outerWidth(t.outerWidth()).outerHeight(t.outerHeight()).offset(t.offset())[0]})},_unblockFrames:function(){this.iframeBlocks&&(this.iframeBlocks.remove(),delete this.iframeBlocks)},_blurActiveElement:function(t){var i=this.document[0];if(this.handleElement.is(t.target))try{i.activeElement&&"body"!==i.activeElement.nodeName.toLowerCase()&&e(i.activeElement).blur()}catch(s){}},_mouseStart:function(t){var i=this.options;return this.helper=this._createHelper(t),this.helper.addClass("ui-draggable-dragging"),this._cacheHelperProportions(),e.ui.ddmanager&&(e.ui.ddmanager.current=this),this._cacheMargins(),this.cssPosition=this.helper.css("position"),this.scrollParent=this.helper.scrollParent(!0),this.offsetParent=this.helper.offsetParent(),this.hasFixedAncestor=this.helper.parents().filter(function(){return"fixed"===e(this).css("position")}).length>0,this.positionAbs=this.element.offset(),this._refreshOffsets(t),this.originalPosition=this.position=this._generatePosition(t,!1),this.originalPageX=t.pageX,this.originalPageY=t.pageY,i.cursorAt&&this._adjustOffsetFromHelper(i.cursorAt),this._setContainment(),this._trigger("start",t)===!1?(this._clear(),!1):(this._cacheHelperProportions(),e.ui.ddmanager&&!i.dropBehaviour&&e.ui.ddmanager.prepareOffsets(this,t),this._normalizeRightBottom(),this._mouseDrag(t,!0),e.ui.ddmanager&&e.ui.ddmanager.dragStart(this,t),!0)},_refreshOffsets:function(e){this.offset={top:this.positionAbs.top-this.margins.top,left:this.positionAbs.left-this.margins.left,scroll:!1,parent:this._getParentOffset(),relative:this._getRelativeOffset()},this.offset.click={left:e.pageX-this.offset.left,top:e.pageY-this.offset.top}},_mouseDrag:function(t,i){if(this.hasFixedAncestor&&(this.offset.parent=this._getParentOffset()),this.position=this._generatePosition(t,!0),this.positionAbs=this._convertPositionTo("absolute"),!i){var s=this._uiHash();if(this._trigger("drag",t,s)===!1)return this._mouseUp({}),!1;this.position=s.position}return this.helper[0].style.left=this.position.left+"px",this.helper[0].style.top=this.position.top+"px",e.ui.ddmanager&&e.ui.ddmanager.drag(this,t),!1},_mouseStop:function(t){var i=this,s=!1;return e.ui.ddmanager&&!this.options.dropBehaviour&&(s=e.ui.ddmanager.drop(this,t)),this.dropped&&(s=this.dropped,this.dropped=!1),"invalid"===this.options.revert&&!s||"valid"===this.options.revert&&s||this.options.revert===!0||e.isFunction(this.options.revert)&&this.options.revert.call(this.element,s)?e(this.helper).animate(this.originalPosition,parseInt(this.options.revertDuration,10),function(){i._trigger("stop",t)!==!1&&i._clear()}):this._trigger("stop",t)!==!1&&this._clear(),!1},_mouseUp:function(t){return this._unblockFrames(),e.ui.ddmanager&&e.ui.ddmanager.dragStop(this,t),this.handleElement.is(t.target)&&this.element.focus(),e.ui.mouse.prototype._mouseUp.call(this,t)},cancel:function(){return this.helper.is(".ui-draggable-dragging")?this._mouseUp({}):this._clear(),this},_getHandle:function(t){return this.options.handle?!!e(t.target).closest(this.element.find(this.options.handle)).length:!0},_setHandleClassName:function(){this.handleElement=this.options.handle?this.element.find(this.options.handle):this.element,this.handleElement.addClass("ui-draggable-handle")},_removeHandleClassName:function(){this.handleElement.removeClass("ui-draggable-handle")},_createHelper:function(t){var i=this.options,s=e.isFunction(i.helper),a=s?e(i.helper.apply(this.element[0],[t])):"clone"===i.helper?this.element.clone().removeAttr("id"):this.element;return a.parents("body").length||a.appendTo("parent"===i.appendTo?this.element[0].parentNode:i.appendTo),s&&a[0]===this.element[0]&&this._setPositionRelative(),a[0]===this.element[0]||/(fixed|absolute)/.test(a.css("position"))||a.css("position","absolute"),a},_setPositionRelative:function(){/^(?:r|a|f)/.test(this.element.css("position"))||(this.element[0].style.position="relative")},_adjustOffsetFromHelper:function(t){"string"==typeof t&&(t=t.split(" ")),e.isArray(t)&&(t={left:+t[0],top:+t[1]||0}),"left"in t&&(this.offset.click.left=t.left+this.margins.left),"right"in t&&(this.offset.click.left=this.helperProportions.width-t.right+this.margins.left),"top"in t&&(this.offset.click.top=t.top+this.margins.top),"bottom"in t&&(this.offset.click.top=this.helperProportions.height-t.bottom+this.margins.top)},_isRootNode:function(e){return/(html|body)/i.test(e.tagName)||e===this.document[0]},_getParentOffset:function(){var t=this.offsetParent.offset(),i=this.document[0];return"absolute"===this.cssPosition&&this.scrollParent[0]!==i&&e.contains(this.scrollParent[0],this.offsetParent[0])&&(t.left+=this.scrollParent.scrollLeft(),t.top+=this.scrollParent.scrollTop()),this._isRootNode(this.offsetParent[0])&&(t={top:0,left:0}),{top:t.top+(parseInt(this.offsetParent.css("borderTopWidth"),10)||0),left:t.left+(parseInt(this.offsetParent.css("borderLeftWidth"),10)||0)}},_getRelativeOffset:function(){if("relative"!==this.cssPosition)return{top:0,left:0};var e=this.element.position(),t=this._isRootNode(this.scrollParent[0]);return{top:e.top-(parseInt(this.helper.css("top"),10)||0)+(t?0:this.scrollParent.scrollTop()),left:e.left-(parseInt(this.helper.css("left"),10)||0)+(t?0:this.scrollParent.scrollLeft())}},_cacheMargins:function(){this.margins={left:parseInt(this.element.css("marginLeft"),10)||0,top:parseInt(this.element.css("marginTop"),10)||0,right:parseInt(this.element.css("marginRight"),10)||0,bottom:parseInt(this.element.css("marginBottom"),10)||0}},_cacheHelperProportions:function(){this.helperProportions={width:this.helper.outerWidth(),height:this.helper.outerHeight()}},_setContainment:function(){var t,i,s,a=this.options,n=this.document[0];return this.relativeContainer=null,a.containment?"window"===a.containment?(this.containment=[e(window).scrollLeft()-this.offset.relative.left-this.offset.parent.left,e(window).scrollTop()-this.offset.relative.top-this.offset.parent.top,e(window).scrollLeft()+e(window).width()-this.helperProportions.width-this.margins.left,e(window).scrollTop()+(e(window).height()||n.body.parentNode.scrollHeight)-this.helperProportions.height-this.margins.top],void 0):"document"===a.containment?(this.containment=[0,0,e(n).width()-this.helperProportions.width-this.margins.left,(e(n).height()||n.body.parentNode.scrollHeight)-this.helperProportions.height-this.margins.top],void 0):a.containment.constructor===Array?(this.containment=a.containment,void 0):("parent"===a.containment&&(a.containment=this.helper[0].parentNode),i=e(a.containment),s=i[0],s&&(t=/(scroll|auto)/.test(i.css("overflow")),this.containment=[(parseInt(i.css("borderLeftWidth"),10)||0)+(parseInt(i.css("paddingLeft"),10)||0),(parseInt(i.css("borderTopWidth"),10)||0)+(parseInt(i.css("paddingTop"),10)||0),(t?Math.max(s.scrollWidth,s.offsetWidth):s.offsetWidth)-(parseInt(i.css("borderRightWidth"),10)||0)-(parseInt(i.css("paddingRight"),10)||0)-this.helperProportions.width-this.margins.left-this.margins.right,(t?Math.max(s.scrollHeight,s.offsetHeight):s.offsetHeight)-(parseInt(i.css("borderBottomWidth"),10)||0)-(parseInt(i.css("paddingBottom"),10)||0)-this.helperProportions.height-this.margins.top-this.margins.bottom],this.relativeContainer=i),void 0):(this.containment=null,void 0)},_convertPositionTo:function(e,t){t||(t=this.position);var i="absolute"===e?1:-1,s=this._isRootNode(this.scrollParent[0]);return{top:t.top+this.offset.relative.top*i+this.offset.parent.top*i-("fixed"===this.cssPosition?-this.offset.scroll.top:s?0:this.offset.scroll.top)*i,left:t.left+this.offset.relative.left*i+this.offset.parent.left*i-("fixed"===this.cssPosition?-this.offset.scroll.left:s?0:this.offset.scroll.left)*i}},_generatePosition:function(e,t){var i,s,a,n,r=this.options,o=this._isRootNode(this.scrollParent[0]),h=e.pageX,l=e.pageY;return o&&this.offset.scroll||(this.offset.scroll={top:this.scrollParent.scrollTop(),left:this.scrollParent.scrollLeft()}),t&&(this.containment&&(this.relativeContainer?(s=this.relativeContainer.offset(),i=[this.containment[0]+s.left,this.containment[1]+s.top,this.containment[2]+s.left,this.containment[3]+s.top]):i=this.containment,e.pageX-this.offset.click.left<i[0]&&(h=i[0]+this.offset.click.left),e.pageY-this.offset.click.top<i[1]&&(l=i[1]+this.offset.click.top),e.pageX-this.offset.click.left>i[2]&&(h=i[2]+this.offset.click.left),e.pageY-this.offset.click.top>i[3]&&(l=i[3]+this.offset.click.top)),r.grid&&(a=r.grid[1]?this.originalPageY+Math.round((l-this.originalPageY)/r.grid[1])*r.grid[1]:this.originalPageY,l=i?a-this.offset.click.top>=i[1]||a-this.offset.click.top>i[3]?a:a-this.offset.click.top>=i[1]?a-r.grid[1]:a+r.grid[1]:a,n=r.grid[0]?this.originalPageX+Math.round((h-this.originalPageX)/r.grid[0])*r.grid[0]:this.originalPageX,h=i?n-this.offset.click.left>=i[0]||n-this.offset.click.left>i[2]?n:n-this.offset.click.left>=i[0]?n-r.grid[0]:n+r.grid[0]:n),"y"===r.axis&&(h=this.originalPageX),"x"===r.axis&&(l=this.originalPageY)),{top:l-this.offset.click.top-this.offset.relative.top-this.offset.parent.top+("fixed"===this.cssPosition?-this.offset.scroll.top:o?0:this.offset.scroll.top),left:h-this.offset.click.left-this.offset.relative.left-this.offset.parent.left+("fixed"===this.cssPosition?-this.offset.scroll.left:o?0:this.offset.scroll.left)}
},_clear:function(){this.helper.removeClass("ui-draggable-dragging"),this.helper[0]===this.element[0]||this.cancelHelperRemoval||this.helper.remove(),this.helper=null,this.cancelHelperRemoval=!1,this.destroyOnClear&&this.destroy()},_normalizeRightBottom:function(){"y"!==this.options.axis&&"auto"!==this.helper.css("right")&&(this.helper.width(this.helper.width()),this.helper.css("right","auto")),"x"!==this.options.axis&&"auto"!==this.helper.css("bottom")&&(this.helper.height(this.helper.height()),this.helper.css("bottom","auto"))},_trigger:function(t,i,s){return s=s||this._uiHash(),e.ui.plugin.call(this,t,[i,s,this],!0),/^(drag|start|stop)/.test(t)&&(this.positionAbs=this._convertPositionTo("absolute"),s.offset=this.positionAbs),e.Widget.prototype._trigger.call(this,t,i,s)},plugins:{},_uiHash:function(){return{helper:this.helper,position:this.position,originalPosition:this.originalPosition,offset:this.positionAbs}}}),e.ui.plugin.add("draggable","connectToSortable",{start:function(t,i,s){var a=e.extend({},i,{item:s.element});s.sortables=[],e(s.options.connectToSortable).each(function(){var i=e(this).sortable("instance");i&&!i.options.disabled&&(s.sortables.push(i),i.refreshPositions(),i._trigger("activate",t,a))})},stop:function(t,i,s){var a=e.extend({},i,{item:s.element});s.cancelHelperRemoval=!1,e.each(s.sortables,function(){var e=this;e.isOver?(e.isOver=0,s.cancelHelperRemoval=!0,e.cancelHelperRemoval=!1,e._storedCSS={position:e.placeholder.css("position"),top:e.placeholder.css("top"),left:e.placeholder.css("left")},e._mouseStop(t),e.options.helper=e.options._helper):(e.cancelHelperRemoval=!0,e._trigger("deactivate",t,a))})},drag:function(t,i,s){e.each(s.sortables,function(){var a=!1,n=this;n.positionAbs=s.positionAbs,n.helperProportions=s.helperProportions,n.offset.click=s.offset.click,n._intersectsWith(n.containerCache)&&(a=!0,e.each(s.sortables,function(){return this.positionAbs=s.positionAbs,this.helperProportions=s.helperProportions,this.offset.click=s.offset.click,this!==n&&this._intersectsWith(this.containerCache)&&e.contains(n.element[0],this.element[0])&&(a=!1),a})),a?(n.isOver||(n.isOver=1,s._parent=i.helper.parent(),n.currentItem=i.helper.appendTo(n.element).data("ui-sortable-item",!0),n.options._helper=n.options.helper,n.options.helper=function(){return i.helper[0]},t.target=n.currentItem[0],n._mouseCapture(t,!0),n._mouseStart(t,!0,!0),n.offset.click.top=s.offset.click.top,n.offset.click.left=s.offset.click.left,n.offset.parent.left-=s.offset.parent.left-n.offset.parent.left,n.offset.parent.top-=s.offset.parent.top-n.offset.parent.top,s._trigger("toSortable",t),s.dropped=n.element,e.each(s.sortables,function(){this.refreshPositions()}),s.currentItem=s.element,n.fromOutside=s),n.currentItem&&(n._mouseDrag(t),i.position=n.position)):n.isOver&&(n.isOver=0,n.cancelHelperRemoval=!0,n.options._revert=n.options.revert,n.options.revert=!1,n._trigger("out",t,n._uiHash(n)),n._mouseStop(t,!0),n.options.revert=n.options._revert,n.options.helper=n.options._helper,n.placeholder&&n.placeholder.remove(),i.helper.appendTo(s._parent),s._refreshOffsets(t),i.position=s._generatePosition(t,!0),s._trigger("fromSortable",t),s.dropped=!1,e.each(s.sortables,function(){this.refreshPositions()}))})}}),e.ui.plugin.add("draggable","cursor",{start:function(t,i,s){var a=e("body"),n=s.options;a.css("cursor")&&(n._cursor=a.css("cursor")),a.css("cursor",n.cursor)},stop:function(t,i,s){var a=s.options;a._cursor&&e("body").css("cursor",a._cursor)}}),e.ui.plugin.add("draggable","opacity",{start:function(t,i,s){var a=e(i.helper),n=s.options;a.css("opacity")&&(n._opacity=a.css("opacity")),a.css("opacity",n.opacity)},stop:function(t,i,s){var a=s.options;a._opacity&&e(i.helper).css("opacity",a._opacity)}}),e.ui.plugin.add("draggable","scroll",{start:function(e,t,i){i.scrollParentNotHidden||(i.scrollParentNotHidden=i.helper.scrollParent(!1)),i.scrollParentNotHidden[0]!==i.document[0]&&"HTML"!==i.scrollParentNotHidden[0].tagName&&(i.overflowOffset=i.scrollParentNotHidden.offset())},drag:function(t,i,s){var a=s.options,n=!1,r=s.scrollParentNotHidden[0],o=s.document[0];r!==o&&"HTML"!==r.tagName?(a.axis&&"x"===a.axis||(s.overflowOffset.top+r.offsetHeight-t.pageY<a.scrollSensitivity?r.scrollTop=n=r.scrollTop+a.scrollSpeed:t.pageY-s.overflowOffset.top<a.scrollSensitivity&&(r.scrollTop=n=r.scrollTop-a.scrollSpeed)),a.axis&&"y"===a.axis||(s.overflowOffset.left+r.offsetWidth-t.pageX<a.scrollSensitivity?r.scrollLeft=n=r.scrollLeft+a.scrollSpeed:t.pageX-s.overflowOffset.left<a.scrollSensitivity&&(r.scrollLeft=n=r.scrollLeft-a.scrollSpeed))):(a.axis&&"x"===a.axis||(t.pageY-e(o).scrollTop()<a.scrollSensitivity?n=e(o).scrollTop(e(o).scrollTop()-a.scrollSpeed):e(window).height()-(t.pageY-e(o).scrollTop())<a.scrollSensitivity&&(n=e(o).scrollTop(e(o).scrollTop()+a.scrollSpeed))),a.axis&&"y"===a.axis||(t.pageX-e(o).scrollLeft()<a.scrollSensitivity?n=e(o).scrollLeft(e(o).scrollLeft()-a.scrollSpeed):e(window).width()-(t.pageX-e(o).scrollLeft())<a.scrollSensitivity&&(n=e(o).scrollLeft(e(o).scrollLeft()+a.scrollSpeed)))),n!==!1&&e.ui.ddmanager&&!a.dropBehaviour&&e.ui.ddmanager.prepareOffsets(s,t)}}),e.ui.plugin.add("draggable","snap",{start:function(t,i,s){var a=s.options;s.snapElements=[],e(a.snap.constructor!==String?a.snap.items||":data(ui-draggable)":a.snap).each(function(){var t=e(this),i=t.offset();this!==s.element[0]&&s.snapElements.push({item:this,width:t.outerWidth(),height:t.outerHeight(),top:i.top,left:i.left})})},drag:function(t,i,s){var a,n,r,o,h,l,u,d,c,p,f=s.options,m=f.snapTolerance,g=i.offset.left,v=g+s.helperProportions.width,y=i.offset.top,b=y+s.helperProportions.height;for(c=s.snapElements.length-1;c>=0;c--)h=s.snapElements[c].left-s.margins.left,l=h+s.snapElements[c].width,u=s.snapElements[c].top-s.margins.top,d=u+s.snapElements[c].height,h-m>v||g>l+m||u-m>b||y>d+m||!e.contains(s.snapElements[c].item.ownerDocument,s.snapElements[c].item)?(s.snapElements[c].snapping&&s.options.snap.release&&s.options.snap.release.call(s.element,t,e.extend(s._uiHash(),{snapItem:s.snapElements[c].item})),s.snapElements[c].snapping=!1):("inner"!==f.snapMode&&(a=m>=Math.abs(u-b),n=m>=Math.abs(d-y),r=m>=Math.abs(h-v),o=m>=Math.abs(l-g),a&&(i.position.top=s._convertPositionTo("relative",{top:u-s.helperProportions.height,left:0}).top),n&&(i.position.top=s._convertPositionTo("relative",{top:d,left:0}).top),r&&(i.position.left=s._convertPositionTo("relative",{top:0,left:h-s.helperProportions.width}).left),o&&(i.position.left=s._convertPositionTo("relative",{top:0,left:l}).left)),p=a||n||r||o,"outer"!==f.snapMode&&(a=m>=Math.abs(u-y),n=m>=Math.abs(d-b),r=m>=Math.abs(h-g),o=m>=Math.abs(l-v),a&&(i.position.top=s._convertPositionTo("relative",{top:u,left:0}).top),n&&(i.position.top=s._convertPositionTo("relative",{top:d-s.helperProportions.height,left:0}).top),r&&(i.position.left=s._convertPositionTo("relative",{top:0,left:h}).left),o&&(i.position.left=s._convertPositionTo("relative",{top:0,left:l-s.helperProportions.width}).left)),!s.snapElements[c].snapping&&(a||n||r||o||p)&&s.options.snap.snap&&s.options.snap.snap.call(s.element,t,e.extend(s._uiHash(),{snapItem:s.snapElements[c].item})),s.snapElements[c].snapping=a||n||r||o||p)}}),e.ui.plugin.add("draggable","stack",{start:function(t,i,s){var a,n=s.options,r=e.makeArray(e(n.stack)).sort(function(t,i){return(parseInt(e(t).css("zIndex"),10)||0)-(parseInt(e(i).css("zIndex"),10)||0)});r.length&&(a=parseInt(e(r[0]).css("zIndex"),10)||0,e(r).each(function(t){e(this).css("zIndex",a+t)}),this.css("zIndex",a+r.length))}}),e.ui.plugin.add("draggable","zIndex",{start:function(t,i,s){var a=e(i.helper),n=s.options;a.css("zIndex")&&(n._zIndex=a.css("zIndex")),a.css("zIndex",n.zIndex)},stop:function(t,i,s){var a=s.options;a._zIndex&&e(i.helper).css("zIndex",a._zIndex)}}),e.ui.draggable,e.widget("ui.droppable",{version:"1.11.4",widgetEventPrefix:"drop",options:{accept:"*",activeClass:!1,addClasses:!0,greedy:!1,hoverClass:!1,scope:"default",tolerance:"intersect",activate:null,deactivate:null,drop:null,out:null,over:null},_create:function(){var t,i=this.options,s=i.accept;this.isover=!1,this.isout=!0,this.accept=e.isFunction(s)?s:function(e){return e.is(s)},this.proportions=function(){return arguments.length?(t=arguments[0],void 0):t?t:t={width:this.element[0].offsetWidth,height:this.element[0].offsetHeight}},this._addToManager(i.scope),i.addClasses&&this.element.addClass("ui-droppable")},_addToManager:function(t){e.ui.ddmanager.droppables[t]=e.ui.ddmanager.droppables[t]||[],e.ui.ddmanager.droppables[t].push(this)},_splice:function(e){for(var t=0;e.length>t;t++)e[t]===this&&e.splice(t,1)},_destroy:function(){var t=e.ui.ddmanager.droppables[this.options.scope];this._splice(t),this.element.removeClass("ui-droppable ui-droppable-disabled")},_setOption:function(t,i){if("accept"===t)this.accept=e.isFunction(i)?i:function(e){return e.is(i)};else if("scope"===t){var s=e.ui.ddmanager.droppables[this.options.scope];this._splice(s),this._addToManager(i)}this._super(t,i)},_activate:function(t){var i=e.ui.ddmanager.current;this.options.activeClass&&this.element.addClass(this.options.activeClass),i&&this._trigger("activate",t,this.ui(i))},_deactivate:function(t){var i=e.ui.ddmanager.current;this.options.activeClass&&this.element.removeClass(this.options.activeClass),i&&this._trigger("deactivate",t,this.ui(i))},_over:function(t){var i=e.ui.ddmanager.current;i&&(i.currentItem||i.element)[0]!==this.element[0]&&this.accept.call(this.element[0],i.currentItem||i.element)&&(this.options.hoverClass&&this.element.addClass(this.options.hoverClass),this._trigger("over",t,this.ui(i)))},_out:function(t){var i=e.ui.ddmanager.current;i&&(i.currentItem||i.element)[0]!==this.element[0]&&this.accept.call(this.element[0],i.currentItem||i.element)&&(this.options.hoverClass&&this.element.removeClass(this.options.hoverClass),this._trigger("out",t,this.ui(i)))},_drop:function(t,i){var s=i||e.ui.ddmanager.current,a=!1;return s&&(s.currentItem||s.element)[0]!==this.element[0]?(this.element.find(":data(ui-droppable)").not(".ui-draggable-dragging").each(function(){var i=e(this).droppable("instance");return i.options.greedy&&!i.options.disabled&&i.options.scope===s.options.scope&&i.accept.call(i.element[0],s.currentItem||s.element)&&e.ui.intersect(s,e.extend(i,{offset:i.element.offset()}),i.options.tolerance,t)?(a=!0,!1):void 0}),a?!1:this.accept.call(this.element[0],s.currentItem||s.element)?(this.options.activeClass&&this.element.removeClass(this.options.activeClass),this.options.hoverClass&&this.element.removeClass(this.options.hoverClass),this._trigger("drop",t,this.ui(s)),this.element):!1):!1},ui:function(e){return{draggable:e.currentItem||e.element,helper:e.helper,position:e.position,offset:e.positionAbs}}}),e.ui.intersect=function(){function e(e,t,i){return e>=t&&t+i>e}return function(t,i,s,a){if(!i.offset)return!1;var n=(t.positionAbs||t.position.absolute).left+t.margins.left,r=(t.positionAbs||t.position.absolute).top+t.margins.top,o=n+t.helperProportions.width,h=r+t.helperProportions.height,l=i.offset.left,u=i.offset.top,d=l+i.proportions().width,c=u+i.proportions().height;switch(s){case"fit":return n>=l&&d>=o&&r>=u&&c>=h;case"intersect":return n+t.helperProportions.width/2>l&&d>o-t.helperProportions.width/2&&r+t.helperProportions.height/2>u&&c>h-t.helperProportions.height/2;case"pointer":return e(a.pageY,u,i.proportions().height)&&e(a.pageX,l,i.proportions().width);case"touch":return(r>=u&&c>=r||h>=u&&c>=h||u>r&&h>c)&&(n>=l&&d>=n||o>=l&&d>=o||l>n&&o>d);default:return!1}}}(),e.ui.ddmanager={current:null,droppables:{"default":[]},prepareOffsets:function(t,i){var s,a,n=e.ui.ddmanager.droppables[t.options.scope]||[],r=i?i.type:null,o=(t.currentItem||t.element).find(":data(ui-droppable)").addBack();e:for(s=0;n.length>s;s++)if(!(n[s].options.disabled||t&&!n[s].accept.call(n[s].element[0],t.currentItem||t.element))){for(a=0;o.length>a;a++)if(o[a]===n[s].element[0]){n[s].proportions().height=0;continue e}n[s].visible="none"!==n[s].element.css("display"),n[s].visible&&("mousedown"===r&&n[s]._activate.call(n[s],i),n[s].offset=n[s].element.offset(),n[s].proportions({width:n[s].element[0].offsetWidth,height:n[s].element[0].offsetHeight}))}},drop:function(t,i){var s=!1;return e.each((e.ui.ddmanager.droppables[t.options.scope]||[]).slice(),function(){this.options&&(!this.options.disabled&&this.visible&&e.ui.intersect(t,this,this.options.tolerance,i)&&(s=this._drop.call(this,i)||s),!this.options.disabled&&this.visible&&this.accept.call(this.element[0],t.currentItem||t.element)&&(this.isout=!0,this.isover=!1,this._deactivate.call(this,i)))}),s},dragStart:function(t,i){t.element.parentsUntil("body").bind("scroll.droppable",function(){t.options.refreshPositions||e.ui.ddmanager.prepareOffsets(t,i)})},drag:function(t,i){t.options.refreshPositions&&e.ui.ddmanager.prepareOffsets(t,i),e.each(e.ui.ddmanager.droppables[t.options.scope]||[],function(){if(!this.options.disabled&&!this.greedyChild&&this.visible){var s,a,n,r=e.ui.intersect(t,this,this.options.tolerance,i),o=!r&&this.isover?"isout":r&&!this.isover?"isover":null;o&&(this.options.greedy&&(a=this.options.scope,n=this.element.parents(":data(ui-droppable)").filter(function(){return e(this).droppable("instance").options.scope===a}),n.length&&(s=e(n[0]).droppable("instance"),s.greedyChild="isover"===o)),s&&"isover"===o&&(s.isover=!1,s.isout=!0,s._out.call(s,i)),this[o]=!0,this["isout"===o?"isover":"isout"]=!1,this["isover"===o?"_over":"_out"].call(this,i),s&&"isout"===o&&(s.isout=!1,s.isover=!0,s._over.call(s,i)))}})},dragStop:function(t,i){t.element.parentsUntil("body").unbind("scroll.droppable"),t.options.refreshPositions||e.ui.ddmanager.prepareOffsets(t,i)}},e.ui.droppable,e.widget("ui.resizable",e.ui.mouse,{version:"1.11.4",widgetEventPrefix:"resize",options:{alsoResize:!1,animate:!1,animateDuration:"slow",animateEasing:"swing",aspectRatio:!1,autoHide:!1,containment:!1,ghost:!1,grid:!1,handles:"e,s,se",helper:!1,maxHeight:null,maxWidth:null,minHeight:10,minWidth:10,zIndex:90,resize:null,start:null,stop:null},_num:function(e){return parseInt(e,10)||0},_isNumber:function(e){return!isNaN(parseInt(e,10))},_hasScroll:function(t,i){if("hidden"===e(t).css("overflow"))return!1;var s=i&&"left"===i?"scrollLeft":"scrollTop",a=!1;return t[s]>0?!0:(t[s]=1,a=t[s]>0,t[s]=0,a)},_create:function(){var t,i,s,a,n,r=this,o=this.options;if(this.element.addClass("ui-resizable"),e.extend(this,{_aspectRatio:!!o.aspectRatio,aspectRatio:o.aspectRatio,originalElement:this.element,_proportionallyResizeElements:[],_helper:o.helper||o.ghost||o.animate?o.helper||"ui-resizable-helper":null}),this.element[0].nodeName.match(/^(canvas|textarea|input|select|button|img)$/i)&&(this.element.wrap(e("<div class='ui-wrapper' style='overflow: hidden;'></div>").css({position:this.element.css("position"),width:this.element.outerWidth(),height:this.element.outerHeight(),top:this.element.css("top"),left:this.element.css("left")})),this.element=this.element.parent().data("ui-resizable",this.element.resizable("instance")),this.elementIsWrapper=!0,this.element.css({marginLeft:this.originalElement.css("marginLeft"),marginTop:this.originalElement.css("marginTop"),marginRight:this.originalElement.css("marginRight"),marginBottom:this.originalElement.css("marginBottom")}),this.originalElement.css({marginLeft:0,marginTop:0,marginRight:0,marginBottom:0}),this.originalResizeStyle=this.originalElement.css("resize"),this.originalElement.css("resize","none"),this._proportionallyResizeElements.push(this.originalElement.css({position:"static",zoom:1,display:"block"})),this.originalElement.css({margin:this.originalElement.css("margin")}),this._proportionallyResize()),this.handles=o.handles||(e(".ui-resizable-handle",this.element).length?{n:".ui-resizable-n",e:".ui-resizable-e",s:".ui-resizable-s",w:".ui-resizable-w",se:".ui-resizable-se",sw:".ui-resizable-sw",ne:".ui-resizable-ne",nw:".ui-resizable-nw"}:"e,s,se"),this._handles=e(),this.handles.constructor===String)for("all"===this.handles&&(this.handles="n,e,s,w,se,sw,ne,nw"),t=this.handles.split(","),this.handles={},i=0;t.length>i;i++)s=e.trim(t[i]),n="ui-resizable-"+s,a=e("<div class='ui-resizable-handle "+n+"'></div>"),a.css({zIndex:o.zIndex}),"se"===s&&a.addClass("ui-icon ui-icon-gripsmall-diagonal-se"),this.handles[s]=".ui-resizable-"+s,this.element.append(a);this._renderAxis=function(t){var i,s,a,n;t=t||this.element;for(i in this.handles)this.handles[i].constructor===String?this.handles[i]=this.element.children(this.handles[i]).first().show():(this.handles[i].jquery||this.handles[i].nodeType)&&(this.handles[i]=e(this.handles[i]),this._on(this.handles[i],{mousedown:r._mouseDown})),this.elementIsWrapper&&this.originalElement[0].nodeName.match(/^(textarea|input|select|button)$/i)&&(s=e(this.handles[i],this.element),n=/sw|ne|nw|se|n|s/.test(i)?s.outerHeight():s.outerWidth(),a=["padding",/ne|nw|n/.test(i)?"Top":/se|sw|s/.test(i)?"Bottom":/^e$/.test(i)?"Right":"Left"].join(""),t.css(a,n),this._proportionallyResize()),this._handles=this._handles.add(this.handles[i])},this._renderAxis(this.element),this._handles=this._handles.add(this.element.find(".ui-resizable-handle")),this._handles.disableSelection(),this._handles.mouseover(function(){r.resizing||(this.className&&(a=this.className.match(/ui-resizable-(se|sw|ne|nw|n|e|s|w)/i)),r.axis=a&&a[1]?a[1]:"se")}),o.autoHide&&(this._handles.hide(),e(this.element).addClass("ui-resizable-autohide").mouseenter(function(){o.disabled||(e(this).removeClass("ui-resizable-autohide"),r._handles.show())}).mouseleave(function(){o.disabled||r.resizing||(e(this).addClass("ui-resizable-autohide"),r._handles.hide())})),this._mouseInit()},_destroy:function(){this._mouseDestroy();var t,i=function(t){e(t).removeClass("ui-resizable ui-resizable-disabled ui-resizable-resizing").removeData("resizable").removeData("ui-resizable").unbind(".resizable").find(".ui-resizable-handle").remove()};return this.elementIsWrapper&&(i(this.element),t=this.element,this.originalElement.css({position:t.css("position"),width:t.outerWidth(),height:t.outerHeight(),top:t.css("top"),left:t.css("left")}).insertAfter(t),t.remove()),this.originalElement.css("resize",this.originalResizeStyle),i(this.originalElement),this},_mouseCapture:function(t){var i,s,a=!1;for(i in this.handles)s=e(this.handles[i])[0],(s===t.target||e.contains(s,t.target))&&(a=!0);return!this.options.disabled&&a},_mouseStart:function(t){var i,s,a,n=this.options,r=this.element;return this.resizing=!0,this._renderProxy(),i=this._num(this.helper.css("left")),s=this._num(this.helper.css("top")),n.containment&&(i+=e(n.containment).scrollLeft()||0,s+=e(n.containment).scrollTop()||0),this.offset=this.helper.offset(),this.position={left:i,top:s},this.size=this._helper?{width:this.helper.width(),height:this.helper.height()}:{width:r.width(),height:r.height()},this.originalSize=this._helper?{width:r.outerWidth(),height:r.outerHeight()}:{width:r.width(),height:r.height()},this.sizeDiff={width:r.outerWidth()-r.width(),height:r.outerHeight()-r.height()},this.originalPosition={left:i,top:s},this.originalMousePosition={left:t.pageX,top:t.pageY},this.aspectRatio="number"==typeof n.aspectRatio?n.aspectRatio:this.originalSize.width/this.originalSize.height||1,a=e(".ui-resizable-"+this.axis).css("cursor"),e("body").css("cursor","auto"===a?this.axis+"-resize":a),r.addClass("ui-resizable-resizing"),this._propagate("start",t),!0},_mouseDrag:function(t){var i,s,a=this.originalMousePosition,n=this.axis,r=t.pageX-a.left||0,o=t.pageY-a.top||0,h=this._change[n];return this._updatePrevProperties(),h?(i=h.apply(this,[t,r,o]),this._updateVirtualBoundaries(t.shiftKey),(this._aspectRatio||t.shiftKey)&&(i=this._updateRatio(i,t)),i=this._respectSize(i,t),this._updateCache(i),this._propagate("resize",t),s=this._applyChanges(),!this._helper&&this._proportionallyResizeElements.length&&this._proportionallyResize(),e.isEmptyObject(s)||(this._updatePrevProperties(),this._trigger("resize",t,this.ui()),this._applyChanges()),!1):!1},_mouseStop:function(t){this.resizing=!1;var i,s,a,n,r,o,h,l=this.options,u=this;return this._helper&&(i=this._proportionallyResizeElements,s=i.length&&/textarea/i.test(i[0].nodeName),a=s&&this._hasScroll(i[0],"left")?0:u.sizeDiff.height,n=s?0:u.sizeDiff.width,r={width:u.helper.width()-n,height:u.helper.height()-a},o=parseInt(u.element.css("left"),10)+(u.position.left-u.originalPosition.left)||null,h=parseInt(u.element.css("top"),10)+(u.position.top-u.originalPosition.top)||null,l.animate||this.element.css(e.extend(r,{top:h,left:o})),u.helper.height(u.size.height),u.helper.width(u.size.width),this._helper&&!l.animate&&this._proportionallyResize()),e("body").css("cursor","auto"),this.element.removeClass("ui-resizable-resizing"),this._propagate("stop",t),this._helper&&this.helper.remove(),!1},_updatePrevProperties:function(){this.prevPosition={top:this.position.top,left:this.position.left},this.prevSize={width:this.size.width,height:this.size.height}},_applyChanges:function(){var e={};return this.position.top!==this.prevPosition.top&&(e.top=this.position.top+"px"),this.position.left!==this.prevPosition.left&&(e.left=this.position.left+"px"),this.size.width!==this.prevSize.width&&(e.width=this.size.width+"px"),this.size.height!==this.prevSize.height&&(e.height=this.size.height+"px"),this.helper.css(e),e},_updateVirtualBoundaries:function(e){var t,i,s,a,n,r=this.options;n={minWidth:this._isNumber(r.minWidth)?r.minWidth:0,maxWidth:this._isNumber(r.maxWidth)?r.maxWidth:1/0,minHeight:this._isNumber(r.minHeight)?r.minHeight:0,maxHeight:this._isNumber(r.maxHeight)?r.maxHeight:1/0},(this._aspectRatio||e)&&(t=n.minHeight*this.aspectRatio,s=n.minWidth/this.aspectRatio,i=n.maxHeight*this.aspectRatio,a=n.maxWidth/this.aspectRatio,t>n.minWidth&&(n.minWidth=t),s>n.minHeight&&(n.minHeight=s),n.maxWidth>i&&(n.maxWidth=i),n.maxHeight>a&&(n.maxHeight=a)),this._vBoundaries=n},_updateCache:function(e){this.offset=this.helper.offset(),this._isNumber(e.left)&&(this.position.left=e.left),this._isNumber(e.top)&&(this.position.top=e.top),this._isNumber(e.height)&&(this.size.height=e.height),this._isNumber(e.width)&&(this.size.width=e.width)},_updateRatio:function(e){var t=this.position,i=this.size,s=this.axis;return this._isNumber(e.height)?e.width=e.height*this.aspectRatio:this._isNumber(e.width)&&(e.height=e.width/this.aspectRatio),"sw"===s&&(e.left=t.left+(i.width-e.width),e.top=null),"nw"===s&&(e.top=t.top+(i.height-e.height),e.left=t.left+(i.width-e.width)),e},_respectSize:function(e){var t=this._vBoundaries,i=this.axis,s=this._isNumber(e.width)&&t.maxWidth&&t.maxWidth<e.width,a=this._isNumber(e.height)&&t.maxHeight&&t.maxHeight<e.height,n=this._isNumber(e.width)&&t.minWidth&&t.minWidth>e.width,r=this._isNumber(e.height)&&t.minHeight&&t.minHeight>e.height,o=this.originalPosition.left+this.originalSize.width,h=this.position.top+this.size.height,l=/sw|nw|w/.test(i),u=/nw|ne|n/.test(i);return n&&(e.width=t.minWidth),r&&(e.height=t.minHeight),s&&(e.width=t.maxWidth),a&&(e.height=t.maxHeight),n&&l&&(e.left=o-t.minWidth),s&&l&&(e.left=o-t.maxWidth),r&&u&&(e.top=h-t.minHeight),a&&u&&(e.top=h-t.maxHeight),e.width||e.height||e.left||!e.top?e.width||e.height||e.top||!e.left||(e.left=null):e.top=null,e},_getPaddingPlusBorderDimensions:function(e){for(var t=0,i=[],s=[e.css("borderTopWidth"),e.css("borderRightWidth"),e.css("borderBottomWidth"),e.css("borderLeftWidth")],a=[e.css("paddingTop"),e.css("paddingRight"),e.css("paddingBottom"),e.css("paddingLeft")];4>t;t++)i[t]=parseInt(s[t],10)||0,i[t]+=parseInt(a[t],10)||0;return{height:i[0]+i[2],width:i[1]+i[3]}},_proportionallyResize:function(){if(this._proportionallyResizeElements.length)for(var e,t=0,i=this.helper||this.element;this._proportionallyResizeElements.length>t;t++)e=this._proportionallyResizeElements[t],this.outerDimensions||(this.outerDimensions=this._getPaddingPlusBorderDimensions(e)),e.css({height:i.height()-this.outerDimensions.height||0,width:i.width()-this.outerDimensions.width||0})},_renderProxy:function(){var t=this.element,i=this.options;this.elementOffset=t.offset(),this._helper?(this.helper=this.helper||e("<div style='overflow:hidden;'></div>"),this.helper.addClass(this._helper).css({width:this.element.outerWidth()-1,height:this.element.outerHeight()-1,position:"absolute",left:this.elementOffset.left+"px",top:this.elementOffset.top+"px",zIndex:++i.zIndex}),this.helper.appendTo("body").disableSelection()):this.helper=this.element},_change:{e:function(e,t){return{width:this.originalSize.width+t}},w:function(e,t){var i=this.originalSize,s=this.originalPosition;return{left:s.left+t,width:i.width-t}},n:function(e,t,i){var s=this.originalSize,a=this.originalPosition;return{top:a.top+i,height:s.height-i}},s:function(e,t,i){return{height:this.originalSize.height+i}},se:function(t,i,s){return e.extend(this._change.s.apply(this,arguments),this._change.e.apply(this,[t,i,s]))},sw:function(t,i,s){return e.extend(this._change.s.apply(this,arguments),this._change.w.apply(this,[t,i,s]))},ne:function(t,i,s){return e.extend(this._change.n.apply(this,arguments),this._change.e.apply(this,[t,i,s]))},nw:function(t,i,s){return e.extend(this._change.n.apply(this,arguments),this._change.w.apply(this,[t,i,s]))}},_propagate:function(t,i){e.ui.plugin.call(this,t,[i,this.ui()]),"resize"!==t&&this._trigger(t,i,this.ui())},plugins:{},ui:function(){return{originalElement:this.originalElement,element:this.element,helper:this.helper,position:this.position,size:this.size,originalSize:this.originalSize,originalPosition:this.originalPosition}}}),e.ui.plugin.add("resizable","animate",{stop:function(t){var i=e(this).resizable("instance"),s=i.options,a=i._proportionallyResizeElements,n=a.length&&/textarea/i.test(a[0].nodeName),r=n&&i._hasScroll(a[0],"left")?0:i.sizeDiff.height,o=n?0:i.sizeDiff.width,h={width:i.size.width-o,height:i.size.height-r},l=parseInt(i.element.css("left"),10)+(i.position.left-i.originalPosition.left)||null,u=parseInt(i.element.css("top"),10)+(i.position.top-i.originalPosition.top)||null;i.element.animate(e.extend(h,u&&l?{top:u,left:l}:{}),{duration:s.animateDuration,easing:s.animateEasing,step:function(){var s={width:parseInt(i.element.css("width"),10),height:parseInt(i.element.css("height"),10),top:parseInt(i.element.css("top"),10),left:parseInt(i.element.css("left"),10)};a&&a.length&&e(a[0]).css({width:s.width,height:s.height}),i._updateCache(s),i._propagate("resize",t)}})}}),e.ui.plugin.add("resizable","containment",{start:function(){var t,i,s,a,n,r,o,h=e(this).resizable("instance"),l=h.options,u=h.element,d=l.containment,c=d instanceof e?d.get(0):/parent/.test(d)?u.parent().get(0):d;c&&(h.containerElement=e(c),/document/.test(d)||d===document?(h.containerOffset={left:0,top:0},h.containerPosition={left:0,top:0},h.parentData={element:e(document),left:0,top:0,width:e(document).width(),height:e(document).height()||document.body.parentNode.scrollHeight}):(t=e(c),i=[],e(["Top","Right","Left","Bottom"]).each(function(e,s){i[e]=h._num(t.css("padding"+s))}),h.containerOffset=t.offset(),h.containerPosition=t.position(),h.containerSize={height:t.innerHeight()-i[3],width:t.innerWidth()-i[1]},s=h.containerOffset,a=h.containerSize.height,n=h.containerSize.width,r=h._hasScroll(c,"left")?c.scrollWidth:n,o=h._hasScroll(c)?c.scrollHeight:a,h.parentData={element:c,left:s.left,top:s.top,width:r,height:o}))},resize:function(t){var i,s,a,n,r=e(this).resizable("instance"),o=r.options,h=r.containerOffset,l=r.position,u=r._aspectRatio||t.shiftKey,d={top:0,left:0},c=r.containerElement,p=!0;c[0]!==document&&/static/.test(c.css("position"))&&(d=h),l.left<(r._helper?h.left:0)&&(r.size.width=r.size.width+(r._helper?r.position.left-h.left:r.position.left-d.left),u&&(r.size.height=r.size.width/r.aspectRatio,p=!1),r.position.left=o.helper?h.left:0),l.top<(r._helper?h.top:0)&&(r.size.height=r.size.height+(r._helper?r.position.top-h.top:r.position.top),u&&(r.size.width=r.size.height*r.aspectRatio,p=!1),r.position.top=r._helper?h.top:0),a=r.containerElement.get(0)===r.element.parent().get(0),n=/relative|absolute/.test(r.containerElement.css("position")),a&&n?(r.offset.left=r.parentData.left+r.position.left,r.offset.top=r.parentData.top+r.position.top):(r.offset.left=r.element.offset().left,r.offset.top=r.element.offset().top),i=Math.abs(r.sizeDiff.width+(r._helper?r.offset.left-d.left:r.offset.left-h.left)),s=Math.abs(r.sizeDiff.height+(r._helper?r.offset.top-d.top:r.offset.top-h.top)),i+r.size.width>=r.parentData.width&&(r.size.width=r.parentData.width-i,u&&(r.size.height=r.size.width/r.aspectRatio,p=!1)),s+r.size.height>=r.parentData.height&&(r.size.height=r.parentData.height-s,u&&(r.size.width=r.size.height*r.aspectRatio,p=!1)),p||(r.position.left=r.prevPosition.left,r.position.top=r.prevPosition.top,r.size.width=r.prevSize.width,r.size.height=r.prevSize.height)},stop:function(){var t=e(this).resizable("instance"),i=t.options,s=t.containerOffset,a=t.containerPosition,n=t.containerElement,r=e(t.helper),o=r.offset(),h=r.outerWidth()-t.sizeDiff.width,l=r.outerHeight()-t.sizeDiff.height;t._helper&&!i.animate&&/relative/.test(n.css("position"))&&e(this).css({left:o.left-a.left-s.left,width:h,height:l}),t._helper&&!i.animate&&/static/.test(n.css("position"))&&e(this).css({left:o.left-a.left-s.left,width:h,height:l})}}),e.ui.plugin.add("resizable","alsoResize",{start:function(){var t=e(this).resizable("instance"),i=t.options;e(i.alsoResize).each(function(){var t=e(this);t.data("ui-resizable-alsoresize",{width:parseInt(t.width(),10),height:parseInt(t.height(),10),left:parseInt(t.css("left"),10),top:parseInt(t.css("top"),10)})})},resize:function(t,i){var s=e(this).resizable("instance"),a=s.options,n=s.originalSize,r=s.originalPosition,o={height:s.size.height-n.height||0,width:s.size.width-n.width||0,top:s.position.top-r.top||0,left:s.position.left-r.left||0};e(a.alsoResize).each(function(){var t=e(this),s=e(this).data("ui-resizable-alsoresize"),a={},n=t.parents(i.originalElement[0]).length?["width","height"]:["width","height","top","left"];e.each(n,function(e,t){var i=(s[t]||0)+(o[t]||0);i&&i>=0&&(a[t]=i||null)}),t.css(a)})},stop:function(){e(this).removeData("resizable-alsoresize")}}),e.ui.plugin.add("resizable","ghost",{start:function(){var t=e(this).resizable("instance"),i=t.options,s=t.size;t.ghost=t.originalElement.clone(),t.ghost.css({opacity:.25,display:"block",position:"relative",height:s.height,width:s.width,margin:0,left:0,top:0}).addClass("ui-resizable-ghost").addClass("string"==typeof i.ghost?i.ghost:""),t.ghost.appendTo(t.helper)},resize:function(){var t=e(this).resizable("instance");t.ghost&&t.ghost.css({position:"relative",height:t.size.height,width:t.size.width})},stop:function(){var t=e(this).resizable("instance");t.ghost&&t.helper&&t.helper.get(0).removeChild(t.ghost.get(0))}}),e.ui.plugin.add("resizable","grid",{resize:function(){var t,i=e(this).resizable("instance"),s=i.options,a=i.size,n=i.originalSize,r=i.originalPosition,o=i.axis,h="number"==typeof s.grid?[s.grid,s.grid]:s.grid,l=h[0]||1,u=h[1]||1,d=Math.round((a.width-n.width)/l)*l,c=Math.round((a.height-n.height)/u)*u,p=n.width+d,f=n.height+c,m=s.maxWidth&&p>s.maxWidth,g=s.maxHeight&&f>s.maxHeight,v=s.minWidth&&s.minWidth>p,y=s.minHeight&&s.minHeight>f;s.grid=h,v&&(p+=l),y&&(f+=u),m&&(p-=l),g&&(f-=u),/^(se|s|e)$/.test(o)?(i.size.width=p,i.size.height=f):/^(ne)$/.test(o)?(i.size.width=p,i.size.height=f,i.position.top=r.top-c):/^(sw)$/.test(o)?(i.size.width=p,i.size.height=f,i.position.left=r.left-d):((0>=f-u||0>=p-l)&&(t=i._getPaddingPlusBorderDimensions(this)),f-u>0?(i.size.height=f,i.position.top=r.top-c):(f=u-t.height,i.size.height=f,i.position.top=r.top+n.height-f),p-l>0?(i.size.width=p,i.position.left=r.left-d):(p=l-t.width,i.size.width=p,i.position.left=r.left+n.width-p))}}),e.ui.resizable,e.widget("ui.selectable",e.ui.mouse,{version:"1.11.4",options:{appendTo:"body",autoRefresh:!0,distance:0,filter:"*",tolerance:"touch",selected:null,selecting:null,start:null,stop:null,unselected:null,unselecting:null},_create:function(){var t,i=this;
this.element.addClass("ui-selectable"),this.dragged=!1,this.refresh=function(){t=e(i.options.filter,i.element[0]),t.addClass("ui-selectee"),t.each(function(){var t=e(this),i=t.offset();e.data(this,"selectable-item",{element:this,$element:t,left:i.left,top:i.top,right:i.left+t.outerWidth(),bottom:i.top+t.outerHeight(),startselected:!1,selected:t.hasClass("ui-selected"),selecting:t.hasClass("ui-selecting"),unselecting:t.hasClass("ui-unselecting")})})},this.refresh(),this.selectees=t.addClass("ui-selectee"),this._mouseInit(),this.helper=e("<div class='ui-selectable-helper'></div>")},_destroy:function(){this.selectees.removeClass("ui-selectee").removeData("selectable-item"),this.element.removeClass("ui-selectable ui-selectable-disabled"),this._mouseDestroy()},_mouseStart:function(t){var i=this,s=this.options;this.opos=[t.pageX,t.pageY],this.options.disabled||(this.selectees=e(s.filter,this.element[0]),this._trigger("start",t),e(s.appendTo).append(this.helper),this.helper.css({left:t.pageX,top:t.pageY,width:0,height:0}),s.autoRefresh&&this.refresh(),this.selectees.filter(".ui-selected").each(function(){var s=e.data(this,"selectable-item");s.startselected=!0,t.metaKey||t.ctrlKey||(s.$element.removeClass("ui-selected"),s.selected=!1,s.$element.addClass("ui-unselecting"),s.unselecting=!0,i._trigger("unselecting",t,{unselecting:s.element}))}),e(t.target).parents().addBack().each(function(){var s,a=e.data(this,"selectable-item");return a?(s=!t.metaKey&&!t.ctrlKey||!a.$element.hasClass("ui-selected"),a.$element.removeClass(s?"ui-unselecting":"ui-selected").addClass(s?"ui-selecting":"ui-unselecting"),a.unselecting=!s,a.selecting=s,a.selected=s,s?i._trigger("selecting",t,{selecting:a.element}):i._trigger("unselecting",t,{unselecting:a.element}),!1):void 0}))},_mouseDrag:function(t){if(this.dragged=!0,!this.options.disabled){var i,s=this,a=this.options,n=this.opos[0],r=this.opos[1],o=t.pageX,h=t.pageY;return n>o&&(i=o,o=n,n=i),r>h&&(i=h,h=r,r=i),this.helper.css({left:n,top:r,width:o-n,height:h-r}),this.selectees.each(function(){var i=e.data(this,"selectable-item"),l=!1;i&&i.element!==s.element[0]&&("touch"===a.tolerance?l=!(i.left>o||n>i.right||i.top>h||r>i.bottom):"fit"===a.tolerance&&(l=i.left>n&&o>i.right&&i.top>r&&h>i.bottom),l?(i.selected&&(i.$element.removeClass("ui-selected"),i.selected=!1),i.unselecting&&(i.$element.removeClass("ui-unselecting"),i.unselecting=!1),i.selecting||(i.$element.addClass("ui-selecting"),i.selecting=!0,s._trigger("selecting",t,{selecting:i.element}))):(i.selecting&&((t.metaKey||t.ctrlKey)&&i.startselected?(i.$element.removeClass("ui-selecting"),i.selecting=!1,i.$element.addClass("ui-selected"),i.selected=!0):(i.$element.removeClass("ui-selecting"),i.selecting=!1,i.startselected&&(i.$element.addClass("ui-unselecting"),i.unselecting=!0),s._trigger("unselecting",t,{unselecting:i.element}))),i.selected&&(t.metaKey||t.ctrlKey||i.startselected||(i.$element.removeClass("ui-selected"),i.selected=!1,i.$element.addClass("ui-unselecting"),i.unselecting=!0,s._trigger("unselecting",t,{unselecting:i.element})))))}),!1}},_mouseStop:function(t){var i=this;return this.dragged=!1,e(".ui-unselecting",this.element[0]).each(function(){var s=e.data(this,"selectable-item");s.$element.removeClass("ui-unselecting"),s.unselecting=!1,s.startselected=!1,i._trigger("unselected",t,{unselected:s.element})}),e(".ui-selecting",this.element[0]).each(function(){var s=e.data(this,"selectable-item");s.$element.removeClass("ui-selecting").addClass("ui-selected"),s.selecting=!1,s.selected=!0,s.startselected=!0,i._trigger("selected",t,{selected:s.element})}),this._trigger("stop",t),this.helper.remove(),!1}}),e.widget("ui.sortable",e.ui.mouse,{version:"1.11.4",widgetEventPrefix:"sort",ready:!1,options:{appendTo:"parent",axis:!1,connectWith:!1,containment:!1,cursor:"auto",cursorAt:!1,dropOnEmpty:!0,forcePlaceholderSize:!1,forceHelperSize:!1,grid:!1,handle:!1,helper:"original",items:"> *",opacity:!1,placeholder:!1,revert:!1,scroll:!0,scrollSensitivity:20,scrollSpeed:20,scope:"default",tolerance:"intersect",zIndex:1e3,activate:null,beforeStop:null,change:null,deactivate:null,out:null,over:null,receive:null,remove:null,sort:null,start:null,stop:null,update:null},_isOverAxis:function(e,t,i){return e>=t&&t+i>e},_isFloating:function(e){return/left|right/.test(e.css("float"))||/inline|table-cell/.test(e.css("display"))},_create:function(){this.containerCache={},this.element.addClass("ui-sortable"),this.refresh(),this.offset=this.element.offset(),this._mouseInit(),this._setHandleClassName(),this.ready=!0},_setOption:function(e,t){this._super(e,t),"handle"===e&&this._setHandleClassName()},_setHandleClassName:function(){this.element.find(".ui-sortable-handle").removeClass("ui-sortable-handle"),e.each(this.items,function(){(this.instance.options.handle?this.item.find(this.instance.options.handle):this.item).addClass("ui-sortable-handle")})},_destroy:function(){this.element.removeClass("ui-sortable ui-sortable-disabled").find(".ui-sortable-handle").removeClass("ui-sortable-handle"),this._mouseDestroy();for(var e=this.items.length-1;e>=0;e--)this.items[e].item.removeData(this.widgetName+"-item");return this},_mouseCapture:function(t,i){var s=null,a=!1,n=this;return this.reverting?!1:this.options.disabled||"static"===this.options.type?!1:(this._refreshItems(t),e(t.target).parents().each(function(){return e.data(this,n.widgetName+"-item")===n?(s=e(this),!1):void 0}),e.data(t.target,n.widgetName+"-item")===n&&(s=e(t.target)),s?!this.options.handle||i||(e(this.options.handle,s).find("*").addBack().each(function(){this===t.target&&(a=!0)}),a)?(this.currentItem=s,this._removeCurrentsFromItems(),!0):!1:!1)},_mouseStart:function(t,i,s){var a,n,r=this.options;if(this.currentContainer=this,this.refreshPositions(),this.helper=this._createHelper(t),this._cacheHelperProportions(),this._cacheMargins(),this.scrollParent=this.helper.scrollParent(),this.offset=this.currentItem.offset(),this.offset={top:this.offset.top-this.margins.top,left:this.offset.left-this.margins.left},e.extend(this.offset,{click:{left:t.pageX-this.offset.left,top:t.pageY-this.offset.top},parent:this._getParentOffset(),relative:this._getRelativeOffset()}),this.helper.css("position","absolute"),this.cssPosition=this.helper.css("position"),this.originalPosition=this._generatePosition(t),this.originalPageX=t.pageX,this.originalPageY=t.pageY,r.cursorAt&&this._adjustOffsetFromHelper(r.cursorAt),this.domPosition={prev:this.currentItem.prev()[0],parent:this.currentItem.parent()[0]},this.helper[0]!==this.currentItem[0]&&this.currentItem.hide(),this._createPlaceholder(),r.containment&&this._setContainment(),r.cursor&&"auto"!==r.cursor&&(n=this.document.find("body"),this.storedCursor=n.css("cursor"),n.css("cursor",r.cursor),this.storedStylesheet=e("<style>*{ cursor: "+r.cursor+" !important; }</style>").appendTo(n)),r.opacity&&(this.helper.css("opacity")&&(this._storedOpacity=this.helper.css("opacity")),this.helper.css("opacity",r.opacity)),r.zIndex&&(this.helper.css("zIndex")&&(this._storedZIndex=this.helper.css("zIndex")),this.helper.css("zIndex",r.zIndex)),this.scrollParent[0]!==this.document[0]&&"HTML"!==this.scrollParent[0].tagName&&(this.overflowOffset=this.scrollParent.offset()),this._trigger("start",t,this._uiHash()),this._preserveHelperProportions||this._cacheHelperProportions(),!s)for(a=this.containers.length-1;a>=0;a--)this.containers[a]._trigger("activate",t,this._uiHash(this));return e.ui.ddmanager&&(e.ui.ddmanager.current=this),e.ui.ddmanager&&!r.dropBehaviour&&e.ui.ddmanager.prepareOffsets(this,t),this.dragging=!0,this.helper.addClass("ui-sortable-helper"),this._mouseDrag(t),!0},_mouseDrag:function(t){var i,s,a,n,r=this.options,o=!1;for(this.position=this._generatePosition(t),this.positionAbs=this._convertPositionTo("absolute"),this.lastPositionAbs||(this.lastPositionAbs=this.positionAbs),this.options.scroll&&(this.scrollParent[0]!==this.document[0]&&"HTML"!==this.scrollParent[0].tagName?(this.overflowOffset.top+this.scrollParent[0].offsetHeight-t.pageY<r.scrollSensitivity?this.scrollParent[0].scrollTop=o=this.scrollParent[0].scrollTop+r.scrollSpeed:t.pageY-this.overflowOffset.top<r.scrollSensitivity&&(this.scrollParent[0].scrollTop=o=this.scrollParent[0].scrollTop-r.scrollSpeed),this.overflowOffset.left+this.scrollParent[0].offsetWidth-t.pageX<r.scrollSensitivity?this.scrollParent[0].scrollLeft=o=this.scrollParent[0].scrollLeft+r.scrollSpeed:t.pageX-this.overflowOffset.left<r.scrollSensitivity&&(this.scrollParent[0].scrollLeft=o=this.scrollParent[0].scrollLeft-r.scrollSpeed)):(t.pageY-this.document.scrollTop()<r.scrollSensitivity?o=this.document.scrollTop(this.document.scrollTop()-r.scrollSpeed):this.window.height()-(t.pageY-this.document.scrollTop())<r.scrollSensitivity&&(o=this.document.scrollTop(this.document.scrollTop()+r.scrollSpeed)),t.pageX-this.document.scrollLeft()<r.scrollSensitivity?o=this.document.scrollLeft(this.document.scrollLeft()-r.scrollSpeed):this.window.width()-(t.pageX-this.document.scrollLeft())<r.scrollSensitivity&&(o=this.document.scrollLeft(this.document.scrollLeft()+r.scrollSpeed))),o!==!1&&e.ui.ddmanager&&!r.dropBehaviour&&e.ui.ddmanager.prepareOffsets(this,t)),this.positionAbs=this._convertPositionTo("absolute"),this.options.axis&&"y"===this.options.axis||(this.helper[0].style.left=this.position.left+"px"),this.options.axis&&"x"===this.options.axis||(this.helper[0].style.top=this.position.top+"px"),i=this.items.length-1;i>=0;i--)if(s=this.items[i],a=s.item[0],n=this._intersectsWithPointer(s),n&&s.instance===this.currentContainer&&a!==this.currentItem[0]&&this.placeholder[1===n?"next":"prev"]()[0]!==a&&!e.contains(this.placeholder[0],a)&&("semi-dynamic"===this.options.type?!e.contains(this.element[0],a):!0)){if(this.direction=1===n?"down":"up","pointer"!==this.options.tolerance&&!this._intersectsWithSides(s))break;this._rearrange(t,s),this._trigger("change",t,this._uiHash());break}return this._contactContainers(t),e.ui.ddmanager&&e.ui.ddmanager.drag(this,t),this._trigger("sort",t,this._uiHash()),this.lastPositionAbs=this.positionAbs,!1},_mouseStop:function(t,i){if(t){if(e.ui.ddmanager&&!this.options.dropBehaviour&&e.ui.ddmanager.drop(this,t),this.options.revert){var s=this,a=this.placeholder.offset(),n=this.options.axis,r={};n&&"x"!==n||(r.left=a.left-this.offset.parent.left-this.margins.left+(this.offsetParent[0]===this.document[0].body?0:this.offsetParent[0].scrollLeft)),n&&"y"!==n||(r.top=a.top-this.offset.parent.top-this.margins.top+(this.offsetParent[0]===this.document[0].body?0:this.offsetParent[0].scrollTop)),this.reverting=!0,e(this.helper).animate(r,parseInt(this.options.revert,10)||500,function(){s._clear(t)})}else this._clear(t,i);return!1}},cancel:function(){if(this.dragging){this._mouseUp({target:null}),"original"===this.options.helper?this.currentItem.css(this._storedCSS).removeClass("ui-sortable-helper"):this.currentItem.show();for(var t=this.containers.length-1;t>=0;t--)this.containers[t]._trigger("deactivate",null,this._uiHash(this)),this.containers[t].containerCache.over&&(this.containers[t]._trigger("out",null,this._uiHash(this)),this.containers[t].containerCache.over=0)}return this.placeholder&&(this.placeholder[0].parentNode&&this.placeholder[0].parentNode.removeChild(this.placeholder[0]),"original"!==this.options.helper&&this.helper&&this.helper[0].parentNode&&this.helper.remove(),e.extend(this,{helper:null,dragging:!1,reverting:!1,_noFinalSort:null}),this.domPosition.prev?e(this.domPosition.prev).after(this.currentItem):e(this.domPosition.parent).prepend(this.currentItem)),this},serialize:function(t){var i=this._getItemsAsjQuery(t&&t.connected),s=[];return t=t||{},e(i).each(function(){var i=(e(t.item||this).attr(t.attribute||"id")||"").match(t.expression||/(.+)[\-=_](.+)/);i&&s.push((t.key||i[1]+"[]")+"="+(t.key&&t.expression?i[1]:i[2]))}),!s.length&&t.key&&s.push(t.key+"="),s.join("&")},toArray:function(t){var i=this._getItemsAsjQuery(t&&t.connected),s=[];return t=t||{},i.each(function(){s.push(e(t.item||this).attr(t.attribute||"id")||"")}),s},_intersectsWith:function(e){var t=this.positionAbs.left,i=t+this.helperProportions.width,s=this.positionAbs.top,a=s+this.helperProportions.height,n=e.left,r=n+e.width,o=e.top,h=o+e.height,l=this.offset.click.top,u=this.offset.click.left,d="x"===this.options.axis||s+l>o&&h>s+l,c="y"===this.options.axis||t+u>n&&r>t+u,p=d&&c;return"pointer"===this.options.tolerance||this.options.forcePointerForContainers||"pointer"!==this.options.tolerance&&this.helperProportions[this.floating?"width":"height"]>e[this.floating?"width":"height"]?p:t+this.helperProportions.width/2>n&&r>i-this.helperProportions.width/2&&s+this.helperProportions.height/2>o&&h>a-this.helperProportions.height/2},_intersectsWithPointer:function(e){var t="x"===this.options.axis||this._isOverAxis(this.positionAbs.top+this.offset.click.top,e.top,e.height),i="y"===this.options.axis||this._isOverAxis(this.positionAbs.left+this.offset.click.left,e.left,e.width),s=t&&i,a=this._getDragVerticalDirection(),n=this._getDragHorizontalDirection();return s?this.floating?n&&"right"===n||"down"===a?2:1:a&&("down"===a?2:1):!1},_intersectsWithSides:function(e){var t=this._isOverAxis(this.positionAbs.top+this.offset.click.top,e.top+e.height/2,e.height),i=this._isOverAxis(this.positionAbs.left+this.offset.click.left,e.left+e.width/2,e.width),s=this._getDragVerticalDirection(),a=this._getDragHorizontalDirection();return this.floating&&a?"right"===a&&i||"left"===a&&!i:s&&("down"===s&&t||"up"===s&&!t)},_getDragVerticalDirection:function(){var e=this.positionAbs.top-this.lastPositionAbs.top;return 0!==e&&(e>0?"down":"up")},_getDragHorizontalDirection:function(){var e=this.positionAbs.left-this.lastPositionAbs.left;return 0!==e&&(e>0?"right":"left")},refresh:function(e){return this._refreshItems(e),this._setHandleClassName(),this.refreshPositions(),this},_connectWith:function(){var e=this.options;return e.connectWith.constructor===String?[e.connectWith]:e.connectWith},_getItemsAsjQuery:function(t){function i(){o.push(this)}var s,a,n,r,o=[],h=[],l=this._connectWith();if(l&&t)for(s=l.length-1;s>=0;s--)for(n=e(l[s],this.document[0]),a=n.length-1;a>=0;a--)r=e.data(n[a],this.widgetFullName),r&&r!==this&&!r.options.disabled&&h.push([e.isFunction(r.options.items)?r.options.items.call(r.element):e(r.options.items,r.element).not(".ui-sortable-helper").not(".ui-sortable-placeholder"),r]);for(h.push([e.isFunction(this.options.items)?this.options.items.call(this.element,null,{options:this.options,item:this.currentItem}):e(this.options.items,this.element).not(".ui-sortable-helper").not(".ui-sortable-placeholder"),this]),s=h.length-1;s>=0;s--)h[s][0].each(i);return e(o)},_removeCurrentsFromItems:function(){var t=this.currentItem.find(":data("+this.widgetName+"-item)");this.items=e.grep(this.items,function(e){for(var i=0;t.length>i;i++)if(t[i]===e.item[0])return!1;return!0})},_refreshItems:function(t){this.items=[],this.containers=[this];var i,s,a,n,r,o,h,l,u=this.items,d=[[e.isFunction(this.options.items)?this.options.items.call(this.element[0],t,{item:this.currentItem}):e(this.options.items,this.element),this]],c=this._connectWith();if(c&&this.ready)for(i=c.length-1;i>=0;i--)for(a=e(c[i],this.document[0]),s=a.length-1;s>=0;s--)n=e.data(a[s],this.widgetFullName),n&&n!==this&&!n.options.disabled&&(d.push([e.isFunction(n.options.items)?n.options.items.call(n.element[0],t,{item:this.currentItem}):e(n.options.items,n.element),n]),this.containers.push(n));for(i=d.length-1;i>=0;i--)for(r=d[i][1],o=d[i][0],s=0,l=o.length;l>s;s++)h=e(o[s]),h.data(this.widgetName+"-item",r),u.push({item:h,instance:r,width:0,height:0,left:0,top:0})},refreshPositions:function(t){this.floating=this.items.length?"x"===this.options.axis||this._isFloating(this.items[0].item):!1,this.offsetParent&&this.helper&&(this.offset.parent=this._getParentOffset());var i,s,a,n;for(i=this.items.length-1;i>=0;i--)s=this.items[i],s.instance!==this.currentContainer&&this.currentContainer&&s.item[0]!==this.currentItem[0]||(a=this.options.toleranceElement?e(this.options.toleranceElement,s.item):s.item,t||(s.width=a.outerWidth(),s.height=a.outerHeight()),n=a.offset(),s.left=n.left,s.top=n.top);if(this.options.custom&&this.options.custom.refreshContainers)this.options.custom.refreshContainers.call(this);else for(i=this.containers.length-1;i>=0;i--)n=this.containers[i].element.offset(),this.containers[i].containerCache.left=n.left,this.containers[i].containerCache.top=n.top,this.containers[i].containerCache.width=this.containers[i].element.outerWidth(),this.containers[i].containerCache.height=this.containers[i].element.outerHeight();return this},_createPlaceholder:function(t){t=t||this;var i,s=t.options;s.placeholder&&s.placeholder.constructor!==String||(i=s.placeholder,s.placeholder={element:function(){var s=t.currentItem[0].nodeName.toLowerCase(),a=e("<"+s+">",t.document[0]).addClass(i||t.currentItem[0].className+" ui-sortable-placeholder").removeClass("ui-sortable-helper");return"tbody"===s?t._createTrPlaceholder(t.currentItem.find("tr").eq(0),e("<tr>",t.document[0]).appendTo(a)):"tr"===s?t._createTrPlaceholder(t.currentItem,a):"img"===s&&a.attr("src",t.currentItem.attr("src")),i||a.css("visibility","hidden"),a},update:function(e,a){(!i||s.forcePlaceholderSize)&&(a.height()||a.height(t.currentItem.innerHeight()-parseInt(t.currentItem.css("paddingTop")||0,10)-parseInt(t.currentItem.css("paddingBottom")||0,10)),a.width()||a.width(t.currentItem.innerWidth()-parseInt(t.currentItem.css("paddingLeft")||0,10)-parseInt(t.currentItem.css("paddingRight")||0,10)))}}),t.placeholder=e(s.placeholder.element.call(t.element,t.currentItem)),t.currentItem.after(t.placeholder),s.placeholder.update(t,t.placeholder)},_createTrPlaceholder:function(t,i){var s=this;t.children().each(function(){e("<td>&#160;</td>",s.document[0]).attr("colspan",e(this).attr("colspan")||1).appendTo(i)})},_contactContainers:function(t){var i,s,a,n,r,o,h,l,u,d,c=null,p=null;for(i=this.containers.length-1;i>=0;i--)if(!e.contains(this.currentItem[0],this.containers[i].element[0]))if(this._intersectsWith(this.containers[i].containerCache)){if(c&&e.contains(this.containers[i].element[0],c.element[0]))continue;c=this.containers[i],p=i}else this.containers[i].containerCache.over&&(this.containers[i]._trigger("out",t,this._uiHash(this)),this.containers[i].containerCache.over=0);if(c)if(1===this.containers.length)this.containers[p].containerCache.over||(this.containers[p]._trigger("over",t,this._uiHash(this)),this.containers[p].containerCache.over=1);else{for(a=1e4,n=null,u=c.floating||this._isFloating(this.currentItem),r=u?"left":"top",o=u?"width":"height",d=u?"clientX":"clientY",s=this.items.length-1;s>=0;s--)e.contains(this.containers[p].element[0],this.items[s].item[0])&&this.items[s].item[0]!==this.currentItem[0]&&(h=this.items[s].item.offset()[r],l=!1,t[d]-h>this.items[s][o]/2&&(l=!0),a>Math.abs(t[d]-h)&&(a=Math.abs(t[d]-h),n=this.items[s],this.direction=l?"up":"down"));if(!n&&!this.options.dropOnEmpty)return;if(this.currentContainer===this.containers[p])return this.currentContainer.containerCache.over||(this.containers[p]._trigger("over",t,this._uiHash()),this.currentContainer.containerCache.over=1),void 0;n?this._rearrange(t,n,null,!0):this._rearrange(t,null,this.containers[p].element,!0),this._trigger("change",t,this._uiHash()),this.containers[p]._trigger("change",t,this._uiHash(this)),this.currentContainer=this.containers[p],this.options.placeholder.update(this.currentContainer,this.placeholder),this.containers[p]._trigger("over",t,this._uiHash(this)),this.containers[p].containerCache.over=1}},_createHelper:function(t){var i=this.options,s=e.isFunction(i.helper)?e(i.helper.apply(this.element[0],[t,this.currentItem])):"clone"===i.helper?this.currentItem.clone():this.currentItem;return s.parents("body").length||e("parent"!==i.appendTo?i.appendTo:this.currentItem[0].parentNode)[0].appendChild(s[0]),s[0]===this.currentItem[0]&&(this._storedCSS={width:this.currentItem[0].style.width,height:this.currentItem[0].style.height,position:this.currentItem.css("position"),top:this.currentItem.css("top"),left:this.currentItem.css("left")}),(!s[0].style.width||i.forceHelperSize)&&s.width(this.currentItem.width()),(!s[0].style.height||i.forceHelperSize)&&s.height(this.currentItem.height()),s},_adjustOffsetFromHelper:function(t){"string"==typeof t&&(t=t.split(" ")),e.isArray(t)&&(t={left:+t[0],top:+t[1]||0}),"left"in t&&(this.offset.click.left=t.left+this.margins.left),"right"in t&&(this.offset.click.left=this.helperProportions.width-t.right+this.margins.left),"top"in t&&(this.offset.click.top=t.top+this.margins.top),"bottom"in t&&(this.offset.click.top=this.helperProportions.height-t.bottom+this.margins.top)},_getParentOffset:function(){this.offsetParent=this.helper.offsetParent();var t=this.offsetParent.offset();return"absolute"===this.cssPosition&&this.scrollParent[0]!==this.document[0]&&e.contains(this.scrollParent[0],this.offsetParent[0])&&(t.left+=this.scrollParent.scrollLeft(),t.top+=this.scrollParent.scrollTop()),(this.offsetParent[0]===this.document[0].body||this.offsetParent[0].tagName&&"html"===this.offsetParent[0].tagName.toLowerCase()&&e.ui.ie)&&(t={top:0,left:0}),{top:t.top+(parseInt(this.offsetParent.css("borderTopWidth"),10)||0),left:t.left+(parseInt(this.offsetParent.css("borderLeftWidth"),10)||0)}},_getRelativeOffset:function(){if("relative"===this.cssPosition){var e=this.currentItem.position();return{top:e.top-(parseInt(this.helper.css("top"),10)||0)+this.scrollParent.scrollTop(),left:e.left-(parseInt(this.helper.css("left"),10)||0)+this.scrollParent.scrollLeft()}}return{top:0,left:0}},_cacheMargins:function(){this.margins={left:parseInt(this.currentItem.css("marginLeft"),10)||0,top:parseInt(this.currentItem.css("marginTop"),10)||0}},_cacheHelperProportions:function(){this.helperProportions={width:this.helper.outerWidth(),height:this.helper.outerHeight()}},_setContainment:function(){var t,i,s,a=this.options;"parent"===a.containment&&(a.containment=this.helper[0].parentNode),("document"===a.containment||"window"===a.containment)&&(this.containment=[0-this.offset.relative.left-this.offset.parent.left,0-this.offset.relative.top-this.offset.parent.top,"document"===a.containment?this.document.width():this.window.width()-this.helperProportions.width-this.margins.left,("document"===a.containment?this.document.width():this.window.height()||this.document[0].body.parentNode.scrollHeight)-this.helperProportions.height-this.margins.top]),/^(document|window|parent)$/.test(a.containment)||(t=e(a.containment)[0],i=e(a.containment).offset(),s="hidden"!==e(t).css("overflow"),this.containment=[i.left+(parseInt(e(t).css("borderLeftWidth"),10)||0)+(parseInt(e(t).css("paddingLeft"),10)||0)-this.margins.left,i.top+(parseInt(e(t).css("borderTopWidth"),10)||0)+(parseInt(e(t).css("paddingTop"),10)||0)-this.margins.top,i.left+(s?Math.max(t.scrollWidth,t.offsetWidth):t.offsetWidth)-(parseInt(e(t).css("borderLeftWidth"),10)||0)-(parseInt(e(t).css("paddingRight"),10)||0)-this.helperProportions.width-this.margins.left,i.top+(s?Math.max(t.scrollHeight,t.offsetHeight):t.offsetHeight)-(parseInt(e(t).css("borderTopWidth"),10)||0)-(parseInt(e(t).css("paddingBottom"),10)||0)-this.helperProportions.height-this.margins.top])},_convertPositionTo:function(t,i){i||(i=this.position);var s="absolute"===t?1:-1,a="absolute"!==this.cssPosition||this.scrollParent[0]!==this.document[0]&&e.contains(this.scrollParent[0],this.offsetParent[0])?this.scrollParent:this.offsetParent,n=/(html|body)/i.test(a[0].tagName);return{top:i.top+this.offset.relative.top*s+this.offset.parent.top*s-("fixed"===this.cssPosition?-this.scrollParent.scrollTop():n?0:a.scrollTop())*s,left:i.left+this.offset.relative.left*s+this.offset.parent.left*s-("fixed"===this.cssPosition?-this.scrollParent.scrollLeft():n?0:a.scrollLeft())*s}},_generatePosition:function(t){var i,s,a=this.options,n=t.pageX,r=t.pageY,o="absolute"!==this.cssPosition||this.scrollParent[0]!==this.document[0]&&e.contains(this.scrollParent[0],this.offsetParent[0])?this.scrollParent:this.offsetParent,h=/(html|body)/i.test(o[0].tagName);return"relative"!==this.cssPosition||this.scrollParent[0]!==this.document[0]&&this.scrollParent[0]!==this.offsetParent[0]||(this.offset.relative=this._getRelativeOffset()),this.originalPosition&&(this.containment&&(t.pageX-this.offset.click.left<this.containment[0]&&(n=this.containment[0]+this.offset.click.left),t.pageY-this.offset.click.top<this.containment[1]&&(r=this.containment[1]+this.offset.click.top),t.pageX-this.offset.click.left>this.containment[2]&&(n=this.containment[2]+this.offset.click.left),t.pageY-this.offset.click.top>this.containment[3]&&(r=this.containment[3]+this.offset.click.top)),a.grid&&(i=this.originalPageY+Math.round((r-this.originalPageY)/a.grid[1])*a.grid[1],r=this.containment?i-this.offset.click.top>=this.containment[1]&&i-this.offset.click.top<=this.containment[3]?i:i-this.offset.click.top>=this.containment[1]?i-a.grid[1]:i+a.grid[1]:i,s=this.originalPageX+Math.round((n-this.originalPageX)/a.grid[0])*a.grid[0],n=this.containment?s-this.offset.click.left>=this.containment[0]&&s-this.offset.click.left<=this.containment[2]?s:s-this.offset.click.left>=this.containment[0]?s-a.grid[0]:s+a.grid[0]:s)),{top:r-this.offset.click.top-this.offset.relative.top-this.offset.parent.top+("fixed"===this.cssPosition?-this.scrollParent.scrollTop():h?0:o.scrollTop()),left:n-this.offset.click.left-this.offset.relative.left-this.offset.parent.left+("fixed"===this.cssPosition?-this.scrollParent.scrollLeft():h?0:o.scrollLeft())}},_rearrange:function(e,t,i,s){i?i[0].appendChild(this.placeholder[0]):t.item[0].parentNode.insertBefore(this.placeholder[0],"down"===this.direction?t.item[0]:t.item[0].nextSibling),this.counter=this.counter?++this.counter:1;var a=this.counter;this._delay(function(){a===this.counter&&this.refreshPositions(!s)})},_clear:function(e,t){function i(e,t,i){return function(s){i._trigger(e,s,t._uiHash(t))}}this.reverting=!1;var s,a=[];if(!this._noFinalSort&&this.currentItem.parent().length&&this.placeholder.before(this.currentItem),this._noFinalSort=null,this.helper[0]===this.currentItem[0]){for(s in this._storedCSS)("auto"===this._storedCSS[s]||"static"===this._storedCSS[s])&&(this._storedCSS[s]="");this.currentItem.css(this._storedCSS).removeClass("ui-sortable-helper")}else this.currentItem.show();for(this.fromOutside&&!t&&a.push(function(e){this._trigger("receive",e,this._uiHash(this.fromOutside))}),!this.fromOutside&&this.domPosition.prev===this.currentItem.prev().not(".ui-sortable-helper")[0]&&this.domPosition.parent===this.currentItem.parent()[0]||t||a.push(function(e){this._trigger("update",e,this._uiHash())}),this!==this.currentContainer&&(t||(a.push(function(e){this._trigger("remove",e,this._uiHash())}),a.push(function(e){return function(t){e._trigger("receive",t,this._uiHash(this))}}.call(this,this.currentContainer)),a.push(function(e){return function(t){e._trigger("update",t,this._uiHash(this))}}.call(this,this.currentContainer)))),s=this.containers.length-1;s>=0;s--)t||a.push(i("deactivate",this,this.containers[s])),this.containers[s].containerCache.over&&(a.push(i("out",this,this.containers[s])),this.containers[s].containerCache.over=0);if(this.storedCursor&&(this.document.find("body").css("cursor",this.storedCursor),this.storedStylesheet.remove()),this._storedOpacity&&this.helper.css("opacity",this._storedOpacity),this._storedZIndex&&this.helper.css("zIndex","auto"===this._storedZIndex?"":this._storedZIndex),this.dragging=!1,t||this._trigger("beforeStop",e,this._uiHash()),this.placeholder[0].parentNode.removeChild(this.placeholder[0]),this.cancelHelperRemoval||(this.helper[0]!==this.currentItem[0]&&this.helper.remove(),this.helper=null),!t){for(s=0;a.length>s;s++)a[s].call(this,e);this._trigger("stop",e,this._uiHash())}return this.fromOutside=!1,!this.cancelHelperRemoval},_trigger:function(){e.Widget.prototype._trigger.apply(this,arguments)===!1&&this.cancel()},_uiHash:function(t){var i=t||this;return{helper:i.helper,placeholder:i.placeholder||e([]),position:i.position,originalPosition:i.originalPosition,offset:i.positionAbs,item:i.currentItem,sender:t?t.element:null}}}),e.widget("ui.accordion",{version:"1.11.4",options:{active:0,animate:{},collapsible:!1,event:"click",header:"> li > :first-child,> :not(li):even",heightStyle:"auto",icons:{activeHeader:"ui-icon-triangle-1-s",header:"ui-icon-triangle-1-e"},activate:null,beforeActivate:null},hideProps:{borderTopWidth:"hide",borderBottomWidth:"hide",paddingTop:"hide",paddingBottom:"hide",height:"hide"},showProps:{borderTopWidth:"show",borderBottomWidth:"show",paddingTop:"show",paddingBottom:"show",height:"show"},_create:function(){var t=this.options;this.prevShow=this.prevHide=e(),this.element.addClass("ui-accordion ui-widget ui-helper-reset").attr("role","tablist"),t.collapsible||t.active!==!1&&null!=t.active||(t.active=0),this._processPanels(),0>t.active&&(t.active+=this.headers.length),this._refresh()},_getCreateEventData:function(){return{header:this.active,panel:this.active.length?this.active.next():e()}},_createIcons:function(){var t=this.options.icons;t&&(e("<span>").addClass("ui-accordion-header-icon ui-icon "+t.header).prependTo(this.headers),this.active.children(".ui-accordion-header-icon").removeClass(t.header).addClass(t.activeHeader),this.headers.addClass("ui-accordion-icons"))},_destroyIcons:function(){this.headers.removeClass("ui-accordion-icons").children(".ui-accordion-header-icon").remove()},_destroy:function(){var e;this.element.removeClass("ui-accordion ui-widget ui-helper-reset").removeAttr("role"),this.headers.removeClass("ui-accordion-header ui-accordion-header-active ui-state-default ui-corner-all ui-state-active ui-state-disabled ui-corner-top").removeAttr("role").removeAttr("aria-expanded").removeAttr("aria-selected").removeAttr("aria-controls").removeAttr("tabIndex").removeUniqueId(),this._destroyIcons(),e=this.headers.next().removeClass("ui-helper-reset ui-widget-content ui-corner-bottom ui-accordion-content ui-accordion-content-active ui-state-disabled").css("display","").removeAttr("role").removeAttr("aria-hidden").removeAttr("aria-labelledby").removeUniqueId(),"content"!==this.options.heightStyle&&e.css("height","")},_setOption:function(e,t){return"active"===e?(this._activate(t),void 0):("event"===e&&(this.options.event&&this._off(this.headers,this.options.event),this._setupEvents(t)),this._super(e,t),"collapsible"!==e||t||this.options.active!==!1||this._activate(0),"icons"===e&&(this._destroyIcons(),t&&this._createIcons()),"disabled"===e&&(this.element.toggleClass("ui-state-disabled",!!t).attr("aria-disabled",t),this.headers.add(this.headers.next()).toggleClass("ui-state-disabled",!!t)),void 0)},_keydown:function(t){if(!t.altKey&&!t.ctrlKey){var i=e.ui.keyCode,s=this.headers.length,a=this.headers.index(t.target),n=!1;switch(t.keyCode){case i.RIGHT:case i.DOWN:n=this.headers[(a+1)%s];break;case i.LEFT:case i.UP:n=this.headers[(a-1+s)%s];break;case i.SPACE:case i.ENTER:this._eventHandler(t);break;case i.HOME:n=this.headers[0];break;case i.END:n=this.headers[s-1]}n&&(e(t.target).attr("tabIndex",-1),e(n).attr("tabIndex",0),n.focus(),t.preventDefault())}},_panelKeyDown:function(t){t.keyCode===e.ui.keyCode.UP&&t.ctrlKey&&e(t.currentTarget).prev().focus()},refresh:function(){var t=this.options;this._processPanels(),t.active===!1&&t.collapsible===!0||!this.headers.length?(t.active=!1,this.active=e()):t.active===!1?this._activate(0):this.active.length&&!e.contains(this.element[0],this.active[0])?this.headers.length===this.headers.find(".ui-state-disabled").length?(t.active=!1,this.active=e()):this._activate(Math.max(0,t.active-1)):t.active=this.headers.index(this.active),this._destroyIcons(),this._refresh()},_processPanels:function(){var e=this.headers,t=this.panels;this.headers=this.element.find(this.options.header).addClass("ui-accordion-header ui-state-default ui-corner-all"),this.panels=this.headers.next().addClass("ui-accordion-content ui-helper-reset ui-widget-content ui-corner-bottom").filter(":not(.ui-accordion-content-active)").hide(),t&&(this._off(e.not(this.headers)),this._off(t.not(this.panels)))
},_refresh:function(){var t,i=this.options,s=i.heightStyle,a=this.element.parent();this.active=this._findActive(i.active).addClass("ui-accordion-header-active ui-state-active ui-corner-top").removeClass("ui-corner-all"),this.active.next().addClass("ui-accordion-content-active").show(),this.headers.attr("role","tab").each(function(){var t=e(this),i=t.uniqueId().attr("id"),s=t.next(),a=s.uniqueId().attr("id");t.attr("aria-controls",a),s.attr("aria-labelledby",i)}).next().attr("role","tabpanel"),this.headers.not(this.active).attr({"aria-selected":"false","aria-expanded":"false",tabIndex:-1}).next().attr({"aria-hidden":"true"}).hide(),this.active.length?this.active.attr({"aria-selected":"true","aria-expanded":"true",tabIndex:0}).next().attr({"aria-hidden":"false"}):this.headers.eq(0).attr("tabIndex",0),this._createIcons(),this._setupEvents(i.event),"fill"===s?(t=a.height(),this.element.siblings(":visible").each(function(){var i=e(this),s=i.css("position");"absolute"!==s&&"fixed"!==s&&(t-=i.outerHeight(!0))}),this.headers.each(function(){t-=e(this).outerHeight(!0)}),this.headers.next().each(function(){e(this).height(Math.max(0,t-e(this).innerHeight()+e(this).height()))}).css("overflow","auto")):"auto"===s&&(t=0,this.headers.next().each(function(){t=Math.max(t,e(this).css("height","").height())}).height(t))},_activate:function(t){var i=this._findActive(t)[0];i!==this.active[0]&&(i=i||this.active[0],this._eventHandler({target:i,currentTarget:i,preventDefault:e.noop}))},_findActive:function(t){return"number"==typeof t?this.headers.eq(t):e()},_setupEvents:function(t){var i={keydown:"_keydown"};t&&e.each(t.split(" "),function(e,t){i[t]="_eventHandler"}),this._off(this.headers.add(this.headers.next())),this._on(this.headers,i),this._on(this.headers.next(),{keydown:"_panelKeyDown"}),this._hoverable(this.headers),this._focusable(this.headers)},_eventHandler:function(t){var i=this.options,s=this.active,a=e(t.currentTarget),n=a[0]===s[0],r=n&&i.collapsible,o=r?e():a.next(),h=s.next(),l={oldHeader:s,oldPanel:h,newHeader:r?e():a,newPanel:o};t.preventDefault(),n&&!i.collapsible||this._trigger("beforeActivate",t,l)===!1||(i.active=r?!1:this.headers.index(a),this.active=n?e():a,this._toggle(l),s.removeClass("ui-accordion-header-active ui-state-active"),i.icons&&s.children(".ui-accordion-header-icon").removeClass(i.icons.activeHeader).addClass(i.icons.header),n||(a.removeClass("ui-corner-all").addClass("ui-accordion-header-active ui-state-active ui-corner-top"),i.icons&&a.children(".ui-accordion-header-icon").removeClass(i.icons.header).addClass(i.icons.activeHeader),a.next().addClass("ui-accordion-content-active")))},_toggle:function(t){var i=t.newPanel,s=this.prevShow.length?this.prevShow:t.oldPanel;this.prevShow.add(this.prevHide).stop(!0,!0),this.prevShow=i,this.prevHide=s,this.options.animate?this._animate(i,s,t):(s.hide(),i.show(),this._toggleComplete(t)),s.attr({"aria-hidden":"true"}),s.prev().attr({"aria-selected":"false","aria-expanded":"false"}),i.length&&s.length?s.prev().attr({tabIndex:-1,"aria-expanded":"false"}):i.length&&this.headers.filter(function(){return 0===parseInt(e(this).attr("tabIndex"),10)}).attr("tabIndex",-1),i.attr("aria-hidden","false").prev().attr({"aria-selected":"true","aria-expanded":"true",tabIndex:0})},_animate:function(e,t,i){var s,a,n,r=this,o=0,h=e.css("box-sizing"),l=e.length&&(!t.length||e.index()<t.index()),u=this.options.animate||{},d=l&&u.down||u,c=function(){r._toggleComplete(i)};return"number"==typeof d&&(n=d),"string"==typeof d&&(a=d),a=a||d.easing||u.easing,n=n||d.duration||u.duration,t.length?e.length?(s=e.show().outerHeight(),t.animate(this.hideProps,{duration:n,easing:a,step:function(e,t){t.now=Math.round(e)}}),e.hide().animate(this.showProps,{duration:n,easing:a,complete:c,step:function(e,i){i.now=Math.round(e),"height"!==i.prop?"content-box"===h&&(o+=i.now):"content"!==r.options.heightStyle&&(i.now=Math.round(s-t.outerHeight()-o),o=0)}}),void 0):t.animate(this.hideProps,n,a,c):e.animate(this.showProps,n,a,c)},_toggleComplete:function(e){var t=e.oldPanel;t.removeClass("ui-accordion-content-active").prev().removeClass("ui-corner-top").addClass("ui-corner-all"),t.length&&(t.parent()[0].className=t.parent()[0].className),this._trigger("activate",null,e)}}),e.widget("ui.menu",{version:"1.11.4",defaultElement:"<ul>",delay:300,options:{icons:{submenu:"ui-icon-carat-1-e"},items:"> *",menus:"ul",position:{my:"left-1 top",at:"right top"},role:"menu",blur:null,focus:null,select:null},_create:function(){this.activeMenu=this.element,this.mouseHandled=!1,this.element.uniqueId().addClass("ui-menu ui-widget ui-widget-content").toggleClass("ui-menu-icons",!!this.element.find(".ui-icon").length).attr({role:this.options.role,tabIndex:0}),this.options.disabled&&this.element.addClass("ui-state-disabled").attr("aria-disabled","true"),this._on({"mousedown .ui-menu-item":function(e){e.preventDefault()},"click .ui-menu-item":function(t){var i=e(t.target);!this.mouseHandled&&i.not(".ui-state-disabled").length&&(this.select(t),t.isPropagationStopped()||(this.mouseHandled=!0),i.has(".ui-menu").length?this.expand(t):!this.element.is(":focus")&&e(this.document[0].activeElement).closest(".ui-menu").length&&(this.element.trigger("focus",[!0]),this.active&&1===this.active.parents(".ui-menu").length&&clearTimeout(this.timer)))},"mouseenter .ui-menu-item":function(t){if(!this.previousFilter){var i=e(t.currentTarget);i.siblings(".ui-state-active").removeClass("ui-state-active"),this.focus(t,i)}},mouseleave:"collapseAll","mouseleave .ui-menu":"collapseAll",focus:function(e,t){var i=this.active||this.element.find(this.options.items).eq(0);t||this.focus(e,i)},blur:function(t){this._delay(function(){e.contains(this.element[0],this.document[0].activeElement)||this.collapseAll(t)})},keydown:"_keydown"}),this.refresh(),this._on(this.document,{click:function(e){this._closeOnDocumentClick(e)&&this.collapseAll(e),this.mouseHandled=!1}})},_destroy:function(){this.element.removeAttr("aria-activedescendant").find(".ui-menu").addBack().removeClass("ui-menu ui-widget ui-widget-content ui-menu-icons ui-front").removeAttr("role").removeAttr("tabIndex").removeAttr("aria-labelledby").removeAttr("aria-expanded").removeAttr("aria-hidden").removeAttr("aria-disabled").removeUniqueId().show(),this.element.find(".ui-menu-item").removeClass("ui-menu-item").removeAttr("role").removeAttr("aria-disabled").removeUniqueId().removeClass("ui-state-hover").removeAttr("tabIndex").removeAttr("role").removeAttr("aria-haspopup").children().each(function(){var t=e(this);t.data("ui-menu-submenu-carat")&&t.remove()}),this.element.find(".ui-menu-divider").removeClass("ui-menu-divider ui-widget-content")},_keydown:function(t){var i,s,a,n,r=!0;switch(t.keyCode){case e.ui.keyCode.PAGE_UP:this.previousPage(t);break;case e.ui.keyCode.PAGE_DOWN:this.nextPage(t);break;case e.ui.keyCode.HOME:this._move("first","first",t);break;case e.ui.keyCode.END:this._move("last","last",t);break;case e.ui.keyCode.UP:this.previous(t);break;case e.ui.keyCode.DOWN:this.next(t);break;case e.ui.keyCode.LEFT:this.collapse(t);break;case e.ui.keyCode.RIGHT:this.active&&!this.active.is(".ui-state-disabled")&&this.expand(t);break;case e.ui.keyCode.ENTER:case e.ui.keyCode.SPACE:this._activate(t);break;case e.ui.keyCode.ESCAPE:this.collapse(t);break;default:r=!1,s=this.previousFilter||"",a=String.fromCharCode(t.keyCode),n=!1,clearTimeout(this.filterTimer),a===s?n=!0:a=s+a,i=this._filterMenuItems(a),i=n&&-1!==i.index(this.active.next())?this.active.nextAll(".ui-menu-item"):i,i.length||(a=String.fromCharCode(t.keyCode),i=this._filterMenuItems(a)),i.length?(this.focus(t,i),this.previousFilter=a,this.filterTimer=this._delay(function(){delete this.previousFilter},1e3)):delete this.previousFilter}r&&t.preventDefault()},_activate:function(e){this.active.is(".ui-state-disabled")||(this.active.is("[aria-haspopup='true']")?this.expand(e):this.select(e))},refresh:function(){var t,i,s=this,a=this.options.icons.submenu,n=this.element.find(this.options.menus);this.element.toggleClass("ui-menu-icons",!!this.element.find(".ui-icon").length),n.filter(":not(.ui-menu)").addClass("ui-menu ui-widget ui-widget-content ui-front").hide().attr({role:this.options.role,"aria-hidden":"true","aria-expanded":"false"}).each(function(){var t=e(this),i=t.parent(),s=e("<span>").addClass("ui-menu-icon ui-icon "+a).data("ui-menu-submenu-carat",!0);i.attr("aria-haspopup","true").prepend(s),t.attr("aria-labelledby",i.attr("id"))}),t=n.add(this.element),i=t.find(this.options.items),i.not(".ui-menu-item").each(function(){var t=e(this);s._isDivider(t)&&t.addClass("ui-widget-content ui-menu-divider")}),i.not(".ui-menu-item, .ui-menu-divider").addClass("ui-menu-item").uniqueId().attr({tabIndex:-1,role:this._itemRole()}),i.filter(".ui-state-disabled").attr("aria-disabled","true"),this.active&&!e.contains(this.element[0],this.active[0])&&this.blur()},_itemRole:function(){return{menu:"menuitem",listbox:"option"}[this.options.role]},_setOption:function(e,t){"icons"===e&&this.element.find(".ui-menu-icon").removeClass(this.options.icons.submenu).addClass(t.submenu),"disabled"===e&&this.element.toggleClass("ui-state-disabled",!!t).attr("aria-disabled",t),this._super(e,t)},focus:function(e,t){var i,s;this.blur(e,e&&"focus"===e.type),this._scrollIntoView(t),this.active=t.first(),s=this.active.addClass("ui-state-focus").removeClass("ui-state-active"),this.options.role&&this.element.attr("aria-activedescendant",s.attr("id")),this.active.parent().closest(".ui-menu-item").addClass("ui-state-active"),e&&"keydown"===e.type?this._close():this.timer=this._delay(function(){this._close()},this.delay),i=t.children(".ui-menu"),i.length&&e&&/^mouse/.test(e.type)&&this._startOpening(i),this.activeMenu=t.parent(),this._trigger("focus",e,{item:t})},_scrollIntoView:function(t){var i,s,a,n,r,o;this._hasScroll()&&(i=parseFloat(e.css(this.activeMenu[0],"borderTopWidth"))||0,s=parseFloat(e.css(this.activeMenu[0],"paddingTop"))||0,a=t.offset().top-this.activeMenu.offset().top-i-s,n=this.activeMenu.scrollTop(),r=this.activeMenu.height(),o=t.outerHeight(),0>a?this.activeMenu.scrollTop(n+a):a+o>r&&this.activeMenu.scrollTop(n+a-r+o))},blur:function(e,t){t||clearTimeout(this.timer),this.active&&(this.active.removeClass("ui-state-focus"),this.active=null,this._trigger("blur",e,{item:this.active}))},_startOpening:function(e){clearTimeout(this.timer),"true"===e.attr("aria-hidden")&&(this.timer=this._delay(function(){this._close(),this._open(e)},this.delay))},_open:function(t){var i=e.extend({of:this.active},this.options.position);clearTimeout(this.timer),this.element.find(".ui-menu").not(t.parents(".ui-menu")).hide().attr("aria-hidden","true"),t.show().removeAttr("aria-hidden").attr("aria-expanded","true").position(i)},collapseAll:function(t,i){clearTimeout(this.timer),this.timer=this._delay(function(){var s=i?this.element:e(t&&t.target).closest(this.element.find(".ui-menu"));s.length||(s=this.element),this._close(s),this.blur(t),this.activeMenu=s},this.delay)},_close:function(e){e||(e=this.active?this.active.parent():this.element),e.find(".ui-menu").hide().attr("aria-hidden","true").attr("aria-expanded","false").end().find(".ui-state-active").not(".ui-state-focus").removeClass("ui-state-active")},_closeOnDocumentClick:function(t){return!e(t.target).closest(".ui-menu").length},_isDivider:function(e){return!/[^\-\u2014\u2013\s]/.test(e.text())},collapse:function(e){var t=this.active&&this.active.parent().closest(".ui-menu-item",this.element);t&&t.length&&(this._close(),this.focus(e,t))},expand:function(e){var t=this.active&&this.active.children(".ui-menu ").find(this.options.items).first();t&&t.length&&(this._open(t.parent()),this._delay(function(){this.focus(e,t)}))},next:function(e){this._move("next","first",e)},previous:function(e){this._move("prev","last",e)},isFirstItem:function(){return this.active&&!this.active.prevAll(".ui-menu-item").length},isLastItem:function(){return this.active&&!this.active.nextAll(".ui-menu-item").length},_move:function(e,t,i){var s;this.active&&(s="first"===e||"last"===e?this.active["first"===e?"prevAll":"nextAll"](".ui-menu-item").eq(-1):this.active[e+"All"](".ui-menu-item").eq(0)),s&&s.length&&this.active||(s=this.activeMenu.find(this.options.items)[t]()),this.focus(i,s)},nextPage:function(t){var i,s,a;return this.active?(this.isLastItem()||(this._hasScroll()?(s=this.active.offset().top,a=this.element.height(),this.active.nextAll(".ui-menu-item").each(function(){return i=e(this),0>i.offset().top-s-a}),this.focus(t,i)):this.focus(t,this.activeMenu.find(this.options.items)[this.active?"last":"first"]())),void 0):(this.next(t),void 0)},previousPage:function(t){var i,s,a;return this.active?(this.isFirstItem()||(this._hasScroll()?(s=this.active.offset().top,a=this.element.height(),this.active.prevAll(".ui-menu-item").each(function(){return i=e(this),i.offset().top-s+a>0}),this.focus(t,i)):this.focus(t,this.activeMenu.find(this.options.items).first())),void 0):(this.next(t),void 0)},_hasScroll:function(){return this.element.outerHeight()<this.element.prop("scrollHeight")},select:function(t){this.active=this.active||e(t.target).closest(".ui-menu-item");var i={item:this.active};this.active.has(".ui-menu").length||this.collapseAll(t,!0),this._trigger("select",t,i)},_filterMenuItems:function(t){var i=t.replace(/[\-\[\]{}()*+?.,\\\^$|#\s]/g,"\\$&"),s=RegExp("^"+i,"i");return this.activeMenu.find(this.options.items).filter(".ui-menu-item").filter(function(){return s.test(e.trim(e(this).text()))})}}),e.widget("ui.autocomplete",{version:"1.11.4",defaultElement:"<input>",options:{appendTo:null,autoFocus:!1,delay:300,minLength:1,position:{my:"left top",at:"left bottom",collision:"none"},source:null,change:null,close:null,focus:null,open:null,response:null,search:null,select:null},requestIndex:0,pending:0,_create:function(){var t,i,s,a=this.element[0].nodeName.toLowerCase(),n="textarea"===a,r="input"===a;this.isMultiLine=n?!0:r?!1:this.element.prop("isContentEditable"),this.valueMethod=this.element[n||r?"val":"text"],this.isNewMenu=!0,this.element.addClass("ui-autocomplete-input").attr("autocomplete","off"),this._on(this.element,{keydown:function(a){if(this.element.prop("readOnly"))return t=!0,s=!0,i=!0,void 0;t=!1,s=!1,i=!1;var n=e.ui.keyCode;switch(a.keyCode){case n.PAGE_UP:t=!0,this._move("previousPage",a);break;case n.PAGE_DOWN:t=!0,this._move("nextPage",a);break;case n.UP:t=!0,this._keyEvent("previous",a);break;case n.DOWN:t=!0,this._keyEvent("next",a);break;case n.ENTER:this.menu.active&&(t=!0,a.preventDefault(),this.menu.select(a));break;case n.TAB:this.menu.active&&this.menu.select(a);break;case n.ESCAPE:this.menu.element.is(":visible")&&(this.isMultiLine||this._value(this.term),this.close(a),a.preventDefault());break;default:i=!0,this._searchTimeout(a)}},keypress:function(s){if(t)return t=!1,(!this.isMultiLine||this.menu.element.is(":visible"))&&s.preventDefault(),void 0;if(!i){var a=e.ui.keyCode;switch(s.keyCode){case a.PAGE_UP:this._move("previousPage",s);break;case a.PAGE_DOWN:this._move("nextPage",s);break;case a.UP:this._keyEvent("previous",s);break;case a.DOWN:this._keyEvent("next",s)}}},input:function(e){return s?(s=!1,e.preventDefault(),void 0):(this._searchTimeout(e),void 0)},focus:function(){this.selectedItem=null,this.previous=this._value()},blur:function(e){return this.cancelBlur?(delete this.cancelBlur,void 0):(clearTimeout(this.searching),this.close(e),this._change(e),void 0)}}),this._initSource(),this.menu=e("<ul>").addClass("ui-autocomplete ui-front").appendTo(this._appendTo()).menu({role:null}).hide().menu("instance"),this._on(this.menu.element,{mousedown:function(t){t.preventDefault(),this.cancelBlur=!0,this._delay(function(){delete this.cancelBlur});var i=this.menu.element[0];e(t.target).closest(".ui-menu-item").length||this._delay(function(){var t=this;this.document.one("mousedown",function(s){s.target===t.element[0]||s.target===i||e.contains(i,s.target)||t.close()})})},menufocus:function(t,i){var s,a;return this.isNewMenu&&(this.isNewMenu=!1,t.originalEvent&&/^mouse/.test(t.originalEvent.type))?(this.menu.blur(),this.document.one("mousemove",function(){e(t.target).trigger(t.originalEvent)}),void 0):(a=i.item.data("ui-autocomplete-item"),!1!==this._trigger("focus",t,{item:a})&&t.originalEvent&&/^key/.test(t.originalEvent.type)&&this._value(a.value),s=i.item.attr("aria-label")||a.value,s&&e.trim(s).length&&(this.liveRegion.children().hide(),e("<div>").text(s).appendTo(this.liveRegion)),void 0)},menuselect:function(e,t){var i=t.item.data("ui-autocomplete-item"),s=this.previous;this.element[0]!==this.document[0].activeElement&&(this.element.focus(),this.previous=s,this._delay(function(){this.previous=s,this.selectedItem=i})),!1!==this._trigger("select",e,{item:i})&&this._value(i.value),this.term=this._value(),this.close(e),this.selectedItem=i}}),this.liveRegion=e("<span>",{role:"status","aria-live":"assertive","aria-relevant":"additions"}).addClass("ui-helper-hidden-accessible").appendTo(this.document[0].body),this._on(this.window,{beforeunload:function(){this.element.removeAttr("autocomplete")}})},_destroy:function(){clearTimeout(this.searching),this.element.removeClass("ui-autocomplete-input").removeAttr("autocomplete"),this.menu.element.remove(),this.liveRegion.remove()},_setOption:function(e,t){this._super(e,t),"source"===e&&this._initSource(),"appendTo"===e&&this.menu.element.appendTo(this._appendTo()),"disabled"===e&&t&&this.xhr&&this.xhr.abort()},_appendTo:function(){var t=this.options.appendTo;return t&&(t=t.jquery||t.nodeType?e(t):this.document.find(t).eq(0)),t&&t[0]||(t=this.element.closest(".ui-front")),t.length||(t=this.document[0].body),t},_initSource:function(){var t,i,s=this;e.isArray(this.options.source)?(t=this.options.source,this.source=function(i,s){s(e.ui.autocomplete.filter(t,i.term))}):"string"==typeof this.options.source?(i=this.options.source,this.source=function(t,a){s.xhr&&s.xhr.abort(),s.xhr=e.ajax({url:i,data:t,dataType:"json",success:function(e){a(e)},error:function(){a([])}})}):this.source=this.options.source},_searchTimeout:function(e){clearTimeout(this.searching),this.searching=this._delay(function(){var t=this.term===this._value(),i=this.menu.element.is(":visible"),s=e.altKey||e.ctrlKey||e.metaKey||e.shiftKey;(!t||t&&!i&&!s)&&(this.selectedItem=null,this.search(null,e))},this.options.delay)},search:function(e,t){return e=null!=e?e:this._value(),this.term=this._value(),e.length<this.options.minLength?this.close(t):this._trigger("search",t)!==!1?this._search(e):void 0},_search:function(e){this.pending++,this.element.addClass("ui-autocomplete-loading"),this.cancelSearch=!1,this.source({term:e},this._response())},_response:function(){var t=++this.requestIndex;return e.proxy(function(e){t===this.requestIndex&&this.__response(e),this.pending--,this.pending||this.element.removeClass("ui-autocomplete-loading")},this)},__response:function(e){e&&(e=this._normalize(e)),this._trigger("response",null,{content:e}),!this.options.disabled&&e&&e.length&&!this.cancelSearch?(this._suggest(e),this._trigger("open")):this._close()},close:function(e){this.cancelSearch=!0,this._close(e)},_close:function(e){this.menu.element.is(":visible")&&(this.menu.element.hide(),this.menu.blur(),this.isNewMenu=!0,this._trigger("close",e))},_change:function(e){this.previous!==this._value()&&this._trigger("change",e,{item:this.selectedItem})},_normalize:function(t){return t.length&&t[0].label&&t[0].value?t:e.map(t,function(t){return"string"==typeof t?{label:t,value:t}:e.extend({},t,{label:t.label||t.value,value:t.value||t.label})})},_suggest:function(t){var i=this.menu.element.empty();this._renderMenu(i,t),this.isNewMenu=!0,this.menu.refresh(),i.show(),this._resizeMenu(),i.position(e.extend({of:this.element},this.options.position)),this.options.autoFocus&&this.menu.next()},_resizeMenu:function(){var e=this.menu.element;e.outerWidth(Math.max(e.width("").outerWidth()+1,this.element.outerWidth()))},_renderMenu:function(t,i){var s=this;e.each(i,function(e,i){s._renderItemData(t,i)})},_renderItemData:function(e,t){return this._renderItem(e,t).data("ui-autocomplete-item",t)},_renderItem:function(t,i){return e("<li>").text(i.label).appendTo(t)},_move:function(e,t){return this.menu.element.is(":visible")?this.menu.isFirstItem()&&/^previous/.test(e)||this.menu.isLastItem()&&/^next/.test(e)?(this.isMultiLine||this._value(this.term),this.menu.blur(),void 0):(this.menu[e](t),void 0):(this.search(null,t),void 0)},widget:function(){return this.menu.element},_value:function(){return this.valueMethod.apply(this.element,arguments)},_keyEvent:function(e,t){(!this.isMultiLine||this.menu.element.is(":visible"))&&(this._move(e,t),t.preventDefault())}}),e.extend(e.ui.autocomplete,{escapeRegex:function(e){return e.replace(/[\-\[\]{}()*+?.,\\\^$|#\s]/g,"\\$&")},filter:function(t,i){var s=RegExp(e.ui.autocomplete.escapeRegex(i),"i");return e.grep(t,function(e){return s.test(e.label||e.value||e)})}}),e.widget("ui.autocomplete",e.ui.autocomplete,{options:{messages:{noResults:"No search results.",results:function(e){return e+(e>1?" results are":" result is")+" available, use up and down arrow keys to navigate."}}},__response:function(t){var i;this._superApply(arguments),this.options.disabled||this.cancelSearch||(i=t&&t.length?this.options.messages.results(t.length):this.options.messages.noResults,this.liveRegion.children().hide(),e("<div>").text(i).appendTo(this.liveRegion))}}),e.ui.autocomplete;var c,p="ui-button ui-widget ui-state-default ui-corner-all",f="ui-button-icons-only ui-button-icon-only ui-button-text-icons ui-button-text-icon-primary ui-button-text-icon-secondary ui-button-text-only",m=function(){var t=e(this);setTimeout(function(){t.find(":ui-button").button("refresh")},1)},g=function(t){var i=t.name,s=t.form,a=e([]);return i&&(i=i.replace(/'/g,"\\'"),a=s?e(s).find("[name='"+i+"'][type=radio]"):e("[name='"+i+"'][type=radio]",t.ownerDocument).filter(function(){return!this.form})),a};e.widget("ui.button",{version:"1.11.4",defaultElement:"<button>",options:{disabled:null,text:!0,label:null,icons:{primary:null,secondary:null}},_create:function(){this.element.closest("form").unbind("reset"+this.eventNamespace).bind("reset"+this.eventNamespace,m),"boolean"!=typeof this.options.disabled?this.options.disabled=!!this.element.prop("disabled"):this.element.prop("disabled",this.options.disabled),this._determineButtonType(),this.hasTitle=!!this.buttonElement.attr("title");var t=this,i=this.options,s="checkbox"===this.type||"radio"===this.type,a=s?"":"ui-state-active";null===i.label&&(i.label="input"===this.type?this.buttonElement.val():this.buttonElement.html()),this._hoverable(this.buttonElement),this.buttonElement.addClass(p).attr("role","button").bind("mouseenter"+this.eventNamespace,function(){i.disabled||this===c&&e(this).addClass("ui-state-active")}).bind("mouseleave"+this.eventNamespace,function(){i.disabled||e(this).removeClass(a)}).bind("click"+this.eventNamespace,function(e){i.disabled&&(e.preventDefault(),e.stopImmediatePropagation())}),this._on({focus:function(){this.buttonElement.addClass("ui-state-focus")},blur:function(){this.buttonElement.removeClass("ui-state-focus")}}),s&&this.element.bind("change"+this.eventNamespace,function(){t.refresh()}),"checkbox"===this.type?this.buttonElement.bind("click"+this.eventNamespace,function(){return i.disabled?!1:void 0}):"radio"===this.type?this.buttonElement.bind("click"+this.eventNamespace,function(){if(i.disabled)return!1;e(this).addClass("ui-state-active"),t.buttonElement.attr("aria-pressed","true");var s=t.element[0];g(s).not(s).map(function(){return e(this).button("widget")[0]}).removeClass("ui-state-active").attr("aria-pressed","false")}):(this.buttonElement.bind("mousedown"+this.eventNamespace,function(){return i.disabled?!1:(e(this).addClass("ui-state-active"),c=this,t.document.one("mouseup",function(){c=null}),void 0)}).bind("mouseup"+this.eventNamespace,function(){return i.disabled?!1:(e(this).removeClass("ui-state-active"),void 0)}).bind("keydown"+this.eventNamespace,function(t){return i.disabled?!1:((t.keyCode===e.ui.keyCode.SPACE||t.keyCode===e.ui.keyCode.ENTER)&&e(this).addClass("ui-state-active"),void 0)}).bind("keyup"+this.eventNamespace+" blur"+this.eventNamespace,function(){e(this).removeClass("ui-state-active")}),this.buttonElement.is("a")&&this.buttonElement.keyup(function(t){t.keyCode===e.ui.keyCode.SPACE&&e(this).click()})),this._setOption("disabled",i.disabled),this._resetButton()},_determineButtonType:function(){var e,t,i;this.type=this.element.is("[type=checkbox]")?"checkbox":this.element.is("[type=radio]")?"radio":this.element.is("input")?"input":"button","checkbox"===this.type||"radio"===this.type?(e=this.element.parents().last(),t="label[for='"+this.element.attr("id")+"']",this.buttonElement=e.find(t),this.buttonElement.length||(e=e.length?e.siblings():this.element.siblings(),this.buttonElement=e.filter(t),this.buttonElement.length||(this.buttonElement=e.find(t))),this.element.addClass("ui-helper-hidden-accessible"),i=this.element.is(":checked"),i&&this.buttonElement.addClass("ui-state-active"),this.buttonElement.prop("aria-pressed",i)):this.buttonElement=this.element},widget:function(){return this.buttonElement},_destroy:function(){this.element.removeClass("ui-helper-hidden-accessible"),this.buttonElement.removeClass(p+" ui-state-active "+f).removeAttr("role").removeAttr("aria-pressed").html(this.buttonElement.find(".ui-button-text").html()),this.hasTitle||this.buttonElement.removeAttr("title")},_setOption:function(e,t){return this._super(e,t),"disabled"===e?(this.widget().toggleClass("ui-state-disabled",!!t),this.element.prop("disabled",!!t),t&&("checkbox"===this.type||"radio"===this.type?this.buttonElement.removeClass("ui-state-focus"):this.buttonElement.removeClass("ui-state-focus ui-state-active")),void 0):(this._resetButton(),void 0)},refresh:function(){var t=this.element.is("input, button")?this.element.is(":disabled"):this.element.hasClass("ui-button-disabled");t!==this.options.disabled&&this._setOption("disabled",t),"radio"===this.type?g(this.element[0]).each(function(){e(this).is(":checked")?e(this).button("widget").addClass("ui-state-active").attr("aria-pressed","true"):e(this).button("widget").removeClass("ui-state-active").attr("aria-pressed","false")}):"checkbox"===this.type&&(this.element.is(":checked")?this.buttonElement.addClass("ui-state-active").attr("aria-pressed","true"):this.buttonElement.removeClass("ui-state-active").attr("aria-pressed","false"))},_resetButton:function(){if("input"===this.type)return this.options.label&&this.element.val(this.options.label),void 0;var t=this.buttonElement.removeClass(f),i=e("<span></span>",this.document[0]).addClass("ui-button-text").html(this.options.label).appendTo(t.empty()).text(),s=this.options.icons,a=s.primary&&s.secondary,n=[];s.primary||s.secondary?(this.options.text&&n.push("ui-button-text-icon"+(a?"s":s.primary?"-primary":"-secondary")),s.primary&&t.prepend("<span class='ui-button-icon-primary ui-icon "+s.primary+"'></span>"),s.secondary&&t.append("<span class='ui-button-icon-secondary ui-icon "+s.secondary+"'></span>"),this.options.text||(n.push(a?"ui-button-icons-only":"ui-button-icon-only"),this.hasTitle||t.attr("title",e.trim(i)))):n.push("ui-button-text-only"),t.addClass(n.join(" "))}}),e.widget("ui.buttonset",{version:"1.11.4",options:{items:"button, input[type=button], input[type=submit], input[type=reset], input[type=checkbox], input[type=radio], a, :data(ui-button)"},_create:function(){this.element.addClass("ui-buttonset")},_init:function(){this.refresh()},_setOption:function(e,t){"disabled"===e&&this.buttons.button("option",e,t),this._super(e,t)},refresh:function(){var t="rtl"===this.element.css("direction"),i=this.element.find(this.options.items),s=i.filter(":ui-button");i.not(":ui-button").button(),s.button("refresh"),this.buttons=i.map(function(){return e(this).button("widget")[0]}).removeClass("ui-corner-all ui-corner-left ui-corner-right").filter(":first").addClass(t?"ui-corner-right":"ui-corner-left").end().filter(":last").addClass(t?"ui-corner-left":"ui-corner-right").end().end()},_destroy:function(){this.element.removeClass("ui-buttonset"),this.buttons.map(function(){return e(this).button("widget")[0]}).removeClass("ui-corner-left ui-corner-right").end().button("destroy")}}),e.ui.button,e.extend(e.ui,{datepicker:{version:"1.11.4"}});var v;e.extend(a.prototype,{markerClassName:"hasDatepicker",maxRows:4,_widgetDatepicker:function(){return this.dpDiv},setDefaults:function(e){return o(this._defaults,e||{}),this},_attachDatepicker:function(t,i){var s,a,n;s=t.nodeName.toLowerCase(),a="div"===s||"span"===s,t.id||(this.uuid+=1,t.id="dp"+this.uuid),n=this._newInst(e(t),a),n.settings=e.extend({},i||{}),"input"===s?this._connectDatepicker(t,n):a&&this._inlineDatepicker(t,n)},_newInst:function(t,i){var s=t[0].id.replace(/([^A-Za-z0-9_\-])/g,"\\\\$1");return{id:s,input:t,selectedDay:0,selectedMonth:0,selectedYear:0,drawMonth:0,drawYear:0,inline:i,dpDiv:i?n(e("<div class='"+this._inlineClass+" ui-datepicker ui-widget ui-widget-content ui-helper-clearfix ui-corner-all'></div>")):this.dpDiv}},_connectDatepicker:function(t,i){var s=e(t);i.append=e([]),i.trigger=e([]),s.hasClass(this.markerClassName)||(this._attachments(s,i),s.addClass(this.markerClassName).keydown(this._doKeyDown).keypress(this._doKeyPress).keyup(this._doKeyUp),this._autoSize(i),e.data(t,"datepicker",i),i.settings.disabled&&this._disableDatepicker(t))},_attachments:function(t,i){var s,a,n,r=this._get(i,"appendText"),o=this._get(i,"isRTL");i.append&&i.append.remove(),r&&(i.append=e("<span class='"+this._appendClass+"'>"+r+"</span>"),t[o?"before":"after"](i.append)),t.unbind("focus",this._showDatepicker),i.trigger&&i.trigger.remove(),s=this._get(i,"showOn"),("focus"===s||"both"===s)&&t.focus(this._showDatepicker),("button"===s||"both"===s)&&(a=this._get(i,"buttonText"),n=this._get(i,"buttonImage"),i.trigger=e(this._get(i,"buttonImageOnly")?e("<img/>").addClass(this._triggerClass).attr({src:n,alt:a,title:a}):e("<button type='button'></button>").addClass(this._triggerClass).html(n?e("<img/>").attr({src:n,alt:a,title:a}):a)),t[o?"before":"after"](i.trigger),i.trigger.click(function(){return e.datepicker._datepickerShowing&&e.datepicker._lastInput===t[0]?e.datepicker._hideDatepicker():e.datepicker._datepickerShowing&&e.datepicker._lastInput!==t[0]?(e.datepicker._hideDatepicker(),e.datepicker._showDatepicker(t[0])):e.datepicker._showDatepicker(t[0]),!1}))},_autoSize:function(e){if(this._get(e,"autoSize")&&!e.inline){var t,i,s,a,n=new Date(2009,11,20),r=this._get(e,"dateFormat");r.match(/[DM]/)&&(t=function(e){for(i=0,s=0,a=0;e.length>a;a++)e[a].length>i&&(i=e[a].length,s=a);return s},n.setMonth(t(this._get(e,r.match(/MM/)?"monthNames":"monthNamesShort"))),n.setDate(t(this._get(e,r.match(/DD/)?"dayNames":"dayNamesShort"))+20-n.getDay())),e.input.attr("size",this._formatDate(e,n).length)}},_inlineDatepicker:function(t,i){var s=e(t);s.hasClass(this.markerClassName)||(s.addClass(this.markerClassName).append(i.dpDiv),e.data(t,"datepicker",i),this._setDate(i,this._getDefaultDate(i),!0),this._updateDatepicker(i),this._updateAlternate(i),i.settings.disabled&&this._disableDatepicker(t),i.dpDiv.css("display","block"))},_dialogDatepicker:function(t,i,s,a,n){var r,h,l,u,d,c=this._dialogInst;return c||(this.uuid+=1,r="dp"+this.uuid,this._dialogInput=e("<input type='text' id='"+r+"' style='position: absolute; top: -100px; width: 0px;'/>"),this._dialogInput.keydown(this._doKeyDown),e("body").append(this._dialogInput),c=this._dialogInst=this._newInst(this._dialogInput,!1),c.settings={},e.data(this._dialogInput[0],"datepicker",c)),o(c.settings,a||{}),i=i&&i.constructor===Date?this._formatDate(c,i):i,this._dialogInput.val(i),this._pos=n?n.length?n:[n.pageX,n.pageY]:null,this._pos||(h=document.documentElement.clientWidth,l=document.documentElement.clientHeight,u=document.documentElement.scrollLeft||document.body.scrollLeft,d=document.documentElement.scrollTop||document.body.scrollTop,this._pos=[h/2-100+u,l/2-150+d]),this._dialogInput.css("left",this._pos[0]+20+"px").css("top",this._pos[1]+"px"),c.settings.onSelect=s,this._inDialog=!0,this.dpDiv.addClass(this._dialogClass),this._showDatepicker(this._dialogInput[0]),e.blockUI&&e.blockUI(this.dpDiv),e.data(this._dialogInput[0],"datepicker",c),this
},_destroyDatepicker:function(t){var i,s=e(t),a=e.data(t,"datepicker");s.hasClass(this.markerClassName)&&(i=t.nodeName.toLowerCase(),e.removeData(t,"datepicker"),"input"===i?(a.append.remove(),a.trigger.remove(),s.removeClass(this.markerClassName).unbind("focus",this._showDatepicker).unbind("keydown",this._doKeyDown).unbind("keypress",this._doKeyPress).unbind("keyup",this._doKeyUp)):("div"===i||"span"===i)&&s.removeClass(this.markerClassName).empty(),v===a&&(v=null))},_enableDatepicker:function(t){var i,s,a=e(t),n=e.data(t,"datepicker");a.hasClass(this.markerClassName)&&(i=t.nodeName.toLowerCase(),"input"===i?(t.disabled=!1,n.trigger.filter("button").each(function(){this.disabled=!1}).end().filter("img").css({opacity:"1.0",cursor:""})):("div"===i||"span"===i)&&(s=a.children("."+this._inlineClass),s.children().removeClass("ui-state-disabled"),s.find("select.ui-datepicker-month, select.ui-datepicker-year").prop("disabled",!1)),this._disabledInputs=e.map(this._disabledInputs,function(e){return e===t?null:e}))},_disableDatepicker:function(t){var i,s,a=e(t),n=e.data(t,"datepicker");a.hasClass(this.markerClassName)&&(i=t.nodeName.toLowerCase(),"input"===i?(t.disabled=!0,n.trigger.filter("button").each(function(){this.disabled=!0}).end().filter("img").css({opacity:"0.5",cursor:"default"})):("div"===i||"span"===i)&&(s=a.children("."+this._inlineClass),s.children().addClass("ui-state-disabled"),s.find("select.ui-datepicker-month, select.ui-datepicker-year").prop("disabled",!0)),this._disabledInputs=e.map(this._disabledInputs,function(e){return e===t?null:e}),this._disabledInputs[this._disabledInputs.length]=t)},_isDisabledDatepicker:function(e){if(!e)return!1;for(var t=0;this._disabledInputs.length>t;t++)if(this._disabledInputs[t]===e)return!0;return!1},_getInst:function(t){try{return e.data(t,"datepicker")}catch(i){throw"Missing instance data for this datepicker"}},_optionDatepicker:function(t,i,s){var a,n,r,h,l=this._getInst(t);return 2===arguments.length&&"string"==typeof i?"defaults"===i?e.extend({},e.datepicker._defaults):l?"all"===i?e.extend({},l.settings):this._get(l,i):null:(a=i||{},"string"==typeof i&&(a={},a[i]=s),l&&(this._curInst===l&&this._hideDatepicker(),n=this._getDateDatepicker(t,!0),r=this._getMinMaxDate(l,"min"),h=this._getMinMaxDate(l,"max"),o(l.settings,a),null!==r&&void 0!==a.dateFormat&&void 0===a.minDate&&(l.settings.minDate=this._formatDate(l,r)),null!==h&&void 0!==a.dateFormat&&void 0===a.maxDate&&(l.settings.maxDate=this._formatDate(l,h)),"disabled"in a&&(a.disabled?this._disableDatepicker(t):this._enableDatepicker(t)),this._attachments(e(t),l),this._autoSize(l),this._setDate(l,n),this._updateAlternate(l),this._updateDatepicker(l)),void 0)},_changeDatepicker:function(e,t,i){this._optionDatepicker(e,t,i)},_refreshDatepicker:function(e){var t=this._getInst(e);t&&this._updateDatepicker(t)},_setDateDatepicker:function(e,t){var i=this._getInst(e);i&&(this._setDate(i,t),this._updateDatepicker(i),this._updateAlternate(i))},_getDateDatepicker:function(e,t){var i=this._getInst(e);return i&&!i.inline&&this._setDateFromField(i,t),i?this._getDate(i):null},_doKeyDown:function(t){var i,s,a,n=e.datepicker._getInst(t.target),r=!0,o=n.dpDiv.is(".ui-datepicker-rtl");if(n._keyEvent=!0,e.datepicker._datepickerShowing)switch(t.keyCode){case 9:e.datepicker._hideDatepicker(),r=!1;break;case 13:return a=e("td."+e.datepicker._dayOverClass+":not(."+e.datepicker._currentClass+")",n.dpDiv),a[0]&&e.datepicker._selectDay(t.target,n.selectedMonth,n.selectedYear,a[0]),i=e.datepicker._get(n,"onSelect"),i?(s=e.datepicker._formatDate(n),i.apply(n.input?n.input[0]:null,[s,n])):e.datepicker._hideDatepicker(),!1;case 27:e.datepicker._hideDatepicker();break;case 33:e.datepicker._adjustDate(t.target,t.ctrlKey?-e.datepicker._get(n,"stepBigMonths"):-e.datepicker._get(n,"stepMonths"),"M");break;case 34:e.datepicker._adjustDate(t.target,t.ctrlKey?+e.datepicker._get(n,"stepBigMonths"):+e.datepicker._get(n,"stepMonths"),"M");break;case 35:(t.ctrlKey||t.metaKey)&&e.datepicker._clearDate(t.target),r=t.ctrlKey||t.metaKey;break;case 36:(t.ctrlKey||t.metaKey)&&e.datepicker._gotoToday(t.target),r=t.ctrlKey||t.metaKey;break;case 37:(t.ctrlKey||t.metaKey)&&e.datepicker._adjustDate(t.target,o?1:-1,"D"),r=t.ctrlKey||t.metaKey,t.originalEvent.altKey&&e.datepicker._adjustDate(t.target,t.ctrlKey?-e.datepicker._get(n,"stepBigMonths"):-e.datepicker._get(n,"stepMonths"),"M");break;case 38:(t.ctrlKey||t.metaKey)&&e.datepicker._adjustDate(t.target,-7,"D"),r=t.ctrlKey||t.metaKey;break;case 39:(t.ctrlKey||t.metaKey)&&e.datepicker._adjustDate(t.target,o?-1:1,"D"),r=t.ctrlKey||t.metaKey,t.originalEvent.altKey&&e.datepicker._adjustDate(t.target,t.ctrlKey?+e.datepicker._get(n,"stepBigMonths"):+e.datepicker._get(n,"stepMonths"),"M");break;case 40:(t.ctrlKey||t.metaKey)&&e.datepicker._adjustDate(t.target,7,"D"),r=t.ctrlKey||t.metaKey;break;default:r=!1}else 36===t.keyCode&&t.ctrlKey?e.datepicker._showDatepicker(this):r=!1;r&&(t.preventDefault(),t.stopPropagation())},_doKeyPress:function(t){var i,s,a=e.datepicker._getInst(t.target);return e.datepicker._get(a,"constrainInput")?(i=e.datepicker._possibleChars(e.datepicker._get(a,"dateFormat")),s=String.fromCharCode(null==t.charCode?t.keyCode:t.charCode),t.ctrlKey||t.metaKey||" ">s||!i||i.indexOf(s)>-1):void 0},_doKeyUp:function(t){var i,s=e.datepicker._getInst(t.target);if(s.input.val()!==s.lastVal)try{i=e.datepicker.parseDate(e.datepicker._get(s,"dateFormat"),s.input?s.input.val():null,e.datepicker._getFormatConfig(s)),i&&(e.datepicker._setDateFromField(s),e.datepicker._updateAlternate(s),e.datepicker._updateDatepicker(s))}catch(a){}return!0},_showDatepicker:function(t){if(t=t.target||t,"input"!==t.nodeName.toLowerCase()&&(t=e("input",t.parentNode)[0]),!e.datepicker._isDisabledDatepicker(t)&&e.datepicker._lastInput!==t){var i,a,n,r,h,l,u;i=e.datepicker._getInst(t),e.datepicker._curInst&&e.datepicker._curInst!==i&&(e.datepicker._curInst.dpDiv.stop(!0,!0),i&&e.datepicker._datepickerShowing&&e.datepicker._hideDatepicker(e.datepicker._curInst.input[0])),a=e.datepicker._get(i,"beforeShow"),n=a?a.apply(t,[t,i]):{},n!==!1&&(o(i.settings,n),i.lastVal=null,e.datepicker._lastInput=t,e.datepicker._setDateFromField(i),e.datepicker._inDialog&&(t.value=""),e.datepicker._pos||(e.datepicker._pos=e.datepicker._findPos(t),e.datepicker._pos[1]+=t.offsetHeight),r=!1,e(t).parents().each(function(){return r|="fixed"===e(this).css("position"),!r}),h={left:e.datepicker._pos[0],top:e.datepicker._pos[1]},e.datepicker._pos=null,i.dpDiv.empty(),i.dpDiv.css({position:"absolute",display:"block",top:"-1000px"}),e.datepicker._updateDatepicker(i),h=e.datepicker._checkOffset(i,h,r),i.dpDiv.css({position:e.datepicker._inDialog&&e.blockUI?"static":r?"fixed":"absolute",display:"none",left:h.left+"px",top:h.top+"px"}),i.inline||(l=e.datepicker._get(i,"showAnim"),u=e.datepicker._get(i,"duration"),i.dpDiv.css("z-index",s(e(t))+1),e.datepicker._datepickerShowing=!0,e.effects&&e.effects.effect[l]?i.dpDiv.show(l,e.datepicker._get(i,"showOptions"),u):i.dpDiv[l||"show"](l?u:null),e.datepicker._shouldFocusInput(i)&&i.input.focus(),e.datepicker._curInst=i))}},_updateDatepicker:function(t){this.maxRows=4,v=t,t.dpDiv.empty().append(this._generateHTML(t)),this._attachHandlers(t);var i,s=this._getNumberOfMonths(t),a=s[1],n=17,o=t.dpDiv.find("."+this._dayOverClass+" a");o.length>0&&r.apply(o.get(0)),t.dpDiv.removeClass("ui-datepicker-multi-2 ui-datepicker-multi-3 ui-datepicker-multi-4").width(""),a>1&&t.dpDiv.addClass("ui-datepicker-multi-"+a).css("width",n*a+"em"),t.dpDiv[(1!==s[0]||1!==s[1]?"add":"remove")+"Class"]("ui-datepicker-multi"),t.dpDiv[(this._get(t,"isRTL")?"add":"remove")+"Class"]("ui-datepicker-rtl"),t===e.datepicker._curInst&&e.datepicker._datepickerShowing&&e.datepicker._shouldFocusInput(t)&&t.input.focus(),t.yearshtml&&(i=t.yearshtml,setTimeout(function(){i===t.yearshtml&&t.yearshtml&&t.dpDiv.find("select.ui-datepicker-year:first").replaceWith(t.yearshtml),i=t.yearshtml=null},0))},_shouldFocusInput:function(e){return e.input&&e.input.is(":visible")&&!e.input.is(":disabled")&&!e.input.is(":focus")},_checkOffset:function(t,i,s){var a=t.dpDiv.outerWidth(),n=t.dpDiv.outerHeight(),r=t.input?t.input.outerWidth():0,o=t.input?t.input.outerHeight():0,h=document.documentElement.clientWidth+(s?0:e(document).scrollLeft()),l=document.documentElement.clientHeight+(s?0:e(document).scrollTop());return i.left-=this._get(t,"isRTL")?a-r:0,i.left-=s&&i.left===t.input.offset().left?e(document).scrollLeft():0,i.top-=s&&i.top===t.input.offset().top+o?e(document).scrollTop():0,i.left-=Math.min(i.left,i.left+a>h&&h>a?Math.abs(i.left+a-h):0),i.top-=Math.min(i.top,i.top+n>l&&l>n?Math.abs(n+o):0),i},_findPos:function(t){for(var i,s=this._getInst(t),a=this._get(s,"isRTL");t&&("hidden"===t.type||1!==t.nodeType||e.expr.filters.hidden(t));)t=t[a?"previousSibling":"nextSibling"];return i=e(t).offset(),[i.left,i.top]},_hideDatepicker:function(t){var i,s,a,n,r=this._curInst;!r||t&&r!==e.data(t,"datepicker")||this._datepickerShowing&&(i=this._get(r,"showAnim"),s=this._get(r,"duration"),a=function(){e.datepicker._tidyDialog(r)},e.effects&&(e.effects.effect[i]||e.effects[i])?r.dpDiv.hide(i,e.datepicker._get(r,"showOptions"),s,a):r.dpDiv["slideDown"===i?"slideUp":"fadeIn"===i?"fadeOut":"hide"](i?s:null,a),i||a(),this._datepickerShowing=!1,n=this._get(r,"onClose"),n&&n.apply(r.input?r.input[0]:null,[r.input?r.input.val():"",r]),this._lastInput=null,this._inDialog&&(this._dialogInput.css({position:"absolute",left:"0",top:"-100px"}),e.blockUI&&(e.unblockUI(),e("body").append(this.dpDiv))),this._inDialog=!1)},_tidyDialog:function(e){e.dpDiv.removeClass(this._dialogClass).unbind(".ui-datepicker-calendar")},_checkExternalClick:function(t){if(e.datepicker._curInst){var i=e(t.target),s=e.datepicker._getInst(i[0]);(i[0].id!==e.datepicker._mainDivId&&0===i.parents("#"+e.datepicker._mainDivId).length&&!i.hasClass(e.datepicker.markerClassName)&&!i.closest("."+e.datepicker._triggerClass).length&&e.datepicker._datepickerShowing&&(!e.datepicker._inDialog||!e.blockUI)||i.hasClass(e.datepicker.markerClassName)&&e.datepicker._curInst!==s)&&e.datepicker._hideDatepicker()}},_adjustDate:function(t,i,s){var a=e(t),n=this._getInst(a[0]);this._isDisabledDatepicker(a[0])||(this._adjustInstDate(n,i+("M"===s?this._get(n,"showCurrentAtPos"):0),s),this._updateDatepicker(n))},_gotoToday:function(t){var i,s=e(t),a=this._getInst(s[0]);this._get(a,"gotoCurrent")&&a.currentDay?(a.selectedDay=a.currentDay,a.drawMonth=a.selectedMonth=a.currentMonth,a.drawYear=a.selectedYear=a.currentYear):(i=new Date,a.selectedDay=i.getDate(),a.drawMonth=a.selectedMonth=i.getMonth(),a.drawYear=a.selectedYear=i.getFullYear()),this._notifyChange(a),this._adjustDate(s)},_selectMonthYear:function(t,i,s){var a=e(t),n=this._getInst(a[0]);n["selected"+("M"===s?"Month":"Year")]=n["draw"+("M"===s?"Month":"Year")]=parseInt(i.options[i.selectedIndex].value,10),this._notifyChange(n),this._adjustDate(a)},_selectDay:function(t,i,s,a){var n,r=e(t);e(a).hasClass(this._unselectableClass)||this._isDisabledDatepicker(r[0])||(n=this._getInst(r[0]),n.selectedDay=n.currentDay=e("a",a).html(),n.selectedMonth=n.currentMonth=i,n.selectedYear=n.currentYear=s,this._selectDate(t,this._formatDate(n,n.currentDay,n.currentMonth,n.currentYear)))},_clearDate:function(t){var i=e(t);this._selectDate(i,"")},_selectDate:function(t,i){var s,a=e(t),n=this._getInst(a[0]);i=null!=i?i:this._formatDate(n),n.input&&n.input.val(i),this._updateAlternate(n),s=this._get(n,"onSelect"),s?s.apply(n.input?n.input[0]:null,[i,n]):n.input&&n.input.trigger("change"),n.inline?this._updateDatepicker(n):(this._hideDatepicker(),this._lastInput=n.input[0],"object"!=typeof n.input[0]&&n.input.focus(),this._lastInput=null)},_updateAlternate:function(t){var i,s,a,n=this._get(t,"altField");n&&(i=this._get(t,"altFormat")||this._get(t,"dateFormat"),s=this._getDate(t),a=this.formatDate(i,s,this._getFormatConfig(t)),e(n).each(function(){e(this).val(a)}))},noWeekends:function(e){var t=e.getDay();return[t>0&&6>t,""]},iso8601Week:function(e){var t,i=new Date(e.getTime());return i.setDate(i.getDate()+4-(i.getDay()||7)),t=i.getTime(),i.setMonth(0),i.setDate(1),Math.floor(Math.round((t-i)/864e5)/7)+1},parseDate:function(t,i,s){if(null==t||null==i)throw"Invalid arguments";if(i="object"==typeof i?""+i:i+"",""===i)return null;var a,n,r,o,h=0,l=(s?s.shortYearCutoff:null)||this._defaults.shortYearCutoff,u="string"!=typeof l?l:(new Date).getFullYear()%100+parseInt(l,10),d=(s?s.dayNamesShort:null)||this._defaults.dayNamesShort,c=(s?s.dayNames:null)||this._defaults.dayNames,p=(s?s.monthNamesShort:null)||this._defaults.monthNamesShort,f=(s?s.monthNames:null)||this._defaults.monthNames,m=-1,g=-1,v=-1,y=-1,b=!1,_=function(e){var i=t.length>a+1&&t.charAt(a+1)===e;return i&&a++,i},x=function(e){var t=_(e),s="@"===e?14:"!"===e?20:"y"===e&&t?4:"o"===e?3:2,a="y"===e?s:1,n=RegExp("^\\d{"+a+","+s+"}"),r=i.substring(h).match(n);if(!r)throw"Missing number at position "+h;return h+=r[0].length,parseInt(r[0],10)},k=function(t,s,a){var n=-1,r=e.map(_(t)?a:s,function(e,t){return[[t,e]]}).sort(function(e,t){return-(e[1].length-t[1].length)});if(e.each(r,function(e,t){var s=t[1];return i.substr(h,s.length).toLowerCase()===s.toLowerCase()?(n=t[0],h+=s.length,!1):void 0}),-1!==n)return n+1;throw"Unknown name at position "+h},w=function(){if(i.charAt(h)!==t.charAt(a))throw"Unexpected literal at position "+h;h++};for(a=0;t.length>a;a++)if(b)"'"!==t.charAt(a)||_("'")?w():b=!1;else switch(t.charAt(a)){case"d":v=x("d");break;case"D":k("D",d,c);break;case"o":y=x("o");break;case"m":g=x("m");break;case"M":g=k("M",p,f);break;case"y":m=x("y");break;case"@":o=new Date(x("@")),m=o.getFullYear(),g=o.getMonth()+1,v=o.getDate();break;case"!":o=new Date((x("!")-this._ticksTo1970)/1e4),m=o.getFullYear(),g=o.getMonth()+1,v=o.getDate();break;case"'":_("'")?w():b=!0;break;default:w()}if(i.length>h&&(r=i.substr(h),!/^\s+/.test(r)))throw"Extra/unparsed characters found in date: "+r;if(-1===m?m=(new Date).getFullYear():100>m&&(m+=(new Date).getFullYear()-(new Date).getFullYear()%100+(u>=m?0:-100)),y>-1)for(g=1,v=y;;){if(n=this._getDaysInMonth(m,g-1),n>=v)break;g++,v-=n}if(o=this._daylightSavingAdjust(new Date(m,g-1,v)),o.getFullYear()!==m||o.getMonth()+1!==g||o.getDate()!==v)throw"Invalid date";return o},ATOM:"yy-mm-dd",COOKIE:"D, dd M yy",ISO_8601:"yy-mm-dd",RFC_822:"D, d M y",RFC_850:"DD, dd-M-y",RFC_1036:"D, d M y",RFC_1123:"D, d M yy",RFC_2822:"D, d M yy",RSS:"D, d M y",TICKS:"!",TIMESTAMP:"@",W3C:"yy-mm-dd",_ticksTo1970:1e7*60*60*24*(718685+Math.floor(492.5)-Math.floor(19.7)+Math.floor(4.925)),formatDate:function(e,t,i){if(!t)return"";var s,a=(i?i.dayNamesShort:null)||this._defaults.dayNamesShort,n=(i?i.dayNames:null)||this._defaults.dayNames,r=(i?i.monthNamesShort:null)||this._defaults.monthNamesShort,o=(i?i.monthNames:null)||this._defaults.monthNames,h=function(t){var i=e.length>s+1&&e.charAt(s+1)===t;return i&&s++,i},l=function(e,t,i){var s=""+t;if(h(e))for(;i>s.length;)s="0"+s;return s},u=function(e,t,i,s){return h(e)?s[t]:i[t]},d="",c=!1;if(t)for(s=0;e.length>s;s++)if(c)"'"!==e.charAt(s)||h("'")?d+=e.charAt(s):c=!1;else switch(e.charAt(s)){case"d":d+=l("d",t.getDate(),2);break;case"D":d+=u("D",t.getDay(),a,n);break;case"o":d+=l("o",Math.round((new Date(t.getFullYear(),t.getMonth(),t.getDate()).getTime()-new Date(t.getFullYear(),0,0).getTime())/864e5),3);break;case"m":d+=l("m",t.getMonth()+1,2);break;case"M":d+=u("M",t.getMonth(),r,o);break;case"y":d+=h("y")?t.getFullYear():(10>t.getYear()%100?"0":"")+t.getYear()%100;break;case"@":d+=t.getTime();break;case"!":d+=1e4*t.getTime()+this._ticksTo1970;break;case"'":h("'")?d+="'":c=!0;break;default:d+=e.charAt(s)}return d},_possibleChars:function(e){var t,i="",s=!1,a=function(i){var s=e.length>t+1&&e.charAt(t+1)===i;return s&&t++,s};for(t=0;e.length>t;t++)if(s)"'"!==e.charAt(t)||a("'")?i+=e.charAt(t):s=!1;else switch(e.charAt(t)){case"d":case"m":case"y":case"@":i+="0123456789";break;case"D":case"M":return null;case"'":a("'")?i+="'":s=!0;break;default:i+=e.charAt(t)}return i},_get:function(e,t){return void 0!==e.settings[t]?e.settings[t]:this._defaults[t]},_setDateFromField:function(e,t){if(e.input.val()!==e.lastVal){var i=this._get(e,"dateFormat"),s=e.lastVal=e.input?e.input.val():null,a=this._getDefaultDate(e),n=a,r=this._getFormatConfig(e);try{n=this.parseDate(i,s,r)||a}catch(o){s=t?"":s}e.selectedDay=n.getDate(),e.drawMonth=e.selectedMonth=n.getMonth(),e.drawYear=e.selectedYear=n.getFullYear(),e.currentDay=s?n.getDate():0,e.currentMonth=s?n.getMonth():0,e.currentYear=s?n.getFullYear():0,this._adjustInstDate(e)}},_getDefaultDate:function(e){return this._restrictMinMax(e,this._determineDate(e,this._get(e,"defaultDate"),new Date))},_determineDate:function(t,i,s){var a=function(e){var t=new Date;return t.setDate(t.getDate()+e),t},n=function(i){try{return e.datepicker.parseDate(e.datepicker._get(t,"dateFormat"),i,e.datepicker._getFormatConfig(t))}catch(s){}for(var a=(i.toLowerCase().match(/^c/)?e.datepicker._getDate(t):null)||new Date,n=a.getFullYear(),r=a.getMonth(),o=a.getDate(),h=/([+\-]?[0-9]+)\s*(d|D|w|W|m|M|y|Y)?/g,l=h.exec(i);l;){switch(l[2]||"d"){case"d":case"D":o+=parseInt(l[1],10);break;case"w":case"W":o+=7*parseInt(l[1],10);break;case"m":case"M":r+=parseInt(l[1],10),o=Math.min(o,e.datepicker._getDaysInMonth(n,r));break;case"y":case"Y":n+=parseInt(l[1],10),o=Math.min(o,e.datepicker._getDaysInMonth(n,r))}l=h.exec(i)}return new Date(n,r,o)},r=null==i||""===i?s:"string"==typeof i?n(i):"number"==typeof i?isNaN(i)?s:a(i):new Date(i.getTime());return r=r&&"Invalid Date"==""+r?s:r,r&&(r.setHours(0),r.setMinutes(0),r.setSeconds(0),r.setMilliseconds(0)),this._daylightSavingAdjust(r)},_daylightSavingAdjust:function(e){return e?(e.setHours(e.getHours()>12?e.getHours()+2:0),e):null},_setDate:function(e,t,i){var s=!t,a=e.selectedMonth,n=e.selectedYear,r=this._restrictMinMax(e,this._determineDate(e,t,new Date));e.selectedDay=e.currentDay=r.getDate(),e.drawMonth=e.selectedMonth=e.currentMonth=r.getMonth(),e.drawYear=e.selectedYear=e.currentYear=r.getFullYear(),a===e.selectedMonth&&n===e.selectedYear||i||this._notifyChange(e),this._adjustInstDate(e),e.input&&e.input.val(s?"":this._formatDate(e))},_getDate:function(e){var t=!e.currentYear||e.input&&""===e.input.val()?null:this._daylightSavingAdjust(new Date(e.currentYear,e.currentMonth,e.currentDay));return t},_attachHandlers:function(t){var i=this._get(t,"stepMonths"),s="#"+t.id.replace(/\\\\/g,"\\");t.dpDiv.find("[data-handler]").map(function(){var t={prev:function(){e.datepicker._adjustDate(s,-i,"M")},next:function(){e.datepicker._adjustDate(s,+i,"M")},hide:function(){e.datepicker._hideDatepicker()},today:function(){e.datepicker._gotoToday(s)},selectDay:function(){return e.datepicker._selectDay(s,+this.getAttribute("data-month"),+this.getAttribute("data-year"),this),!1},selectMonth:function(){return e.datepicker._selectMonthYear(s,this,"M"),!1},selectYear:function(){return e.datepicker._selectMonthYear(s,this,"Y"),!1}};e(this).bind(this.getAttribute("data-event"),t[this.getAttribute("data-handler")])})},_generateHTML:function(e){var t,i,s,a,n,r,o,h,l,u,d,c,p,f,m,g,v,y,b,_,x,k,w,T,D,S,M,N,C,A,I,P,F,H,z,j,E,O,L,W=new Date,R=this._daylightSavingAdjust(new Date(W.getFullYear(),W.getMonth(),W.getDate())),Y=this._get(e,"isRTL"),J=this._get(e,"showButtonPanel"),B=this._get(e,"hideIfNoPrevNext"),K=this._get(e,"navigationAsDateFormat"),V=this._getNumberOfMonths(e),q=this._get(e,"showCurrentAtPos"),U=this._get(e,"stepMonths"),G=1!==V[0]||1!==V[1],Q=this._daylightSavingAdjust(e.currentDay?new Date(e.currentYear,e.currentMonth,e.currentDay):new Date(9999,9,9)),X=this._getMinMaxDate(e,"min"),$=this._getMinMaxDate(e,"max"),Z=e.drawMonth-q,et=e.drawYear;if(0>Z&&(Z+=12,et--),$)for(t=this._daylightSavingAdjust(new Date($.getFullYear(),$.getMonth()-V[0]*V[1]+1,$.getDate())),t=X&&X>t?X:t;this._daylightSavingAdjust(new Date(et,Z,1))>t;)Z--,0>Z&&(Z=11,et--);for(e.drawMonth=Z,e.drawYear=et,i=this._get(e,"prevText"),i=K?this.formatDate(i,this._daylightSavingAdjust(new Date(et,Z-U,1)),this._getFormatConfig(e)):i,s=this._canAdjustMonth(e,-1,et,Z)?"<a class='ui-datepicker-prev ui-corner-all' data-handler='prev' data-event='click' title='"+i+"'><span class='ui-icon ui-icon-circle-triangle-"+(Y?"e":"w")+"'>"+i+"</span></a>":B?"":"<a class='ui-datepicker-prev ui-corner-all ui-state-disabled' title='"+i+"'><span class='ui-icon ui-icon-circle-triangle-"+(Y?"e":"w")+"'>"+i+"</span></a>",a=this._get(e,"nextText"),a=K?this.formatDate(a,this._daylightSavingAdjust(new Date(et,Z+U,1)),this._getFormatConfig(e)):a,n=this._canAdjustMonth(e,1,et,Z)?"<a class='ui-datepicker-next ui-corner-all' data-handler='next' data-event='click' title='"+a+"'><span class='ui-icon ui-icon-circle-triangle-"+(Y?"w":"e")+"'>"+a+"</span></a>":B?"":"<a class='ui-datepicker-next ui-corner-all ui-state-disabled' title='"+a+"'><span class='ui-icon ui-icon-circle-triangle-"+(Y?"w":"e")+"'>"+a+"</span></a>",r=this._get(e,"currentText"),o=this._get(e,"gotoCurrent")&&e.currentDay?Q:R,r=K?this.formatDate(r,o,this._getFormatConfig(e)):r,h=e.inline?"":"<button type='button' class='ui-datepicker-close ui-state-default ui-priority-primary ui-corner-all' data-handler='hide' data-event='click'>"+this._get(e,"closeText")+"</button>",l=J?"<div class='ui-datepicker-buttonpane ui-widget-content'>"+(Y?h:"")+(this._isInRange(e,o)?"<button type='button' class='ui-datepicker-current ui-state-default ui-priority-secondary ui-corner-all' data-handler='today' data-event='click'>"+r+"</button>":"")+(Y?"":h)+"</div>":"",u=parseInt(this._get(e,"firstDay"),10),u=isNaN(u)?0:u,d=this._get(e,"showWeek"),c=this._get(e,"dayNames"),p=this._get(e,"dayNamesMin"),f=this._get(e,"monthNames"),m=this._get(e,"monthNamesShort"),g=this._get(e,"beforeShowDay"),v=this._get(e,"showOtherMonths"),y=this._get(e,"selectOtherMonths"),b=this._getDefaultDate(e),_="",k=0;V[0]>k;k++){for(w="",this.maxRows=4,T=0;V[1]>T;T++){if(D=this._daylightSavingAdjust(new Date(et,Z,e.selectedDay)),S=" ui-corner-all",M="",G){if(M+="<div class='ui-datepicker-group",V[1]>1)switch(T){case 0:M+=" ui-datepicker-group-first",S=" ui-corner-"+(Y?"right":"left");break;case V[1]-1:M+=" ui-datepicker-group-last",S=" ui-corner-"+(Y?"left":"right");break;default:M+=" ui-datepicker-group-middle",S=""}M+="'>"}for(M+="<div class='ui-datepicker-header ui-widget-header ui-helper-clearfix"+S+"'>"+(/all|left/.test(S)&&0===k?Y?n:s:"")+(/all|right/.test(S)&&0===k?Y?s:n:"")+this._generateMonthYearHeader(e,Z,et,X,$,k>0||T>0,f,m)+"</div><table class='ui-datepicker-calendar'><thead>"+"<tr>",N=d?"<th class='ui-datepicker-week-col'>"+this._get(e,"weekHeader")+"</th>":"",x=0;7>x;x++)C=(x+u)%7,N+="<th scope='col'"+((x+u+6)%7>=5?" class='ui-datepicker-week-end'":"")+">"+"<span title='"+c[C]+"'>"+p[C]+"</span></th>";for(M+=N+"</tr></thead><tbody>",A=this._getDaysInMonth(et,Z),et===e.selectedYear&&Z===e.selectedMonth&&(e.selectedDay=Math.min(e.selectedDay,A)),I=(this._getFirstDayOfMonth(et,Z)-u+7)%7,P=Math.ceil((I+A)/7),F=G?this.maxRows>P?this.maxRows:P:P,this.maxRows=F,H=this._daylightSavingAdjust(new Date(et,Z,1-I)),z=0;F>z;z++){for(M+="<tr>",j=d?"<td class='ui-datepicker-week-col'>"+this._get(e,"calculateWeek")(H)+"</td>":"",x=0;7>x;x++)E=g?g.apply(e.input?e.input[0]:null,[H]):[!0,""],O=H.getMonth()!==Z,L=O&&!y||!E[0]||X&&X>H||$&&H>$,j+="<td class='"+((x+u+6)%7>=5?" ui-datepicker-week-end":"")+(O?" ui-datepicker-other-month":"")+(H.getTime()===D.getTime()&&Z===e.selectedMonth&&e._keyEvent||b.getTime()===H.getTime()&&b.getTime()===D.getTime()?" "+this._dayOverClass:"")+(L?" "+this._unselectableClass+" ui-state-disabled":"")+(O&&!v?"":" "+E[1]+(H.getTime()===Q.getTime()?" "+this._currentClass:"")+(H.getTime()===R.getTime()?" ui-datepicker-today":""))+"'"+(O&&!v||!E[2]?"":" title='"+E[2].replace(/'/g,"&#39;")+"'")+(L?"":" data-handler='selectDay' data-event='click' data-month='"+H.getMonth()+"' data-year='"+H.getFullYear()+"'")+">"+(O&&!v?"&#xa0;":L?"<span class='ui-state-default'>"+H.getDate()+"</span>":"<a class='ui-state-default"+(H.getTime()===R.getTime()?" ui-state-highlight":"")+(H.getTime()===Q.getTime()?" ui-state-active":"")+(O?" ui-priority-secondary":"")+"' href='#'>"+H.getDate()+"</a>")+"</td>",H.setDate(H.getDate()+1),H=this._daylightSavingAdjust(H);M+=j+"</tr>"}Z++,Z>11&&(Z=0,et++),M+="</tbody></table>"+(G?"</div>"+(V[0]>0&&T===V[1]-1?"<div class='ui-datepicker-row-break'></div>":""):""),w+=M}_+=w}return _+=l,e._keyEvent=!1,_},_generateMonthYearHeader:function(e,t,i,s,a,n,r,o){var h,l,u,d,c,p,f,m,g=this._get(e,"changeMonth"),v=this._get(e,"changeYear"),y=this._get(e,"showMonthAfterYear"),b="<div class='ui-datepicker-title'>",_="";if(n||!g)_+="<span class='ui-datepicker-month'>"+r[t]+"</span>";else{for(h=s&&s.getFullYear()===i,l=a&&a.getFullYear()===i,_+="<select class='ui-datepicker-month' data-handler='selectMonth' data-event='change'>",u=0;12>u;u++)(!h||u>=s.getMonth())&&(!l||a.getMonth()>=u)&&(_+="<option value='"+u+"'"+(u===t?" selected='selected'":"")+">"+o[u]+"</option>");_+="</select>"}if(y||(b+=_+(!n&&g&&v?"":"&#xa0;")),!e.yearshtml)if(e.yearshtml="",n||!v)b+="<span class='ui-datepicker-year'>"+i+"</span>";else{for(d=this._get(e,"yearRange").split(":"),c=(new Date).getFullYear(),p=function(e){var t=e.match(/c[+\-].*/)?i+parseInt(e.substring(1),10):e.match(/[+\-].*/)?c+parseInt(e,10):parseInt(e,10);return isNaN(t)?c:t},f=p(d[0]),m=Math.max(f,p(d[1]||"")),f=s?Math.max(f,s.getFullYear()):f,m=a?Math.min(m,a.getFullYear()):m,e.yearshtml+="<select class='ui-datepicker-year' data-handler='selectYear' data-event='change'>";m>=f;f++)e.yearshtml+="<option value='"+f+"'"+(f===i?" selected='selected'":"")+">"+f+"</option>";e.yearshtml+="</select>",b+=e.yearshtml,e.yearshtml=null}return b+=this._get(e,"yearSuffix"),y&&(b+=(!n&&g&&v?"":"&#xa0;")+_),b+="</div>"},_adjustInstDate:function(e,t,i){var s=e.drawYear+("Y"===i?t:0),a=e.drawMonth+("M"===i?t:0),n=Math.min(e.selectedDay,this._getDaysInMonth(s,a))+("D"===i?t:0),r=this._restrictMinMax(e,this._daylightSavingAdjust(new Date(s,a,n)));e.selectedDay=r.getDate(),e.drawMonth=e.selectedMonth=r.getMonth(),e.drawYear=e.selectedYear=r.getFullYear(),("M"===i||"Y"===i)&&this._notifyChange(e)},_restrictMinMax:function(e,t){var i=this._getMinMaxDate(e,"min"),s=this._getMinMaxDate(e,"max"),a=i&&i>t?i:t;return s&&a>s?s:a},_notifyChange:function(e){var t=this._get(e,"onChangeMonthYear");t&&t.apply(e.input?e.input[0]:null,[e.selectedYear,e.selectedMonth+1,e])},_getNumberOfMonths:function(e){var t=this._get(e,"numberOfMonths");return null==t?[1,1]:"number"==typeof t?[1,t]:t},_getMinMaxDate:function(e,t){return this._determineDate(e,this._get(e,t+"Date"),null)},_getDaysInMonth:function(e,t){return 32-this._daylightSavingAdjust(new Date(e,t,32)).getDate()},_getFirstDayOfMonth:function(e,t){return new Date(e,t,1).getDay()},_canAdjustMonth:function(e,t,i,s){var a=this._getNumberOfMonths(e),n=this._daylightSavingAdjust(new Date(i,s+(0>t?t:a[0]*a[1]),1));return 0>t&&n.setDate(this._getDaysInMonth(n.getFullYear(),n.getMonth())),this._isInRange(e,n)},_isInRange:function(e,t){var i,s,a=this._getMinMaxDate(e,"min"),n=this._getMinMaxDate(e,"max"),r=null,o=null,h=this._get(e,"yearRange");return h&&(i=h.split(":"),s=(new Date).getFullYear(),r=parseInt(i[0],10),o=parseInt(i[1],10),i[0].match(/[+\-].*/)&&(r+=s),i[1].match(/[+\-].*/)&&(o+=s)),(!a||t.getTime()>=a.getTime())&&(!n||t.getTime()<=n.getTime())&&(!r||t.getFullYear()>=r)&&(!o||o>=t.getFullYear())},_getFormatConfig:function(e){var t=this._get(e,"shortYearCutoff");return t="string"!=typeof t?t:(new Date).getFullYear()%100+parseInt(t,10),{shortYearCutoff:t,dayNamesShort:this._get(e,"dayNamesShort"),dayNames:this._get(e,"dayNames"),monthNamesShort:this._get(e,"monthNamesShort"),monthNames:this._get(e,"monthNames")}},_formatDate:function(e,t,i,s){t||(e.currentDay=e.selectedDay,e.currentMonth=e.selectedMonth,e.currentYear=e.selectedYear);var a=t?"object"==typeof t?t:this._daylightSavingAdjust(new Date(s,i,t)):this._daylightSavingAdjust(new Date(e.currentYear,e.currentMonth,e.currentDay));return this.formatDate(this._get(e,"dateFormat"),a,this._getFormatConfig(e))}}),e.fn.datepicker=function(t){if(!this.length)return this;e.datepicker.initialized||(e(document).mousedown(e.datepicker._checkExternalClick),e.datepicker.initialized=!0),0===e("#"+e.datepicker._mainDivId).length&&e("body").append(e.datepicker.dpDiv);var i=Array.prototype.slice.call(arguments,1);return"string"!=typeof t||"isDisabled"!==t&&"getDate"!==t&&"widget"!==t?"option"===t&&2===arguments.length&&"string"==typeof arguments[1]?e.datepicker["_"+t+"Datepicker"].apply(e.datepicker,[this[0]].concat(i)):this.each(function(){"string"==typeof t?e.datepicker["_"+t+"Datepicker"].apply(e.datepicker,[this].concat(i)):e.datepicker._attachDatepicker(this,t)}):e.datepicker["_"+t+"Datepicker"].apply(e.datepicker,[this[0]].concat(i))},e.datepicker=new a,e.datepicker.initialized=!1,e.datepicker.uuid=(new Date).getTime(),e.datepicker.version="1.11.4",e.datepicker,e.widget("ui.dialog",{version:"1.11.4",options:{appendTo:"body",autoOpen:!0,buttons:[],closeOnEscape:!0,closeText:"Close",dialogClass:"",draggable:!0,hide:null,height:"auto",maxHeight:null,maxWidth:null,minHeight:150,minWidth:150,modal:!1,position:{my:"center",at:"center",of:window,collision:"fit",using:function(t){var i=e(this).css(t).offset().top;0>i&&e(this).css("top",t.top-i)}},resizable:!0,show:null,title:null,width:300,beforeClose:null,close:null,drag:null,dragStart:null,dragStop:null,focus:null,open:null,resize:null,resizeStart:null,resizeStop:null},sizeRelatedOptions:{buttons:!0,height:!0,maxHeight:!0,maxWidth:!0,minHeight:!0,minWidth:!0,width:!0},resizableRelatedOptions:{maxHeight:!0,maxWidth:!0,minHeight:!0,minWidth:!0},_create:function(){this.originalCss={display:this.element[0].style.display,width:this.element[0].style.width,minHeight:this.element[0].style.minHeight,maxHeight:this.element[0].style.maxHeight,height:this.element[0].style.height},this.originalPosition={parent:this.element.parent(),index:this.element.parent().children().index(this.element)},this.originalTitle=this.element.attr("title"),this.options.title=this.options.title||this.originalTitle,this._createWrapper(),this.element.show().removeAttr("title").addClass("ui-dialog-content ui-widget-content").appendTo(this.uiDialog),this._createTitlebar(),this._createButtonPane(),this.options.draggable&&e.fn.draggable&&this._makeDraggable(),this.options.resizable&&e.fn.resizable&&this._makeResizable(),this._isOpen=!1,this._trackFocus()},_init:function(){this.options.autoOpen&&this.open()},_appendTo:function(){var t=this.options.appendTo;return t&&(t.jquery||t.nodeType)?e(t):this.document.find(t||"body").eq(0)},_destroy:function(){var e,t=this.originalPosition;this._untrackInstance(),this._destroyOverlay(),this.element.removeUniqueId().removeClass("ui-dialog-content ui-widget-content").css(this.originalCss).detach(),this.uiDialog.stop(!0,!0).remove(),this.originalTitle&&this.element.attr("title",this.originalTitle),e=t.parent.children().eq(t.index),e.length&&e[0]!==this.element[0]?e.before(this.element):t.parent.append(this.element)},widget:function(){return this.uiDialog},disable:e.noop,enable:e.noop,close:function(t){var i,s=this;if(this._isOpen&&this._trigger("beforeClose",t)!==!1){if(this._isOpen=!1,this._focusedElement=null,this._destroyOverlay(),this._untrackInstance(),!this.opener.filter(":focusable").focus().length)try{i=this.document[0].activeElement,i&&"body"!==i.nodeName.toLowerCase()&&e(i).blur()}catch(a){}this._hide(this.uiDialog,this.options.hide,function(){s._trigger("close",t)})}},isOpen:function(){return this._isOpen},moveToTop:function(){this._moveToTop()},_moveToTop:function(t,i){var s=!1,a=this.uiDialog.siblings(".ui-front:visible").map(function(){return+e(this).css("z-index")}).get(),n=Math.max.apply(null,a);return n>=+this.uiDialog.css("z-index")&&(this.uiDialog.css("z-index",n+1),s=!0),s&&!i&&this._trigger("focus",t),s},open:function(){var t=this;
return this._isOpen?(this._moveToTop()&&this._focusTabbable(),void 0):(this._isOpen=!0,this.opener=e(this.document[0].activeElement),this._size(),this._position(),this._createOverlay(),this._moveToTop(null,!0),this.overlay&&this.overlay.css("z-index",this.uiDialog.css("z-index")-1),this._show(this.uiDialog,this.options.show,function(){t._focusTabbable(),t._trigger("focus")}),this._makeFocusTarget(),this._trigger("open"),void 0)},_focusTabbable:function(){var e=this._focusedElement;e||(e=this.element.find("[autofocus]")),e.length||(e=this.element.find(":tabbable")),e.length||(e=this.uiDialogButtonPane.find(":tabbable")),e.length||(e=this.uiDialogTitlebarClose.filter(":tabbable")),e.length||(e=this.uiDialog),e.eq(0).focus()},_keepFocus:function(t){function i(){var t=this.document[0].activeElement,i=this.uiDialog[0]===t||e.contains(this.uiDialog[0],t);i||this._focusTabbable()}t.preventDefault(),i.call(this),this._delay(i)},_createWrapper:function(){this.uiDialog=e("<div>").addClass("ui-dialog ui-widget ui-widget-content ui-corner-all ui-front "+this.options.dialogClass).hide().attr({tabIndex:-1,role:"dialog"}).appendTo(this._appendTo()),this._on(this.uiDialog,{keydown:function(t){if(this.options.closeOnEscape&&!t.isDefaultPrevented()&&t.keyCode&&t.keyCode===e.ui.keyCode.ESCAPE)return t.preventDefault(),this.close(t),void 0;if(t.keyCode===e.ui.keyCode.TAB&&!t.isDefaultPrevented()){var i=this.uiDialog.find(":tabbable"),s=i.filter(":first"),a=i.filter(":last");t.target!==a[0]&&t.target!==this.uiDialog[0]||t.shiftKey?t.target!==s[0]&&t.target!==this.uiDialog[0]||!t.shiftKey||(this._delay(function(){a.focus()}),t.preventDefault()):(this._delay(function(){s.focus()}),t.preventDefault())}},mousedown:function(e){this._moveToTop(e)&&this._focusTabbable()}}),this.element.find("[aria-describedby]").length||this.uiDialog.attr({"aria-describedby":this.element.uniqueId().attr("id")})},_createTitlebar:function(){var t;this.uiDialogTitlebar=e("<div>").addClass("ui-dialog-titlebar ui-widget-header ui-corner-all ui-helper-clearfix").prependTo(this.uiDialog),this._on(this.uiDialogTitlebar,{mousedown:function(t){e(t.target).closest(".ui-dialog-titlebar-close")||this.uiDialog.focus()}}),this.uiDialogTitlebarClose=e("<button type='button'></button>").button({label:this.options.closeText,icons:{primary:"ui-icon-closethick"},text:!1}).addClass("ui-dialog-titlebar-close").appendTo(this.uiDialogTitlebar),this._on(this.uiDialogTitlebarClose,{click:function(e){e.preventDefault(),this.close(e)}}),t=e("<span>").uniqueId().addClass("ui-dialog-title").prependTo(this.uiDialogTitlebar),this._title(t),this.uiDialog.attr({"aria-labelledby":t.attr("id")})},_title:function(e){this.options.title||e.html("&#160;"),e.text(this.options.title)},_createButtonPane:function(){this.uiDialogButtonPane=e("<div>").addClass("ui-dialog-buttonpane ui-widget-content ui-helper-clearfix"),this.uiButtonSet=e("<div>").addClass("ui-dialog-buttonset").appendTo(this.uiDialogButtonPane),this._createButtons()},_createButtons:function(){var t=this,i=this.options.buttons;return this.uiDialogButtonPane.remove(),this.uiButtonSet.empty(),e.isEmptyObject(i)||e.isArray(i)&&!i.length?(this.uiDialog.removeClass("ui-dialog-buttons"),void 0):(e.each(i,function(i,s){var a,n;s=e.isFunction(s)?{click:s,text:i}:s,s=e.extend({type:"button"},s),a=s.click,s.click=function(){a.apply(t.element[0],arguments)},n={icons:s.icons,text:s.showText},delete s.icons,delete s.showText,e("<button></button>",s).button(n).appendTo(t.uiButtonSet)}),this.uiDialog.addClass("ui-dialog-buttons"),this.uiDialogButtonPane.appendTo(this.uiDialog),void 0)},_makeDraggable:function(){function t(e){return{position:e.position,offset:e.offset}}var i=this,s=this.options;this.uiDialog.draggable({cancel:".ui-dialog-content, .ui-dialog-titlebar-close",handle:".ui-dialog-titlebar",containment:"document",start:function(s,a){e(this).addClass("ui-dialog-dragging"),i._blockFrames(),i._trigger("dragStart",s,t(a))},drag:function(e,s){i._trigger("drag",e,t(s))},stop:function(a,n){var r=n.offset.left-i.document.scrollLeft(),o=n.offset.top-i.document.scrollTop();s.position={my:"left top",at:"left"+(r>=0?"+":"")+r+" "+"top"+(o>=0?"+":"")+o,of:i.window},e(this).removeClass("ui-dialog-dragging"),i._unblockFrames(),i._trigger("dragStop",a,t(n))}})},_makeResizable:function(){function t(e){return{originalPosition:e.originalPosition,originalSize:e.originalSize,position:e.position,size:e.size}}var i=this,s=this.options,a=s.resizable,n=this.uiDialog.css("position"),r="string"==typeof a?a:"n,e,s,w,se,sw,ne,nw";this.uiDialog.resizable({cancel:".ui-dialog-content",containment:"document",alsoResize:this.element,maxWidth:s.maxWidth,maxHeight:s.maxHeight,minWidth:s.minWidth,minHeight:this._minHeight(),handles:r,start:function(s,a){e(this).addClass("ui-dialog-resizing"),i._blockFrames(),i._trigger("resizeStart",s,t(a))},resize:function(e,s){i._trigger("resize",e,t(s))},stop:function(a,n){var r=i.uiDialog.offset(),o=r.left-i.document.scrollLeft(),h=r.top-i.document.scrollTop();s.height=i.uiDialog.height(),s.width=i.uiDialog.width(),s.position={my:"left top",at:"left"+(o>=0?"+":"")+o+" "+"top"+(h>=0?"+":"")+h,of:i.window},e(this).removeClass("ui-dialog-resizing"),i._unblockFrames(),i._trigger("resizeStop",a,t(n))}}).css("position",n)},_trackFocus:function(){this._on(this.widget(),{focusin:function(t){this._makeFocusTarget(),this._focusedElement=e(t.target)}})},_makeFocusTarget:function(){this._untrackInstance(),this._trackingInstances().unshift(this)},_untrackInstance:function(){var t=this._trackingInstances(),i=e.inArray(this,t);-1!==i&&t.splice(i,1)},_trackingInstances:function(){var e=this.document.data("ui-dialog-instances");return e||(e=[],this.document.data("ui-dialog-instances",e)),e},_minHeight:function(){var e=this.options;return"auto"===e.height?e.minHeight:Math.min(e.minHeight,e.height)},_position:function(){var e=this.uiDialog.is(":visible");e||this.uiDialog.show(),this.uiDialog.position(this.options.position),e||this.uiDialog.hide()},_setOptions:function(t){var i=this,s=!1,a={};e.each(t,function(e,t){i._setOption(e,t),e in i.sizeRelatedOptions&&(s=!0),e in i.resizableRelatedOptions&&(a[e]=t)}),s&&(this._size(),this._position()),this.uiDialog.is(":data(ui-resizable)")&&this.uiDialog.resizable("option",a)},_setOption:function(e,t){var i,s,a=this.uiDialog;"dialogClass"===e&&a.removeClass(this.options.dialogClass).addClass(t),"disabled"!==e&&(this._super(e,t),"appendTo"===e&&this.uiDialog.appendTo(this._appendTo()),"buttons"===e&&this._createButtons(),"closeText"===e&&this.uiDialogTitlebarClose.button({label:""+t}),"draggable"===e&&(i=a.is(":data(ui-draggable)"),i&&!t&&a.draggable("destroy"),!i&&t&&this._makeDraggable()),"position"===e&&this._position(),"resizable"===e&&(s=a.is(":data(ui-resizable)"),s&&!t&&a.resizable("destroy"),s&&"string"==typeof t&&a.resizable("option","handles",t),s||t===!1||this._makeResizable()),"title"===e&&this._title(this.uiDialogTitlebar.find(".ui-dialog-title")))},_size:function(){var e,t,i,s=this.options;this.element.show().css({width:"auto",minHeight:0,maxHeight:"none",height:0}),s.minWidth>s.width&&(s.width=s.minWidth),e=this.uiDialog.css({height:"auto",width:s.width}).outerHeight(),t=Math.max(0,s.minHeight-e),i="number"==typeof s.maxHeight?Math.max(0,s.maxHeight-e):"none","auto"===s.height?this.element.css({minHeight:t,maxHeight:i,height:"auto"}):this.element.height(Math.max(0,s.height-e)),this.uiDialog.is(":data(ui-resizable)")&&this.uiDialog.resizable("option","minHeight",this._minHeight())},_blockFrames:function(){this.iframeBlocks=this.document.find("iframe").map(function(){var t=e(this);return e("<div>").css({position:"absolute",width:t.outerWidth(),height:t.outerHeight()}).appendTo(t.parent()).offset(t.offset())[0]})},_unblockFrames:function(){this.iframeBlocks&&(this.iframeBlocks.remove(),delete this.iframeBlocks)},_allowInteraction:function(t){return e(t.target).closest(".ui-dialog").length?!0:!!e(t.target).closest(".ui-datepicker").length},_createOverlay:function(){if(this.options.modal){var t=!0;this._delay(function(){t=!1}),this.document.data("ui-dialog-overlays")||this._on(this.document,{focusin:function(e){t||this._allowInteraction(e)||(e.preventDefault(),this._trackingInstances()[0]._focusTabbable())}}),this.overlay=e("<div>").addClass("ui-widget-overlay ui-front").appendTo(this._appendTo()),this._on(this.overlay,{mousedown:"_keepFocus"}),this.document.data("ui-dialog-overlays",(this.document.data("ui-dialog-overlays")||0)+1)}},_destroyOverlay:function(){if(this.options.modal&&this.overlay){var e=this.document.data("ui-dialog-overlays")-1;e?this.document.data("ui-dialog-overlays",e):this.document.unbind("focusin").removeData("ui-dialog-overlays"),this.overlay.remove(),this.overlay=null}}}),e.widget("ui.progressbar",{version:"1.11.4",options:{max:100,value:0,change:null,complete:null},min:0,_create:function(){this.oldValue=this.options.value=this._constrainedValue(),this.element.addClass("ui-progressbar ui-widget ui-widget-content ui-corner-all").attr({role:"progressbar","aria-valuemin":this.min}),this.valueDiv=e("<div class='ui-progressbar-value ui-widget-header ui-corner-left'></div>").appendTo(this.element),this._refreshValue()},_destroy:function(){this.element.removeClass("ui-progressbar ui-widget ui-widget-content ui-corner-all").removeAttr("role").removeAttr("aria-valuemin").removeAttr("aria-valuemax").removeAttr("aria-valuenow"),this.valueDiv.remove()},value:function(e){return void 0===e?this.options.value:(this.options.value=this._constrainedValue(e),this._refreshValue(),void 0)},_constrainedValue:function(e){return void 0===e&&(e=this.options.value),this.indeterminate=e===!1,"number"!=typeof e&&(e=0),this.indeterminate?!1:Math.min(this.options.max,Math.max(this.min,e))},_setOptions:function(e){var t=e.value;delete e.value,this._super(e),this.options.value=this._constrainedValue(t),this._refreshValue()},_setOption:function(e,t){"max"===e&&(t=Math.max(this.min,t)),"disabled"===e&&this.element.toggleClass("ui-state-disabled",!!t).attr("aria-disabled",t),this._super(e,t)},_percentage:function(){return this.indeterminate?100:100*(this.options.value-this.min)/(this.options.max-this.min)},_refreshValue:function(){var t=this.options.value,i=this._percentage();this.valueDiv.toggle(this.indeterminate||t>this.min).toggleClass("ui-corner-right",t===this.options.max).width(i.toFixed(0)+"%"),this.element.toggleClass("ui-progressbar-indeterminate",this.indeterminate),this.indeterminate?(this.element.removeAttr("aria-valuenow"),this.overlayDiv||(this.overlayDiv=e("<div class='ui-progressbar-overlay'></div>").appendTo(this.valueDiv))):(this.element.attr({"aria-valuemax":this.options.max,"aria-valuenow":t}),this.overlayDiv&&(this.overlayDiv.remove(),this.overlayDiv=null)),this.oldValue!==t&&(this.oldValue=t,this._trigger("change")),t===this.options.max&&this._trigger("complete")}}),e.widget("ui.selectmenu",{version:"1.11.4",defaultElement:"<select>",options:{appendTo:null,disabled:null,icons:{button:"ui-icon-triangle-1-s"},position:{my:"left top",at:"left bottom",collision:"none"},width:null,change:null,close:null,focus:null,open:null,select:null},_create:function(){var e=this.element.uniqueId().attr("id");this.ids={element:e,button:e+"-button",menu:e+"-menu"},this._drawButton(),this._drawMenu(),this.options.disabled&&this.disable()},_drawButton:function(){var t=this;this.label=e("label[for='"+this.ids.element+"']").attr("for",this.ids.button),this._on(this.label,{click:function(e){this.button.focus(),e.preventDefault()}}),this.element.hide(),this.button=e("<span>",{"class":"ui-selectmenu-button ui-widget ui-state-default ui-corner-all",tabindex:this.options.disabled?-1:0,id:this.ids.button,role:"combobox","aria-expanded":"false","aria-autocomplete":"list","aria-owns":this.ids.menu,"aria-haspopup":"true"}).insertAfter(this.element),e("<span>",{"class":"ui-icon "+this.options.icons.button}).prependTo(this.button),this.buttonText=e("<span>",{"class":"ui-selectmenu-text"}).appendTo(this.button),this._setText(this.buttonText,this.element.find("option:selected").text()),this._resizeButton(),this._on(this.button,this._buttonEvents),this.button.one("focusin",function(){t.menuItems||t._refreshMenu()}),this._hoverable(this.button),this._focusable(this.button)},_drawMenu:function(){var t=this;this.menu=e("<ul>",{"aria-hidden":"true","aria-labelledby":this.ids.button,id:this.ids.menu}),this.menuWrap=e("<div>",{"class":"ui-selectmenu-menu ui-front"}).append(this.menu).appendTo(this._appendTo()),this.menuInstance=this.menu.menu({role:"listbox",select:function(e,i){e.preventDefault(),t._setSelection(),t._select(i.item.data("ui-selectmenu-item"),e)},focus:function(e,i){var s=i.item.data("ui-selectmenu-item");null!=t.focusIndex&&s.index!==t.focusIndex&&(t._trigger("focus",e,{item:s}),t.isOpen||t._select(s,e)),t.focusIndex=s.index,t.button.attr("aria-activedescendant",t.menuItems.eq(s.index).attr("id"))}}).menu("instance"),this.menu.addClass("ui-corner-bottom").removeClass("ui-corner-all"),this.menuInstance._off(this.menu,"mouseleave"),this.menuInstance._closeOnDocumentClick=function(){return!1},this.menuInstance._isDivider=function(){return!1}},refresh:function(){this._refreshMenu(),this._setText(this.buttonText,this._getSelectedItem().text()),this.options.width||this._resizeButton()},_refreshMenu:function(){this.menu.empty();var e,t=this.element.find("option");t.length&&(this._parseOptions(t),this._renderMenu(this.menu,this.items),this.menuInstance.refresh(),this.menuItems=this.menu.find("li").not(".ui-selectmenu-optgroup"),e=this._getSelectedItem(),this.menuInstance.focus(null,e),this._setAria(e.data("ui-selectmenu-item")),this._setOption("disabled",this.element.prop("disabled")))},open:function(e){this.options.disabled||(this.menuItems?(this.menu.find(".ui-state-focus").removeClass("ui-state-focus"),this.menuInstance.focus(null,this._getSelectedItem())):this._refreshMenu(),this.isOpen=!0,this._toggleAttr(),this._resizeMenu(),this._position(),this._on(this.document,this._documentClick),this._trigger("open",e))},_position:function(){this.menuWrap.position(e.extend({of:this.button},this.options.position))},close:function(e){this.isOpen&&(this.isOpen=!1,this._toggleAttr(),this.range=null,this._off(this.document),this._trigger("close",e))},widget:function(){return this.button},menuWidget:function(){return this.menu},_renderMenu:function(t,i){var s=this,a="";e.each(i,function(i,n){n.optgroup!==a&&(e("<li>",{"class":"ui-selectmenu-optgroup ui-menu-divider"+(n.element.parent("optgroup").prop("disabled")?" ui-state-disabled":""),text:n.optgroup}).appendTo(t),a=n.optgroup),s._renderItemData(t,n)})},_renderItemData:function(e,t){return this._renderItem(e,t).data("ui-selectmenu-item",t)},_renderItem:function(t,i){var s=e("<li>");return i.disabled&&s.addClass("ui-state-disabled"),this._setText(s,i.label),s.appendTo(t)},_setText:function(e,t){t?e.text(t):e.html("&#160;")},_move:function(e,t){var i,s,a=".ui-menu-item";this.isOpen?i=this.menuItems.eq(this.focusIndex):(i=this.menuItems.eq(this.element[0].selectedIndex),a+=":not(.ui-state-disabled)"),s="first"===e||"last"===e?i["first"===e?"prevAll":"nextAll"](a).eq(-1):i[e+"All"](a).eq(0),s.length&&this.menuInstance.focus(t,s)},_getSelectedItem:function(){return this.menuItems.eq(this.element[0].selectedIndex)},_toggle:function(e){this[this.isOpen?"close":"open"](e)},_setSelection:function(){var e;this.range&&(window.getSelection?(e=window.getSelection(),e.removeAllRanges(),e.addRange(this.range)):this.range.select(),this.button.focus())},_documentClick:{mousedown:function(t){this.isOpen&&(e(t.target).closest(".ui-selectmenu-menu, #"+this.ids.button).length||this.close(t))}},_buttonEvents:{mousedown:function(){var e;window.getSelection?(e=window.getSelection(),e.rangeCount&&(this.range=e.getRangeAt(0))):this.range=document.selection.createRange()},click:function(e){this._setSelection(),this._toggle(e)},keydown:function(t){var i=!0;switch(t.keyCode){case e.ui.keyCode.TAB:case e.ui.keyCode.ESCAPE:this.close(t),i=!1;break;case e.ui.keyCode.ENTER:this.isOpen&&this._selectFocusedItem(t);break;case e.ui.keyCode.UP:t.altKey?this._toggle(t):this._move("prev",t);break;case e.ui.keyCode.DOWN:t.altKey?this._toggle(t):this._move("next",t);break;case e.ui.keyCode.SPACE:this.isOpen?this._selectFocusedItem(t):this._toggle(t);break;case e.ui.keyCode.LEFT:this._move("prev",t);break;case e.ui.keyCode.RIGHT:this._move("next",t);break;case e.ui.keyCode.HOME:case e.ui.keyCode.PAGE_UP:this._move("first",t);break;case e.ui.keyCode.END:case e.ui.keyCode.PAGE_DOWN:this._move("last",t);break;default:this.menu.trigger(t),i=!1}i&&t.preventDefault()}},_selectFocusedItem:function(e){var t=this.menuItems.eq(this.focusIndex);t.hasClass("ui-state-disabled")||this._select(t.data("ui-selectmenu-item"),e)},_select:function(e,t){var i=this.element[0].selectedIndex;this.element[0].selectedIndex=e.index,this._setText(this.buttonText,e.label),this._setAria(e),this._trigger("select",t,{item:e}),e.index!==i&&this._trigger("change",t,{item:e}),this.close(t)},_setAria:function(e){var t=this.menuItems.eq(e.index).attr("id");this.button.attr({"aria-labelledby":t,"aria-activedescendant":t}),this.menu.attr("aria-activedescendant",t)},_setOption:function(e,t){"icons"===e&&this.button.find("span.ui-icon").removeClass(this.options.icons.button).addClass(t.button),this._super(e,t),"appendTo"===e&&this.menuWrap.appendTo(this._appendTo()),"disabled"===e&&(this.menuInstance.option("disabled",t),this.button.toggleClass("ui-state-disabled",t).attr("aria-disabled",t),this.element.prop("disabled",t),t?(this.button.attr("tabindex",-1),this.close()):this.button.attr("tabindex",0)),"width"===e&&this._resizeButton()},_appendTo:function(){var t=this.options.appendTo;return t&&(t=t.jquery||t.nodeType?e(t):this.document.find(t).eq(0)),t&&t[0]||(t=this.element.closest(".ui-front")),t.length||(t=this.document[0].body),t},_toggleAttr:function(){this.button.toggleClass("ui-corner-top",this.isOpen).toggleClass("ui-corner-all",!this.isOpen).attr("aria-expanded",this.isOpen),this.menuWrap.toggleClass("ui-selectmenu-open",this.isOpen),this.menu.attr("aria-hidden",!this.isOpen)},_resizeButton:function(){var e=this.options.width;e||(e=this.element.show().outerWidth(),this.element.hide()),this.button.outerWidth(e)},_resizeMenu:function(){this.menu.outerWidth(Math.max(this.button.outerWidth(),this.menu.width("").outerWidth()+1))},_getCreateOptions:function(){return{disabled:this.element.prop("disabled")}},_parseOptions:function(t){var i=[];t.each(function(t,s){var a=e(s),n=a.parent("optgroup");i.push({element:a,index:t,value:a.val(),label:a.text(),optgroup:n.attr("label")||"",disabled:n.prop("disabled")||a.prop("disabled")})}),this.items=i},_destroy:function(){this.menuWrap.remove(),this.button.remove(),this.element.show(),this.element.removeUniqueId(),this.label.attr("for",this.ids.element)}}),e.widget("ui.slider",e.ui.mouse,{version:"1.11.4",widgetEventPrefix:"slide",options:{animate:!1,distance:0,max:100,min:0,orientation:"horizontal",range:!1,step:1,value:0,values:null,change:null,slide:null,start:null,stop:null},numPages:5,_create:function(){this._keySliding=!1,this._mouseSliding=!1,this._animateOff=!0,this._handleIndex=null,this._detectOrientation(),this._mouseInit(),this._calculateNewMax(),this.element.addClass("ui-slider ui-slider-"+this.orientation+" ui-widget"+" ui-widget-content"+" ui-corner-all"),this._refresh(),this._setOption("disabled",this.options.disabled),this._animateOff=!1},_refresh:function(){this._createRange(),this._createHandles(),this._setupEvents(),this._refreshValue()},_createHandles:function(){var t,i,s=this.options,a=this.element.find(".ui-slider-handle").addClass("ui-state-default ui-corner-all"),n="<span class='ui-slider-handle ui-state-default ui-corner-all' tabindex='0'></span>",r=[];for(i=s.values&&s.values.length||1,a.length>i&&(a.slice(i).remove(),a=a.slice(0,i)),t=a.length;i>t;t++)r.push(n);this.handles=a.add(e(r.join("")).appendTo(this.element)),this.handle=this.handles.eq(0),this.handles.each(function(t){e(this).data("ui-slider-handle-index",t)})},_createRange:function(){var t=this.options,i="";t.range?(t.range===!0&&(t.values?t.values.length&&2!==t.values.length?t.values=[t.values[0],t.values[0]]:e.isArray(t.values)&&(t.values=t.values.slice(0)):t.values=[this._valueMin(),this._valueMin()]),this.range&&this.range.length?this.range.removeClass("ui-slider-range-min ui-slider-range-max").css({left:"",bottom:""}):(this.range=e("<div></div>").appendTo(this.element),i="ui-slider-range ui-widget-header ui-corner-all"),this.range.addClass(i+("min"===t.range||"max"===t.range?" ui-slider-range-"+t.range:""))):(this.range&&this.range.remove(),this.range=null)},_setupEvents:function(){this._off(this.handles),this._on(this.handles,this._handleEvents),this._hoverable(this.handles),this._focusable(this.handles)},_destroy:function(){this.handles.remove(),this.range&&this.range.remove(),this.element.removeClass("ui-slider ui-slider-horizontal ui-slider-vertical ui-widget ui-widget-content ui-corner-all"),this._mouseDestroy()},_mouseCapture:function(t){var i,s,a,n,r,o,h,l,u=this,d=this.options;return d.disabled?!1:(this.elementSize={width:this.element.outerWidth(),height:this.element.outerHeight()},this.elementOffset=this.element.offset(),i={x:t.pageX,y:t.pageY},s=this._normValueFromMouse(i),a=this._valueMax()-this._valueMin()+1,this.handles.each(function(t){var i=Math.abs(s-u.values(t));(a>i||a===i&&(t===u._lastChangedValue||u.values(t)===d.min))&&(a=i,n=e(this),r=t)}),o=this._start(t,r),o===!1?!1:(this._mouseSliding=!0,this._handleIndex=r,n.addClass("ui-state-active").focus(),h=n.offset(),l=!e(t.target).parents().addBack().is(".ui-slider-handle"),this._clickOffset=l?{left:0,top:0}:{left:t.pageX-h.left-n.width()/2,top:t.pageY-h.top-n.height()/2-(parseInt(n.css("borderTopWidth"),10)||0)-(parseInt(n.css("borderBottomWidth"),10)||0)+(parseInt(n.css("marginTop"),10)||0)},this.handles.hasClass("ui-state-hover")||this._slide(t,r,s),this._animateOff=!0,!0))},_mouseStart:function(){return!0},_mouseDrag:function(e){var t={x:e.pageX,y:e.pageY},i=this._normValueFromMouse(t);return this._slide(e,this._handleIndex,i),!1},_mouseStop:function(e){return this.handles.removeClass("ui-state-active"),this._mouseSliding=!1,this._stop(e,this._handleIndex),this._change(e,this._handleIndex),this._handleIndex=null,this._clickOffset=null,this._animateOff=!1,!1},_detectOrientation:function(){this.orientation="vertical"===this.options.orientation?"vertical":"horizontal"},_normValueFromMouse:function(e){var t,i,s,a,n;return"horizontal"===this.orientation?(t=this.elementSize.width,i=e.x-this.elementOffset.left-(this._clickOffset?this._clickOffset.left:0)):(t=this.elementSize.height,i=e.y-this.elementOffset.top-(this._clickOffset?this._clickOffset.top:0)),s=i/t,s>1&&(s=1),0>s&&(s=0),"vertical"===this.orientation&&(s=1-s),a=this._valueMax()-this._valueMin(),n=this._valueMin()+s*a,this._trimAlignValue(n)},_start:function(e,t){var i={handle:this.handles[t],value:this.value()};return this.options.values&&this.options.values.length&&(i.value=this.values(t),i.values=this.values()),this._trigger("start",e,i)},_slide:function(e,t,i){var s,a,n;this.options.values&&this.options.values.length?(s=this.values(t?0:1),2===this.options.values.length&&this.options.range===!0&&(0===t&&i>s||1===t&&s>i)&&(i=s),i!==this.values(t)&&(a=this.values(),a[t]=i,n=this._trigger("slide",e,{handle:this.handles[t],value:i,values:a}),s=this.values(t?0:1),n!==!1&&this.values(t,i))):i!==this.value()&&(n=this._trigger("slide",e,{handle:this.handles[t],value:i}),n!==!1&&this.value(i))},_stop:function(e,t){var i={handle:this.handles[t],value:this.value()};this.options.values&&this.options.values.length&&(i.value=this.values(t),i.values=this.values()),this._trigger("stop",e,i)},_change:function(e,t){if(!this._keySliding&&!this._mouseSliding){var i={handle:this.handles[t],value:this.value()};this.options.values&&this.options.values.length&&(i.value=this.values(t),i.values=this.values()),this._lastChangedValue=t,this._trigger("change",e,i)}},value:function(e){return arguments.length?(this.options.value=this._trimAlignValue(e),this._refreshValue(),this._change(null,0),void 0):this._value()},values:function(t,i){var s,a,n;if(arguments.length>1)return this.options.values[t]=this._trimAlignValue(i),this._refreshValue(),this._change(null,t),void 0;if(!arguments.length)return this._values();if(!e.isArray(arguments[0]))return this.options.values&&this.options.values.length?this._values(t):this.value();for(s=this.options.values,a=arguments[0],n=0;s.length>n;n+=1)s[n]=this._trimAlignValue(a[n]),this._change(null,n);this._refreshValue()},_setOption:function(t,i){var s,a=0;switch("range"===t&&this.options.range===!0&&("min"===i?(this.options.value=this._values(0),this.options.values=null):"max"===i&&(this.options.value=this._values(this.options.values.length-1),this.options.values=null)),e.isArray(this.options.values)&&(a=this.options.values.length),"disabled"===t&&this.element.toggleClass("ui-state-disabled",!!i),this._super(t,i),t){case"orientation":this._detectOrientation(),this.element.removeClass("ui-slider-horizontal ui-slider-vertical").addClass("ui-slider-"+this.orientation),this._refreshValue(),this.handles.css("horizontal"===i?"bottom":"left","");break;case"value":this._animateOff=!0,this._refreshValue(),this._change(null,0),this._animateOff=!1;break;case"values":for(this._animateOff=!0,this._refreshValue(),s=0;a>s;s+=1)this._change(null,s);this._animateOff=!1;break;case"step":case"min":case"max":this._animateOff=!0,this._calculateNewMax(),this._refreshValue(),this._animateOff=!1;break;case"range":this._animateOff=!0,this._refresh(),this._animateOff=!1}},_value:function(){var e=this.options.value;return e=this._trimAlignValue(e)},_values:function(e){var t,i,s;if(arguments.length)return t=this.options.values[e],t=this._trimAlignValue(t);if(this.options.values&&this.options.values.length){for(i=this.options.values.slice(),s=0;i.length>s;s+=1)i[s]=this._trimAlignValue(i[s]);return i}return[]},_trimAlignValue:function(e){if(this._valueMin()>=e)return this._valueMin();if(e>=this._valueMax())return this._valueMax();var t=this.options.step>0?this.options.step:1,i=(e-this._valueMin())%t,s=e-i;return 2*Math.abs(i)>=t&&(s+=i>0?t:-t),parseFloat(s.toFixed(5))},_calculateNewMax:function(){var e=this.options.max,t=this._valueMin(),i=this.options.step,s=Math.floor(+(e-t).toFixed(this._precision())/i)*i;e=s+t,this.max=parseFloat(e.toFixed(this._precision()))},_precision:function(){var e=this._precisionOf(this.options.step);return null!==this.options.min&&(e=Math.max(e,this._precisionOf(this.options.min))),e},_precisionOf:function(e){var t=""+e,i=t.indexOf(".");return-1===i?0:t.length-i-1},_valueMin:function(){return this.options.min},_valueMax:function(){return this.max},_refreshValue:function(){var t,i,s,a,n,r=this.options.range,o=this.options,h=this,l=this._animateOff?!1:o.animate,u={};this.options.values&&this.options.values.length?this.handles.each(function(s){i=100*((h.values(s)-h._valueMin())/(h._valueMax()-h._valueMin())),u["horizontal"===h.orientation?"left":"bottom"]=i+"%",e(this).stop(1,1)[l?"animate":"css"](u,o.animate),h.options.range===!0&&("horizontal"===h.orientation?(0===s&&h.range.stop(1,1)[l?"animate":"css"]({left:i+"%"},o.animate),1===s&&h.range[l?"animate":"css"]({width:i-t+"%"},{queue:!1,duration:o.animate})):(0===s&&h.range.stop(1,1)[l?"animate":"css"]({bottom:i+"%"},o.animate),1===s&&h.range[l?"animate":"css"]({height:i-t+"%"},{queue:!1,duration:o.animate}))),t=i}):(s=this.value(),a=this._valueMin(),n=this._valueMax(),i=n!==a?100*((s-a)/(n-a)):0,u["horizontal"===this.orientation?"left":"bottom"]=i+"%",this.handle.stop(1,1)[l?"animate":"css"](u,o.animate),"min"===r&&"horizontal"===this.orientation&&this.range.stop(1,1)[l?"animate":"css"]({width:i+"%"},o.animate),"max"===r&&"horizontal"===this.orientation&&this.range[l?"animate":"css"]({width:100-i+"%"},{queue:!1,duration:o.animate}),"min"===r&&"vertical"===this.orientation&&this.range.stop(1,1)[l?"animate":"css"]({height:i+"%"},o.animate),"max"===r&&"vertical"===this.orientation&&this.range[l?"animate":"css"]({height:100-i+"%"},{queue:!1,duration:o.animate}))},_handleEvents:{keydown:function(t){var i,s,a,n,r=e(t.target).data("ui-slider-handle-index");switch(t.keyCode){case e.ui.keyCode.HOME:case e.ui.keyCode.END:case e.ui.keyCode.PAGE_UP:case e.ui.keyCode.PAGE_DOWN:case e.ui.keyCode.UP:case e.ui.keyCode.RIGHT:case e.ui.keyCode.DOWN:case e.ui.keyCode.LEFT:if(t.preventDefault(),!this._keySliding&&(this._keySliding=!0,e(t.target).addClass("ui-state-active"),i=this._start(t,r),i===!1))return}switch(n=this.options.step,s=a=this.options.values&&this.options.values.length?this.values(r):this.value(),t.keyCode){case e.ui.keyCode.HOME:a=this._valueMin();break;case e.ui.keyCode.END:a=this._valueMax();break;case e.ui.keyCode.PAGE_UP:a=this._trimAlignValue(s+(this._valueMax()-this._valueMin())/this.numPages);break;case e.ui.keyCode.PAGE_DOWN:a=this._trimAlignValue(s-(this._valueMax()-this._valueMin())/this.numPages);break;case e.ui.keyCode.UP:case e.ui.keyCode.RIGHT:if(s===this._valueMax())return;a=this._trimAlignValue(s+n);break;case e.ui.keyCode.DOWN:case e.ui.keyCode.LEFT:if(s===this._valueMin())return;a=this._trimAlignValue(s-n)}this._slide(t,r,a)},keyup:function(t){var i=e(t.target).data("ui-slider-handle-index");this._keySliding&&(this._keySliding=!1,this._stop(t,i),this._change(t,i),e(t.target).removeClass("ui-state-active"))}}}),e.widget("ui.spinner",{version:"1.11.4",defaultElement:"<input>",widgetEventPrefix:"spin",options:{culture:null,icons:{down:"ui-icon-triangle-1-s",up:"ui-icon-triangle-1-n"},incremental:!0,max:null,min:null,numberFormat:null,page:10,step:1,change:null,spin:null,start:null,stop:null},_create:function(){this._setOption("max",this.options.max),this._setOption("min",this.options.min),this._setOption("step",this.options.step),""!==this.value()&&this._value(this.element.val(),!0),this._draw(),this._on(this._events),this._refresh(),this._on(this.window,{beforeunload:function(){this.element.removeAttr("autocomplete")}})},_getCreateOptions:function(){var t={},i=this.element;return e.each(["min","max","step"],function(e,s){var a=i.attr(s);void 0!==a&&a.length&&(t[s]=a)}),t},_events:{keydown:function(e){this._start(e)&&this._keydown(e)&&e.preventDefault()},keyup:"_stop",focus:function(){this.previous=this.element.val()},blur:function(e){return this.cancelBlur?(delete this.cancelBlur,void 0):(this._stop(),this._refresh(),this.previous!==this.element.val()&&this._trigger("change",e),void 0)},mousewheel:function(e,t){if(t){if(!this.spinning&&!this._start(e))return!1;this._spin((t>0?1:-1)*this.options.step,e),clearTimeout(this.mousewheelTimer),this.mousewheelTimer=this._delay(function(){this.spinning&&this._stop(e)},100),e.preventDefault()}},"mousedown .ui-spinner-button":function(t){function i(){var e=this.element[0]===this.document[0].activeElement;e||(this.element.focus(),this.previous=s,this._delay(function(){this.previous=s}))}var s;s=this.element[0]===this.document[0].activeElement?this.previous:this.element.val(),t.preventDefault(),i.call(this),this.cancelBlur=!0,this._delay(function(){delete this.cancelBlur,i.call(this)}),this._start(t)!==!1&&this._repeat(null,e(t.currentTarget).hasClass("ui-spinner-up")?1:-1,t)},"mouseup .ui-spinner-button":"_stop","mouseenter .ui-spinner-button":function(t){return e(t.currentTarget).hasClass("ui-state-active")?this._start(t)===!1?!1:(this._repeat(null,e(t.currentTarget).hasClass("ui-spinner-up")?1:-1,t),void 0):void 0},"mouseleave .ui-spinner-button":"_stop"},_draw:function(){var e=this.uiSpinner=this.element.addClass("ui-spinner-input").attr("autocomplete","off").wrap(this._uiSpinnerHtml()).parent().append(this._buttonHtml());this.element.attr("role","spinbutton"),this.buttons=e.find(".ui-spinner-button").attr("tabIndex",-1).button().removeClass("ui-corner-all"),this.buttons.height()>Math.ceil(.5*e.height())&&e.height()>0&&e.height(e.height()),this.options.disabled&&this.disable()
},_keydown:function(t){var i=this.options,s=e.ui.keyCode;switch(t.keyCode){case s.UP:return this._repeat(null,1,t),!0;case s.DOWN:return this._repeat(null,-1,t),!0;case s.PAGE_UP:return this._repeat(null,i.page,t),!0;case s.PAGE_DOWN:return this._repeat(null,-i.page,t),!0}return!1},_uiSpinnerHtml:function(){return"<span class='ui-spinner ui-widget ui-widget-content ui-corner-all'></span>"},_buttonHtml:function(){return"<a class='ui-spinner-button ui-spinner-up ui-corner-tr'><span class='ui-icon "+this.options.icons.up+"'>&#9650;</span>"+"</a>"+"<a class='ui-spinner-button ui-spinner-down ui-corner-br'>"+"<span class='ui-icon "+this.options.icons.down+"'>&#9660;</span>"+"</a>"},_start:function(e){return this.spinning||this._trigger("start",e)!==!1?(this.counter||(this.counter=1),this.spinning=!0,!0):!1},_repeat:function(e,t,i){e=e||500,clearTimeout(this.timer),this.timer=this._delay(function(){this._repeat(40,t,i)},e),this._spin(t*this.options.step,i)},_spin:function(e,t){var i=this.value()||0;this.counter||(this.counter=1),i=this._adjustValue(i+e*this._increment(this.counter)),this.spinning&&this._trigger("spin",t,{value:i})===!1||(this._value(i),this.counter++)},_increment:function(t){var i=this.options.incremental;return i?e.isFunction(i)?i(t):Math.floor(t*t*t/5e4-t*t/500+17*t/200+1):1},_precision:function(){var e=this._precisionOf(this.options.step);return null!==this.options.min&&(e=Math.max(e,this._precisionOf(this.options.min))),e},_precisionOf:function(e){var t=""+e,i=t.indexOf(".");return-1===i?0:t.length-i-1},_adjustValue:function(e){var t,i,s=this.options;return t=null!==s.min?s.min:0,i=e-t,i=Math.round(i/s.step)*s.step,e=t+i,e=parseFloat(e.toFixed(this._precision())),null!==s.max&&e>s.max?s.max:null!==s.min&&s.min>e?s.min:e},_stop:function(e){this.spinning&&(clearTimeout(this.timer),clearTimeout(this.mousewheelTimer),this.counter=0,this.spinning=!1,this._trigger("stop",e))},_setOption:function(e,t){if("culture"===e||"numberFormat"===e){var i=this._parse(this.element.val());return this.options[e]=t,this.element.val(this._format(i)),void 0}("max"===e||"min"===e||"step"===e)&&"string"==typeof t&&(t=this._parse(t)),"icons"===e&&(this.buttons.first().find(".ui-icon").removeClass(this.options.icons.up).addClass(t.up),this.buttons.last().find(".ui-icon").removeClass(this.options.icons.down).addClass(t.down)),this._super(e,t),"disabled"===e&&(this.widget().toggleClass("ui-state-disabled",!!t),this.element.prop("disabled",!!t),this.buttons.button(t?"disable":"enable"))},_setOptions:h(function(e){this._super(e)}),_parse:function(e){return"string"==typeof e&&""!==e&&(e=window.Globalize&&this.options.numberFormat?Globalize.parseFloat(e,10,this.options.culture):+e),""===e||isNaN(e)?null:e},_format:function(e){return""===e?"":window.Globalize&&this.options.numberFormat?Globalize.format(e,this.options.numberFormat,this.options.culture):e},_refresh:function(){this.element.attr({"aria-valuemin":this.options.min,"aria-valuemax":this.options.max,"aria-valuenow":this._parse(this.element.val())})},isValid:function(){var e=this.value();return null===e?!1:e===this._adjustValue(e)},_value:function(e,t){var i;""!==e&&(i=this._parse(e),null!==i&&(t||(i=this._adjustValue(i)),e=this._format(i))),this.element.val(e),this._refresh()},_destroy:function(){this.element.removeClass("ui-spinner-input").prop("disabled",!1).removeAttr("autocomplete").removeAttr("role").removeAttr("aria-valuemin").removeAttr("aria-valuemax").removeAttr("aria-valuenow"),this.uiSpinner.replaceWith(this.element)},stepUp:h(function(e){this._stepUp(e)}),_stepUp:function(e){this._start()&&(this._spin((e||1)*this.options.step),this._stop())},stepDown:h(function(e){this._stepDown(e)}),_stepDown:function(e){this._start()&&(this._spin((e||1)*-this.options.step),this._stop())},pageUp:h(function(e){this._stepUp((e||1)*this.options.page)}),pageDown:h(function(e){this._stepDown((e||1)*this.options.page)}),value:function(e){return arguments.length?(h(this._value).call(this,e),void 0):this._parse(this.element.val())},widget:function(){return this.uiSpinner}}),e.widget("ui.tabs",{version:"1.11.4",delay:300,options:{active:null,collapsible:!1,event:"click",heightStyle:"content",hide:null,show:null,activate:null,beforeActivate:null,beforeLoad:null,load:null},_isLocal:function(){var e=/#.*$/;return function(t){var i,s;t=t.cloneNode(!1),i=t.href.replace(e,""),s=location.href.replace(e,"");try{i=decodeURIComponent(i)}catch(a){}try{s=decodeURIComponent(s)}catch(a){}return t.hash.length>1&&i===s}}(),_create:function(){var t=this,i=this.options;this.running=!1,this.element.addClass("ui-tabs ui-widget ui-widget-content ui-corner-all").toggleClass("ui-tabs-collapsible",i.collapsible),this._processTabs(),i.active=this._initialActive(),e.isArray(i.disabled)&&(i.disabled=e.unique(i.disabled.concat(e.map(this.tabs.filter(".ui-state-disabled"),function(e){return t.tabs.index(e)}))).sort()),this.active=this.options.active!==!1&&this.anchors.length?this._findActive(i.active):e(),this._refresh(),this.active.length&&this.load(i.active)},_initialActive:function(){var t=this.options.active,i=this.options.collapsible,s=location.hash.substring(1);return null===t&&(s&&this.tabs.each(function(i,a){return e(a).attr("aria-controls")===s?(t=i,!1):void 0}),null===t&&(t=this.tabs.index(this.tabs.filter(".ui-tabs-active"))),(null===t||-1===t)&&(t=this.tabs.length?0:!1)),t!==!1&&(t=this.tabs.index(this.tabs.eq(t)),-1===t&&(t=i?!1:0)),!i&&t===!1&&this.anchors.length&&(t=0),t},_getCreateEventData:function(){return{tab:this.active,panel:this.active.length?this._getPanelForTab(this.active):e()}},_tabKeydown:function(t){var i=e(this.document[0].activeElement).closest("li"),s=this.tabs.index(i),a=!0;if(!this._handlePageNav(t)){switch(t.keyCode){case e.ui.keyCode.RIGHT:case e.ui.keyCode.DOWN:s++;break;case e.ui.keyCode.UP:case e.ui.keyCode.LEFT:a=!1,s--;break;case e.ui.keyCode.END:s=this.anchors.length-1;break;case e.ui.keyCode.HOME:s=0;break;case e.ui.keyCode.SPACE:return t.preventDefault(),clearTimeout(this.activating),this._activate(s),void 0;case e.ui.keyCode.ENTER:return t.preventDefault(),clearTimeout(this.activating),this._activate(s===this.options.active?!1:s),void 0;default:return}t.preventDefault(),clearTimeout(this.activating),s=this._focusNextTab(s,a),t.ctrlKey||t.metaKey||(i.attr("aria-selected","false"),this.tabs.eq(s).attr("aria-selected","true"),this.activating=this._delay(function(){this.option("active",s)},this.delay))}},_panelKeydown:function(t){this._handlePageNav(t)||t.ctrlKey&&t.keyCode===e.ui.keyCode.UP&&(t.preventDefault(),this.active.focus())},_handlePageNav:function(t){return t.altKey&&t.keyCode===e.ui.keyCode.PAGE_UP?(this._activate(this._focusNextTab(this.options.active-1,!1)),!0):t.altKey&&t.keyCode===e.ui.keyCode.PAGE_DOWN?(this._activate(this._focusNextTab(this.options.active+1,!0)),!0):void 0},_findNextTab:function(t,i){function s(){return t>a&&(t=0),0>t&&(t=a),t}for(var a=this.tabs.length-1;-1!==e.inArray(s(),this.options.disabled);)t=i?t+1:t-1;return t},_focusNextTab:function(e,t){return e=this._findNextTab(e,t),this.tabs.eq(e).focus(),e},_setOption:function(e,t){return"active"===e?(this._activate(t),void 0):"disabled"===e?(this._setupDisabled(t),void 0):(this._super(e,t),"collapsible"===e&&(this.element.toggleClass("ui-tabs-collapsible",t),t||this.options.active!==!1||this._activate(0)),"event"===e&&this._setupEvents(t),"heightStyle"===e&&this._setupHeightStyle(t),void 0)},_sanitizeSelector:function(e){return e?e.replace(/[!"$%&'()*+,.\/:;<=>?@\[\]\^`{|}~]/g,"\\$&"):""},refresh:function(){var t=this.options,i=this.tablist.children(":has(a[href])");t.disabled=e.map(i.filter(".ui-state-disabled"),function(e){return i.index(e)}),this._processTabs(),t.active!==!1&&this.anchors.length?this.active.length&&!e.contains(this.tablist[0],this.active[0])?this.tabs.length===t.disabled.length?(t.active=!1,this.active=e()):this._activate(this._findNextTab(Math.max(0,t.active-1),!1)):t.active=this.tabs.index(this.active):(t.active=!1,this.active=e()),this._refresh()},_refresh:function(){this._setupDisabled(this.options.disabled),this._setupEvents(this.options.event),this._setupHeightStyle(this.options.heightStyle),this.tabs.not(this.active).attr({"aria-selected":"false","aria-expanded":"false",tabIndex:-1}),this.panels.not(this._getPanelForTab(this.active)).hide().attr({"aria-hidden":"true"}),this.active.length?(this.active.addClass("ui-tabs-active ui-state-active").attr({"aria-selected":"true","aria-expanded":"true",tabIndex:0}),this._getPanelForTab(this.active).show().attr({"aria-hidden":"false"})):this.tabs.eq(0).attr("tabIndex",0)},_processTabs:function(){var t=this,i=this.tabs,s=this.anchors,a=this.panels;this.tablist=this._getList().addClass("ui-tabs-nav ui-helper-reset ui-helper-clearfix ui-widget-header ui-corner-all").attr("role","tablist").delegate("> li","mousedown"+this.eventNamespace,function(t){e(this).is(".ui-state-disabled")&&t.preventDefault()}).delegate(".ui-tabs-anchor","focus"+this.eventNamespace,function(){e(this).closest("li").is(".ui-state-disabled")&&this.blur()}),this.tabs=this.tablist.find("> li:has(a[href])").addClass("ui-state-default ui-corner-top").attr({role:"tab",tabIndex:-1}),this.anchors=this.tabs.map(function(){return e("a",this)[0]}).addClass("ui-tabs-anchor").attr({role:"presentation",tabIndex:-1}),this.panels=e(),this.anchors.each(function(i,s){var a,n,r,o=e(s).uniqueId().attr("id"),h=e(s).closest("li"),l=h.attr("aria-controls");t._isLocal(s)?(a=s.hash,r=a.substring(1),n=t.element.find(t._sanitizeSelector(a))):(r=h.attr("aria-controls")||e({}).uniqueId()[0].id,a="#"+r,n=t.element.find(a),n.length||(n=t._createPanel(r),n.insertAfter(t.panels[i-1]||t.tablist)),n.attr("aria-live","polite")),n.length&&(t.panels=t.panels.add(n)),l&&h.data("ui-tabs-aria-controls",l),h.attr({"aria-controls":r,"aria-labelledby":o}),n.attr("aria-labelledby",o)}),this.panels.addClass("ui-tabs-panel ui-widget-content ui-corner-bottom").attr("role","tabpanel"),i&&(this._off(i.not(this.tabs)),this._off(s.not(this.anchors)),this._off(a.not(this.panels)))},_getList:function(){return this.tablist||this.element.find("ol,ul").eq(0)},_createPanel:function(t){return e("<div>").attr("id",t).addClass("ui-tabs-panel ui-widget-content ui-corner-bottom").data("ui-tabs-destroy",!0)},_setupDisabled:function(t){e.isArray(t)&&(t.length?t.length===this.anchors.length&&(t=!0):t=!1);for(var i,s=0;i=this.tabs[s];s++)t===!0||-1!==e.inArray(s,t)?e(i).addClass("ui-state-disabled").attr("aria-disabled","true"):e(i).removeClass("ui-state-disabled").removeAttr("aria-disabled");this.options.disabled=t},_setupEvents:function(t){var i={};t&&e.each(t.split(" "),function(e,t){i[t]="_eventHandler"}),this._off(this.anchors.add(this.tabs).add(this.panels)),this._on(!0,this.anchors,{click:function(e){e.preventDefault()}}),this._on(this.anchors,i),this._on(this.tabs,{keydown:"_tabKeydown"}),this._on(this.panels,{keydown:"_panelKeydown"}),this._focusable(this.tabs),this._hoverable(this.tabs)},_setupHeightStyle:function(t){var i,s=this.element.parent();"fill"===t?(i=s.height(),i-=this.element.outerHeight()-this.element.height(),this.element.siblings(":visible").each(function(){var t=e(this),s=t.css("position");"absolute"!==s&&"fixed"!==s&&(i-=t.outerHeight(!0))}),this.element.children().not(this.panels).each(function(){i-=e(this).outerHeight(!0)}),this.panels.each(function(){e(this).height(Math.max(0,i-e(this).innerHeight()+e(this).height()))}).css("overflow","auto")):"auto"===t&&(i=0,this.panels.each(function(){i=Math.max(i,e(this).height("").height())}).height(i))},_eventHandler:function(t){var i=this.options,s=this.active,a=e(t.currentTarget),n=a.closest("li"),r=n[0]===s[0],o=r&&i.collapsible,h=o?e():this._getPanelForTab(n),l=s.length?this._getPanelForTab(s):e(),u={oldTab:s,oldPanel:l,newTab:o?e():n,newPanel:h};t.preventDefault(),n.hasClass("ui-state-disabled")||n.hasClass("ui-tabs-loading")||this.running||r&&!i.collapsible||this._trigger("beforeActivate",t,u)===!1||(i.active=o?!1:this.tabs.index(n),this.active=r?e():n,this.xhr&&this.xhr.abort(),l.length||h.length||e.error("jQuery UI Tabs: Mismatching fragment identifier."),h.length&&this.load(this.tabs.index(n),t),this._toggle(t,u))},_toggle:function(t,i){function s(){n.running=!1,n._trigger("activate",t,i)}function a(){i.newTab.closest("li").addClass("ui-tabs-active ui-state-active"),r.length&&n.options.show?n._show(r,n.options.show,s):(r.show(),s())}var n=this,r=i.newPanel,o=i.oldPanel;this.running=!0,o.length&&this.options.hide?this._hide(o,this.options.hide,function(){i.oldTab.closest("li").removeClass("ui-tabs-active ui-state-active"),a()}):(i.oldTab.closest("li").removeClass("ui-tabs-active ui-state-active"),o.hide(),a()),o.attr("aria-hidden","true"),i.oldTab.attr({"aria-selected":"false","aria-expanded":"false"}),r.length&&o.length?i.oldTab.attr("tabIndex",-1):r.length&&this.tabs.filter(function(){return 0===e(this).attr("tabIndex")}).attr("tabIndex",-1),r.attr("aria-hidden","false"),i.newTab.attr({"aria-selected":"true","aria-expanded":"true",tabIndex:0})},_activate:function(t){var i,s=this._findActive(t);s[0]!==this.active[0]&&(s.length||(s=this.active),i=s.find(".ui-tabs-anchor")[0],this._eventHandler({target:i,currentTarget:i,preventDefault:e.noop}))},_findActive:function(t){return t===!1?e():this.tabs.eq(t)},_getIndex:function(e){return"string"==typeof e&&(e=this.anchors.index(this.anchors.filter("[href$='"+e+"']"))),e},_destroy:function(){this.xhr&&this.xhr.abort(),this.element.removeClass("ui-tabs ui-widget ui-widget-content ui-corner-all ui-tabs-collapsible"),this.tablist.removeClass("ui-tabs-nav ui-helper-reset ui-helper-clearfix ui-widget-header ui-corner-all").removeAttr("role"),this.anchors.removeClass("ui-tabs-anchor").removeAttr("role").removeAttr("tabIndex").removeUniqueId(),this.tablist.unbind(this.eventNamespace),this.tabs.add(this.panels).each(function(){e.data(this,"ui-tabs-destroy")?e(this).remove():e(this).removeClass("ui-state-default ui-state-active ui-state-disabled ui-corner-top ui-corner-bottom ui-widget-content ui-tabs-active ui-tabs-panel").removeAttr("tabIndex").removeAttr("aria-live").removeAttr("aria-busy").removeAttr("aria-selected").removeAttr("aria-labelledby").removeAttr("aria-hidden").removeAttr("aria-expanded").removeAttr("role")}),this.tabs.each(function(){var t=e(this),i=t.data("ui-tabs-aria-controls");i?t.attr("aria-controls",i).removeData("ui-tabs-aria-controls"):t.removeAttr("aria-controls")}),this.panels.show(),"content"!==this.options.heightStyle&&this.panels.css("height","")},enable:function(t){var i=this.options.disabled;i!==!1&&(void 0===t?i=!1:(t=this._getIndex(t),i=e.isArray(i)?e.map(i,function(e){return e!==t?e:null}):e.map(this.tabs,function(e,i){return i!==t?i:null})),this._setupDisabled(i))},disable:function(t){var i=this.options.disabled;if(i!==!0){if(void 0===t)i=!0;else{if(t=this._getIndex(t),-1!==e.inArray(t,i))return;i=e.isArray(i)?e.merge([t],i).sort():[t]}this._setupDisabled(i)}},load:function(t,i){t=this._getIndex(t);var s=this,a=this.tabs.eq(t),n=a.find(".ui-tabs-anchor"),r=this._getPanelForTab(a),o={tab:a,panel:r},h=function(e,t){"abort"===t&&s.panels.stop(!1,!0),a.removeClass("ui-tabs-loading"),r.removeAttr("aria-busy"),e===s.xhr&&delete s.xhr};this._isLocal(n[0])||(this.xhr=e.ajax(this._ajaxSettings(n,i,o)),this.xhr&&"canceled"!==this.xhr.statusText&&(a.addClass("ui-tabs-loading"),r.attr("aria-busy","true"),this.xhr.done(function(e,t,a){setTimeout(function(){r.html(e),s._trigger("load",i,o),h(a,t)},1)}).fail(function(e,t){setTimeout(function(){h(e,t)},1)})))},_ajaxSettings:function(t,i,s){var a=this;return{url:t.attr("href"),beforeSend:function(t,n){return a._trigger("beforeLoad",i,e.extend({jqXHR:t,ajaxSettings:n},s))}}},_getPanelForTab:function(t){var i=e(t).attr("aria-controls");return this.element.find(this._sanitizeSelector("#"+i))}}),e.widget("ui.tooltip",{version:"1.11.4",options:{content:function(){var t=e(this).attr("title")||"";return e("<a>").text(t).html()},hide:!0,items:"[title]:not([disabled])",position:{my:"left top+15",at:"left bottom",collision:"flipfit flip"},show:!0,tooltipClass:null,track:!1,close:null,open:null},_addDescribedBy:function(t,i){var s=(t.attr("aria-describedby")||"").split(/\s+/);s.push(i),t.data("ui-tooltip-id",i).attr("aria-describedby",e.trim(s.join(" ")))},_removeDescribedBy:function(t){var i=t.data("ui-tooltip-id"),s=(t.attr("aria-describedby")||"").split(/\s+/),a=e.inArray(i,s);-1!==a&&s.splice(a,1),t.removeData("ui-tooltip-id"),s=e.trim(s.join(" ")),s?t.attr("aria-describedby",s):t.removeAttr("aria-describedby")},_create:function(){this._on({mouseover:"open",focusin:"open"}),this.tooltips={},this.parents={},this.options.disabled&&this._disable(),this.liveRegion=e("<div>").attr({role:"log","aria-live":"assertive","aria-relevant":"additions"}).addClass("ui-helper-hidden-accessible").appendTo(this.document[0].body)},_setOption:function(t,i){var s=this;return"disabled"===t?(this[i?"_disable":"_enable"](),this.options[t]=i,void 0):(this._super(t,i),"content"===t&&e.each(this.tooltips,function(e,t){s._updateContent(t.element)}),void 0)},_disable:function(){var t=this;e.each(this.tooltips,function(i,s){var a=e.Event("blur");a.target=a.currentTarget=s.element[0],t.close(a,!0)}),this.element.find(this.options.items).addBack().each(function(){var t=e(this);t.is("[title]")&&t.data("ui-tooltip-title",t.attr("title")).removeAttr("title")})},_enable:function(){this.element.find(this.options.items).addBack().each(function(){var t=e(this);t.data("ui-tooltip-title")&&t.attr("title",t.data("ui-tooltip-title"))})},open:function(t){var i=this,s=e(t?t.target:this.element).closest(this.options.items);s.length&&!s.data("ui-tooltip-id")&&(s.attr("title")&&s.data("ui-tooltip-title",s.attr("title")),s.data("ui-tooltip-open",!0),t&&"mouseover"===t.type&&s.parents().each(function(){var t,s=e(this);s.data("ui-tooltip-open")&&(t=e.Event("blur"),t.target=t.currentTarget=this,i.close(t,!0)),s.attr("title")&&(s.uniqueId(),i.parents[this.id]={element:this,title:s.attr("title")},s.attr("title",""))}),this._registerCloseHandlers(t,s),this._updateContent(s,t))},_updateContent:function(e,t){var i,s=this.options.content,a=this,n=t?t.type:null;return"string"==typeof s?this._open(t,e,s):(i=s.call(e[0],function(i){a._delay(function(){e.data("ui-tooltip-open")&&(t&&(t.type=n),this._open(t,e,i))})}),i&&this._open(t,e,i),void 0)},_open:function(t,i,s){function a(e){l.of=e,r.is(":hidden")||r.position(l)}var n,r,o,h,l=e.extend({},this.options.position);if(s){if(n=this._find(i))return n.tooltip.find(".ui-tooltip-content").html(s),void 0;i.is("[title]")&&(t&&"mouseover"===t.type?i.attr("title",""):i.removeAttr("title")),n=this._tooltip(i),r=n.tooltip,this._addDescribedBy(i,r.attr("id")),r.find(".ui-tooltip-content").html(s),this.liveRegion.children().hide(),s.clone?(h=s.clone(),h.removeAttr("id").find("[id]").removeAttr("id")):h=s,e("<div>").html(h).appendTo(this.liveRegion),this.options.track&&t&&/^mouse/.test(t.type)?(this._on(this.document,{mousemove:a}),a(t)):r.position(e.extend({of:i},this.options.position)),r.hide(),this._show(r,this.options.show),this.options.show&&this.options.show.delay&&(o=this.delayedShow=setInterval(function(){r.is(":visible")&&(a(l.of),clearInterval(o))},e.fx.interval)),this._trigger("open",t,{tooltip:r})}},_registerCloseHandlers:function(t,i){var s={keyup:function(t){if(t.keyCode===e.ui.keyCode.ESCAPE){var s=e.Event(t);s.currentTarget=i[0],this.close(s,!0)}}};i[0]!==this.element[0]&&(s.remove=function(){this._removeTooltip(this._find(i).tooltip)}),t&&"mouseover"!==t.type||(s.mouseleave="close"),t&&"focusin"!==t.type||(s.focusout="close"),this._on(!0,i,s)},close:function(t){var i,s=this,a=e(t?t.currentTarget:this.element),n=this._find(a);return n?(i=n.tooltip,n.closing||(clearInterval(this.delayedShow),a.data("ui-tooltip-title")&&!a.attr("title")&&a.attr("title",a.data("ui-tooltip-title")),this._removeDescribedBy(a),n.hiding=!0,i.stop(!0),this._hide(i,this.options.hide,function(){s._removeTooltip(e(this))}),a.removeData("ui-tooltip-open"),this._off(a,"mouseleave focusout keyup"),a[0]!==this.element[0]&&this._off(a,"remove"),this._off(this.document,"mousemove"),t&&"mouseleave"===t.type&&e.each(this.parents,function(t,i){e(i.element).attr("title",i.title),delete s.parents[t]}),n.closing=!0,this._trigger("close",t,{tooltip:i}),n.hiding||(n.closing=!1)),void 0):(a.removeData("ui-tooltip-open"),void 0)},_tooltip:function(t){var i=e("<div>").attr("role","tooltip").addClass("ui-tooltip ui-widget ui-corner-all ui-widget-content "+(this.options.tooltipClass||"")),s=i.uniqueId().attr("id");return e("<div>").addClass("ui-tooltip-content").appendTo(i),i.appendTo(this.document[0].body),this.tooltips[s]={element:t,tooltip:i}},_find:function(e){var t=e.data("ui-tooltip-id");return t?this.tooltips[t]:null},_removeTooltip:function(e){e.remove(),delete this.tooltips[e.attr("id")]},_destroy:function(){var t=this;e.each(this.tooltips,function(i,s){var a=e.Event("blur"),n=s.element;a.target=a.currentTarget=n[0],t.close(a,!0),e("#"+i).remove(),n.data("ui-tooltip-title")&&(n.attr("title")||n.attr("title",n.data("ui-tooltip-title")),n.removeData("ui-tooltip-title"))}),this.liveRegion.remove()}});var y="ui-effects-",b=e;e.effects={effect:{}},function(e,t){function i(e,t,i){var s=d[t.type]||{};return null==e?i||!t.def?null:t.def:(e=s.floor?~~e:parseFloat(e),isNaN(e)?t.def:s.mod?(e+s.mod)%s.mod:0>e?0:e>s.max?s.max:e)}function s(i){var s=l(),a=s._rgba=[];return i=i.toLowerCase(),f(h,function(e,n){var r,o=n.re.exec(i),h=o&&n.parse(o),l=n.space||"rgba";return h?(r=s[l](h),s[u[l].cache]=r[u[l].cache],a=s._rgba=r._rgba,!1):t}),a.length?("0,0,0,0"===a.join()&&e.extend(a,n.transparent),s):n[i]}function a(e,t,i){return i=(i+1)%1,1>6*i?e+6*(t-e)*i:1>2*i?t:2>3*i?e+6*(t-e)*(2/3-i):e}var n,r="backgroundColor borderBottomColor borderLeftColor borderRightColor borderTopColor color columnRuleColor outlineColor textDecorationColor textEmphasisColor",o=/^([\-+])=\s*(\d+\.?\d*)/,h=[{re:/rgba?\(\s*(\d{1,3})\s*,\s*(\d{1,3})\s*,\s*(\d{1,3})\s*(?:,\s*(\d?(?:\.\d+)?)\s*)?\)/,parse:function(e){return[e[1],e[2],e[3],e[4]]}},{re:/rgba?\(\s*(\d+(?:\.\d+)?)\%\s*,\s*(\d+(?:\.\d+)?)\%\s*,\s*(\d+(?:\.\d+)?)\%\s*(?:,\s*(\d?(?:\.\d+)?)\s*)?\)/,parse:function(e){return[2.55*e[1],2.55*e[2],2.55*e[3],e[4]]}},{re:/#([a-f0-9]{2})([a-f0-9]{2})([a-f0-9]{2})/,parse:function(e){return[parseInt(e[1],16),parseInt(e[2],16),parseInt(e[3],16)]}},{re:/#([a-f0-9])([a-f0-9])([a-f0-9])/,parse:function(e){return[parseInt(e[1]+e[1],16),parseInt(e[2]+e[2],16),parseInt(e[3]+e[3],16)]}},{re:/hsla?\(\s*(\d+(?:\.\d+)?)\s*,\s*(\d+(?:\.\d+)?)\%\s*,\s*(\d+(?:\.\d+)?)\%\s*(?:,\s*(\d?(?:\.\d+)?)\s*)?\)/,space:"hsla",parse:function(e){return[e[1],e[2]/100,e[3]/100,e[4]]}}],l=e.Color=function(t,i,s,a){return new e.Color.fn.parse(t,i,s,a)},u={rgba:{props:{red:{idx:0,type:"byte"},green:{idx:1,type:"byte"},blue:{idx:2,type:"byte"}}},hsla:{props:{hue:{idx:0,type:"degrees"},saturation:{idx:1,type:"percent"},lightness:{idx:2,type:"percent"}}}},d={"byte":{floor:!0,max:255},percent:{max:1},degrees:{mod:360,floor:!0}},c=l.support={},p=e("<p>")[0],f=e.each;p.style.cssText="background-color:rgba(1,1,1,.5)",c.rgba=p.style.backgroundColor.indexOf("rgba")>-1,f(u,function(e,t){t.cache="_"+e,t.props.alpha={idx:3,type:"percent",def:1}}),l.fn=e.extend(l.prototype,{parse:function(a,r,o,h){if(a===t)return this._rgba=[null,null,null,null],this;(a.jquery||a.nodeType)&&(a=e(a).css(r),r=t);var d=this,c=e.type(a),p=this._rgba=[];return r!==t&&(a=[a,r,o,h],c="array"),"string"===c?this.parse(s(a)||n._default):"array"===c?(f(u.rgba.props,function(e,t){p[t.idx]=i(a[t.idx],t)}),this):"object"===c?(a instanceof l?f(u,function(e,t){a[t.cache]&&(d[t.cache]=a[t.cache].slice())}):f(u,function(t,s){var n=s.cache;f(s.props,function(e,t){if(!d[n]&&s.to){if("alpha"===e||null==a[e])return;d[n]=s.to(d._rgba)}d[n][t.idx]=i(a[e],t,!0)}),d[n]&&0>e.inArray(null,d[n].slice(0,3))&&(d[n][3]=1,s.from&&(d._rgba=s.from(d[n])))}),this):t},is:function(e){var i=l(e),s=!0,a=this;return f(u,function(e,n){var r,o=i[n.cache];return o&&(r=a[n.cache]||n.to&&n.to(a._rgba)||[],f(n.props,function(e,i){return null!=o[i.idx]?s=o[i.idx]===r[i.idx]:t})),s}),s},_space:function(){var e=[],t=this;return f(u,function(i,s){t[s.cache]&&e.push(i)}),e.pop()},transition:function(e,t){var s=l(e),a=s._space(),n=u[a],r=0===this.alpha()?l("transparent"):this,o=r[n.cache]||n.to(r._rgba),h=o.slice();return s=s[n.cache],f(n.props,function(e,a){var n=a.idx,r=o[n],l=s[n],u=d[a.type]||{};null!==l&&(null===r?h[n]=l:(u.mod&&(l-r>u.mod/2?r+=u.mod:r-l>u.mod/2&&(r-=u.mod)),h[n]=i((l-r)*t+r,a)))}),this[a](h)},blend:function(t){if(1===this._rgba[3])return this;var i=this._rgba.slice(),s=i.pop(),a=l(t)._rgba;return l(e.map(i,function(e,t){return(1-s)*a[t]+s*e}))},toRgbaString:function(){var t="rgba(",i=e.map(this._rgba,function(e,t){return null==e?t>2?1:0:e});return 1===i[3]&&(i.pop(),t="rgb("),t+i.join()+")"},toHslaString:function(){var t="hsla(",i=e.map(this.hsla(),function(e,t){return null==e&&(e=t>2?1:0),t&&3>t&&(e=Math.round(100*e)+"%"),e});return 1===i[3]&&(i.pop(),t="hsl("),t+i.join()+")"},toHexString:function(t){var i=this._rgba.slice(),s=i.pop();return t&&i.push(~~(255*s)),"#"+e.map(i,function(e){return e=(e||0).toString(16),1===e.length?"0"+e:e}).join("")},toString:function(){return 0===this._rgba[3]?"transparent":this.toRgbaString()}}),l.fn.parse.prototype=l.fn,u.hsla.to=function(e){if(null==e[0]||null==e[1]||null==e[2])return[null,null,null,e[3]];var t,i,s=e[0]/255,a=e[1]/255,n=e[2]/255,r=e[3],o=Math.max(s,a,n),h=Math.min(s,a,n),l=o-h,u=o+h,d=.5*u;return t=h===o?0:s===o?60*(a-n)/l+360:a===o?60*(n-s)/l+120:60*(s-a)/l+240,i=0===l?0:.5>=d?l/u:l/(2-u),[Math.round(t)%360,i,d,null==r?1:r]},u.hsla.from=function(e){if(null==e[0]||null==e[1]||null==e[2])return[null,null,null,e[3]];var t=e[0]/360,i=e[1],s=e[2],n=e[3],r=.5>=s?s*(1+i):s+i-s*i,o=2*s-r;return[Math.round(255*a(o,r,t+1/3)),Math.round(255*a(o,r,t)),Math.round(255*a(o,r,t-1/3)),n]},f(u,function(s,a){var n=a.props,r=a.cache,h=a.to,u=a.from;l.fn[s]=function(s){if(h&&!this[r]&&(this[r]=h(this._rgba)),s===t)return this[r].slice();var a,o=e.type(s),d="array"===o||"object"===o?s:arguments,c=this[r].slice();return f(n,function(e,t){var s=d["object"===o?e:t.idx];null==s&&(s=c[t.idx]),c[t.idx]=i(s,t)}),u?(a=l(u(c)),a[r]=c,a):l(c)},f(n,function(t,i){l.fn[t]||(l.fn[t]=function(a){var n,r=e.type(a),h="alpha"===t?this._hsla?"hsla":"rgba":s,l=this[h](),u=l[i.idx];return"undefined"===r?u:("function"===r&&(a=a.call(this,u),r=e.type(a)),null==a&&i.empty?this:("string"===r&&(n=o.exec(a),n&&(a=u+parseFloat(n[2])*("+"===n[1]?1:-1))),l[i.idx]=a,this[h](l)))})})}),l.hook=function(t){var i=t.split(" ");f(i,function(t,i){e.cssHooks[i]={set:function(t,a){var n,r,o="";if("transparent"!==a&&("string"!==e.type(a)||(n=s(a)))){if(a=l(n||a),!c.rgba&&1!==a._rgba[3]){for(r="backgroundColor"===i?t.parentNode:t;(""===o||"transparent"===o)&&r&&r.style;)try{o=e.css(r,"backgroundColor"),r=r.parentNode}catch(h){}a=a.blend(o&&"transparent"!==o?o:"_default")}a=a.toRgbaString()}try{t.style[i]=a}catch(h){}}},e.fx.step[i]=function(t){t.colorInit||(t.start=l(t.elem,i),t.end=l(t.end),t.colorInit=!0),e.cssHooks[i].set(t.elem,t.start.transition(t.end,t.pos))}})},l.hook(r),e.cssHooks.borderColor={expand:function(e){var t={};return f(["Top","Right","Bottom","Left"],function(i,s){t["border"+s+"Color"]=e}),t}},n=e.Color.names={aqua:"#00ffff",black:"#000000",blue:"#0000ff",fuchsia:"#ff00ff",gray:"#808080",green:"#008000",lime:"#00ff00",maroon:"#800000",navy:"#000080",olive:"#808000",purple:"#800080",red:"#ff0000",silver:"#c0c0c0",teal:"#008080",white:"#ffffff",yellow:"#ffff00",transparent:[null,null,null,0],_default:"#ffffff"}}(b),function(){function t(t){var i,s,a=t.ownerDocument.defaultView?t.ownerDocument.defaultView.getComputedStyle(t,null):t.currentStyle,n={};if(a&&a.length&&a[0]&&a[a[0]])for(s=a.length;s--;)i=a[s],"string"==typeof a[i]&&(n[e.camelCase(i)]=a[i]);else for(i in a)"string"==typeof a[i]&&(n[i]=a[i]);return n}function i(t,i){var s,n,r={};for(s in i)n=i[s],t[s]!==n&&(a[s]||(e.fx.step[s]||!isNaN(parseFloat(n)))&&(r[s]=n));return r}var s=["add","remove","toggle"],a={border:1,borderBottom:1,borderColor:1,borderLeft:1,borderRight:1,borderTop:1,borderWidth:1,margin:1,padding:1};e.each(["borderLeftStyle","borderRightStyle","borderBottomStyle","borderTopStyle"],function(t,i){e.fx.step[i]=function(e){("none"!==e.end&&!e.setAttr||1===e.pos&&!e.setAttr)&&(b.style(e.elem,i,e.end),e.setAttr=!0)}}),e.fn.addBack||(e.fn.addBack=function(e){return this.add(null==e?this.prevObject:this.prevObject.filter(e))}),e.effects.animateClass=function(a,n,r,o){var h=e.speed(n,r,o);return this.queue(function(){var n,r=e(this),o=r.attr("class")||"",l=h.children?r.find("*").addBack():r;l=l.map(function(){var i=e(this);return{el:i,start:t(this)}}),n=function(){e.each(s,function(e,t){a[t]&&r[t+"Class"](a[t])})},n(),l=l.map(function(){return this.end=t(this.el[0]),this.diff=i(this.start,this.end),this}),r.attr("class",o),l=l.map(function(){var t=this,i=e.Deferred(),s=e.extend({},h,{queue:!1,complete:function(){i.resolve(t)}});return this.el.animate(this.diff,s),i.promise()}),e.when.apply(e,l.get()).done(function(){n(),e.each(arguments,function(){var t=this.el;e.each(this.diff,function(e){t.css(e,"")})}),h.complete.call(r[0])})})},e.fn.extend({addClass:function(t){return function(i,s,a,n){return s?e.effects.animateClass.call(this,{add:i},s,a,n):t.apply(this,arguments)}}(e.fn.addClass),removeClass:function(t){return function(i,s,a,n){return arguments.length>1?e.effects.animateClass.call(this,{remove:i},s,a,n):t.apply(this,arguments)}}(e.fn.removeClass),toggleClass:function(t){return function(i,s,a,n,r){return"boolean"==typeof s||void 0===s?a?e.effects.animateClass.call(this,s?{add:i}:{remove:i},a,n,r):t.apply(this,arguments):e.effects.animateClass.call(this,{toggle:i},s,a,n)}}(e.fn.toggleClass),switchClass:function(t,i,s,a,n){return e.effects.animateClass.call(this,{add:i,remove:t},s,a,n)}})}(),function(){function t(t,i,s,a){return e.isPlainObject(t)&&(i=t,t=t.effect),t={effect:t},null==i&&(i={}),e.isFunction(i)&&(a=i,s=null,i={}),("number"==typeof i||e.fx.speeds[i])&&(a=s,s=i,i={}),e.isFunction(s)&&(a=s,s=null),i&&e.extend(t,i),s=s||i.duration,t.duration=e.fx.off?0:"number"==typeof s?s:s in e.fx.speeds?e.fx.speeds[s]:e.fx.speeds._default,t.complete=a||i.complete,t}function i(t){return!t||"number"==typeof t||e.fx.speeds[t]?!0:"string"!=typeof t||e.effects.effect[t]?e.isFunction(t)?!0:"object"!=typeof t||t.effect?!1:!0:!0}e.extend(e.effects,{version:"1.11.4",save:function(e,t){for(var i=0;t.length>i;i++)null!==t[i]&&e.data(y+t[i],e[0].style[t[i]])},restore:function(e,t){var i,s;for(s=0;t.length>s;s++)null!==t[s]&&(i=e.data(y+t[s]),void 0===i&&(i=""),e.css(t[s],i))},setMode:function(e,t){return"toggle"===t&&(t=e.is(":hidden")?"show":"hide"),t},getBaseline:function(e,t){var i,s;switch(e[0]){case"top":i=0;break;case"middle":i=.5;break;case"bottom":i=1;break;default:i=e[0]/t.height}switch(e[1]){case"left":s=0;break;case"center":s=.5;break;case"right":s=1;break;default:s=e[1]/t.width}return{x:s,y:i}},createWrapper:function(t){if(t.parent().is(".ui-effects-wrapper"))return t.parent();var i={width:t.outerWidth(!0),height:t.outerHeight(!0),"float":t.css("float")},s=e("<div></div>").addClass("ui-effects-wrapper").css({fontSize:"100%",background:"transparent",border:"none",margin:0,padding:0}),a={width:t.width(),height:t.height()},n=document.activeElement;try{n.id}catch(r){n=document.body}return t.wrap(s),(t[0]===n||e.contains(t[0],n))&&e(n).focus(),s=t.parent(),"static"===t.css("position")?(s.css({position:"relative"}),t.css({position:"relative"})):(e.extend(i,{position:t.css("position"),zIndex:t.css("z-index")}),e.each(["top","left","bottom","right"],function(e,s){i[s]=t.css(s),isNaN(parseInt(i[s],10))&&(i[s]="auto")}),t.css({position:"relative",top:0,left:0,right:"auto",bottom:"auto"})),t.css(a),s.css(i).show()},removeWrapper:function(t){var i=document.activeElement;
return t.parent().is(".ui-effects-wrapper")&&(t.parent().replaceWith(t),(t[0]===i||e.contains(t[0],i))&&e(i).focus()),t},setTransition:function(t,i,s,a){return a=a||{},e.each(i,function(e,i){var n=t.cssUnit(i);n[0]>0&&(a[i]=n[0]*s+n[1])}),a}}),e.fn.extend({effect:function(){function i(t){function i(){e.isFunction(n)&&n.call(a[0]),e.isFunction(t)&&t()}var a=e(this),n=s.complete,o=s.mode;(a.is(":hidden")?"hide"===o:"show"===o)?(a[o](),i()):r.call(a[0],s,i)}var s=t.apply(this,arguments),a=s.mode,n=s.queue,r=e.effects.effect[s.effect];return e.fx.off||!r?a?this[a](s.duration,s.complete):this.each(function(){s.complete&&s.complete.call(this)}):n===!1?this.each(i):this.queue(n||"fx",i)},show:function(e){return function(s){if(i(s))return e.apply(this,arguments);var a=t.apply(this,arguments);return a.mode="show",this.effect.call(this,a)}}(e.fn.show),hide:function(e){return function(s){if(i(s))return e.apply(this,arguments);var a=t.apply(this,arguments);return a.mode="hide",this.effect.call(this,a)}}(e.fn.hide),toggle:function(e){return function(s){if(i(s)||"boolean"==typeof s)return e.apply(this,arguments);var a=t.apply(this,arguments);return a.mode="toggle",this.effect.call(this,a)}}(e.fn.toggle),cssUnit:function(t){var i=this.css(t),s=[];return e.each(["em","px","%","pt"],function(e,t){i.indexOf(t)>0&&(s=[parseFloat(i),t])}),s}})}(),function(){var t={};e.each(["Quad","Cubic","Quart","Quint","Expo"],function(e,i){t[i]=function(t){return Math.pow(t,e+2)}}),e.extend(t,{Sine:function(e){return 1-Math.cos(e*Math.PI/2)},Circ:function(e){return 1-Math.sqrt(1-e*e)},Elastic:function(e){return 0===e||1===e?e:-Math.pow(2,8*(e-1))*Math.sin((80*(e-1)-7.5)*Math.PI/15)},Back:function(e){return e*e*(3*e-2)},Bounce:function(e){for(var t,i=4;((t=Math.pow(2,--i))-1)/11>e;);return 1/Math.pow(4,3-i)-7.5625*Math.pow((3*t-2)/22-e,2)}}),e.each(t,function(t,i){e.easing["easeIn"+t]=i,e.easing["easeOut"+t]=function(e){return 1-i(1-e)},e.easing["easeInOut"+t]=function(e){return.5>e?i(2*e)/2:1-i(-2*e+2)/2}})}(),e.effects,e.effects.effect.blind=function(t,i){var s,a,n,r=e(this),o=/up|down|vertical/,h=/up|left|vertical|horizontal/,l=["position","top","bottom","left","right","height","width"],u=e.effects.setMode(r,t.mode||"hide"),d=t.direction||"up",c=o.test(d),p=c?"height":"width",f=c?"top":"left",m=h.test(d),g={},v="show"===u;r.parent().is(".ui-effects-wrapper")?e.effects.save(r.parent(),l):e.effects.save(r,l),r.show(),s=e.effects.createWrapper(r).css({overflow:"hidden"}),a=s[p](),n=parseFloat(s.css(f))||0,g[p]=v?a:0,m||(r.css(c?"bottom":"right",0).css(c?"top":"left","auto").css({position:"absolute"}),g[f]=v?n:a+n),v&&(s.css(p,0),m||s.css(f,n+a)),s.animate(g,{duration:t.duration,easing:t.easing,queue:!1,complete:function(){"hide"===u&&r.hide(),e.effects.restore(r,l),e.effects.removeWrapper(r),i()}})},e.effects.effect.bounce=function(t,i){var s,a,n,r=e(this),o=["position","top","bottom","left","right","height","width"],h=e.effects.setMode(r,t.mode||"effect"),l="hide"===h,u="show"===h,d=t.direction||"up",c=t.distance,p=t.times||5,f=2*p+(u||l?1:0),m=t.duration/f,g=t.easing,v="up"===d||"down"===d?"top":"left",y="up"===d||"left"===d,b=r.queue(),_=b.length;for((u||l)&&o.push("opacity"),e.effects.save(r,o),r.show(),e.effects.createWrapper(r),c||(c=r["top"===v?"outerHeight":"outerWidth"]()/3),u&&(n={opacity:1},n[v]=0,r.css("opacity",0).css(v,y?2*-c:2*c).animate(n,m,g)),l&&(c/=Math.pow(2,p-1)),n={},n[v]=0,s=0;p>s;s++)a={},a[v]=(y?"-=":"+=")+c,r.animate(a,m,g).animate(n,m,g),c=l?2*c:c/2;l&&(a={opacity:0},a[v]=(y?"-=":"+=")+c,r.animate(a,m,g)),r.queue(function(){l&&r.hide(),e.effects.restore(r,o),e.effects.removeWrapper(r),i()}),_>1&&b.splice.apply(b,[1,0].concat(b.splice(_,f+1))),r.dequeue()},e.effects.effect.clip=function(t,i){var s,a,n,r=e(this),o=["position","top","bottom","left","right","height","width"],h=e.effects.setMode(r,t.mode||"hide"),l="show"===h,u=t.direction||"vertical",d="vertical"===u,c=d?"height":"width",p=d?"top":"left",f={};e.effects.save(r,o),r.show(),s=e.effects.createWrapper(r).css({overflow:"hidden"}),a="IMG"===r[0].tagName?s:r,n=a[c](),l&&(a.css(c,0),a.css(p,n/2)),f[c]=l?n:0,f[p]=l?0:n/2,a.animate(f,{queue:!1,duration:t.duration,easing:t.easing,complete:function(){l||r.hide(),e.effects.restore(r,o),e.effects.removeWrapper(r),i()}})},e.effects.effect.drop=function(t,i){var s,a=e(this),n=["position","top","bottom","left","right","opacity","height","width"],r=e.effects.setMode(a,t.mode||"hide"),o="show"===r,h=t.direction||"left",l="up"===h||"down"===h?"top":"left",u="up"===h||"left"===h?"pos":"neg",d={opacity:o?1:0};e.effects.save(a,n),a.show(),e.effects.createWrapper(a),s=t.distance||a["top"===l?"outerHeight":"outerWidth"](!0)/2,o&&a.css("opacity",0).css(l,"pos"===u?-s:s),d[l]=(o?"pos"===u?"+=":"-=":"pos"===u?"-=":"+=")+s,a.animate(d,{queue:!1,duration:t.duration,easing:t.easing,complete:function(){"hide"===r&&a.hide(),e.effects.restore(a,n),e.effects.removeWrapper(a),i()}})},e.effects.effect.explode=function(t,i){function s(){b.push(this),b.length===d*c&&a()}function a(){p.css({visibility:"visible"}),e(b).remove(),m||p.hide(),i()}var n,r,o,h,l,u,d=t.pieces?Math.round(Math.sqrt(t.pieces)):3,c=d,p=e(this),f=e.effects.setMode(p,t.mode||"hide"),m="show"===f,g=p.show().css("visibility","hidden").offset(),v=Math.ceil(p.outerWidth()/c),y=Math.ceil(p.outerHeight()/d),b=[];for(n=0;d>n;n++)for(h=g.top+n*y,u=n-(d-1)/2,r=0;c>r;r++)o=g.left+r*v,l=r-(c-1)/2,p.clone().appendTo("body").wrap("<div></div>").css({position:"absolute",visibility:"visible",left:-r*v,top:-n*y}).parent().addClass("ui-effects-explode").css({position:"absolute",overflow:"hidden",width:v,height:y,left:o+(m?l*v:0),top:h+(m?u*y:0),opacity:m?0:1}).animate({left:o+(m?0:l*v),top:h+(m?0:u*y),opacity:m?1:0},t.duration||500,t.easing,s)},e.effects.effect.fade=function(t,i){var s=e(this),a=e.effects.setMode(s,t.mode||"toggle");s.animate({opacity:a},{queue:!1,duration:t.duration,easing:t.easing,complete:i})},e.effects.effect.fold=function(t,i){var s,a,n=e(this),r=["position","top","bottom","left","right","height","width"],o=e.effects.setMode(n,t.mode||"hide"),h="show"===o,l="hide"===o,u=t.size||15,d=/([0-9]+)%/.exec(u),c=!!t.horizFirst,p=h!==c,f=p?["width","height"]:["height","width"],m=t.duration/2,g={},v={};e.effects.save(n,r),n.show(),s=e.effects.createWrapper(n).css({overflow:"hidden"}),a=p?[s.width(),s.height()]:[s.height(),s.width()],d&&(u=parseInt(d[1],10)/100*a[l?0:1]),h&&s.css(c?{height:0,width:u}:{height:u,width:0}),g[f[0]]=h?a[0]:u,v[f[1]]=h?a[1]:0,s.animate(g,m,t.easing).animate(v,m,t.easing,function(){l&&n.hide(),e.effects.restore(n,r),e.effects.removeWrapper(n),i()})},e.effects.effect.highlight=function(t,i){var s=e(this),a=["backgroundImage","backgroundColor","opacity"],n=e.effects.setMode(s,t.mode||"show"),r={backgroundColor:s.css("backgroundColor")};"hide"===n&&(r.opacity=0),e.effects.save(s,a),s.show().css({backgroundImage:"none",backgroundColor:t.color||"#ffff99"}).animate(r,{queue:!1,duration:t.duration,easing:t.easing,complete:function(){"hide"===n&&s.hide(),e.effects.restore(s,a),i()}})},e.effects.effect.size=function(t,i){var s,a,n,r=e(this),o=["position","top","bottom","left","right","width","height","overflow","opacity"],h=["position","top","bottom","left","right","overflow","opacity"],l=["width","height","overflow"],u=["fontSize"],d=["borderTopWidth","borderBottomWidth","paddingTop","paddingBottom"],c=["borderLeftWidth","borderRightWidth","paddingLeft","paddingRight"],p=e.effects.setMode(r,t.mode||"effect"),f=t.restore||"effect"!==p,m=t.scale||"both",g=t.origin||["middle","center"],v=r.css("position"),y=f?o:h,b={height:0,width:0,outerHeight:0,outerWidth:0};"show"===p&&r.show(),s={height:r.height(),width:r.width(),outerHeight:r.outerHeight(),outerWidth:r.outerWidth()},"toggle"===t.mode&&"show"===p?(r.from=t.to||b,r.to=t.from||s):(r.from=t.from||("show"===p?b:s),r.to=t.to||("hide"===p?b:s)),n={from:{y:r.from.height/s.height,x:r.from.width/s.width},to:{y:r.to.height/s.height,x:r.to.width/s.width}},("box"===m||"both"===m)&&(n.from.y!==n.to.y&&(y=y.concat(d),r.from=e.effects.setTransition(r,d,n.from.y,r.from),r.to=e.effects.setTransition(r,d,n.to.y,r.to)),n.from.x!==n.to.x&&(y=y.concat(c),r.from=e.effects.setTransition(r,c,n.from.x,r.from),r.to=e.effects.setTransition(r,c,n.to.x,r.to))),("content"===m||"both"===m)&&n.from.y!==n.to.y&&(y=y.concat(u).concat(l),r.from=e.effects.setTransition(r,u,n.from.y,r.from),r.to=e.effects.setTransition(r,u,n.to.y,r.to)),e.effects.save(r,y),r.show(),e.effects.createWrapper(r),r.css("overflow","hidden").css(r.from),g&&(a=e.effects.getBaseline(g,s),r.from.top=(s.outerHeight-r.outerHeight())*a.y,r.from.left=(s.outerWidth-r.outerWidth())*a.x,r.to.top=(s.outerHeight-r.to.outerHeight)*a.y,r.to.left=(s.outerWidth-r.to.outerWidth)*a.x),r.css(r.from),("content"===m||"both"===m)&&(d=d.concat(["marginTop","marginBottom"]).concat(u),c=c.concat(["marginLeft","marginRight"]),l=o.concat(d).concat(c),r.find("*[width]").each(function(){var i=e(this),s={height:i.height(),width:i.width(),outerHeight:i.outerHeight(),outerWidth:i.outerWidth()};f&&e.effects.save(i,l),i.from={height:s.height*n.from.y,width:s.width*n.from.x,outerHeight:s.outerHeight*n.from.y,outerWidth:s.outerWidth*n.from.x},i.to={height:s.height*n.to.y,width:s.width*n.to.x,outerHeight:s.height*n.to.y,outerWidth:s.width*n.to.x},n.from.y!==n.to.y&&(i.from=e.effects.setTransition(i,d,n.from.y,i.from),i.to=e.effects.setTransition(i,d,n.to.y,i.to)),n.from.x!==n.to.x&&(i.from=e.effects.setTransition(i,c,n.from.x,i.from),i.to=e.effects.setTransition(i,c,n.to.x,i.to)),i.css(i.from),i.animate(i.to,t.duration,t.easing,function(){f&&e.effects.restore(i,l)})})),r.animate(r.to,{queue:!1,duration:t.duration,easing:t.easing,complete:function(){0===r.to.opacity&&r.css("opacity",r.from.opacity),"hide"===p&&r.hide(),e.effects.restore(r,y),f||("static"===v?r.css({position:"relative",top:r.to.top,left:r.to.left}):e.each(["top","left"],function(e,t){r.css(t,function(t,i){var s=parseInt(i,10),a=e?r.to.left:r.to.top;return"auto"===i?a+"px":s+a+"px"})})),e.effects.removeWrapper(r),i()}})},e.effects.effect.scale=function(t,i){var s=e(this),a=e.extend(!0,{},t),n=e.effects.setMode(s,t.mode||"effect"),r=parseInt(t.percent,10)||(0===parseInt(t.percent,10)?0:"hide"===n?0:100),o=t.direction||"both",h=t.origin,l={height:s.height(),width:s.width(),outerHeight:s.outerHeight(),outerWidth:s.outerWidth()},u={y:"horizontal"!==o?r/100:1,x:"vertical"!==o?r/100:1};a.effect="size",a.queue=!1,a.complete=i,"effect"!==n&&(a.origin=h||["middle","center"],a.restore=!0),a.from=t.from||("show"===n?{height:0,width:0,outerHeight:0,outerWidth:0}:l),a.to={height:l.height*u.y,width:l.width*u.x,outerHeight:l.outerHeight*u.y,outerWidth:l.outerWidth*u.x},a.fade&&("show"===n&&(a.from.opacity=0,a.to.opacity=1),"hide"===n&&(a.from.opacity=1,a.to.opacity=0)),s.effect(a)},e.effects.effect.puff=function(t,i){var s=e(this),a=e.effects.setMode(s,t.mode||"hide"),n="hide"===a,r=parseInt(t.percent,10)||150,o=r/100,h={height:s.height(),width:s.width(),outerHeight:s.outerHeight(),outerWidth:s.outerWidth()};e.extend(t,{effect:"scale",queue:!1,fade:!0,mode:a,complete:i,percent:n?r:100,from:n?h:{height:h.height*o,width:h.width*o,outerHeight:h.outerHeight*o,outerWidth:h.outerWidth*o}}),s.effect(t)},e.effects.effect.pulsate=function(t,i){var s,a=e(this),n=e.effects.setMode(a,t.mode||"show"),r="show"===n,o="hide"===n,h=r||"hide"===n,l=2*(t.times||5)+(h?1:0),u=t.duration/l,d=0,c=a.queue(),p=c.length;for((r||!a.is(":visible"))&&(a.css("opacity",0).show(),d=1),s=1;l>s;s++)a.animate({opacity:d},u,t.easing),d=1-d;a.animate({opacity:d},u,t.easing),a.queue(function(){o&&a.hide(),i()}),p>1&&c.splice.apply(c,[1,0].concat(c.splice(p,l+1))),a.dequeue()},e.effects.effect.shake=function(t,i){var s,a=e(this),n=["position","top","bottom","left","right","height","width"],r=e.effects.setMode(a,t.mode||"effect"),o=t.direction||"left",h=t.distance||20,l=t.times||3,u=2*l+1,d=Math.round(t.duration/u),c="up"===o||"down"===o?"top":"left",p="up"===o||"left"===o,f={},m={},g={},v=a.queue(),y=v.length;for(e.effects.save(a,n),a.show(),e.effects.createWrapper(a),f[c]=(p?"-=":"+=")+h,m[c]=(p?"+=":"-=")+2*h,g[c]=(p?"-=":"+=")+2*h,a.animate(f,d,t.easing),s=1;l>s;s++)a.animate(m,d,t.easing).animate(g,d,t.easing);a.animate(m,d,t.easing).animate(f,d/2,t.easing).queue(function(){"hide"===r&&a.hide(),e.effects.restore(a,n),e.effects.removeWrapper(a),i()}),y>1&&v.splice.apply(v,[1,0].concat(v.splice(y,u+1))),a.dequeue()},e.effects.effect.slide=function(t,i){var s,a=e(this),n=["position","top","bottom","left","right","width","height"],r=e.effects.setMode(a,t.mode||"show"),o="show"===r,h=t.direction||"left",l="up"===h||"down"===h?"top":"left",u="up"===h||"left"===h,d={};e.effects.save(a,n),a.show(),s=t.distance||a["top"===l?"outerHeight":"outerWidth"](!0),e.effects.createWrapper(a).css({overflow:"hidden"}),o&&a.css(l,u?isNaN(s)?"-"+s:-s:s),d[l]=(o?u?"+=":"-=":u?"-=":"+=")+s,a.animate(d,{queue:!1,duration:t.duration,easing:t.easing,complete:function(){"hide"===r&&a.hide(),e.effects.restore(a,n),e.effects.removeWrapper(a),i()}})},e.effects.effect.transfer=function(t,i){var s=e(this),a=e(t.to),n="fixed"===a.css("position"),r=e("body"),o=n?r.scrollTop():0,h=n?r.scrollLeft():0,l=a.offset(),u={top:l.top-o,left:l.left-h,height:a.innerHeight(),width:a.innerWidth()},d=s.offset(),c=e("<div class='ui-effects-transfer'></div>").appendTo(document.body).addClass(t.className).css({top:d.top-o,left:d.left-h,height:s.innerHeight(),width:s.innerWidth(),position:n?"fixed":"absolute"}).animate(u,t.duration,t.easing,function(){c.remove(),i()})}});;
/* NUGET: BEGIN LICENSE TEXT
 *
 * Microsoft grants you the right to use these script files for the sole
 * purpose of either: (i) interacting through your browser with the Microsoft
 * website or online service, subject to the applicable licensing or use
 * terms; or (ii) using the files as included with a Microsoft product subject
 * to that product's license terms. Microsoft reserves all other rights to the
 * files not expressly granted by Microsoft, whether by implication, estoppel
 * or otherwise. Insofar as a script file is dual licensed under GPL,
 * Microsoft neither took the code under GPL nor distributes it thereunder but
 * under the terms set out in this paragraph. All notices and licenses
 * below are for informational purposes only.
 *
 * NUGET: END LICENSE TEXT */
/*
** Unobtrusive Ajax support library for jQuery
** Copyright (C) Microsoft Corporation. All rights reserved.
*/
(function(a){var b="unobtrusiveAjaxClick",d="unobtrusiveAjaxClickTarget",h="unobtrusiveValidation";function c(d,b){var a=window,c=(d||"").split(".");while(a&&c.length)a=a[c.shift()];if(typeof a==="function")return a;b.push(d);return Function.constructor.apply(null,b)}function e(a){return a==="GET"||a==="POST"}function g(b,a){!e(a)&&b.setRequestHeader("X-HTTP-Method-Override",a)}function i(c,b,e){var d;if(e.indexOf("application/x-javascript")!==-1)return;d=(c.getAttribute("data-ajax-mode")||"").toUpperCase();a(c.getAttribute("data-ajax-update")).each(function(f,c){var e;switch(d){case"BEFORE":e=c.firstChild;a("<div />").html(b).contents().each(function(){c.insertBefore(this,e)});break;case"AFTER":a("<div />").html(b).contents().each(function(){c.appendChild(this)});break;case"REPLACE-WITH":a(c).replaceWith(b);break;default:a(c).html(b)}})}function f(b,d){var j,k,f,h;j=b.getAttribute("data-ajax-confirm");if(j&&!window.confirm(j))return;k=a(b.getAttribute("data-ajax-loading"));h=parseInt(b.getAttribute("data-ajax-loading-duration"),10)||0;a.extend(d,{type:b.getAttribute("data-ajax-method")||undefined,url:b.getAttribute("data-ajax-url")||undefined,cache:!!b.getAttribute("data-ajax-cache"),beforeSend:function(d){var a;g(d,f);a=c(b.getAttribute("data-ajax-begin"),["xhr"]).apply(b,arguments);a!==false&&k.show(h);return a},complete:function(){k.hide(h);c(b.getAttribute("data-ajax-complete"),["xhr","status"]).apply(b,arguments)},success:function(a,e,d){i(b,a,d.getResponseHeader("Content-Type")||"text/html");c(b.getAttribute("data-ajax-success"),["data","status","xhr"]).apply(b,arguments)},error:function(){c(b.getAttribute("data-ajax-failure"),["xhr","status","error"]).apply(b,arguments)}});d.data.push({name:"X-Requested-With",value:"XMLHttpRequest"});f=d.type.toUpperCase();if(!e(f)){d.type="POST";d.data.push({name:"X-HTTP-Method-Override",value:f})}a.ajax(d)}function j(c){var b=a(c).data(h);return!b||!b.validate||b.validate()}a(document).on("click","a[data-ajax=true]",function(a){a.preventDefault();f(this,{url:this.href,type:"GET",data:[]})});a(document).on("click","form[data-ajax=true] input[type=image]",function(c){var g=c.target.name,e=a(c.target),f=a(e.parents("form")[0]),d=e.offset();f.data(b,[{name:g+".x",value:Math.round(c.pageX-d.left)},{name:g+".y",value:Math.round(c.pageY-d.top)}]);setTimeout(function(){f.removeData(b)},0)});a(document).on("click","form[data-ajax=true] :submit",function(e){var g=e.currentTarget.name,f=a(e.target),c=a(f.parents("form")[0]);c.data(b,g?[{name:g,value:e.currentTarget.value}]:[]);c.data(d,f);setTimeout(function(){c.removeData(b);c.removeData(d)},0)});a(document).on("submit","form[data-ajax=true]",function(h){var e=a(this).data(b)||[],c=a(this).data(d),g=c&&c.hasClass("cancel");h.preventDefault();if(!g&&!j(this))return;f(this,{url:this.action,type:this.method||"GET",data:e.concat(a(this).serializeArray())})})})(jQuery);;
/*! jQuery Validation Plugin - v1.13.0 - 7/1/2014
 * http://jqueryvalidation.org/
 * Copyright (c) 2014 Jörn Zaefferer; Licensed MIT */
!function(a){"function"==typeof define&&define.amd?define(["jquery"],a):a(jQuery)}(function(a){a.extend(a.fn,{validate:function(b){if(!this.length)return void(b&&b.debug&&window.console&&console.warn("Nothing selected, can't validate, returning nothing."));var c=a.data(this[0],"validator");return c?c:(this.attr("novalidate","novalidate"),c=new a.validator(b,this[0]),a.data(this[0],"validator",c),c.settings.onsubmit&&(this.validateDelegate(":submit","click",function(b){c.settings.submitHandler&&(c.submitButton=b.target),a(b.target).hasClass("cancel")&&(c.cancelSubmit=!0),void 0!==a(b.target).attr("formnovalidate")&&(c.cancelSubmit=!0)}),this.submit(function(b){function d(){var d;return c.settings.submitHandler?(c.submitButton&&(d=a("<input type='hidden'/>").attr("name",c.submitButton.name).val(a(c.submitButton).val()).appendTo(c.currentForm)),c.settings.submitHandler.call(c,c.currentForm,b),c.submitButton&&d.remove(),!1):!0}return c.settings.debug&&b.preventDefault(),c.cancelSubmit?(c.cancelSubmit=!1,d()):c.form()?c.pendingRequest?(c.formSubmitted=!0,!1):d():(c.focusInvalid(),!1)})),c)},valid:function(){var b,c;return a(this[0]).is("form")?b=this.validate().form():(b=!0,c=a(this[0].form).validate(),this.each(function(){b=c.element(this)&&b})),b},removeAttrs:function(b){var c={},d=this;return a.each(b.split(/\s/),function(a,b){c[b]=d.attr(b),d.removeAttr(b)}),c},rules:function(b,c){var d,e,f,g,h,i,j=this[0];if(b)switch(d=a.data(j.form,"validator").settings,e=d.rules,f=a.validator.staticRules(j),b){case"add":a.extend(f,a.validator.normalizeRule(c)),delete f.messages,e[j.name]=f,c.messages&&(d.messages[j.name]=a.extend(d.messages[j.name],c.messages));break;case"remove":return c?(i={},a.each(c.split(/\s/),function(b,c){i[c]=f[c],delete f[c],"required"===c&&a(j).removeAttr("aria-required")}),i):(delete e[j.name],f)}return g=a.validator.normalizeRules(a.extend({},a.validator.classRules(j),a.validator.attributeRules(j),a.validator.dataRules(j),a.validator.staticRules(j)),j),g.required&&(h=g.required,delete g.required,g=a.extend({required:h},g),a(j).attr("aria-required","true")),g.remote&&(h=g.remote,delete g.remote,g=a.extend(g,{remote:h})),g}}),a.extend(a.expr[":"],{blank:function(b){return!a.trim(""+a(b).val())},filled:function(b){return!!a.trim(""+a(b).val())},unchecked:function(b){return!a(b).prop("checked")}}),a.validator=function(b,c){this.settings=a.extend(!0,{},a.validator.defaults,b),this.currentForm=c,this.init()},a.validator.format=function(b,c){return 1===arguments.length?function(){var c=a.makeArray(arguments);return c.unshift(b),a.validator.format.apply(this,c)}:(arguments.length>2&&c.constructor!==Array&&(c=a.makeArray(arguments).slice(1)),c.constructor!==Array&&(c=[c]),a.each(c,function(a,c){b=b.replace(new RegExp("\\{"+a+"\\}","g"),function(){return c})}),b)},a.extend(a.validator,{defaults:{messages:{},groups:{},rules:{},errorClass:"error",validClass:"valid",errorElement:"label",focusInvalid:!0,errorContainer:a([]),errorLabelContainer:a([]),onsubmit:!0,ignore:":hidden",ignoreTitle:!1,onfocusin:function(a){this.lastActive=a,this.settings.focusCleanup&&!this.blockFocusCleanup&&(this.settings.unhighlight&&this.settings.unhighlight.call(this,a,this.settings.errorClass,this.settings.validClass),this.hideThese(this.errorsFor(a)))},onfocusout:function(a){this.checkable(a)||!(a.name in this.submitted)&&this.optional(a)||this.element(a)},onkeyup:function(a,b){(9!==b.which||""!==this.elementValue(a))&&(a.name in this.submitted||a===this.lastElement)&&this.element(a)},onclick:function(a){a.name in this.submitted?this.element(a):a.parentNode.name in this.submitted&&this.element(a.parentNode)},highlight:function(b,c,d){"radio"===b.type?this.findByName(b.name).addClass(c).removeClass(d):a(b).addClass(c).removeClass(d)},unhighlight:function(b,c,d){"radio"===b.type?this.findByName(b.name).removeClass(c).addClass(d):a(b).removeClass(c).addClass(d)}},setDefaults:function(b){a.extend(a.validator.defaults,b)},messages:{required:"This field is required.",remote:"Please fix this field.",email:"Please enter a valid email address.",url:"Please enter a valid URL.",date:"Please enter a valid date.",dateISO:"Please enter a valid date ( ISO ).",number:"Please enter a valid number.",digits:"Please enter only digits.",creditcard:"Please enter a valid credit card number.",equalTo:"Please enter the same value again.",maxlength:a.validator.format("Please enter no more than {0} characters."),minlength:a.validator.format("Please enter at least {0} characters."),rangelength:a.validator.format("Please enter a value between {0} and {1} characters long."),range:a.validator.format("Please enter a value between {0} and {1}."),max:a.validator.format("Please enter a value less than or equal to {0}."),min:a.validator.format("Please enter a value greater than or equal to {0}.")},autoCreateRanges:!1,prototype:{init:function(){function b(b){var c=a.data(this[0].form,"validator"),d="on"+b.type.replace(/^validate/,""),e=c.settings;e[d]&&!this.is(e.ignore)&&e[d].call(c,this[0],b)}this.labelContainer=a(this.settings.errorLabelContainer),this.errorContext=this.labelContainer.length&&this.labelContainer||a(this.currentForm),this.containers=a(this.settings.errorContainer).add(this.settings.errorLabelContainer),this.submitted={},this.valueCache={},this.pendingRequest=0,this.pending={},this.invalid={},this.reset();var c,d=this.groups={};a.each(this.settings.groups,function(b,c){"string"==typeof c&&(c=c.split(/\s/)),a.each(c,function(a,c){d[c]=b})}),c=this.settings.rules,a.each(c,function(b,d){c[b]=a.validator.normalizeRule(d)}),a(this.currentForm).validateDelegate(":text, [type='password'], [type='file'], select, textarea, [type='number'], [type='search'] ,[type='tel'], [type='url'], [type='email'], [type='datetime'], [type='date'], [type='month'], [type='week'], [type='time'], [type='datetime-local'], [type='range'], [type='color'], [type='radio'], [type='checkbox']","focusin focusout keyup",b).validateDelegate("select, option, [type='radio'], [type='checkbox']","click",b),this.settings.invalidHandler&&a(this.currentForm).bind("invalid-form.validate",this.settings.invalidHandler),a(this.currentForm).find("[required], [data-rule-required], .required").attr("aria-required","true")},form:function(){return this.checkForm(),a.extend(this.submitted,this.errorMap),this.invalid=a.extend({},this.errorMap),this.valid()||a(this.currentForm).triggerHandler("invalid-form",[this]),this.showErrors(),this.valid()},checkForm:function(){this.prepareForm();for(var a=0,b=this.currentElements=this.elements();b[a];a++)this.check(b[a]);return this.valid()},element:function(b){var c=this.clean(b),d=this.validationTargetFor(c),e=!0;return this.lastElement=d,void 0===d?delete this.invalid[c.name]:(this.prepareElement(d),this.currentElements=a(d),e=this.check(d)!==!1,e?delete this.invalid[d.name]:this.invalid[d.name]=!0),a(b).attr("aria-invalid",!e),this.numberOfInvalids()||(this.toHide=this.toHide.add(this.containers)),this.showErrors(),e},showErrors:function(b){if(b){a.extend(this.errorMap,b),this.errorList=[];for(var c in b)this.errorList.push({message:b[c],element:this.findByName(c)[0]});this.successList=a.grep(this.successList,function(a){return!(a.name in b)})}this.settings.showErrors?this.settings.showErrors.call(this,this.errorMap,this.errorList):this.defaultShowErrors()},resetForm:function(){a.fn.resetForm&&a(this.currentForm).resetForm(),this.submitted={},this.lastElement=null,this.prepareForm(),this.hideErrors(),this.elements().removeClass(this.settings.errorClass).removeData("previousValue").removeAttr("aria-invalid")},numberOfInvalids:function(){return this.objectLength(this.invalid)},objectLength:function(a){var b,c=0;for(b in a)c++;return c},hideErrors:function(){this.hideThese(this.toHide)},hideThese:function(a){a.not(this.containers).text(""),this.addWrapper(a).hide()},valid:function(){return 0===this.size()},size:function(){return this.errorList.length},focusInvalid:function(){if(this.settings.focusInvalid)try{a(this.findLastActive()||this.errorList.length&&this.errorList[0].element||[]).filter(":visible").focus().trigger("focusin")}catch(b){}},findLastActive:function(){var b=this.lastActive;return b&&1===a.grep(this.errorList,function(a){return a.element.name===b.name}).length&&b},elements:function(){var b=this,c={};return a(this.currentForm).find("input, select, textarea").not(":submit, :reset, :image, [disabled]").not(this.settings.ignore).filter(function(){return!this.name&&b.settings.debug&&window.console&&console.error("%o has no name assigned",this),this.name in c||!b.objectLength(a(this).rules())?!1:(c[this.name]=!0,!0)})},clean:function(b){return a(b)[0]},errors:function(){var b=this.settings.errorClass.split(" ").join(".");return a(this.settings.errorElement+"."+b,this.errorContext)},reset:function(){this.successList=[],this.errorList=[],this.errorMap={},this.toShow=a([]),this.toHide=a([]),this.currentElements=a([])},prepareForm:function(){this.reset(),this.toHide=this.errors().add(this.containers)},prepareElement:function(a){this.reset(),this.toHide=this.errorsFor(a)},elementValue:function(b){var c,d=a(b),e=b.type;return"radio"===e||"checkbox"===e?a("input[name='"+b.name+"']:checked").val():"number"===e&&"undefined"!=typeof b.validity?b.validity.badInput?!1:d.val():(c=d.val(),"string"==typeof c?c.replace(/\r/g,""):c)},check:function(b){b=this.validationTargetFor(this.clean(b));var c,d,e,f=a(b).rules(),g=a.map(f,function(a,b){return b}).length,h=!1,i=this.elementValue(b);for(d in f){e={method:d,parameters:f[d]};try{if(c=a.validator.methods[d].call(this,i,b,e.parameters),"dependency-mismatch"===c&&1===g){h=!0;continue}if(h=!1,"pending"===c)return void(this.toHide=this.toHide.not(this.errorsFor(b)));if(!c)return this.formatAndAdd(b,e),!1}catch(j){throw this.settings.debug&&window.console&&console.log("Exception occurred when checking element "+b.id+", check the '"+e.method+"' method.",j),j}}if(!h)return this.objectLength(f)&&this.successList.push(b),!0},customDataMessage:function(b,c){return a(b).data("msg"+c.charAt(0).toUpperCase()+c.substring(1).toLowerCase())||a(b).data("msg")},customMessage:function(a,b){var c=this.settings.messages[a];return c&&(c.constructor===String?c:c[b])},findDefined:function(){for(var a=0;a<arguments.length;a++)if(void 0!==arguments[a])return arguments[a];return void 0},defaultMessage:function(b,c){return this.findDefined(this.customMessage(b.name,c),this.customDataMessage(b,c),!this.settings.ignoreTitle&&b.title||void 0,a.validator.messages[c],"<strong>Warning: No message defined for "+b.name+"</strong>")},formatAndAdd:function(b,c){var d=this.defaultMessage(b,c.method),e=/\$?\{(\d+)\}/g;"function"==typeof d?d=d.call(this,c.parameters,b):e.test(d)&&(d=a.validator.format(d.replace(e,"{$1}"),c.parameters)),this.errorList.push({message:d,element:b,method:c.method}),this.errorMap[b.name]=d,this.submitted[b.name]=d},addWrapper:function(a){return this.settings.wrapper&&(a=a.add(a.parent(this.settings.wrapper))),a},defaultShowErrors:function(){var a,b,c;for(a=0;this.errorList[a];a++)c=this.errorList[a],this.settings.highlight&&this.settings.highlight.call(this,c.element,this.settings.errorClass,this.settings.validClass),this.showLabel(c.element,c.message);if(this.errorList.length&&(this.toShow=this.toShow.add(this.containers)),this.settings.success)for(a=0;this.successList[a];a++)this.showLabel(this.successList[a]);if(this.settings.unhighlight)for(a=0,b=this.validElements();b[a];a++)this.settings.unhighlight.call(this,b[a],this.settings.errorClass,this.settings.validClass);this.toHide=this.toHide.not(this.toShow),this.hideErrors(),this.addWrapper(this.toShow).show()},validElements:function(){return this.currentElements.not(this.invalidElements())},invalidElements:function(){return a(this.errorList).map(function(){return this.element})},showLabel:function(b,c){var d,e,f,g=this.errorsFor(b),h=this.idOrName(b),i=a(b).attr("aria-describedby");g.length?(g.removeClass(this.settings.validClass).addClass(this.settings.errorClass),g.html(c)):(g=a("<"+this.settings.errorElement+">").attr("id",h+"-error").addClass(this.settings.errorClass).html(c||""),d=g,this.settings.wrapper&&(d=g.hide().show().wrap("<"+this.settings.wrapper+"/>").parent()),this.labelContainer.length?this.labelContainer.append(d):this.settings.errorPlacement?this.settings.errorPlacement(d,a(b)):d.insertAfter(b),g.is("label")?g.attr("for",h):0===g.parents("label[for='"+h+"']").length&&(f=g.attr("id"),i?i.match(new RegExp("\b"+f+"\b"))||(i+=" "+f):i=f,a(b).attr("aria-describedby",i),e=this.groups[b.name],e&&a.each(this.groups,function(b,c){c===e&&a("[name='"+b+"']",this.currentForm).attr("aria-describedby",g.attr("id"))}))),!c&&this.settings.success&&(g.text(""),"string"==typeof this.settings.success?g.addClass(this.settings.success):this.settings.success(g,b)),this.toShow=this.toShow.add(g)},errorsFor:function(b){var c=this.idOrName(b),d=a(b).attr("aria-describedby"),e="label[for='"+c+"'], label[for='"+c+"'] *";return d&&(e=e+", #"+d.replace(/\s+/g,", #")),this.errors().filter(e)},idOrName:function(a){return this.groups[a.name]||(this.checkable(a)?a.name:a.id||a.name)},validationTargetFor:function(a){return this.checkable(a)&&(a=this.findByName(a.name).not(this.settings.ignore)[0]),a},checkable:function(a){return/radio|checkbox/i.test(a.type)},findByName:function(b){return a(this.currentForm).find("[name='"+b+"']")},getLength:function(b,c){switch(c.nodeName.toLowerCase()){case"select":return a("option:selected",c).length;case"input":if(this.checkable(c))return this.findByName(c.name).filter(":checked").length}return b.length},depend:function(a,b){return this.dependTypes[typeof a]?this.dependTypes[typeof a](a,b):!0},dependTypes:{"boolean":function(a){return a},string:function(b,c){return!!a(b,c.form).length},"function":function(a,b){return a(b)}},optional:function(b){var c=this.elementValue(b);return!a.validator.methods.required.call(this,c,b)&&"dependency-mismatch"},startRequest:function(a){this.pending[a.name]||(this.pendingRequest++,this.pending[a.name]=!0)},stopRequest:function(b,c){this.pendingRequest--,this.pendingRequest<0&&(this.pendingRequest=0),delete this.pending[b.name],c&&0===this.pendingRequest&&this.formSubmitted&&this.form()?(a(this.currentForm).submit(),this.formSubmitted=!1):!c&&0===this.pendingRequest&&this.formSubmitted&&(a(this.currentForm).triggerHandler("invalid-form",[this]),this.formSubmitted=!1)},previousValue:function(b){return a.data(b,"previousValue")||a.data(b,"previousValue",{old:null,valid:!0,message:this.defaultMessage(b,"remote")})}},classRuleSettings:{required:{required:!0},email:{email:!0},url:{url:!0},date:{date:!0},dateISO:{dateISO:!0},number:{number:!0},digits:{digits:!0},creditcard:{creditcard:!0}},addClassRules:function(b,c){b.constructor===String?this.classRuleSettings[b]=c:a.extend(this.classRuleSettings,b)},classRules:function(b){var c={},d=a(b).attr("class");return d&&a.each(d.split(" "),function(){this in a.validator.classRuleSettings&&a.extend(c,a.validator.classRuleSettings[this])}),c},attributeRules:function(b){var c,d,e={},f=a(b),g=b.getAttribute("type");for(c in a.validator.methods)"required"===c?(d=b.getAttribute(c),""===d&&(d=!0),d=!!d):d=f.attr(c),/min|max/.test(c)&&(null===g||/number|range|text/.test(g))&&(d=Number(d)),d||0===d?e[c]=d:g===c&&"range"!==g&&(e[c]=!0);return e.maxlength&&/-1|2147483647|524288/.test(e.maxlength)&&delete e.maxlength,e},dataRules:function(b){var c,d,e={},f=a(b);for(c in a.validator.methods)d=f.data("rule"+c.charAt(0).toUpperCase()+c.substring(1).toLowerCase()),void 0!==d&&(e[c]=d);return e},staticRules:function(b){var c={},d=a.data(b.form,"validator");return d.settings.rules&&(c=a.validator.normalizeRule(d.settings.rules[b.name])||{}),c},normalizeRules:function(b,c){return a.each(b,function(d,e){if(e===!1)return void delete b[d];if(e.param||e.depends){var f=!0;switch(typeof e.depends){case"string":f=!!a(e.depends,c.form).length;break;case"function":f=e.depends.call(c,c)}f?b[d]=void 0!==e.param?e.param:!0:delete b[d]}}),a.each(b,function(d,e){b[d]=a.isFunction(e)?e(c):e}),a.each(["minlength","maxlength"],function(){b[this]&&(b[this]=Number(b[this]))}),a.each(["rangelength","range"],function(){var c;b[this]&&(a.isArray(b[this])?b[this]=[Number(b[this][0]),Number(b[this][1])]:"string"==typeof b[this]&&(c=b[this].replace(/[\[\]]/g,"").split(/[\s,]+/),b[this]=[Number(c[0]),Number(c[1])]))}),a.validator.autoCreateRanges&&(b.min&&b.max&&(b.range=[b.min,b.max],delete b.min,delete b.max),b.minlength&&b.maxlength&&(b.rangelength=[b.minlength,b.maxlength],delete b.minlength,delete b.maxlength)),b},normalizeRule:function(b){if("string"==typeof b){var c={};a.each(b.split(/\s/),function(){c[this]=!0}),b=c}return b},addMethod:function(b,c,d){a.validator.methods[b]=c,a.validator.messages[b]=void 0!==d?d:a.validator.messages[b],c.length<3&&a.validator.addClassRules(b,a.validator.normalizeRule(b))},methods:{required:function(b,c,d){if(!this.depend(d,c))return"dependency-mismatch";if("select"===c.nodeName.toLowerCase()){var e=a(c).val();return e&&e.length>0}return this.checkable(c)?this.getLength(b,c)>0:a.trim(b).length>0},email:function(a,b){return this.optional(b)||/^[a-zA-Z0-9.!#$%&'*+\/=?^_`{|}~-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*$/.test(a)},url:function(a,b){return this.optional(b)||/^(https?|s?ftp):\/\/(((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:)*@)?(((\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5]))|((([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.)+(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.?)(:\d*)?)(\/((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)+(\/(([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)*)*)?)?(\?((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)|[\uE000-\uF8FF]|\/|\?)*)?(#((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)|\/|\?)*)?$/i.test(a)},date:function(a,b){return this.optional(b)||!/Invalid|NaN/.test(new Date(a).toString())},dateISO:function(a,b){return this.optional(b)||/^\d{4}[\/\-](0?[1-9]|1[012])[\/\-](0?[1-9]|[12][0-9]|3[01])$/.test(a)},number:function(a,b){return this.optional(b)||/^-?(?:\d+|\d{1,3}(?:,\d{3})+)?(?:\.\d+)?$/.test(a)},digits:function(a,b){return this.optional(b)||/^\d+$/.test(a)},creditcard:function(a,b){if(this.optional(b))return"dependency-mismatch";if(/[^0-9 \-]+/.test(a))return!1;var c,d,e=0,f=0,g=!1;if(a=a.replace(/\D/g,""),a.length<13||a.length>19)return!1;for(c=a.length-1;c>=0;c--)d=a.charAt(c),f=parseInt(d,10),g&&(f*=2)>9&&(f-=9),e+=f,g=!g;return e%10===0},minlength:function(b,c,d){var e=a.isArray(b)?b.length:this.getLength(a.trim(b),c);return this.optional(c)||e>=d},maxlength:function(b,c,d){var e=a.isArray(b)?b.length:this.getLength(a.trim(b),c);return this.optional(c)||d>=e},rangelength:function(b,c,d){var e=a.isArray(b)?b.length:this.getLength(a.trim(b),c);return this.optional(c)||e>=d[0]&&e<=d[1]},min:function(a,b,c){return this.optional(b)||a>=c},max:function(a,b,c){return this.optional(b)||c>=a},range:function(a,b,c){return this.optional(b)||a>=c[0]&&a<=c[1]},equalTo:function(b,c,d){var e=a(d);return this.settings.onfocusout&&e.unbind(".validate-equalTo").bind("blur.validate-equalTo",function(){a(c).valid()}),b===e.val()},remote:function(b,c,d){if(this.optional(c))return"dependency-mismatch";var e,f,g=this.previousValue(c);return this.settings.messages[c.name]||(this.settings.messages[c.name]={}),g.originalMessage=this.settings.messages[c.name].remote,this.settings.messages[c.name].remote=g.message,d="string"==typeof d&&{url:d}||d,g.old===b?g.valid:(g.old=b,e=this,this.startRequest(c),f={},f[c.name]=b,a.ajax(a.extend(!0,{url:d,mode:"abort",port:"validate"+c.name,dataType:"json",data:f,context:e.currentForm,success:function(d){var f,h,i,j=d===!0||"true"===d;e.settings.messages[c.name].remote=g.originalMessage,j?(i=e.formSubmitted,e.prepareElement(c),e.formSubmitted=i,e.successList.push(c),delete e.invalid[c.name],e.showErrors()):(f={},h=d||e.defaultMessage(c,"remote"),f[c.name]=g.message=a.isFunction(h)?h(b):h,e.invalid[c.name]=!0,e.showErrors(f)),g.valid=j,e.stopRequest(c,j)}},d)),"pending")}}}),a.format=function(){throw"$.format has been deprecated. Please use $.validator.format instead."};var b,c={};a.ajaxPrefilter?a.ajaxPrefilter(function(a,b,d){var e=a.port;"abort"===a.mode&&(c[e]&&c[e].abort(),c[e]=d)}):(b=a.ajax,a.ajax=function(d){var e=("mode"in d?d:a.ajaxSettings).mode,f=("port"in d?d:a.ajaxSettings).port;return"abort"===e?(c[f]&&c[f].abort(),c[f]=b.apply(this,arguments),c[f]):b.apply(this,arguments)}),a.extend(a.fn,{validateDelegate:function(b,c,d){return this.bind(c,function(c){var e=a(c.target);return e.is(b)?d.apply(e,arguments):void 0})}})});;
/* NUGET: BEGIN LICENSE TEXT
 *
 * Microsoft grants you the right to use these script files for the sole
 * purpose of either: (i) interacting through your browser with the Microsoft
 * website or online service, subject to the applicable licensing or use
 * terms; or (ii) using the files as included with a Microsoft product subject
 * to that product's license terms. Microsoft reserves all other rights to the
 * files not expressly granted by Microsoft, whether by implication, estoppel
 * or otherwise. Insofar as a script file is dual licensed under GPL,
 * Microsoft neither took the code under GPL nor distributes it thereunder but
 * under the terms set out in this paragraph. All notices and licenses
 * below are for informational purposes only.
 *
 * NUGET: END LICENSE TEXT */
/*
** Unobtrusive validation support library for jQuery and jQuery Validate
** Copyright (C) Microsoft Corporation. All rights reserved.
*/
(function(a){var d=a.validator,b,e="unobtrusiveValidation";function c(a,b,c){a.rules[b]=c;if(a.message)a.messages[b]=a.message}function j(a){return a.replace(/^\s+|\s+$/g,"").split(/\s*,\s*/g)}function f(a){return a.replace(/([!"#$%&'()*+,./:;<=>?@\[\\\]^`{|}~])/g,"\\$1")}function h(a){return a.substr(0,a.lastIndexOf(".")+1)}function g(a,b){if(a.indexOf("*.")===0)a=a.replace("*.",b);return a}function m(c,e){var b=a(this).find("[data-valmsg-for='"+f(e[0].name)+"']"),d=b.attr("data-valmsg-replace"),g=d?a.parseJSON(d)!==false:null;b.removeClass("field-validation-valid").addClass("field-validation-error");c.data("unobtrusiveContainer",b);if(g){b.empty();c.removeClass("input-validation-error").appendTo(b)}else c.hide()}function l(e,d){var c=a(this).find("[data-valmsg-summary=true]"),b=c.find("ul");if(b&&b.length&&d.errorList.length){b.empty();c.addClass("validation-summary-errors").removeClass("validation-summary-valid");a.each(d.errorList,function(){a("<li />").html(this.message).appendTo(b)})}}function k(d){var b=d.data("unobtrusiveContainer"),c=b.attr("data-valmsg-replace"),e=c?a.parseJSON(c):null;if(b){b.addClass("field-validation-valid").removeClass("field-validation-error");d.removeData("unobtrusiveContainer");e&&b.empty()}}function n(){var b=a(this);b.data("validator").resetForm();b.find(".validation-summary-errors").addClass("validation-summary-valid").removeClass("validation-summary-errors");b.find(".field-validation-error").addClass("field-validation-valid").removeClass("field-validation-error").removeData("unobtrusiveContainer").find(">*").removeData("unobtrusiveContainer")}function i(b){var c=a(b),f=c.data(e),i=a.proxy(n,b),g=d.unobtrusive.options||{},h=function(e,d){var c=g[e];c&&a.isFunction(c)&&c.apply(b,d)};if(!f){f={options:{errorClass:g.errorClass||"input-validation-error",errorElement:g.errorElement||"span",errorPlacement:function(){m.apply(b,arguments);h("errorPlacement",arguments)},invalidHandler:function(){l.apply(b,arguments);h("invalidHandler",arguments)},messages:{},rules:{},success:function(){k.apply(b,arguments);h("success",arguments)}},attachValidation:function(){c.off("reset."+e,i).on("reset."+e,i).validate(this.options)},validate:function(){c.validate();return c.valid()}};c.data(e,f)}return f}d.unobtrusive={adapters:[],parseElement:function(b,h){var d=a(b),f=d.parents("form")[0],c,e,g;if(!f)return;c=i(f);c.options.rules[b.name]=e={};c.options.messages[b.name]=g={};a.each(this.adapters,function(){var c="data-val-"+this.name,i=d.attr(c),h={};if(i!==undefined){c+="-";a.each(this.params,function(){h[this]=d.attr(c+this)});this.adapt({element:b,form:f,message:i,params:h,rules:e,messages:g})}});a.extend(e,{__dummy__:true});!h&&c.attachValidation()},parse:function(c){var b=a(c),e=b.parents().addBack().filter("form").add(b.find("form")).has("[data-val=true]");b.find("[data-val=true]").each(function(){d.unobtrusive.parseElement(this,true)});e.each(function(){var a=i(this);a&&a.attachValidation()})}};b=d.unobtrusive.adapters;b.add=function(c,a,b){if(!b){b=a;a=[]}this.push({name:c,params:a,adapt:b});return this};b.addBool=function(a,b){return this.add(a,function(d){c(d,b||a,true)})};b.addMinMax=function(e,g,f,a,d,b){return this.add(e,[d||"min",b||"max"],function(b){var e=b.params.min,d=b.params.max;if(e&&d)c(b,a,[e,d]);else if(e)c(b,g,e);else d&&c(b,f,d)})};b.addSingleVal=function(a,b,d){return this.add(a,[b||"val"],function(e){c(e,d||a,e.params[b])})};d.addMethod("__dummy__",function(){return true});d.addMethod("regex",function(b,c,d){var a;if(this.optional(c))return true;a=(new RegExp(d)).exec(b);return a&&a.index===0&&a[0].length===b.length});d.addMethod("nonalphamin",function(c,d,b){var a;if(b){a=c.match(/\W/g);a=a&&a.length>=b}return a});if(d.methods.extension){b.addSingleVal("accept","mimtype");b.addSingleVal("extension","extension")}else b.addSingleVal("extension","extension","accept");b.addSingleVal("regex","pattern");b.addBool("creditcard").addBool("date").addBool("digits").addBool("email").addBool("number").addBool("url");b.addMinMax("length","minlength","maxlength","rangelength").addMinMax("range","min","max","range");b.addMinMax("minlength","minlength").addMinMax("maxlength","minlength","maxlength");b.add("equalto",["other"],function(b){var i=h(b.element.name),j=b.params.other,d=g(j,i),e=a(b.form).find(":input").filter("[name='"+f(d)+"']")[0];c(b,"equalTo",e)});b.add("required",function(a){(a.element.tagName.toUpperCase()!=="INPUT"||a.element.type.toUpperCase()!=="CHECKBOX")&&c(a,"required",true)});b.add("remote",["url","type","additionalfields"],function(b){var d={url:b.params.url,type:b.params.type||"GET",data:{}},e=h(b.element.name);a.each(j(b.params.additionalfields||b.element.name),function(i,h){var c=g(h,e);d.data[c]=function(){return a(b.form).find(":input").filter("[name='"+f(c)+"']").val()}});c(b,"remote",d)});b.add("password",["min","nonalphamin","regex"],function(a){a.params.min&&c(a,"minlength",a.params.min);a.params.nonalphamin&&c(a,"nonalphamin",a.params.nonalphamin);a.params.regex&&c(a,"regex",a.params.regex)});a(function(){d.unobtrusive.parse(document)})})(jQuery);;
/*!
 * Bootstrap v3.2.0 (http://getbootstrap.com)
 * Copyright 2011-2014 Twitter, Inc.
 * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
 */
if("undefined"==typeof jQuery)throw new Error("Bootstrap's JavaScript requires jQuery");+function(a){"use strict";function b(){var a=document.createElement("bootstrap"),b={WebkitTransition:"webkitTransitionEnd",MozTransition:"transitionend",OTransition:"oTransitionEnd otransitionend",transition:"transitionend"};for(var c in b)if(void 0!==a.style[c])return{end:b[c]};return!1}a.fn.emulateTransitionEnd=function(b){var c=!1,d=this;a(this).one("bsTransitionEnd",function(){c=!0});var e=function(){c||a(d).trigger(a.support.transition.end)};return setTimeout(e,b),this},a(function(){a.support.transition=b(),a.support.transition&&(a.event.special.bsTransitionEnd={bindType:a.support.transition.end,delegateType:a.support.transition.end,handle:function(b){return a(b.target).is(this)?b.handleObj.handler.apply(this,arguments):void 0}})})}(jQuery),+function(a){"use strict";function b(b){return this.each(function(){var c=a(this),e=c.data("bs.alert");e||c.data("bs.alert",e=new d(this)),"string"==typeof b&&e[b].call(c)})}var c='[data-dismiss="alert"]',d=function(b){a(b).on("click",c,this.close)};d.VERSION="3.2.0",d.prototype.close=function(b){function c(){f.detach().trigger("closed.bs.alert").remove()}var d=a(this),e=d.attr("data-target");e||(e=d.attr("href"),e=e&&e.replace(/.*(?=#[^\s]*$)/,""));var f=a(e);b&&b.preventDefault(),f.length||(f=d.hasClass("alert")?d:d.parent()),f.trigger(b=a.Event("close.bs.alert")),b.isDefaultPrevented()||(f.removeClass("in"),a.support.transition&&f.hasClass("fade")?f.one("bsTransitionEnd",c).emulateTransitionEnd(150):c())};var e=a.fn.alert;a.fn.alert=b,a.fn.alert.Constructor=d,a.fn.alert.noConflict=function(){return a.fn.alert=e,this},a(document).on("click.bs.alert.data-api",c,d.prototype.close)}(jQuery),+function(a){"use strict";function b(b){return this.each(function(){var d=a(this),e=d.data("bs.button"),f="object"==typeof b&&b;e||d.data("bs.button",e=new c(this,f)),"toggle"==b?e.toggle():b&&e.setState(b)})}var c=function(b,d){this.$element=a(b),this.options=a.extend({},c.DEFAULTS,d),this.isLoading=!1};c.VERSION="3.2.0",c.DEFAULTS={loadingText:"loading..."},c.prototype.setState=function(b){var c="disabled",d=this.$element,e=d.is("input")?"val":"html",f=d.data();b+="Text",null==f.resetText&&d.data("resetText",d[e]()),d[e](null==f[b]?this.options[b]:f[b]),setTimeout(a.proxy(function(){"loadingText"==b?(this.isLoading=!0,d.addClass(c).attr(c,c)):this.isLoading&&(this.isLoading=!1,d.removeClass(c).removeAttr(c))},this),0)},c.prototype.toggle=function(){var a=!0,b=this.$element.closest('[data-toggle="buttons"]');if(b.length){var c=this.$element.find("input");"radio"==c.prop("type")&&(c.prop("checked")&&this.$element.hasClass("active")?a=!1:b.find(".active").removeClass("active")),a&&c.prop("checked",!this.$element.hasClass("active")).trigger("change")}a&&this.$element.toggleClass("active")};var d=a.fn.button;a.fn.button=b,a.fn.button.Constructor=c,a.fn.button.noConflict=function(){return a.fn.button=d,this},a(document).on("click.bs.button.data-api",'[data-toggle^="button"]',function(c){var d=a(c.target);d.hasClass("btn")||(d=d.closest(".btn")),b.call(d,"toggle"),c.preventDefault()})}(jQuery),+function(a){"use strict";function b(b){return this.each(function(){var d=a(this),e=d.data("bs.carousel"),f=a.extend({},c.DEFAULTS,d.data(),"object"==typeof b&&b),g="string"==typeof b?b:f.slide;e||d.data("bs.carousel",e=new c(this,f)),"number"==typeof b?e.to(b):g?e[g]():f.interval&&e.pause().cycle()})}var c=function(b,c){this.$element=a(b).on("keydown.bs.carousel",a.proxy(this.keydown,this)),this.$indicators=this.$element.find(".carousel-indicators"),this.options=c,this.paused=this.sliding=this.interval=this.$active=this.$items=null,"hover"==this.options.pause&&this.$element.on("mouseenter.bs.carousel",a.proxy(this.pause,this)).on("mouseleave.bs.carousel",a.proxy(this.cycle,this))};c.VERSION="3.2.0",c.DEFAULTS={interval:5e3,pause:"hover",wrap:!0},c.prototype.keydown=function(a){switch(a.which){case 37:this.prev();break;case 39:this.next();break;default:return}a.preventDefault()},c.prototype.cycle=function(b){return b||(this.paused=!1),this.interval&&clearInterval(this.interval),this.options.interval&&!this.paused&&(this.interval=setInterval(a.proxy(this.next,this),this.options.interval)),this},c.prototype.getItemIndex=function(a){return this.$items=a.parent().children(".item"),this.$items.index(a||this.$active)},c.prototype.to=function(b){var c=this,d=this.getItemIndex(this.$active=this.$element.find(".item.active"));return b>this.$items.length-1||0>b?void 0:this.sliding?this.$element.one("slid.bs.carousel",function(){c.to(b)}):d==b?this.pause().cycle():this.slide(b>d?"next":"prev",a(this.$items[b]))},c.prototype.pause=function(b){return b||(this.paused=!0),this.$element.find(".next, .prev").length&&a.support.transition&&(this.$element.trigger(a.support.transition.end),this.cycle(!0)),this.interval=clearInterval(this.interval),this},c.prototype.next=function(){return this.sliding?void 0:this.slide("next")},c.prototype.prev=function(){return this.sliding?void 0:this.slide("prev")},c.prototype.slide=function(b,c){var d=this.$element.find(".item.active"),e=c||d[b](),f=this.interval,g="next"==b?"left":"right",h="next"==b?"first":"last",i=this;if(!e.length){if(!this.options.wrap)return;e=this.$element.find(".item")[h]()}if(e.hasClass("active"))return this.sliding=!1;var j=e[0],k=a.Event("slide.bs.carousel",{relatedTarget:j,direction:g});if(this.$element.trigger(k),!k.isDefaultPrevented()){if(this.sliding=!0,f&&this.pause(),this.$indicators.length){this.$indicators.find(".active").removeClass("active");var l=a(this.$indicators.children()[this.getItemIndex(e)]);l&&l.addClass("active")}var m=a.Event("slid.bs.carousel",{relatedTarget:j,direction:g});return a.support.transition&&this.$element.hasClass("slide")?(e.addClass(b),e[0].offsetWidth,d.addClass(g),e.addClass(g),d.one("bsTransitionEnd",function(){e.removeClass([b,g].join(" ")).addClass("active"),d.removeClass(["active",g].join(" ")),i.sliding=!1,setTimeout(function(){i.$element.trigger(m)},0)}).emulateTransitionEnd(1e3*d.css("transition-duration").slice(0,-1))):(d.removeClass("active"),e.addClass("active"),this.sliding=!1,this.$element.trigger(m)),f&&this.cycle(),this}};var d=a.fn.carousel;a.fn.carousel=b,a.fn.carousel.Constructor=c,a.fn.carousel.noConflict=function(){return a.fn.carousel=d,this},a(document).on("click.bs.carousel.data-api","[data-slide], [data-slide-to]",function(c){var d,e=a(this),f=a(e.attr("data-target")||(d=e.attr("href"))&&d.replace(/.*(?=#[^\s]+$)/,""));if(f.hasClass("carousel")){var g=a.extend({},f.data(),e.data()),h=e.attr("data-slide-to");h&&(g.interval=!1),b.call(f,g),h&&f.data("bs.carousel").to(h),c.preventDefault()}}),a(window).on("load",function(){a('[data-ride="carousel"]').each(function(){var c=a(this);b.call(c,c.data())})})}(jQuery),+function(a){"use strict";function b(b){return this.each(function(){var d=a(this),e=d.data("bs.collapse"),f=a.extend({},c.DEFAULTS,d.data(),"object"==typeof b&&b);!e&&f.toggle&&"show"==b&&(b=!b),e||d.data("bs.collapse",e=new c(this,f)),"string"==typeof b&&e[b]()})}var c=function(b,d){this.$element=a(b),this.options=a.extend({},c.DEFAULTS,d),this.transitioning=null,this.options.parent&&(this.$parent=a(this.options.parent)),this.options.toggle&&this.toggle()};c.VERSION="3.2.0",c.DEFAULTS={toggle:!0},c.prototype.dimension=function(){var a=this.$element.hasClass("width");return a?"width":"height"},c.prototype.show=function(){if(!this.transitioning&&!this.$element.hasClass("in")){var c=a.Event("show.bs.collapse");if(this.$element.trigger(c),!c.isDefaultPrevented()){var d=this.$parent&&this.$parent.find("> .panel > .in");if(d&&d.length){var e=d.data("bs.collapse");if(e&&e.transitioning)return;b.call(d,"hide"),e||d.data("bs.collapse",null)}var f=this.dimension();this.$element.removeClass("collapse").addClass("collapsing")[f](0),this.transitioning=1;var g=function(){this.$element.removeClass("collapsing").addClass("collapse in")[f](""),this.transitioning=0,this.$element.trigger("shown.bs.collapse")};if(!a.support.transition)return g.call(this);var h=a.camelCase(["scroll",f].join("-"));this.$element.one("bsTransitionEnd",a.proxy(g,this)).emulateTransitionEnd(350)[f](this.$element[0][h])}}},c.prototype.hide=function(){if(!this.transitioning&&this.$element.hasClass("in")){var b=a.Event("hide.bs.collapse");if(this.$element.trigger(b),!b.isDefaultPrevented()){var c=this.dimension();this.$element[c](this.$element[c]())[0].offsetHeight,this.$element.addClass("collapsing").removeClass("collapse").removeClass("in"),this.transitioning=1;var d=function(){this.transitioning=0,this.$element.trigger("hidden.bs.collapse").removeClass("collapsing").addClass("collapse")};return a.support.transition?void this.$element[c](0).one("bsTransitionEnd",a.proxy(d,this)).emulateTransitionEnd(350):d.call(this)}}},c.prototype.toggle=function(){this[this.$element.hasClass("in")?"hide":"show"]()};var d=a.fn.collapse;a.fn.collapse=b,a.fn.collapse.Constructor=c,a.fn.collapse.noConflict=function(){return a.fn.collapse=d,this},a(document).on("click.bs.collapse.data-api",'[data-toggle="collapse"]',function(c){var d,e=a(this),f=e.attr("data-target")||c.preventDefault()||(d=e.attr("href"))&&d.replace(/.*(?=#[^\s]+$)/,""),g=a(f),h=g.data("bs.collapse"),i=h?"toggle":e.data(),j=e.attr("data-parent"),k=j&&a(j);h&&h.transitioning||(k&&k.find('[data-toggle="collapse"][data-parent="'+j+'"]').not(e).addClass("collapsed"),e[g.hasClass("in")?"addClass":"removeClass"]("collapsed")),b.call(g,i)})}(jQuery),+function(a){"use strict";function b(b){b&&3===b.which||(a(e).remove(),a(f).each(function(){var d=c(a(this)),e={relatedTarget:this};d.hasClass("open")&&(d.trigger(b=a.Event("hide.bs.dropdown",e)),b.isDefaultPrevented()||d.removeClass("open").trigger("hidden.bs.dropdown",e))}))}function c(b){var c=b.attr("data-target");c||(c=b.attr("href"),c=c&&/#[A-Za-z]/.test(c)&&c.replace(/.*(?=#[^\s]*$)/,""));var d=c&&a(c);return d&&d.length?d:b.parent()}function d(b){return this.each(function(){var c=a(this),d=c.data("bs.dropdown");d||c.data("bs.dropdown",d=new g(this)),"string"==typeof b&&d[b].call(c)})}var e=".dropdown-backdrop",f='[data-toggle="dropdown"]',g=function(b){a(b).on("click.bs.dropdown",this.toggle)};g.VERSION="3.2.0",g.prototype.toggle=function(d){var e=a(this);if(!e.is(".disabled, :disabled")){var f=c(e),g=f.hasClass("open");if(b(),!g){"ontouchstart"in document.documentElement&&!f.closest(".navbar-nav").length&&a('<div class="dropdown-backdrop"/>').insertAfter(a(this)).on("click",b);var h={relatedTarget:this};if(f.trigger(d=a.Event("show.bs.dropdown",h)),d.isDefaultPrevented())return;e.trigger("focus"),f.toggleClass("open").trigger("shown.bs.dropdown",h)}return!1}},g.prototype.keydown=function(b){if(/(38|40|27)/.test(b.keyCode)){var d=a(this);if(b.preventDefault(),b.stopPropagation(),!d.is(".disabled, :disabled")){var e=c(d),g=e.hasClass("open");if(!g||g&&27==b.keyCode)return 27==b.which&&e.find(f).trigger("focus"),d.trigger("click");var h=" li:not(.divider):visible a",i=e.find('[role="menu"]'+h+', [role="listbox"]'+h);if(i.length){var j=i.index(i.filter(":focus"));38==b.keyCode&&j>0&&j--,40==b.keyCode&&j<i.length-1&&j++,~j||(j=0),i.eq(j).trigger("focus")}}}};var h=a.fn.dropdown;a.fn.dropdown=d,a.fn.dropdown.Constructor=g,a.fn.dropdown.noConflict=function(){return a.fn.dropdown=h,this},a(document).on("click.bs.dropdown.data-api",b).on("click.bs.dropdown.data-api",".dropdown form",function(a){a.stopPropagation()}).on("click.bs.dropdown.data-api",f,g.prototype.toggle).on("keydown.bs.dropdown.data-api",f+', [role="menu"], [role="listbox"]',g.prototype.keydown)}(jQuery),+function(a){"use strict";function b(b,d){return this.each(function(){var e=a(this),f=e.data("bs.modal"),g=a.extend({},c.DEFAULTS,e.data(),"object"==typeof b&&b);f||e.data("bs.modal",f=new c(this,g)),"string"==typeof b?f[b](d):g.show&&f.show(d)})}var c=function(b,c){this.options=c,this.$body=a(document.body),this.$element=a(b),this.$backdrop=this.isShown=null,this.scrollbarWidth=0,this.options.remote&&this.$element.find(".modal-content").load(this.options.remote,a.proxy(function(){this.$element.trigger("loaded.bs.modal")},this))};c.VERSION="3.2.0",c.DEFAULTS={backdrop:!0,keyboard:!0,show:!0},c.prototype.toggle=function(a){return this.isShown?this.hide():this.show(a)},c.prototype.show=function(b){var c=this,d=a.Event("show.bs.modal",{relatedTarget:b});this.$element.trigger(d),this.isShown||d.isDefaultPrevented()||(this.isShown=!0,this.checkScrollbar(),this.$body.addClass("modal-open"),this.setScrollbar(),this.escape(),this.$element.on("click.dismiss.bs.modal",'[data-dismiss="modal"]',a.proxy(this.hide,this)),this.backdrop(function(){var d=a.support.transition&&c.$element.hasClass("fade");c.$element.parent().length||c.$element.appendTo(c.$body),c.$element.show().scrollTop(0),d&&c.$element[0].offsetWidth,c.$element.addClass("in").attr("aria-hidden",!1),c.enforceFocus();var e=a.Event("shown.bs.modal",{relatedTarget:b});d?c.$element.find(".modal-dialog").one("bsTransitionEnd",function(){c.$element.trigger("focus").trigger(e)}).emulateTransitionEnd(300):c.$element.trigger("focus").trigger(e)}))},c.prototype.hide=function(b){b&&b.preventDefault(),b=a.Event("hide.bs.modal"),this.$element.trigger(b),this.isShown&&!b.isDefaultPrevented()&&(this.isShown=!1,this.$body.removeClass("modal-open"),this.resetScrollbar(),this.escape(),a(document).off("focusin.bs.modal"),this.$element.removeClass("in").attr("aria-hidden",!0).off("click.dismiss.bs.modal"),a.support.transition&&this.$element.hasClass("fade")?this.$element.one("bsTransitionEnd",a.proxy(this.hideModal,this)).emulateTransitionEnd(300):this.hideModal())},c.prototype.enforceFocus=function(){a(document).off("focusin.bs.modal").on("focusin.bs.modal",a.proxy(function(a){this.$element[0]===a.target||this.$element.has(a.target).length||this.$element.trigger("focus")},this))},c.prototype.escape=function(){this.isShown&&this.options.keyboard?this.$element.on("keyup.dismiss.bs.modal",a.proxy(function(a){27==a.which&&this.hide()},this)):this.isShown||this.$element.off("keyup.dismiss.bs.modal")},c.prototype.hideModal=function(){var a=this;this.$element.hide(),this.backdrop(function(){a.$element.trigger("hidden.bs.modal")})},c.prototype.removeBackdrop=function(){this.$backdrop&&this.$backdrop.remove(),this.$backdrop=null},c.prototype.backdrop=function(b){var c=this,d=this.$element.hasClass("fade")?"fade":"";if(this.isShown&&this.options.backdrop){var e=a.support.transition&&d;if(this.$backdrop=a('<div class="modal-backdrop '+d+'" />').appendTo(this.$body),this.$element.on("click.dismiss.bs.modal",a.proxy(function(a){a.target===a.currentTarget&&("static"==this.options.backdrop?this.$element[0].focus.call(this.$element[0]):this.hide.call(this))},this)),e&&this.$backdrop[0].offsetWidth,this.$backdrop.addClass("in"),!b)return;e?this.$backdrop.one("bsTransitionEnd",b).emulateTransitionEnd(150):b()}else if(!this.isShown&&this.$backdrop){this.$backdrop.removeClass("in");var f=function(){c.removeBackdrop(),b&&b()};a.support.transition&&this.$element.hasClass("fade")?this.$backdrop.one("bsTransitionEnd",f).emulateTransitionEnd(150):f()}else b&&b()},c.prototype.checkScrollbar=function(){document.body.clientWidth>=window.innerWidth||(this.scrollbarWidth=this.scrollbarWidth||this.measureScrollbar())},c.prototype.setScrollbar=function(){var a=parseInt(this.$body.css("padding-right")||0,10);this.scrollbarWidth&&this.$body.css("padding-right",a+this.scrollbarWidth)},c.prototype.resetScrollbar=function(){this.$body.css("padding-right","")},c.prototype.measureScrollbar=function(){var a=document.createElement("div");a.className="modal-scrollbar-measure",this.$body.append(a);var b=a.offsetWidth-a.clientWidth;return this.$body[0].removeChild(a),b};var d=a.fn.modal;a.fn.modal=b,a.fn.modal.Constructor=c,a.fn.modal.noConflict=function(){return a.fn.modal=d,this},a(document).on("click.bs.modal.data-api",'[data-toggle="modal"]',function(c){var d=a(this),e=d.attr("href"),f=a(d.attr("data-target")||e&&e.replace(/.*(?=#[^\s]+$)/,"")),g=f.data("bs.modal")?"toggle":a.extend({remote:!/#/.test(e)&&e},f.data(),d.data());d.is("a")&&c.preventDefault(),f.one("show.bs.modal",function(a){a.isDefaultPrevented()||f.one("hidden.bs.modal",function(){d.is(":visible")&&d.trigger("focus")})}),b.call(f,g,this)})}(jQuery),+function(a){"use strict";function b(b){return this.each(function(){var d=a(this),e=d.data("bs.tooltip"),f="object"==typeof b&&b;(e||"destroy"!=b)&&(e||d.data("bs.tooltip",e=new c(this,f)),"string"==typeof b&&e[b]())})}var c=function(a,b){this.type=this.options=this.enabled=this.timeout=this.hoverState=this.$element=null,this.init("tooltip",a,b)};c.VERSION="3.2.0",c.DEFAULTS={animation:!0,placement:"top",selector:!1,template:'<div class="tooltip" role="tooltip"><div class="tooltip-arrow"></div><div class="tooltip-inner"></div></div>',trigger:"hover focus",title:"",delay:0,html:!1,container:!1,viewport:{selector:"body",padding:0}},c.prototype.init=function(b,c,d){this.enabled=!0,this.type=b,this.$element=a(c),this.options=this.getOptions(d),this.$viewport=this.options.viewport&&a(this.options.viewport.selector||this.options.viewport);for(var e=this.options.trigger.split(" "),f=e.length;f--;){var g=e[f];if("click"==g)this.$element.on("click."+this.type,this.options.selector,a.proxy(this.toggle,this));else if("manual"!=g){var h="hover"==g?"mouseenter":"focusin",i="hover"==g?"mouseleave":"focusout";this.$element.on(h+"."+this.type,this.options.selector,a.proxy(this.enter,this)),this.$element.on(i+"."+this.type,this.options.selector,a.proxy(this.leave,this))}}this.options.selector?this._options=a.extend({},this.options,{trigger:"manual",selector:""}):this.fixTitle()},c.prototype.getDefaults=function(){return c.DEFAULTS},c.prototype.getOptions=function(b){return b=a.extend({},this.getDefaults(),this.$element.data(),b),b.delay&&"number"==typeof b.delay&&(b.delay={show:b.delay,hide:b.delay}),b},c.prototype.getDelegateOptions=function(){var b={},c=this.getDefaults();return this._options&&a.each(this._options,function(a,d){c[a]!=d&&(b[a]=d)}),b},c.prototype.enter=function(b){var c=b instanceof this.constructor?b:a(b.currentTarget).data("bs."+this.type);return c||(c=new this.constructor(b.currentTarget,this.getDelegateOptions()),a(b.currentTarget).data("bs."+this.type,c)),clearTimeout(c.timeout),c.hoverState="in",c.options.delay&&c.options.delay.show?void(c.timeout=setTimeout(function(){"in"==c.hoverState&&c.show()},c.options.delay.show)):c.show()},c.prototype.leave=function(b){var c=b instanceof this.constructor?b:a(b.currentTarget).data("bs."+this.type);return c||(c=new this.constructor(b.currentTarget,this.getDelegateOptions()),a(b.currentTarget).data("bs."+this.type,c)),clearTimeout(c.timeout),c.hoverState="out",c.options.delay&&c.options.delay.hide?void(c.timeout=setTimeout(function(){"out"==c.hoverState&&c.hide()},c.options.delay.hide)):c.hide()},c.prototype.show=function(){var b=a.Event("show.bs."+this.type);if(this.hasContent()&&this.enabled){this.$element.trigger(b);var c=a.contains(document.documentElement,this.$element[0]);if(b.isDefaultPrevented()||!c)return;var d=this,e=this.tip(),f=this.getUID(this.type);this.setContent(),e.attr("id",f),this.$element.attr("aria-describedby",f),this.options.animation&&e.addClass("fade");var g="function"==typeof this.options.placement?this.options.placement.call(this,e[0],this.$element[0]):this.options.placement,h=/\s?auto?\s?/i,i=h.test(g);i&&(g=g.replace(h,"")||"top"),e.detach().css({top:0,left:0,display:"block"}).addClass(g).data("bs."+this.type,this),this.options.container?e.appendTo(this.options.container):e.insertAfter(this.$element);var j=this.getPosition(),k=e[0].offsetWidth,l=e[0].offsetHeight;if(i){var m=g,n=this.$element.parent(),o=this.getPosition(n);g="bottom"==g&&j.top+j.height+l-o.scroll>o.height?"top":"top"==g&&j.top-o.scroll-l<0?"bottom":"right"==g&&j.right+k>o.width?"left":"left"==g&&j.left-k<o.left?"right":g,e.removeClass(m).addClass(g)}var p=this.getCalculatedOffset(g,j,k,l);this.applyPlacement(p,g);var q=function(){d.$element.trigger("shown.bs."+d.type),d.hoverState=null};a.support.transition&&this.$tip.hasClass("fade")?e.one("bsTransitionEnd",q).emulateTransitionEnd(150):q()}},c.prototype.applyPlacement=function(b,c){var d=this.tip(),e=d[0].offsetWidth,f=d[0].offsetHeight,g=parseInt(d.css("margin-top"),10),h=parseInt(d.css("margin-left"),10);isNaN(g)&&(g=0),isNaN(h)&&(h=0),b.top=b.top+g,b.left=b.left+h,a.offset.setOffset(d[0],a.extend({using:function(a){d.css({top:Math.round(a.top),left:Math.round(a.left)})}},b),0),d.addClass("in");var i=d[0].offsetWidth,j=d[0].offsetHeight;"top"==c&&j!=f&&(b.top=b.top+f-j);var k=this.getViewportAdjustedDelta(c,b,i,j);k.left?b.left+=k.left:b.top+=k.top;var l=k.left?2*k.left-e+i:2*k.top-f+j,m=k.left?"left":"top",n=k.left?"offsetWidth":"offsetHeight";d.offset(b),this.replaceArrow(l,d[0][n],m)},c.prototype.replaceArrow=function(a,b,c){this.arrow().css(c,a?50*(1-a/b)+"%":"")},c.prototype.setContent=function(){var a=this.tip(),b=this.getTitle();a.find(".tooltip-inner")[this.options.html?"html":"text"](b),a.removeClass("fade in top bottom left right")},c.prototype.hide=function(){function b(){"in"!=c.hoverState&&d.detach(),c.$element.trigger("hidden.bs."+c.type)}var c=this,d=this.tip(),e=a.Event("hide.bs."+this.type);return this.$element.removeAttr("aria-describedby"),this.$element.trigger(e),e.isDefaultPrevented()?void 0:(d.removeClass("in"),a.support.transition&&this.$tip.hasClass("fade")?d.one("bsTransitionEnd",b).emulateTransitionEnd(150):b(),this.hoverState=null,this)},c.prototype.fixTitle=function(){var a=this.$element;(a.attr("title")||"string"!=typeof a.attr("data-original-title"))&&a.attr("data-original-title",a.attr("title")||"").attr("title","")},c.prototype.hasContent=function(){return this.getTitle()},c.prototype.getPosition=function(b){b=b||this.$element;var c=b[0],d="BODY"==c.tagName;return a.extend({},"function"==typeof c.getBoundingClientRect?c.getBoundingClientRect():null,{scroll:d?document.documentElement.scrollTop||document.body.scrollTop:b.scrollTop(),width:d?a(window).width():b.outerWidth(),height:d?a(window).height():b.outerHeight()},d?{top:0,left:0}:b.offset())},c.prototype.getCalculatedOffset=function(a,b,c,d){return"bottom"==a?{top:b.top+b.height,left:b.left+b.width/2-c/2}:"top"==a?{top:b.top-d,left:b.left+b.width/2-c/2}:"left"==a?{top:b.top+b.height/2-d/2,left:b.left-c}:{top:b.top+b.height/2-d/2,left:b.left+b.width}},c.prototype.getViewportAdjustedDelta=function(a,b,c,d){var e={top:0,left:0};if(!this.$viewport)return e;var f=this.options.viewport&&this.options.viewport.padding||0,g=this.getPosition(this.$viewport);if(/right|left/.test(a)){var h=b.top-f-g.scroll,i=b.top+f-g.scroll+d;h<g.top?e.top=g.top-h:i>g.top+g.height&&(e.top=g.top+g.height-i)}else{var j=b.left-f,k=b.left+f+c;j<g.left?e.left=g.left-j:k>g.width&&(e.left=g.left+g.width-k)}return e},c.prototype.getTitle=function(){var a,b=this.$element,c=this.options;return a=b.attr("data-original-title")||("function"==typeof c.title?c.title.call(b[0]):c.title)},c.prototype.getUID=function(a){do a+=~~(1e6*Math.random());while(document.getElementById(a));return a},c.prototype.tip=function(){return this.$tip=this.$tip||a(this.options.template)},c.prototype.arrow=function(){return this.$arrow=this.$arrow||this.tip().find(".tooltip-arrow")},c.prototype.validate=function(){this.$element[0].parentNode||(this.hide(),this.$element=null,this.options=null)},c.prototype.enable=function(){this.enabled=!0},c.prototype.disable=function(){this.enabled=!1},c.prototype.toggleEnabled=function(){this.enabled=!this.enabled},c.prototype.toggle=function(b){var c=this;b&&(c=a(b.currentTarget).data("bs."+this.type),c||(c=new this.constructor(b.currentTarget,this.getDelegateOptions()),a(b.currentTarget).data("bs."+this.type,c))),c.tip().hasClass("in")?c.leave(c):c.enter(c)},c.prototype.destroy=function(){clearTimeout(this.timeout),this.hide().$element.off("."+this.type).removeData("bs."+this.type)};var d=a.fn.tooltip;a.fn.tooltip=b,a.fn.tooltip.Constructor=c,a.fn.tooltip.noConflict=function(){return a.fn.tooltip=d,this}}(jQuery),+function(a){"use strict";function b(b){return this.each(function(){var d=a(this),e=d.data("bs.popover"),f="object"==typeof b&&b;(e||"destroy"!=b)&&(e||d.data("bs.popover",e=new c(this,f)),"string"==typeof b&&e[b]())})}var c=function(a,b){this.init("popover",a,b)};if(!a.fn.tooltip)throw new Error("Popover requires tooltip.js");c.VERSION="3.2.0",c.DEFAULTS=a.extend({},a.fn.tooltip.Constructor.DEFAULTS,{placement:"right",trigger:"click",content:"",template:'<div class="popover" role="tooltip"><div class="arrow"></div><h3 class="popover-title"></h3><div class="popover-content"></div></div>'}),c.prototype=a.extend({},a.fn.tooltip.Constructor.prototype),c.prototype.constructor=c,c.prototype.getDefaults=function(){return c.DEFAULTS},c.prototype.setContent=function(){var a=this.tip(),b=this.getTitle(),c=this.getContent();a.find(".popover-title")[this.options.html?"html":"text"](b),a.find(".popover-content").empty()[this.options.html?"string"==typeof c?"html":"append":"text"](c),a.removeClass("fade top bottom left right in"),a.find(".popover-title").html()||a.find(".popover-title").hide()},c.prototype.hasContent=function(){return this.getTitle()||this.getContent()},c.prototype.getContent=function(){var a=this.$element,b=this.options;return a.attr("data-content")||("function"==typeof b.content?b.content.call(a[0]):b.content)},c.prototype.arrow=function(){return this.$arrow=this.$arrow||this.tip().find(".arrow")},c.prototype.tip=function(){return this.$tip||(this.$tip=a(this.options.template)),this.$tip};var d=a.fn.popover;a.fn.popover=b,a.fn.popover.Constructor=c,a.fn.popover.noConflict=function(){return a.fn.popover=d,this}}(jQuery),+function(a){"use strict";function b(c,d){var e=a.proxy(this.process,this);this.$body=a("body"),this.$scrollElement=a(a(c).is("body")?window:c),this.options=a.extend({},b.DEFAULTS,d),this.selector=(this.options.target||"")+" .nav li > a",this.offsets=[],this.targets=[],this.activeTarget=null,this.scrollHeight=0,this.$scrollElement.on("scroll.bs.scrollspy",e),this.refresh(),this.process()}function c(c){return this.each(function(){var d=a(this),e=d.data("bs.scrollspy"),f="object"==typeof c&&c;e||d.data("bs.scrollspy",e=new b(this,f)),"string"==typeof c&&e[c]()})}b.VERSION="3.2.0",b.DEFAULTS={offset:10},b.prototype.getScrollHeight=function(){return this.$scrollElement[0].scrollHeight||Math.max(this.$body[0].scrollHeight,document.documentElement.scrollHeight)},b.prototype.refresh=function(){var b="offset",c=0;a.isWindow(this.$scrollElement[0])||(b="position",c=this.$scrollElement.scrollTop()),this.offsets=[],this.targets=[],this.scrollHeight=this.getScrollHeight();var d=this;this.$body.find(this.selector).map(function(){var d=a(this),e=d.data("target")||d.attr("href"),f=/^#./.test(e)&&a(e);return f&&f.length&&f.is(":visible")&&[[f[b]().top+c,e]]||null}).sort(function(a,b){return a[0]-b[0]}).each(function(){d.offsets.push(this[0]),d.targets.push(this[1])})},b.prototype.process=function(){var a,b=this.$scrollElement.scrollTop()+this.options.offset,c=this.getScrollHeight(),d=this.options.offset+c-this.$scrollElement.height(),e=this.offsets,f=this.targets,g=this.activeTarget;if(this.scrollHeight!=c&&this.refresh(),b>=d)return g!=(a=f[f.length-1])&&this.activate(a);if(g&&b<=e[0])return g!=(a=f[0])&&this.activate(a);for(a=e.length;a--;)g!=f[a]&&b>=e[a]&&(!e[a+1]||b<=e[a+1])&&this.activate(f[a])},b.prototype.activate=function(b){this.activeTarget=b,a(this.selector).parentsUntil(this.options.target,".active").removeClass("active");var c=this.selector+'[data-target="'+b+'"],'+this.selector+'[href="'+b+'"]',d=a(c).parents("li").addClass("active");d.parent(".dropdown-menu").length&&(d=d.closest("li.dropdown").addClass("active")),d.trigger("activate.bs.scrollspy")};var d=a.fn.scrollspy;a.fn.scrollspy=c,a.fn.scrollspy.Constructor=b,a.fn.scrollspy.noConflict=function(){return a.fn.scrollspy=d,this},a(window).on("load.bs.scrollspy.data-api",function(){a('[data-spy="scroll"]').each(function(){var b=a(this);c.call(b,b.data())})})}(jQuery),+function(a){"use strict";function b(b){return this.each(function(){var d=a(this),e=d.data("bs.tab");e||d.data("bs.tab",e=new c(this)),"string"==typeof b&&e[b]()})}var c=function(b){this.element=a(b)};c.VERSION="3.2.0",c.prototype.show=function(){var b=this.element,c=b.closest("ul:not(.dropdown-menu)"),d=b.data("target");if(d||(d=b.attr("href"),d=d&&d.replace(/.*(?=#[^\s]*$)/,"")),!b.parent("li").hasClass("active")){var e=c.find(".active:last a")[0],f=a.Event("show.bs.tab",{relatedTarget:e});if(b.trigger(f),!f.isDefaultPrevented()){var g=a(d);this.activate(b.closest("li"),c),this.activate(g,g.parent(),function(){b.trigger({type:"shown.bs.tab",relatedTarget:e})})}}},c.prototype.activate=function(b,c,d){function e(){f.removeClass("active").find("> .dropdown-menu > .active").removeClass("active"),b.addClass("active"),g?(b[0].offsetWidth,b.addClass("in")):b.removeClass("fade"),b.parent(".dropdown-menu")&&b.closest("li.dropdown").addClass("active"),d&&d()}var f=c.find("> .active"),g=d&&a.support.transition&&f.hasClass("fade");g?f.one("bsTransitionEnd",e).emulateTransitionEnd(150):e(),f.removeClass("in")};var d=a.fn.tab;a.fn.tab=b,a.fn.tab.Constructor=c,a.fn.tab.noConflict=function(){return a.fn.tab=d,this},a(document).on("click.bs.tab.data-api",'[data-toggle="tab"], [data-toggle="pill"]',function(c){c.preventDefault(),b.call(a(this),"show")})}(jQuery),+function(a){"use strict";function b(b){return this.each(function(){var d=a(this),e=d.data("bs.affix"),f="object"==typeof b&&b;e||d.data("bs.affix",e=new c(this,f)),"string"==typeof b&&e[b]()})}var c=function(b,d){this.options=a.extend({},c.DEFAULTS,d),this.$target=a(this.options.target).on("scroll.bs.affix.data-api",a.proxy(this.checkPosition,this)).on("click.bs.affix.data-api",a.proxy(this.checkPositionWithEventLoop,this)),this.$element=a(b),this.affixed=this.unpin=this.pinnedOffset=null,this.checkPosition()};c.VERSION="3.2.0",c.RESET="affix affix-top affix-bottom",c.DEFAULTS={offset:0,target:window},c.prototype.getPinnedOffset=function(){if(this.pinnedOffset)return this.pinnedOffset;this.$element.removeClass(c.RESET).addClass("affix");var a=this.$target.scrollTop(),b=this.$element.offset();return this.pinnedOffset=b.top-a},c.prototype.checkPositionWithEventLoop=function(){setTimeout(a.proxy(this.checkPosition,this),1)},c.prototype.checkPosition=function(){if(this.$element.is(":visible")){var b=a(document).height(),d=this.$target.scrollTop(),e=this.$element.offset(),f=this.options.offset,g=f.top,h=f.bottom;"object"!=typeof f&&(h=g=f),"function"==typeof g&&(g=f.top(this.$element)),"function"==typeof h&&(h=f.bottom(this.$element));var i=null!=this.unpin&&d+this.unpin<=e.top?!1:null!=h&&e.top+this.$element.height()>=b-h?"bottom":null!=g&&g>=d?"top":!1;if(this.affixed!==i){null!=this.unpin&&this.$element.css("top","");var j="affix"+(i?"-"+i:""),k=a.Event(j+".bs.affix");this.$element.trigger(k),k.isDefaultPrevented()||(this.affixed=i,this.unpin="bottom"==i?this.getPinnedOffset():null,this.$element.removeClass(c.RESET).addClass(j).trigger(a.Event(j.replace("affix","affixed"))),"bottom"==i&&this.$element.offset({top:b-this.$element.height()-h}))}}};var d=a.fn.affix;a.fn.affix=b,a.fn.affix.Constructor=c,a.fn.affix.noConflict=function(){return a.fn.affix=d,this},a(window).on("load",function(){a('[data-spy="affix"]').each(function(){var c=a(this),d=c.data();d.offset=d.offset||{},d.offsetBottom&&(d.offset.bottom=d.offsetBottom),d.offsetTop&&(d.offset.top=d.offsetTop),b.call(c,d)})})}(jQuery);;
/*!
 * jQuery Color Animations v2.0pre
 * http://jquery.org/
 *
 * Copyright 2011 John Resig
 * Dual licensed under the MIT or GPL Version 2 licenses.
 * http://jquery.org/license
 */

(function( jQuery, undefined ){
	var stepHooks = "backgroundColor borderBottomColor borderLeftColor borderRightColor borderTopColor color outlineColor".split(" "),

		// plusequals test for += 100 -= 100
		rplusequals = /^([\-+])=\s*(\d+\.?\d*)/,
		// a set of RE's that can match strings and generate color tuples.
		stringParsers = [{
				re: /rgba?\(\s*(\d{1,3})\s*,\s*(\d{1,3})\s*,\s*(\d{1,3})\s*(?:,\s*(\d+(?:\.\d+)?)\s*)?\)/,
				parse: function( execResult ) {
					return [
						execResult[ 1 ],
						execResult[ 2 ],
						execResult[ 3 ],
						execResult[ 4 ]
					];
				}
			}, {
				re: /rgba?\(\s*(\d+(?:\.\d+)?)\%\s*,\s*(\d+(?:\.\d+)?)\%\s*,\s*(\d+(?:\.\d+)?)\%\s*(?:,\s*(\d+(?:\.\d+)?)\s*)?\)/,
				parse: function( execResult ) {
					return [
						2.55 * execResult[1],
						2.55 * execResult[2],
						2.55 * execResult[3],
						execResult[ 4 ]
					];
				}
			}, {
				re: /#([a-fA-F0-9]{2})([a-fA-F0-9]{2})([a-fA-F0-9]{2})/,
				parse: function( execResult ) {
					return [
						parseInt( execResult[ 1 ], 16 ),
						parseInt( execResult[ 2 ], 16 ),
						parseInt( execResult[ 3 ], 16 )
					];
				}
			}, {
				re: /#([a-fA-F0-9])([a-fA-F0-9])([a-fA-F0-9])/,
				parse: function( execResult ) {
					return [
						parseInt( execResult[ 1 ] + execResult[ 1 ], 16 ),
						parseInt( execResult[ 2 ] + execResult[ 2 ], 16 ),
						parseInt( execResult[ 3 ] + execResult[ 3 ], 16 )
					];
				}
			}, {
				re: /hsla?\(\s*(\d+(?:\.\d+)?)\s*,\s*(\d+(?:\.\d+)?)\%\s*,\s*(\d+(?:\.\d+)?)\%\s*(?:,\s*(\d+(?:\.\d+)?)\s*)?\)/,
				space: "hsla",
				parse: function( execResult ) {
					return [
						execResult[1],
						execResult[2] / 100,
						execResult[3] / 100,
						execResult[4]
					];
				}
			}],

		// jQuery.Color( )
		color = jQuery.Color = function( color, green, blue, alpha ) {
			return new jQuery.Color.fn.parse( color, green, blue, alpha );
		},
		spaces = {
			rgba: {
				cache: "_rgba",
				props: {
					red: {
						idx: 0,
						type: "byte",
						empty: true
					},
					green: {
						idx: 1,
						type: "byte",
						empty: true
					},
					blue: {
						idx: 2,
						type: "byte",
						empty: true
					},
					alpha: {
						idx: 3,
						type: "percent",
						def: 1
					}
				}
			},
			hsla: {
				cache: "_hsla",
				props: {
					hue: {
						idx: 0,
						type: "degrees",
						empty: true
					},
					saturation: {
						idx: 1,
						type: "percent",
						empty: true
					},
					lightness: {
						idx: 2,
						type: "percent",
						empty: true
					}
				}
			}
		},
		propTypes = {
			"byte": {
				floor: true,
				min: 0,
				max: 255
			},
			"percent": {
				min: 0,
				max: 1
			},
			"degrees": {
				mod: 360,
				floor: true
			}
		},
		rgbaspace = spaces.rgba.props,
		support = color.support = {},

		// colors = jQuery.Color.names
		colors,

		// local aliases of functions called often
		each = jQuery.each;

	spaces.hsla.props.alpha = rgbaspace.alpha;

	function clamp( value, prop, alwaysAllowEmpty ) {
		var type = propTypes[ prop.type ] || {},
			allowEmpty = prop.empty || alwaysAllowEmpty;

		if ( allowEmpty && value == null ) {
			return null;
		}
		if ( prop.def && value == null ) {
			return prop.def;
		}
		if ( type.floor ) {
			value = ~~value;
		} else {
			value = parseFloat( value );
		}
		if ( value == null || isNaN( value ) ) {
			return prop.def;
		}
		if ( type.mod ) {
			value = value % type.mod;
			// -10 -> 350
			return value < 0 ? type.mod + value : value;
		}

		// for now all property types without mod have min and max
		return type.min > value ? type.min : type.max < value ? type.max : value;
	}

	function stringParse( string ) {
		var inst = color(),
			rgba = inst._rgba = [];

		string = string.toLowerCase();

		each( stringParsers, function( i, parser ) {
			var match = parser.re.exec( string ),
				values = match && parser.parse( match ),
				parsed,
				spaceName = parser.space || "rgba",
				cache = spaces[ spaceName ].cache;


			if ( values ) {
				parsed = inst[ spaceName ]( values );

				// if this was an rgba parse the assignment might happen twice
				// oh well....
				inst[ cache ] = parsed[ cache ];
				rgba = inst._rgba = parsed._rgba;

				// exit each( stringParsers ) here because we matched
				return false;
			}
		});

		// Found a stringParser that handled it
		if ( rgba.length !== 0 ) {

			// if this came from a parsed string, force "transparent" when alpha is 0
			// chrome, (and maybe others) return "transparent" as rgba(0,0,0,0)
			if ( Math.max.apply( Math, rgba ) === 0 ) {
				jQuery.extend( rgba, colors.transparent );
			}
			return inst;
		}

		// named colors / default - filter back through parse function
		if ( string = colors[ string ] ) {
			return string;
		}
	}

	color.fn = color.prototype = {
		constructor: color,
		parse: function( red, green, blue, alpha ) {
			if ( red === undefined ) {
				this._rgba = [ null, null, null, null ];
				return this;
			}
			if ( red instanceof jQuery || red.nodeType ) {
				red = red instanceof jQuery ? red.css( green ) : jQuery( red ).css( green );
				green = undefined;
			}

			var inst = this,
				type = jQuery.type( red ),
				rgba = this._rgba = [],
				source;

			// more than 1 argument specified - assume ( red, green, blue, alpha )
			if ( green !== undefined ) {
				red = [ red, green, blue, alpha ];
				type = "array";
			}

			if ( type === "string" ) {
				return this.parse( stringParse( red ) || colors._default );
			}

			if ( type === "array" ) {
				each( rgbaspace, function( key, prop ) {
					rgba[ prop.idx ] = clamp( red[ prop.idx ], prop );
				});
				return this;
			}

			if ( type === "object" ) {
				if ( red instanceof color ) {
					each( spaces, function( spaceName, space ) {
						if ( red[ space.cache ] ) {
							inst[ space.cache ] = red[ space.cache ].slice();
						}
					});
				} else {
					each( spaces, function( spaceName, space ) {
						each( space.props, function( key, prop ) {
							var cache = space.cache;

							// if the cache doesn't exist, and we know how to convert
							if ( !inst[ cache ] && space.to ) {

								// if the value was null, we don't need to copy it
								// if the key was alpha, we don't need to copy it either
								if ( red[ key ] == null || key === "alpha") {
									return;
								}
								inst[ cache ] = space.to( inst._rgba );
							}

							// this is the only case where we allow nulls for ALL properties.
							// call clamp with alwaysAllowEmpty
							inst[ cache ][ prop.idx ] = clamp( red[ key ], prop, true );
						});
					});
				}
				return this;
			}
		},
		is: function( compare ) {
			var is = color( compare ),
				same = true,
				myself = this;

			each( spaces, function( _, space ) {
				var isCache = is[ space.cache ],
					localCache;
				if (isCache) {
					localCache = myself[ space.cache ] || space.to && space.to( myself._rgba ) || [];
					each( space.props, function( _, prop ) {
						if ( isCache[ prop.idx ] != null ) {
							same = ( isCache[ prop.idx ] === localCache[ prop.idx ] );
							return same;
						}
					});
				}
				return same;
			});
			return same;
		},
		_space: function() {
			var used = [],
				inst = this;
			each( spaces, function( spaceName, space ) {
				if ( inst[ space.cache ] ) {
					used.push( spaceName );
				}
			});
			return used.pop();
		},
		transition: function( other, distance ) {
			var end = color( other ),
				spaceName = end._space(),
				space = spaces[ spaceName ],
				start = this[ space.cache ] || space.to( this._rgba ),
				result = start.slice();

			end = end[ space.cache ];
			each( space.props, function( key, prop ) {
				var index = prop.idx,
					startValue = start[ index ],
					endValue = end[ index ],
					type = propTypes[ prop.type ] || {};

				// if null, don't override start value
				if ( endValue === null ) {
					return;
				}
				// if null - use end
				if ( startValue === null ) {
					result[ index ] = endValue;
				} else {
					if ( type.mod ) {
						if ( endValue - startValue > type.mod / 2 ) {
							startValue += type.mod;
						} else if ( startValue - endValue > type.mod / 2 ) {
							startValue -= type.mod;
						}
					}
					result[ prop.idx ] = clamp( ( endValue - startValue ) * distance + startValue, prop );
				}
			});
			return this[ spaceName ]( result );
		},
		blend: function( opaque ) {
			// if we are already opaque - return ourself
			if ( this._rgba[ 3 ] === 1 ) {
				return this;
			}

			var rgb = this._rgba.slice(),
				a = rgb.pop(),
				blend = color( opaque )._rgba;

			return color( jQuery.map( rgb, function( v, i ) {
				return ( 1 - a ) * blend[ i ] + a * v;
			}));
		},
		toRgbaString: function() {
			var prefix = "rgba(",
				rgba = jQuery.map( this._rgba, function( v, i ) {
					return v == null ? ( i > 2 ? 1 : 0 ) : v;
				});

			if ( rgba[ 3 ] === 1 ) {
				rgba.pop();
				prefix = "rgb(";
			}

			return prefix + rgba.join(",") + ")";
		},
		toHslaString: function() {
			var prefix = "hsla(",
				hsla = jQuery.map( this.hsla(), function( v, i ) {
					if ( v == null ) {
						v = i > 2 ? 1 : 0;
					}

					// catch 1 and 2
					if ( i && i < 3 ) {
						v = Math.round( v * 100 ) + "%";
					}
					return v;
				});

			if ( hsla[ 3 ] === 1 ) {
				hsla.pop();
				prefix = "hsl(";
			}
			return prefix + hsla.join(",") + ")";
		},
		toHexString: function( includeAlpha ) {
			var rgba = this._rgba.slice(),
				alpha = rgba.pop();

			if ( includeAlpha ) {
				rgba.push( ~~( alpha * 255 ) );
			}

			return "#" + jQuery.map( rgba, function( v, i ) {

				// default to 0 when nulls exist
				v = ( v || 0 ).toString( 16 );
				return v.length === 1 ? "0" + v : v;
			}).join("");
		},
		toString: function() {
			return this._rgba[ 3 ] === 0 ? "transparent" : this.toRgbaString();
		}
	};
	color.fn.parse.prototype = color.fn;

	// hsla conversions adapted from:
	// http://www.google.com/codesearch/p#OAMlx_jo-ck/src/third_party/WebKit/Source/WebCore/inspector/front-end/Color.js&d=7&l=193

	function hue2rgb( p, q, h ) {
		h = ( h + 1 ) % 1;
		if ( h * 6 < 1 ) {
			return p + (q - p) * 6 * h;
		}
		if ( h * 2 < 1) {
			return q;
		}
		if ( h * 3 < 2 ) {
			return p + (q - p) * ((2/3) - h) * 6;
		}
		return p;
	}

	spaces.hsla.to = function ( rgba ) {
		if ( rgba[ 0 ] == null || rgba[ 1 ] == null || rgba[ 2 ] == null ) {
			return [ null, null, null, rgba[ 3 ] ];
		}
		var r = rgba[ 0 ] / 255,
			g = rgba[ 1 ] / 255,
			b = rgba[ 2 ] / 255,
			a = rgba[ 3 ],
			max = Math.max( r, g, b ),
			min = Math.min( r, g, b ),
			diff = max - min,
			add = max + min,
			l = add * 0.5,
			h, s;

		if ( min === max ) {
			h = 0;
		} else if ( r === max ) {
			h = ( 60 * ( g - b ) / diff ) + 360;
		} else if ( g === max ) {
			h = ( 60 * ( b - r ) / diff ) + 120;
		} else {
			h = ( 60 * ( r - g ) / diff ) + 240;
		}

		if ( l === 0 || l === 1 ) {
			s = l;
		} else if ( l <= 0.5 ) {
			s = diff / add;
		} else {
			s = diff / ( 2 - add );
		}
		return [ Math.round(h) % 360, s, l, a == null ? 1 : a ];
	};

	spaces.hsla.from = function ( hsla ) {
		if ( hsla[ 0 ] == null || hsla[ 1 ] == null || hsla[ 2 ] == null ) {
			return [ null, null, null, hsla[ 3 ] ];
		}
		var h = hsla[ 0 ] / 360,
			s = hsla[ 1 ],
			l = hsla[ 2 ],
			a = hsla[ 3 ],
			q = l <= 0.5 ? l * ( 1 + s ) : l + s - l * s,
			p = 2 * l - q,
			r, g, b;

		return [
			Math.round( hue2rgb( p, q, h + ( 1 / 3 ) ) * 255 ),
			Math.round( hue2rgb( p, q, h ) * 255 ),
			Math.round( hue2rgb( p, q, h - ( 1 / 3 ) ) * 255 ),
			a
		];
	};


	each( spaces, function( spaceName, space ) {
		var props = space.props,
			cache = space.cache,
			to = space.to,
			from = space.from;

		// makes rgba() and hsla()
		color.fn[ spaceName ] = function( value ) {

			// generate a cache for this space if it doesn't exist
			if ( to && !this[ cache ] ) {
				this[ cache ] = to( this._rgba );
			}
			if ( value === undefined ) {
				return this[ cache ].slice();
			}

			var type = jQuery.type( value ),
				arr = ( type === "array" || type === "object" ) ? value : arguments,
				local = this[ cache ].slice(),
				ret;

			each( props, function( key, prop ) {
				var val = arr[ type === "object" ? key : prop.idx ];
				if ( val == null ) {
					val = local[ prop.idx ];
				}
				local[ prop.idx ] = clamp( val, prop );
			});

			if ( from ) {
				ret = color( from( local ) );
				ret[ cache ] = local;
				return ret;
			} else {
				return color( local );
			}
		};

		// makes red() green() blue() alpha() hue() saturation() lightness()
		each( props, function( key, prop ) {
			// alpha is included in more than one space
			if ( color.fn[ key ] ) {
				return;
			}
			color.fn[ key ] = function( value ) {
				var vtype = jQuery.type( value ),
					fn = ( key === 'alpha' ? ( this._hsla ? 'hsla' : 'rgba' ) : spaceName ),
					local = this[ fn ](),
					cur = local[ prop.idx ],
					match;

				if ( vtype === "undefined" ) {
					return cur;
				}

				if ( vtype === "function" ) {
					value = value.call( this, cur );
					vtype = jQuery.type( value );
				}
				if ( value == null && prop.empty ) {
					return this;
				}
				if ( vtype === "string" ) {
					match = rplusequals.exec( value );
					if ( match ) {
						value = cur + parseFloat( match[ 2 ] ) * ( match[ 1 ] === "+" ? 1 : -1 );
					}
				}
				local[ prop.idx ] = value;
				return this[ fn ]( local );
			};
		});
	});

	// add .fx.step functions
	each( stepHooks, function( i, hook ) {
		jQuery.cssHooks[ hook ] = {
			set: function( elem, value ) {
				var parsed, backgroundColor, curElem;

				if ( jQuery.type( value ) !== 'string' || ( parsed = stringParse( value ) ) )
				{
					value = color( parsed || value );
					if ( !support.rgba && value._rgba[ 3 ] !== 1 ) {
						curElem = hook === "backgroundColor" ? elem.parentNode : elem;
						do {
							backgroundColor = jQuery.curCSS( curElem, "backgroundColor" );
						} while (
							( backgroundColor === "" || backgroundColor === "transparent" ) &&
							( curElem = curElem.parentNode ) &&
							curElem.style
						);

						value = value.blend( backgroundColor && backgroundColor !== "transparent" ?
							backgroundColor :
							"_default" );
					}

					value = value.toRgbaString();
				}
				elem.style[ hook ] = value;
			}
		};
		jQuery.fx.step[ hook ] = function( fx ) {
			if ( !fx.colorInit ) {
				fx.start = color( fx.elem, hook );
				fx.end = color( fx.end );
				fx.colorInit = true;
			}
			jQuery.cssHooks[ hook ].set( fx.elem, fx.start.transition( fx.end, fx.pos ) );
		};
	});

	// detect rgba support
	jQuery(function() {
		var div = document.createElement( "div" ),
			div_style = div.style;

		div_style.cssText = "background-color:rgba(1,1,1,.5)";
		support.rgba = div_style.backgroundColor.indexOf( "rgba" ) > -1;
	});

	// Some named colors to work with
	// From Interface by Stefan Petre
	// http://interface.eyecon.ro/
	colors = jQuery.Color.names = {
		aqua: "#00ffff",
		azure: "#f0ffff",
		beige: "#f5f5dc",
		black: "#000000",
		blue: "#0000ff",
		brown: "#a52a2a",
		cyan: "#00ffff",
		darkblue: "#00008b",
		darkcyan: "#008b8b",
		darkgrey: "#a9a9a9",
		darkgreen: "#006400",
		darkkhaki: "#bdb76b",
		darkmagenta: "#8b008b",
		darkolivegreen: "#556b2f",
		darkorange: "#ff8c00",
		darkorchid: "#9932cc",
		darkred: "#8b0000",
		darksalmon: "#e9967a",
		darkviolet: "#9400d3",
		fuchsia: "#ff00ff",
		gold: "#ffd700",
		green: "#008000",
		indigo: "#4b0082",
		khaki: "#f0e68c",
		lightblue: "#add8e6",
		lightcyan: "#e0ffff",
		lightgreen: "#90ee90",
		lightgrey: "#d3d3d3",
		lightpink: "#ffb6c1",
		lightyellow: "#ffffe0",
		lime: "#00ff00",
		magenta: "#ff00ff",
		maroon: "#800000",
		navy: "#000080",
		olive: "#808000",
		orange: "#ffa500",
		pink: "#ffc0cb",
		purple: "#800080",
		violet: "#800080",
		red: "#ff0000",
		silver: "#c0c0c0",
		white: "#ffffff",
		yellow: "#ffff00",
		transparent: [ null, null, null, 0 ],
		_default: "#ffffff"
	};
})( jQuery );
;
(function(n){typeof define=="function"&&define.amd?define(["jquery"],n):n(typeof jQuery!="undefined"?jQuery:window.Zepto)})(function(n){"use strict";function u(t){var i=t.data;t.isDefaultPrevented()||(t.preventDefault(),n(t.target).ajaxSubmit(i))}function f(t){var r=t.target,u=n(r),f,i,e;if(!u.is("[type=submit],[type=image]")){if(f=u.closest("[type=submit]"),f.length===0)return;r=f[0]}i=this;i.clk=r;r.type=="image"&&(t.offsetX!==undefined?(i.clk_x=t.offsetX,i.clk_y=t.offsetY):typeof n.fn.offset=="function"?(e=u.offset(),i.clk_x=t.pageX-e.left,i.clk_y=t.pageY-e.top):(i.clk_x=t.pageX-r.offsetLeft,i.clk_y=t.pageY-r.offsetTop));setTimeout(function(){i.clk=i.clk_x=i.clk_y=null},100)}function t(){if(n.fn.ajaxSubmit.debug){var t="[jquery.form] "+Array.prototype.join.call(arguments,"");window.console&&window.console.log?window.console.log(t):window.opera&&window.opera.postError&&window.opera.postError(t)}}var i={},r;i.fileapi=n("<input type='file'/>").get(0).files!==undefined;i.formdata=window.FormData!==undefined;r=!!n.fn.prop;n.fn.attr2=function(){if(!r)return this.attr.apply(this,arguments);var n=this.prop.apply(this,arguments);return n&&n.jquery||typeof n=="string"?n:this.attr.apply(this,arguments)};n.fn.ajaxSubmit=function(u){function ot(t){for(var r=n.param(t,u.traditional).split("&"),o=r.length,e=[],f,i=0;i<o;i++)r[i]=r[i].replace(/\+/g," "),f=r[i].split("="),e.push([decodeURIComponent(f[0]),decodeURIComponent(f[1])]);return e}function st(t){for(var f,r,s,o=new FormData,i=0;i<t.length;i++)o.append(t[i].name,t[i].value);if(u.extraData)for(f=ot(u.extraData),i=0;i<f.length;i++)f[i]&&o.append(f[i][0],f[i][1]);return u.data=null,r=n.extend(!0,{},n.ajaxSettings,u,{contentType:!1,processData:!1,cache:!1,type:e||"POST"}),u.uploadProgress&&(r.xhr=function(){var t=n.ajaxSettings.xhr();return t.upload&&t.upload.addEventListener("progress",function(n){var t=0,i=n.loaded||n.position,r=n.total;n.lengthComputable&&(t=Math.ceil(i/r*100));u.uploadProgress(n,i,r,t)},!1),t}),r.data=null,s=r.beforeSend,r.beforeSend=function(n,t){t.data=u.formData?u.formData:o;s&&s.call(this,n,t)},n.ajax(r)}function ft(i){function ot(n){var i=null;try{n.contentWindow&&(i=n.contentWindow.document)}catch(r){t("cannot get iframe.contentWindow document: "+r)}if(i)return i;try{i=n.contentDocument?n.contentDocument:n.document}catch(r){t("cannot get iframe.contentDocument: "+r);i=n.document}return i}function st(){function h(){try{var n=ot(a).readyState;t("state = "+n);n&&n.toLowerCase()=="uninitialized"&&setTimeout(h,50)}catch(i){t("Server abort: ",i," (",i.name,")");b(tt);g&&clearTimeout(g);g=undefined}}var u=f.attr2("target"),s=f.attr2("action"),r,i,c;l.setAttribute("target",d);(!e||/post/i.test(e))&&l.setAttribute("method","POST");s!=o.url&&l.setAttribute("action",o.url);o.skipEncodingOverride||e&&!/post/i.test(e)||f.attr({encoding:"multipart/form-data",enctype:"multipart/form-data"});o.timeout&&(g=setTimeout(function(){rt=!0;b(ut)},o.timeout));r=[];try{if(o.extraData)for(i in o.extraData)o.extraData.hasOwnProperty(i)&&(n.isPlainObject(o.extraData[i])&&o.extraData[i].hasOwnProperty("name")&&o.extraData[i].hasOwnProperty("value")?r.push(n('<input type="hidden" name="'+o.extraData[i].name+'">').val(o.extraData[i].value).appendTo(l)[0]):r.push(n('<input type="hidden" name="'+i+'">').val(o.extraData[i]).appendTo(l)[0]));o.iframeTarget||v.appendTo("body");a.attachEvent?a.attachEvent("onload",b):a.addEventListener("load",b,!1);setTimeout(h,15);try{l.submit()}catch(y){c=document.createElement("form").submit;c.apply(l)}}finally{l.setAttribute("action",s);u?l.setAttribute("target",u):f.removeAttr("target");n(r).remove()}}function b(i){var r,u,w,f,k,d,e,c,l;if(!s.aborted&&!lt){if(h=ot(a),h||(t("cannot access response document"),i=tt),i===ut&&s){s.abort("timeout");y.reject(s,"timeout");return}if(i==tt&&s){s.abort("server abort");y.reject(s,"error","server abort");return}if(h&&h.location.href!=o.iframeSrc||rt){a.detachEvent?a.detachEvent("onload",b):a.removeEventListener("load",b,!1);r="success";try{if(rt)throw"timeout";if(w=o.dataType=="xml"||h.XMLDocument||n.isXMLDoc(h),t("isXml="+w),!w&&window.opera&&(h.body===null||!h.body.innerHTML)&&--ct){t("requeing onLoad callback, DOM not available");setTimeout(b,250);return}f=h.body?h.body:h.documentElement;s.responseText=f?f.innerHTML:null;s.responseXML=h.XMLDocument?h.XMLDocument:h;w&&(o.dataType="xml");s.getResponseHeader=function(n){var t={"content-type":o.dataType};return t[n.toLowerCase()]};f&&(s.status=Number(f.getAttribute("status"))||s.status,s.statusText=f.getAttribute("statusText")||s.statusText);k=(o.dataType||"").toLowerCase();d=/(json|script|text)/.test(k);d||o.textarea?(e=h.getElementsByTagName("textarea")[0],e?(s.responseText=e.value,s.status=Number(e.getAttribute("status"))||s.status,s.statusText=e.getAttribute("statusText")||s.statusText):d&&(c=h.getElementsByTagName("pre")[0],l=h.getElementsByTagName("body")[0],c?s.responseText=c.textContent?c.textContent:c.innerText:l&&(s.responseText=l.textContent?l.textContent:l.innerText))):k=="xml"&&!s.responseXML&&s.responseText&&(s.responseXML=at(s.responseText));try{ht=yt(s,k,o)}catch(nt){r="parsererror";s.error=u=nt||r}}catch(nt){t("error caught: ",nt);r="error";s.error=u=nt||r}s.aborted&&(t("upload aborted"),r=null);s.status&&(r=s.status>=200&&s.status<300||s.status===304?"success":"error");r==="success"?(o.success&&o.success.call(o.context,ht,"success",s),y.resolve(s.responseText,"success",s),p&&n.event.trigger("ajaxSuccess",[s,o])):r&&(u===undefined&&(u=s.statusText),o.error&&o.error.call(o.context,s,r,u),y.reject(s,"error",u),p&&n.event.trigger("ajaxError",[s,o,u]));p&&n.event.trigger("ajaxComplete",[s,o]);p&&!--n.active&&n.event.trigger("ajaxStop");o.complete&&o.complete.call(o.context,s,r);lt=!0;o.timeout&&clearTimeout(g);setTimeout(function(){o.iframeTarget?v.attr("src",o.iframeSrc):v.remove();s.responseXML=null},100)}}}var l=f[0],it,nt,o,p,d,v,a,s,k,w,rt,g,y=n.Deferred(),ut,tt,ft,et,ht,h,ct,lt;if(y.abort=function(n){s.abort(n)},i)for(nt=0;nt<c.length;nt++)it=n(c[nt]),r?it.prop("disabled",!1):it.removeAttr("disabled");if(o=n.extend(!0,{},n.ajaxSettings,u),o.context=o.context||o,d="jqFormIO"+(new Date).getTime(),o.iframeTarget?(v=n(o.iframeTarget),w=v.attr2("name"),w?d=w:v.attr2("name",d)):(v=n('<iframe name="'+d+'" src="'+o.iframeSrc+'" />'),v.css({position:"absolute",top:"-1000px",left:"-1000px"})),a=v[0],s={aborted:0,responseText:null,responseXML:null,status:0,statusText:"n/a",getAllResponseHeaders:function(){},getResponseHeader:function(){},setRequestHeader:function(){},abort:function(i){var r=i==="timeout"?"timeout":"aborted";t("aborting upload... "+r);this.aborted=1;try{a.contentWindow.document.execCommand&&a.contentWindow.document.execCommand("Stop")}catch(u){}v.attr("src",o.iframeSrc);s.error=r;o.error&&o.error.call(o.context,s,r,i);p&&n.event.trigger("ajaxError",[s,o,r]);o.complete&&o.complete.call(o.context,s,r)}},p=o.global,p&&0==n.active++&&n.event.trigger("ajaxStart"),p&&n.event.trigger("ajaxSend",[s,o]),o.beforeSend&&o.beforeSend.call(o.context,s,o)===!1)return o.global&&n.active--,y.reject(),y;if(s.aborted)return y.reject(),y;k=l.clk;k&&(w=k.name,w&&!k.disabled&&(o.extraData=o.extraData||{},o.extraData[w]=k.value,k.type=="image"&&(o.extraData[w+".x"]=l.clk_x,o.extraData[w+".y"]=l.clk_y)));ut=1;tt=2;ft=n("meta[name=csrf-token]").attr("content");et=n("meta[name=csrf-param]").attr("content");et&&ft&&(o.extraData=o.extraData||{},o.extraData[et]=ft);o.forceSync?st():setTimeout(st,10);ct=50;var at=n.parseXML||function(n,t){return window.ActiveXObject?(t=new ActiveXObject("Microsoft.XMLDOM"),t.async="false",t.loadXML(n)):t=(new DOMParser).parseFromString(n,"text/xml"),t&&t.documentElement&&t.documentElement.nodeName!="parsererror"?t:null},vt=n.parseJSON||function(s){return window.eval("("+s+")")},yt=function(t,i,r){var f=t.getResponseHeader("content-type")||"",e=i==="xml"||!i&&f.indexOf("xml")>=0,u=e?t.responseXML:t.responseText;return e&&u.documentElement.nodeName==="parsererror"&&n.error&&n.error("parsererror"),r&&r.dataFilter&&(u=r.dataFilter(u,i)),typeof u=="string"&&(i==="json"||!i&&f.indexOf("json")>=0?u=vt(u):(i==="script"||!i&&f.indexOf("javascript")>=0)&&n.globalEval(u)),u};return y}var e,b,o,f,a,v,c,y,s,l,h,d,g,nt,ut,p,w;if(!this.length)return t("ajaxSubmit: skipping submit process - no element selected"),this;if(f=this,typeof u=="function"?u={success:u}:u===undefined&&(u={}),e=u.type||this.attr2("method"),b=u.url||this.attr2("action"),o=typeof b=="string"?n.trim(b):"",o=o||window.location.href||"",o&&(o=(o.match(/^([^#]+)/)||[])[1]),u=n.extend(!0,{url:o,success:n.ajaxSettings.success,type:e||n.ajaxSettings.type,iframeSrc:/^https/i.test(window.location.href||"")?"javascript:false":"about:blank"},u),a={},this.trigger("form-pre-serialize",[this,u,a]),a.veto)return t("ajaxSubmit: submit vetoed via form-pre-serialize trigger"),this;if(u.beforeSerialize&&u.beforeSerialize(this,u)===!1)return t("ajaxSubmit: submit aborted via beforeSerialize callback"),this;if(v=u.traditional,v===undefined&&(v=n.ajaxSettings.traditional),c=[],s=this.formToArray(u.semantic,c),u.data&&(u.extraData=u.data,y=n.param(u.data,v)),u.beforeSubmit&&u.beforeSubmit(s,this,u)===!1)return t("ajaxSubmit: submit aborted via beforeSubmit callback"),this;if(this.trigger("form-submit-validate",[s,this,u,a]),a.veto)return t("ajaxSubmit: submit vetoed via form-submit-validate trigger"),this;l=n.param(s,v);y&&(l=l?l+"&"+y:y);u.type.toUpperCase()=="GET"?(u.url+=(u.url.indexOf("?")>=0?"&":"?")+l,u.data=null):u.data=l;h=[];u.resetForm&&h.push(function(){f.resetForm()});u.clearForm&&h.push(function(){f.clearForm(u.includeHidden)});!u.dataType&&u.target?(d=u.success||function(){},h.push(function(t){var i=u.replaceTarget?"replaceWith":"html";n(u.target)[i](t).each(d,arguments)})):u.success&&h.push(u.success);u.success=function(n,t,i){for(var e=u.context||this,r=0,o=h.length;r<o;r++)h[r].apply(e,[n,t,i||f,f])};u.error&&(g=u.error,u.error=function(n,t,i){var r=u.context||this;g.apply(r,[n,t,i,f])});u.complete&&(nt=u.complete,u.complete=function(n,t){var i=u.context||this;nt.apply(i,[n,t,f])});var et=n("input[type=file]:enabled",this).filter(function(){return n(this).val()!==""}),tt=et.length>0,it="multipart/form-data",rt=f.attr("enctype")==it||f.attr("encoding")==it,k=i.fileapi&&i.formdata;for(t("fileAPI :"+k),ut=(tt||rt)&&!k,u.iframe!==!1&&(u.iframe||ut)?u.closeKeepAlive?n.get(u.closeKeepAlive,function(){p=ft(s)}):p=ft(s):p=(tt||rt)&&k?st(s):n.ajax(u),f.removeData("jqxhr").data("jqxhr",p),w=0;w<c.length;w++)c[w]=null;return this.trigger("form-submit-notify",[this,u]),this};n.fn.ajaxForm=function(i){if(i=i||{},i.delegation=i.delegation&&n.isFunction(n.fn.on),!i.delegation&&this.length===0){var r={s:this.selector,c:this.context};return!n.isReady&&r.s?(t("DOM not ready, queuing ajaxForm"),n(function(){n(r.s,r.c).ajaxForm(i)}),this):(t("terminating; zero elements found by selector"+(n.isReady?"":" (DOM not ready)")),this)}if(i.delegation){n(document).off("submit.form-plugin",this.selector,u).off("click.form-plugin",this.selector,f).on("submit.form-plugin",this.selector,i,u).on("click.form-plugin",this.selector,i,f);return this}return this.ajaxFormUnbind().bind("submit.form-plugin",i,u).bind("click.form-plugin",i,f)};n.fn.ajaxFormUnbind=function(){return this.unbind("submit.form-plugin click.form-plugin")};n.fn.formToArray=function(t,r){var o=[],e,c,l,s,f,h,u,p,w,a,y,v;if(this.length===0||(e=this[0],c=t?e.getElementsByTagName("*"):e.elements,!c))return o;for(l=0,p=c.length;l<p;l++)if(u=c[l],f=u.name,f&&!u.disabled){if(t&&e.clk&&u.type=="image"){e.clk==u&&(o.push({name:f,value:n(u).val(),type:u.type}),o.push({name:f+".x",value:e.clk_x},{name:f+".y",value:e.clk_y}));continue}if(h=n.fieldValue(u,!0),h&&h.constructor==Array)for(r&&r.push(u),s=0,w=h.length;s<w;s++)o.push({name:f,value:h[s]});else if(i.fileapi&&u.type=="file")if(r&&r.push(u),a=u.files,a.length)for(s=0;s<a.length;s++)o.push({name:f,value:a[s],type:u.type});else o.push({name:f,value:"",type:u.type});else h!==null&&typeof h!="undefined"&&(r&&r.push(u),o.push({name:f,value:h,type:u.type,required:u.required}))}return!t&&e.clk&&(y=n(e.clk),v=y[0],f=v.name,f&&!v.disabled&&v.type=="image"&&(o.push({name:f,value:y.val()}),o.push({name:f+".x",value:e.clk_x},{name:f+".y",value:e.clk_y}))),o};n.fn.formSerialize=function(t){return n.param(this.formToArray(t))};n.fn.fieldSerialize=function(t){var i=[];return this.each(function(){var f=this.name,r,u,e;if(f)if(r=n.fieldValue(this,t),r&&r.constructor==Array)for(u=0,e=r.length;u<e;u++)i.push({name:f,value:r[u]});else r!==null&&typeof r!="undefined"&&i.push({name:this.name,value:r})}),n.param(i)};n.fn.fieldValue=function(t){for(var f,i,r=[],u=0,e=this.length;u<e;u++)(f=this[u],i=n.fieldValue(f,t),i!==null&&typeof i!="undefined"&&(i.constructor!=Array||i.length))&&(i.constructor==Array?n.merge(r,i):r.push(i));return r};n.fieldValue=function(t,i){var a=t.name,u=t.type,h=t.tagName.toLowerCase(),e,o,r,f;if(i===undefined&&(i=!0),i&&(!a||t.disabled||u=="reset"||u=="button"||(u=="checkbox"||u=="radio")&&!t.checked||(u=="submit"||u=="image")&&t.form&&t.form.clk!=t||h=="select"&&t.selectedIndex==-1))return null;if(h=="select"){if(e=t.selectedIndex,e<0)return null;var c=[],l=t.options,s=u=="select-one",v=s?e+1:l.length;for(o=s?e:0;o<v;o++)if(r=l[o],r.selected){if(f=r.value,f||(f=r.attributes&&r.attributes.value&&!r.attributes.value.specified?r.text:r.value),s)return f;c.push(f)}return c}return n(t).val()};n.fn.clearForm=function(t){return this.each(function(){n("input,select,textarea",this).clearFields(t)})};n.fn.clearFields=n.fn.clearInputs=function(t){var i=/^(?:color|date|datetime|email|month|number|password|range|search|tel|text|time|url|week)$/i;return this.each(function(){var r=this.type,u=this.tagName.toLowerCase();i.test(r)||u=="textarea"?this.value="":r=="checkbox"||r=="radio"?this.checked=!1:u=="select"?this.selectedIndex=-1:r=="file"?/MSIE/.test(navigator.userAgent)?n(this).replaceWith(n(this).clone(!0)):n(this).val(""):t&&(t===!0&&/hidden/.test(r)||typeof t=="string"&&n(this).is(t))&&(this.value="")})};n.fn.resetForm=function(){return this.each(function(){typeof this.reset!="function"&&(typeof this.reset!="object"||this.reset.nodeType)||this.reset()})};n.fn.enable=function(n){return n===undefined&&(n=!0),this.each(function(){this.disabled=!n})};n.fn.selected=function(t){return t===undefined&&(t=!0),this.each(function(){var r=this.type,i;r=="checkbox"||r=="radio"?this.checked=t:this.tagName.toLowerCase()=="option"&&(i=n(this).parent("select"),t&&i[0]&&i[0].type=="select-one"&&i.find("option").selected(!1),this.selected=t)})};n.fn.ajaxSubmit.debug=!1});;
// Knockout JavaScript library v3.1.0
// (c) Steven Sanderson - http://knockoutjs.com/
// License: MIT (http://www.opensource.org/licenses/mit-license.php)

(function() {(function(p){var A=this||(0,eval)("this"),w=A.document,K=A.navigator,t=A.jQuery,C=A.JSON;(function(p){"function"===typeof require&&"object"===typeof exports&&"object"===typeof module?p(module.exports||exports):"function"===typeof define&&define.amd?define(["exports"],p):p(A.ko={})})(function(z){function G(a,c){return null===a||typeof a in M?a===c:!1}function N(a,c){var d;return function(){d||(d=setTimeout(function(){d=p;a()},c))}}function O(a,c){var d;return function(){clearTimeout(d);d=setTimeout(a,
c)}}function H(b,c,d,e){a.d[b]={init:function(b,h,g,k,l){var n,r;a.ba(function(){var g=a.a.c(h()),k=!d!==!g,s=!r;if(s||c||k!==n)s&&a.ca.fa()&&(r=a.a.lb(a.e.childNodes(b),!0)),k?(s||a.e.U(b,a.a.lb(r)),a.gb(e?e(l,g):l,b)):a.e.da(b),n=k},null,{G:b});return{controlsDescendantBindings:!0}}};a.g.aa[b]=!1;a.e.Q[b]=!0}var a="undefined"!==typeof z?z:{};a.b=function(b,c){for(var d=b.split("."),e=a,f=0;f<d.length-1;f++)e=e[d[f]];e[d[d.length-1]]=c};a.s=function(a,c,d){a[c]=d};a.version="3.1.0";a.b("version",
a.version);a.a=function(){function b(a,b){for(var c in a)a.hasOwnProperty(c)&&b(c,a[c])}function c(a,b){if(b)for(var c in b)b.hasOwnProperty(c)&&(a[c]=b[c]);return a}function d(a,b){a.__proto__=b;return a}var e={__proto__:[]}instanceof Array,f={},h={};f[K&&/Firefox\/2/i.test(K.userAgent)?"KeyboardEvent":"UIEvents"]=["keyup","keydown","keypress"];f.MouseEvents="click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave".split(" ");b(f,function(a,b){if(b.length)for(var c=0,
d=b.length;c<d;c++)h[b[c]]=a});var g={propertychange:!0},k=w&&function(){for(var a=3,b=w.createElement("div"),c=b.getElementsByTagName("i");b.innerHTML="\x3c!--[if gt IE "+ ++a+"]><i></i><![endif]--\x3e",c[0];);return 4<a?a:p}();return{mb:["authenticity_token",/^__RequestVerificationToken(_.*)?$/],r:function(a,b){for(var c=0,d=a.length;c<d;c++)b(a[c],c)},l:function(a,b){if("function"==typeof Array.prototype.indexOf)return Array.prototype.indexOf.call(a,b);for(var c=0,d=a.length;c<d;c++)if(a[c]===
b)return c;return-1},hb:function(a,b,c){for(var d=0,e=a.length;d<e;d++)if(b.call(c,a[d],d))return a[d];return null},ma:function(b,c){var d=a.a.l(b,c);0<d?b.splice(d,1):0===d&&b.shift()},ib:function(b){b=b||[];for(var c=[],d=0,e=b.length;d<e;d++)0>a.a.l(c,b[d])&&c.push(b[d]);return c},ya:function(a,b){a=a||[];for(var c=[],d=0,e=a.length;d<e;d++)c.push(b(a[d],d));return c},la:function(a,b){a=a||[];for(var c=[],d=0,e=a.length;d<e;d++)b(a[d],d)&&c.push(a[d]);return c},$:function(a,b){if(b instanceof Array)a.push.apply(a,
b);else for(var c=0,d=b.length;c<d;c++)a.push(b[c]);return a},Y:function(b,c,d){var e=a.a.l(a.a.Sa(b),c);0>e?d&&b.push(c):d||b.splice(e,1)},na:e,extend:c,ra:d,sa:e?d:c,A:b,Oa:function(a,b){if(!a)return a;var c={},d;for(d in a)a.hasOwnProperty(d)&&(c[d]=b(a[d],d,a));return c},Fa:function(b){for(;b.firstChild;)a.removeNode(b.firstChild)},ec:function(b){b=a.a.R(b);for(var c=w.createElement("div"),d=0,e=b.length;d<e;d++)c.appendChild(a.M(b[d]));return c},lb:function(b,c){for(var d=0,e=b.length,g=[];d<
e;d++){var k=b[d].cloneNode(!0);g.push(c?a.M(k):k)}return g},U:function(b,c){a.a.Fa(b);if(c)for(var d=0,e=c.length;d<e;d++)b.appendChild(c[d])},Bb:function(b,c){var d=b.nodeType?[b]:b;if(0<d.length){for(var e=d[0],g=e.parentNode,k=0,h=c.length;k<h;k++)g.insertBefore(c[k],e);k=0;for(h=d.length;k<h;k++)a.removeNode(d[k])}},ea:function(a,b){if(a.length){for(b=8===b.nodeType&&b.parentNode||b;a.length&&a[0].parentNode!==b;)a.shift();if(1<a.length){var c=a[0],d=a[a.length-1];for(a.length=0;c!==d;)if(a.push(c),
c=c.nextSibling,!c)return;a.push(d)}}return a},Db:function(a,b){7>k?a.setAttribute("selected",b):a.selected=b},ta:function(a){return null===a||a===p?"":a.trim?a.trim():a.toString().replace(/^[\s\xa0]+|[\s\xa0]+$/g,"")},oc:function(b,c){for(var d=[],e=(b||"").split(c),g=0,k=e.length;g<k;g++){var h=a.a.ta(e[g]);""!==h&&d.push(h)}return d},kc:function(a,b){a=a||"";return b.length>a.length?!1:a.substring(0,b.length)===b},Sb:function(a,b){if(a===b)return!0;if(11===a.nodeType)return!1;if(b.contains)return b.contains(3===
a.nodeType?a.parentNode:a);if(b.compareDocumentPosition)return 16==(b.compareDocumentPosition(a)&16);for(;a&&a!=b;)a=a.parentNode;return!!a},Ea:function(b){return a.a.Sb(b,b.ownerDocument.documentElement)},eb:function(b){return!!a.a.hb(b,a.a.Ea)},B:function(a){return a&&a.tagName&&a.tagName.toLowerCase()},q:function(b,c,d){var e=k&&g[c];if(!e&&t)t(b).bind(c,d);else if(e||"function"!=typeof b.addEventListener)if("undefined"!=typeof b.attachEvent){var h=function(a){d.call(b,a)},f="on"+c;b.attachEvent(f,
h);a.a.u.ja(b,function(){b.detachEvent(f,h)})}else throw Error("Browser doesn't support addEventListener or attachEvent");else b.addEventListener(c,d,!1)},ha:function(b,c){if(!b||!b.nodeType)throw Error("element must be a DOM node when calling triggerEvent");var d;"input"===a.a.B(b)&&b.type&&"click"==c.toLowerCase()?(d=b.type,d="checkbox"==d||"radio"==d):d=!1;if(t&&!d)t(b).trigger(c);else if("function"==typeof w.createEvent)if("function"==typeof b.dispatchEvent)d=w.createEvent(h[c]||"HTMLEvents"),
d.initEvent(c,!0,!0,A,0,0,0,0,0,!1,!1,!1,!1,0,b),b.dispatchEvent(d);else throw Error("The supplied element doesn't support dispatchEvent");else if(d&&b.click)b.click();else if("undefined"!=typeof b.fireEvent)b.fireEvent("on"+c);else throw Error("Browser doesn't support triggering events");},c:function(b){return a.v(b)?b():b},Sa:function(b){return a.v(b)?b.o():b},ua:function(b,c,d){if(c){var e=/\S+/g,g=b.className.match(e)||[];a.a.r(c.match(e),function(b){a.a.Y(g,b,d)});b.className=g.join(" ")}},Xa:function(b,
c){var d=a.a.c(c);if(null===d||d===p)d="";var e=a.e.firstChild(b);!e||3!=e.nodeType||a.e.nextSibling(e)?a.e.U(b,[b.ownerDocument.createTextNode(d)]):e.data=d;a.a.Vb(b)},Cb:function(a,b){a.name=b;if(7>=k)try{a.mergeAttributes(w.createElement("<input name='"+a.name+"'/>"),!1)}catch(c){}},Vb:function(a){9<=k&&(a=1==a.nodeType?a:a.parentNode,a.style&&(a.style.zoom=a.style.zoom))},Tb:function(a){if(k){var b=a.style.width;a.style.width=0;a.style.width=b}},ic:function(b,c){b=a.a.c(b);c=a.a.c(c);for(var d=
[],e=b;e<=c;e++)d.push(e);return d},R:function(a){for(var b=[],c=0,d=a.length;c<d;c++)b.push(a[c]);return b},mc:6===k,nc:7===k,oa:k,ob:function(b,c){for(var d=a.a.R(b.getElementsByTagName("input")).concat(a.a.R(b.getElementsByTagName("textarea"))),e="string"==typeof c?function(a){return a.name===c}:function(a){return c.test(a.name)},g=[],k=d.length-1;0<=k;k--)e(d[k])&&g.push(d[k]);return g},fc:function(b){return"string"==typeof b&&(b=a.a.ta(b))?C&&C.parse?C.parse(b):(new Function("return "+b))():
null},Ya:function(b,c,d){if(!C||!C.stringify)throw Error("Cannot find JSON.stringify(). Some browsers (e.g., IE < 8) don't support it natively, but you can overcome this by adding a script reference to json2.js, downloadable from http://www.json.org/json2.js");return C.stringify(a.a.c(b),c,d)},gc:function(c,d,e){e=e||{};var g=e.params||{},k=e.includeFields||this.mb,h=c;if("object"==typeof c&&"form"===a.a.B(c))for(var h=c.action,f=k.length-1;0<=f;f--)for(var u=a.a.ob(c,k[f]),D=u.length-1;0<=D;D--)g[u[D].name]=
u[D].value;d=a.a.c(d);var y=w.createElement("form");y.style.display="none";y.action=h;y.method="post";for(var p in d)c=w.createElement("input"),c.name=p,c.value=a.a.Ya(a.a.c(d[p])),y.appendChild(c);b(g,function(a,b){var c=w.createElement("input");c.name=a;c.value=b;y.appendChild(c)});w.body.appendChild(y);e.submitter?e.submitter(y):y.submit();setTimeout(function(){y.parentNode.removeChild(y)},0)}}}();a.b("utils",a.a);a.b("utils.arrayForEach",a.a.r);a.b("utils.arrayFirst",a.a.hb);a.b("utils.arrayFilter",
a.a.la);a.b("utils.arrayGetDistinctValues",a.a.ib);a.b("utils.arrayIndexOf",a.a.l);a.b("utils.arrayMap",a.a.ya);a.b("utils.arrayPushAll",a.a.$);a.b("utils.arrayRemoveItem",a.a.ma);a.b("utils.extend",a.a.extend);a.b("utils.fieldsIncludedWithJsonPost",a.a.mb);a.b("utils.getFormFields",a.a.ob);a.b("utils.peekObservable",a.a.Sa);a.b("utils.postJson",a.a.gc);a.b("utils.parseJson",a.a.fc);a.b("utils.registerEventHandler",a.a.q);a.b("utils.stringifyJson",a.a.Ya);a.b("utils.range",a.a.ic);a.b("utils.toggleDomNodeCssClass",
a.a.ua);a.b("utils.triggerEvent",a.a.ha);a.b("utils.unwrapObservable",a.a.c);a.b("utils.objectForEach",a.a.A);a.b("utils.addOrRemoveItem",a.a.Y);a.b("unwrap",a.a.c);Function.prototype.bind||(Function.prototype.bind=function(a){var c=this,d=Array.prototype.slice.call(arguments);a=d.shift();return function(){return c.apply(a,d.concat(Array.prototype.slice.call(arguments)))}});a.a.f=new function(){function a(b,h){var g=b[d];if(!g||"null"===g||!e[g]){if(!h)return p;g=b[d]="ko"+c++;e[g]={}}return e[g]}
var c=0,d="__ko__"+(new Date).getTime(),e={};return{get:function(c,d){var e=a(c,!1);return e===p?p:e[d]},set:function(c,d,e){if(e!==p||a(c,!1)!==p)a(c,!0)[d]=e},clear:function(a){var b=a[d];return b?(delete e[b],a[d]=null,!0):!1},L:function(){return c++ +d}}};a.b("utils.domData",a.a.f);a.b("utils.domData.clear",a.a.f.clear);a.a.u=new function(){function b(b,c){var e=a.a.f.get(b,d);e===p&&c&&(e=[],a.a.f.set(b,d,e));return e}function c(d){var e=b(d,!1);if(e)for(var e=e.slice(0),k=0;k<e.length;k++)e[k](d);
a.a.f.clear(d);a.a.u.cleanExternalData(d);if(f[d.nodeType])for(e=d.firstChild;d=e;)e=d.nextSibling,8===d.nodeType&&c(d)}var d=a.a.f.L(),e={1:!0,8:!0,9:!0},f={1:!0,9:!0};return{ja:function(a,c){if("function"!=typeof c)throw Error("Callback must be a function");b(a,!0).push(c)},Ab:function(c,e){var k=b(c,!1);k&&(a.a.ma(k,e),0==k.length&&a.a.f.set(c,d,p))},M:function(b){if(e[b.nodeType]&&(c(b),f[b.nodeType])){var d=[];a.a.$(d,b.getElementsByTagName("*"));for(var k=0,l=d.length;k<l;k++)c(d[k])}return b},
removeNode:function(b){a.M(b);b.parentNode&&b.parentNode.removeChild(b)},cleanExternalData:function(a){t&&"function"==typeof t.cleanData&&t.cleanData([a])}}};a.M=a.a.u.M;a.removeNode=a.a.u.removeNode;a.b("cleanNode",a.M);a.b("removeNode",a.removeNode);a.b("utils.domNodeDisposal",a.a.u);a.b("utils.domNodeDisposal.addDisposeCallback",a.a.u.ja);a.b("utils.domNodeDisposal.removeDisposeCallback",a.a.u.Ab);(function(){a.a.Qa=function(b){var c;if(t)if(t.parseHTML)c=t.parseHTML(b)||[];else{if((c=t.clean([b]))&&
c[0]){for(b=c[0];b.parentNode&&11!==b.parentNode.nodeType;)b=b.parentNode;b.parentNode&&b.parentNode.removeChild(b)}}else{var d=a.a.ta(b).toLowerCase();c=w.createElement("div");d=d.match(/^<(thead|tbody|tfoot)/)&&[1,"<table>","</table>"]||!d.indexOf("<tr")&&[2,"<table><tbody>","</tbody></table>"]||(!d.indexOf("<td")||!d.indexOf("<th"))&&[3,"<table><tbody><tr>","</tr></tbody></table>"]||[0,"",""];b="ignored<div>"+d[1]+b+d[2]+"</div>";for("function"==typeof A.innerShiv?c.appendChild(A.innerShiv(b)):
c.innerHTML=b;d[0]--;)c=c.lastChild;c=a.a.R(c.lastChild.childNodes)}return c};a.a.Va=function(b,c){a.a.Fa(b);c=a.a.c(c);if(null!==c&&c!==p)if("string"!=typeof c&&(c=c.toString()),t)t(b).html(c);else for(var d=a.a.Qa(c),e=0;e<d.length;e++)b.appendChild(d[e])}})();a.b("utils.parseHtmlFragment",a.a.Qa);a.b("utils.setHtml",a.a.Va);a.w=function(){function b(c,e){if(c)if(8==c.nodeType){var f=a.w.xb(c.nodeValue);null!=f&&e.push({Rb:c,cc:f})}else if(1==c.nodeType)for(var f=0,h=c.childNodes,g=h.length;f<g;f++)b(h[f],
e)}var c={};return{Na:function(a){if("function"!=typeof a)throw Error("You can only pass a function to ko.memoization.memoize()");var b=(4294967296*(1+Math.random())|0).toString(16).substring(1)+(4294967296*(1+Math.random())|0).toString(16).substring(1);c[b]=a;return"\x3c!--[ko_memo:"+b+"]--\x3e"},Hb:function(a,b){var f=c[a];if(f===p)throw Error("Couldn't find any memo with ID "+a+". Perhaps it's already been unmemoized.");try{return f.apply(null,b||[]),!0}finally{delete c[a]}},Ib:function(c,e){var f=
[];b(c,f);for(var h=0,g=f.length;h<g;h++){var k=f[h].Rb,l=[k];e&&a.a.$(l,e);a.w.Hb(f[h].cc,l);k.nodeValue="";k.parentNode&&k.parentNode.removeChild(k)}},xb:function(a){return(a=a.match(/^\[ko_memo\:(.*?)\]$/))?a[1]:null}}}();a.b("memoization",a.w);a.b("memoization.memoize",a.w.Na);a.b("memoization.unmemoize",a.w.Hb);a.b("memoization.parseMemoText",a.w.xb);a.b("memoization.unmemoizeDomNodeAndDescendants",a.w.Ib);a.Ga={throttle:function(b,c){b.throttleEvaluation=c;var d=null;return a.h({read:b,write:function(a){clearTimeout(d);
d=setTimeout(function(){b(a)},c)}})},rateLimit:function(a,c){var d,e,f;"number"==typeof c?d=c:(d=c.timeout,e=c.method);f="notifyWhenChangesStop"==e?O:N;a.Ma(function(a){return f(a,d)})},notify:function(a,c){a.equalityComparer="always"==c?null:G}};var M={undefined:1,"boolean":1,number:1,string:1};a.b("extenders",a.Ga);a.Fb=function(b,c,d){this.target=b;this.za=c;this.Qb=d;this.sb=!1;a.s(this,"dispose",this.F)};a.Fb.prototype.F=function(){this.sb=!0;this.Qb()};a.N=function(){a.a.sa(this,a.N.fn);this.H=
{}};var F="change";z={V:function(b,c,d){var e=this;d=d||F;var f=new a.Fb(e,c?b.bind(c):b,function(){a.a.ma(e.H[d],f)});e.o&&e.o();e.H[d]||(e.H[d]=[]);e.H[d].push(f);return f},notifySubscribers:function(b,c){c=c||F;if(this.qb(c))try{a.k.jb();for(var d=this.H[c].slice(0),e=0,f;f=d[e];++e)f.sb||f.za(b)}finally{a.k.end()}},Ma:function(b){var c=this,d=a.v(c),e,f,h;c.ia||(c.ia=c.notifySubscribers,c.notifySubscribers=function(a,b){b&&b!==F?"beforeChange"===b?c.bb(a):c.ia(a,b):c.cb(a)});var g=b(function(){d&&
h===c&&(h=c());e=!1;c.Ka(f,h)&&c.ia(f=h)});c.cb=function(a){e=!0;h=a;g()};c.bb=function(a){e||(f=a,c.ia(a,"beforeChange"))}},qb:function(a){return this.H[a]&&this.H[a].length},Wb:function(){var b=0;a.a.A(this.H,function(a,d){b+=d.length});return b},Ka:function(a,c){return!this.equalityComparer||!this.equalityComparer(a,c)},extend:function(b){var c=this;b&&a.a.A(b,function(b,e){var f=a.Ga[b];"function"==typeof f&&(c=f(c,e)||c)});return c}};a.s(z,"subscribe",z.V);a.s(z,"extend",z.extend);a.s(z,"getSubscriptionsCount",
z.Wb);a.a.na&&a.a.ra(z,Function.prototype);a.N.fn=z;a.tb=function(a){return null!=a&&"function"==typeof a.V&&"function"==typeof a.notifySubscribers};a.b("subscribable",a.N);a.b("isSubscribable",a.tb);a.ca=a.k=function(){function b(a){d.push(e);e=a}function c(){e=d.pop()}var d=[],e,f=0;return{jb:b,end:c,zb:function(b){if(e){if(!a.tb(b))throw Error("Only subscribable things can act as dependencies");e.za(b,b.Kb||(b.Kb=++f))}},t:function(a,d,e){try{return b(),a.apply(d,e||[])}finally{c()}},fa:function(){if(e)return e.ba.fa()},
pa:function(){if(e)return e.pa}}}();a.b("computedContext",a.ca);a.b("computedContext.getDependenciesCount",a.ca.fa);a.b("computedContext.isInitial",a.ca.pa);a.m=function(b){function c(){if(0<arguments.length)return c.Ka(d,arguments[0])&&(c.P(),d=arguments[0],c.O()),this;a.k.zb(c);return d}var d=b;a.N.call(c);a.a.sa(c,a.m.fn);c.o=function(){return d};c.O=function(){c.notifySubscribers(d)};c.P=function(){c.notifySubscribers(d,"beforeChange")};a.s(c,"peek",c.o);a.s(c,"valueHasMutated",c.O);a.s(c,"valueWillMutate",
c.P);return c};a.m.fn={equalityComparer:G};var E=a.m.hc="__ko_proto__";a.m.fn[E]=a.m;a.a.na&&a.a.ra(a.m.fn,a.N.fn);a.Ha=function(b,c){return null===b||b===p||b[E]===p?!1:b[E]===c?!0:a.Ha(b[E],c)};a.v=function(b){return a.Ha(b,a.m)};a.ub=function(b){return"function"==typeof b&&b[E]===a.m||"function"==typeof b&&b[E]===a.h&&b.Yb?!0:!1};a.b("observable",a.m);a.b("isObservable",a.v);a.b("isWriteableObservable",a.ub);a.T=function(b){b=b||[];if("object"!=typeof b||!("length"in b))throw Error("The argument passed when initializing an observable array must be an array, or null, or undefined.");
b=a.m(b);a.a.sa(b,a.T.fn);return b.extend({trackArrayChanges:!0})};a.T.fn={remove:function(b){for(var c=this.o(),d=[],e="function"!=typeof b||a.v(b)?function(a){return a===b}:b,f=0;f<c.length;f++){var h=c[f];e(h)&&(0===d.length&&this.P(),d.push(h),c.splice(f,1),f--)}d.length&&this.O();return d},removeAll:function(b){if(b===p){var c=this.o(),d=c.slice(0);this.P();c.splice(0,c.length);this.O();return d}return b?this.remove(function(c){return 0<=a.a.l(b,c)}):[]},destroy:function(b){var c=this.o(),d=
"function"!=typeof b||a.v(b)?function(a){return a===b}:b;this.P();for(var e=c.length-1;0<=e;e--)d(c[e])&&(c[e]._destroy=!0);this.O()},destroyAll:function(b){return b===p?this.destroy(function(){return!0}):b?this.destroy(function(c){return 0<=a.a.l(b,c)}):[]},indexOf:function(b){var c=this();return a.a.l(c,b)},replace:function(a,c){var d=this.indexOf(a);0<=d&&(this.P(),this.o()[d]=c,this.O())}};a.a.r("pop push reverse shift sort splice unshift".split(" "),function(b){a.T.fn[b]=function(){var a=this.o();
this.P();this.kb(a,b,arguments);a=a[b].apply(a,arguments);this.O();return a}});a.a.r(["slice"],function(b){a.T.fn[b]=function(){var a=this();return a[b].apply(a,arguments)}});a.a.na&&a.a.ra(a.T.fn,a.m.fn);a.b("observableArray",a.T);var I="arrayChange";a.Ga.trackArrayChanges=function(b){function c(){if(!d){d=!0;var c=b.notifySubscribers;b.notifySubscribers=function(a,b){b&&b!==F||++f;return c.apply(this,arguments)};var k=[].concat(b.o()||[]);e=null;b.V(function(c){c=[].concat(c||[]);if(b.qb(I)){var d;
if(!e||1<f)e=a.a.Aa(k,c,{sparse:!0});d=e;d.length&&b.notifySubscribers(d,I)}k=c;e=null;f=0})}}if(!b.kb){var d=!1,e=null,f=0,h=b.V;b.V=b.subscribe=function(a,b,d){d===I&&c();return h.apply(this,arguments)};b.kb=function(b,c,l){function h(a,b,c){return r[r.length]={status:a,value:b,index:c}}if(d&&!f){var r=[],m=b.length,q=l.length,s=0;switch(c){case "push":s=m;case "unshift":for(c=0;c<q;c++)h("added",l[c],s+c);break;case "pop":s=m-1;case "shift":m&&h("deleted",b[s],s);break;case "splice":c=Math.min(Math.max(0,
0>l[0]?m+l[0]:l[0]),m);for(var m=1===q?m:Math.min(c+(l[1]||0),m),q=c+q-2,s=Math.max(m,q),B=[],u=[],D=2;c<s;++c,++D)c<m&&u.push(h("deleted",b[c],c)),c<q&&B.push(h("added",l[D],c));a.a.nb(u,B);break;default:return}e=r}}}};a.ba=a.h=function(b,c,d){function e(){q=!0;a.a.A(v,function(a,b){b.F()});v={};x=0;n=!1}function f(){var a=g.throttleEvaluation;a&&0<=a?(clearTimeout(t),t=setTimeout(h,a)):g.wa?g.wa():h()}function h(){if(!r&&!q){if(y&&y()){if(!m){p();return}}else m=!1;r=!0;try{var b=v,d=x;a.k.jb({za:function(a,
c){q||(d&&b[c]?(v[c]=b[c],++x,delete b[c],--d):v[c]||(v[c]=a.V(f),++x))},ba:g,pa:!x});v={};x=0;try{var e=c?s.call(c):s()}finally{a.k.end(),d&&a.a.A(b,function(a,b){b.F()}),n=!1}g.Ka(l,e)&&(g.notifySubscribers(l,"beforeChange"),l=e,g.wa&&!g.throttleEvaluation||g.notifySubscribers(l))}finally{r=!1}x||p()}}function g(){if(0<arguments.length){if("function"===typeof B)B.apply(c,arguments);else throw Error("Cannot write a value to a ko.computed unless you specify a 'write' option. If you wish to read the current value, don't pass any parameters.");
return this}n&&h();a.k.zb(g);return l}function k(){return n||0<x}var l,n=!0,r=!1,m=!1,q=!1,s=b;s&&"object"==typeof s?(d=s,s=d.read):(d=d||{},s||(s=d.read));if("function"!=typeof s)throw Error("Pass a function that returns the value of the ko.computed");var B=d.write,u=d.disposeWhenNodeIsRemoved||d.G||null,D=d.disposeWhen||d.Da,y=D,p=e,v={},x=0,t=null;c||(c=d.owner);a.N.call(g);a.a.sa(g,a.h.fn);g.o=function(){n&&!x&&h();return l};g.fa=function(){return x};g.Yb="function"===typeof d.write;g.F=function(){p()};
g.ga=k;var w=g.Ma;g.Ma=function(a){w.call(g,a);g.wa=function(){g.bb(l);n=!0;g.cb(g)}};a.s(g,"peek",g.o);a.s(g,"dispose",g.F);a.s(g,"isActive",g.ga);a.s(g,"getDependenciesCount",g.fa);u&&(m=!0,u.nodeType&&(y=function(){return!a.a.Ea(u)||D&&D()}));!0!==d.deferEvaluation&&h();u&&k()&&u.nodeType&&(p=function(){a.a.u.Ab(u,p);e()},a.a.u.ja(u,p));return g};a.$b=function(b){return a.Ha(b,a.h)};z=a.m.hc;a.h[z]=a.m;a.h.fn={equalityComparer:G};a.h.fn[z]=a.h;a.a.na&&a.a.ra(a.h.fn,a.N.fn);a.b("dependentObservable",
a.h);a.b("computed",a.h);a.b("isComputed",a.$b);(function(){function b(a,f,h){h=h||new d;a=f(a);if("object"!=typeof a||null===a||a===p||a instanceof Date||a instanceof String||a instanceof Number||a instanceof Boolean)return a;var g=a instanceof Array?[]:{};h.save(a,g);c(a,function(c){var d=f(a[c]);switch(typeof d){case "boolean":case "number":case "string":case "function":g[c]=d;break;case "object":case "undefined":var n=h.get(d);g[c]=n!==p?n:b(d,f,h)}});return g}function c(a,b){if(a instanceof Array){for(var c=
0;c<a.length;c++)b(c);"function"==typeof a.toJSON&&b("toJSON")}else for(c in a)b(c)}function d(){this.keys=[];this.ab=[]}a.Gb=function(c){if(0==arguments.length)throw Error("When calling ko.toJS, pass the object you want to convert.");return b(c,function(b){for(var c=0;a.v(b)&&10>c;c++)b=b();return b})};a.toJSON=function(b,c,d){b=a.Gb(b);return a.a.Ya(b,c,d)};d.prototype={save:function(b,c){var d=a.a.l(this.keys,b);0<=d?this.ab[d]=c:(this.keys.push(b),this.ab.push(c))},get:function(b){b=a.a.l(this.keys,
b);return 0<=b?this.ab[b]:p}}})();a.b("toJS",a.Gb);a.b("toJSON",a.toJSON);(function(){a.i={p:function(b){switch(a.a.B(b)){case "option":return!0===b.__ko__hasDomDataOptionValue__?a.a.f.get(b,a.d.options.Pa):7>=a.a.oa?b.getAttributeNode("value")&&b.getAttributeNode("value").specified?b.value:b.text:b.value;case "select":return 0<=b.selectedIndex?a.i.p(b.options[b.selectedIndex]):p;default:return b.value}},X:function(b,c,d){switch(a.a.B(b)){case "option":switch(typeof c){case "string":a.a.f.set(b,a.d.options.Pa,
p);"__ko__hasDomDataOptionValue__"in b&&delete b.__ko__hasDomDataOptionValue__;b.value=c;break;default:a.a.f.set(b,a.d.options.Pa,c),b.__ko__hasDomDataOptionValue__=!0,b.value="number"===typeof c?c:""}break;case "select":if(""===c||null===c)c=p;for(var e=-1,f=0,h=b.options.length,g;f<h;++f)if(g=a.i.p(b.options[f]),g==c||""==g&&c===p){e=f;break}if(d||0<=e||c===p&&1<b.size)b.selectedIndex=e;break;default:if(null===c||c===p)c="";b.value=c}}}})();a.b("selectExtensions",a.i);a.b("selectExtensions.readValue",
a.i.p);a.b("selectExtensions.writeValue",a.i.X);a.g=function(){function b(b){b=a.a.ta(b);123===b.charCodeAt(0)&&(b=b.slice(1,-1));var c=[],d=b.match(e),g,m,q=0;if(d){d.push(",");for(var s=0,B;B=d[s];++s){var u=B.charCodeAt(0);if(44===u){if(0>=q){g&&c.push(m?{key:g,value:m.join("")}:{unknown:g});g=m=q=0;continue}}else if(58===u){if(!m)continue}else if(47===u&&s&&1<B.length)(u=d[s-1].match(f))&&!h[u[0]]&&(b=b.substr(b.indexOf(B)+1),d=b.match(e),d.push(","),s=-1,B="/");else if(40===u||123===u||91===
u)++q;else if(41===u||125===u||93===u)--q;else if(!g&&!m){g=34===u||39===u?B.slice(1,-1):B;continue}m?m.push(B):m=[B]}}return c}var c=["true","false","null","undefined"],d=/^(?:[$_a-z][$\w]*|(.+)(\.\s*[$_a-z][$\w]*|\[.+\]))$/i,e=RegExp("\"(?:[^\"\\\\]|\\\\.)*\"|'(?:[^'\\\\]|\\\\.)*'|/(?:[^/\\\\]|\\\\.)*/w*|[^\\s:,/][^,\"'{}()/:[\\]]*[^\\s,\"'{}()/:[\\]]|[^\\s]","g"),f=/[\])"'A-Za-z0-9_$]+$/,h={"in":1,"return":1,"typeof":1},g={};return{aa:[],W:g,Ra:b,qa:function(e,l){function f(b,e){var l,k=a.getBindingHandler(b);
if(k&&k.preprocess?e=k.preprocess(e,b,f):1){if(k=g[b])l=e,0<=a.a.l(c,l)?l=!1:(k=l.match(d),l=null===k?!1:k[1]?"Object("+k[1]+")"+k[2]:l),k=l;k&&m.push("'"+b+"':function(_z){"+l+"=_z}");q&&(e="function(){return "+e+" }");h.push("'"+b+"':"+e)}}l=l||{};var h=[],m=[],q=l.valueAccessors,s="string"===typeof e?b(e):e;a.a.r(s,function(a){f(a.key||a.unknown,a.value)});m.length&&f("_ko_property_writers","{"+m.join(",")+" }");return h.join(",")},bc:function(a,b){for(var c=0;c<a.length;c++)if(a[c].key==b)return!0;
return!1},va:function(b,c,d,e,g){if(b&&a.v(b))!a.ub(b)||g&&b.o()===e||b(e);else if((b=c.get("_ko_property_writers"))&&b[d])b[d](e)}}}();a.b("expressionRewriting",a.g);a.b("expressionRewriting.bindingRewriteValidators",a.g.aa);a.b("expressionRewriting.parseObjectLiteral",a.g.Ra);a.b("expressionRewriting.preProcessBindings",a.g.qa);a.b("expressionRewriting._twoWayBindings",a.g.W);a.b("jsonExpressionRewriting",a.g);a.b("jsonExpressionRewriting.insertPropertyAccessorsIntoJson",a.g.qa);(function(){function b(a){return 8==
a.nodeType&&h.test(f?a.text:a.nodeValue)}function c(a){return 8==a.nodeType&&g.test(f?a.text:a.nodeValue)}function d(a,d){for(var e=a,g=1,k=[];e=e.nextSibling;){if(c(e)&&(g--,0===g))return k;k.push(e);b(e)&&g++}if(!d)throw Error("Cannot find closing comment tag to match: "+a.nodeValue);return null}function e(a,b){var c=d(a,b);return c?0<c.length?c[c.length-1].nextSibling:a.nextSibling:null}var f=w&&"\x3c!--test--\x3e"===w.createComment("test").text,h=f?/^\x3c!--\s*ko(?:\s+([\s\S]+))?\s*--\x3e$/:/^\s*ko(?:\s+([\s\S]+))?\s*$/,
g=f?/^\x3c!--\s*\/ko\s*--\x3e$/:/^\s*\/ko\s*$/,k={ul:!0,ol:!0};a.e={Q:{},childNodes:function(a){return b(a)?d(a):a.childNodes},da:function(c){if(b(c)){c=a.e.childNodes(c);for(var d=0,e=c.length;d<e;d++)a.removeNode(c[d])}else a.a.Fa(c)},U:function(c,d){if(b(c)){a.e.da(c);for(var e=c.nextSibling,g=0,k=d.length;g<k;g++)e.parentNode.insertBefore(d[g],e)}else a.a.U(c,d)},yb:function(a,c){b(a)?a.parentNode.insertBefore(c,a.nextSibling):a.firstChild?a.insertBefore(c,a.firstChild):a.appendChild(c)},rb:function(c,
d,e){e?b(c)?c.parentNode.insertBefore(d,e.nextSibling):e.nextSibling?c.insertBefore(d,e.nextSibling):c.appendChild(d):a.e.yb(c,d)},firstChild:function(a){return b(a)?!a.nextSibling||c(a.nextSibling)?null:a.nextSibling:a.firstChild},nextSibling:function(a){b(a)&&(a=e(a));return a.nextSibling&&c(a.nextSibling)?null:a.nextSibling},Xb:b,lc:function(a){return(a=(f?a.text:a.nodeValue).match(h))?a[1]:null},wb:function(d){if(k[a.a.B(d)]){var g=d.firstChild;if(g){do if(1===g.nodeType){var f;f=g.firstChild;
var h=null;if(f){do if(h)h.push(f);else if(b(f)){var q=e(f,!0);q?f=q:h=[f]}else c(f)&&(h=[f]);while(f=f.nextSibling)}if(f=h)for(h=g.nextSibling,q=0;q<f.length;q++)h?d.insertBefore(f[q],h):d.appendChild(f[q])}while(g=g.nextSibling)}}}}})();a.b("virtualElements",a.e);a.b("virtualElements.allowedBindings",a.e.Q);a.b("virtualElements.emptyNode",a.e.da);a.b("virtualElements.insertAfter",a.e.rb);a.b("virtualElements.prepend",a.e.yb);a.b("virtualElements.setDomNodeChildren",a.e.U);(function(){a.J=function(){this.Nb=
{}};a.a.extend(a.J.prototype,{nodeHasBindings:function(b){switch(b.nodeType){case 1:return null!=b.getAttribute("data-bind");case 8:return a.e.Xb(b);default:return!1}},getBindings:function(a,c){var d=this.getBindingsString(a,c);return d?this.parseBindingsString(d,c,a):null},getBindingAccessors:function(a,c){var d=this.getBindingsString(a,c);return d?this.parseBindingsString(d,c,a,{valueAccessors:!0}):null},getBindingsString:function(b){switch(b.nodeType){case 1:return b.getAttribute("data-bind");
case 8:return a.e.lc(b);default:return null}},parseBindingsString:function(b,c,d,e){try{var f=this.Nb,h=b+(e&&e.valueAccessors||""),g;if(!(g=f[h])){var k,l="with($context){with($data||{}){return{"+a.g.qa(b,e)+"}}}";k=new Function("$context","$element",l);g=f[h]=k}return g(c,d)}catch(n){throw n.message="Unable to parse bindings.\nBindings value: "+b+"\nMessage: "+n.message,n;}}});a.J.instance=new a.J})();a.b("bindingProvider",a.J);(function(){function b(a){return function(){return a}}function c(a){return a()}
function d(b){return a.a.Oa(a.k.t(b),function(a,c){return function(){return b()[c]}})}function e(a,b){return d(this.getBindings.bind(this,a,b))}function f(b,c,d){var e,g=a.e.firstChild(c),k=a.J.instance,f=k.preprocessNode;if(f){for(;e=g;)g=a.e.nextSibling(e),f.call(k,e);g=a.e.firstChild(c)}for(;e=g;)g=a.e.nextSibling(e),h(b,e,d)}function h(b,c,d){var e=!0,g=1===c.nodeType;g&&a.e.wb(c);if(g&&d||a.J.instance.nodeHasBindings(c))e=k(c,null,b,d).shouldBindDescendants;e&&!n[a.a.B(c)]&&f(b,c,!g)}function g(b){var c=
[],d={},e=[];a.a.A(b,function y(g){if(!d[g]){var k=a.getBindingHandler(g);k&&(k.after&&(e.push(g),a.a.r(k.after,function(c){if(b[c]){if(-1!==a.a.l(e,c))throw Error("Cannot combine the following bindings, because they have a cyclic dependency: "+e.join(", "));y(c)}}),e.length--),c.push({key:g,pb:k}));d[g]=!0}});return c}function k(b,d,k,f){var h=a.a.f.get(b,r);if(!d){if(h)throw Error("You cannot apply bindings multiple times to the same element.");a.a.f.set(b,r,!0)}!h&&f&&a.Eb(b,k);var l;if(d&&"function"!==
typeof d)l=d;else{var n=a.J.instance,m=n.getBindingAccessors||e,x=a.h(function(){(l=d?d(k,b):m.call(n,b,k))&&k.D&&k.D();return l},null,{G:b});l&&x.ga()||(x=null)}var t;if(l){var w=x?function(a){return function(){return c(x()[a])}}:function(a){return l[a]},z=function(){return a.a.Oa(x?x():l,c)};z.get=function(a){return l[a]&&c(w(a))};z.has=function(a){return a in l};f=g(l);a.a.r(f,function(c){var d=c.pb.init,e=c.pb.update,g=c.key;if(8===b.nodeType&&!a.e.Q[g])throw Error("The binding '"+g+"' cannot be used with virtual elements");
try{"function"==typeof d&&a.k.t(function(){var a=d(b,w(g),z,k.$data,k);if(a&&a.controlsDescendantBindings){if(t!==p)throw Error("Multiple bindings ("+t+" and "+g+") are trying to control descendant bindings of the same element. You cannot use these bindings together on the same element.");t=g}}),"function"==typeof e&&a.h(function(){e(b,w(g),z,k.$data,k)},null,{G:b})}catch(f){throw f.message='Unable to process binding "'+g+": "+l[g]+'"\nMessage: '+f.message,f;}})}return{shouldBindDescendants:t===p}}
function l(b){return b&&b instanceof a.I?b:new a.I(b)}a.d={};var n={script:!0};a.getBindingHandler=function(b){return a.d[b]};a.I=function(b,c,d,e){var g=this,k="function"==typeof b&&!a.v(b),f,h=a.h(function(){var f=k?b():b,l=a.a.c(f);c?(c.D&&c.D(),a.a.extend(g,c),h&&(g.D=h)):(g.$parents=[],g.$root=l,g.ko=a);g.$rawData=f;g.$data=l;d&&(g[d]=l);e&&e(g,c,l);return g.$data},null,{Da:function(){return f&&!a.a.eb(f)},G:!0});h.ga()&&(g.D=h,h.equalityComparer=null,f=[],h.Jb=function(b){f.push(b);a.a.u.ja(b,
function(b){a.a.ma(f,b);f.length||(h.F(),g.D=h=p)})})};a.I.prototype.createChildContext=function(b,c,d){return new a.I(b,this,c,function(a,b){a.$parentContext=b;a.$parent=b.$data;a.$parents=(b.$parents||[]).slice(0);a.$parents.unshift(a.$parent);d&&d(a)})};a.I.prototype.extend=function(b){return new a.I(this.D||this.$data,this,null,function(c,d){c.$rawData=d.$rawData;a.a.extend(c,"function"==typeof b?b():b)})};var r=a.a.f.L(),m=a.a.f.L();a.Eb=function(b,c){if(2==arguments.length)a.a.f.set(b,m,c),
c.D&&c.D.Jb(b);else return a.a.f.get(b,m)};a.xa=function(b,c,d){1===b.nodeType&&a.e.wb(b);return k(b,c,l(d),!0)};a.Lb=function(c,e,g){g=l(g);return a.xa(c,"function"===typeof e?d(e.bind(null,g,c)):a.a.Oa(e,b),g)};a.gb=function(a,b){1!==b.nodeType&&8!==b.nodeType||f(l(a),b,!0)};a.fb=function(a,b){!t&&A.jQuery&&(t=A.jQuery);if(b&&1!==b.nodeType&&8!==b.nodeType)throw Error("ko.applyBindings: first parameter should be your view model; second parameter should be a DOM node");b=b||A.document.body;h(l(a),
b,!0)};a.Ca=function(b){switch(b.nodeType){case 1:case 8:var c=a.Eb(b);if(c)return c;if(b.parentNode)return a.Ca(b.parentNode)}return p};a.Pb=function(b){return(b=a.Ca(b))?b.$data:p};a.b("bindingHandlers",a.d);a.b("applyBindings",a.fb);a.b("applyBindingsToDescendants",a.gb);a.b("applyBindingAccessorsToNode",a.xa);a.b("applyBindingsToNode",a.Lb);a.b("contextFor",a.Ca);a.b("dataFor",a.Pb)})();var L={"class":"className","for":"htmlFor"};a.d.attr={update:function(b,c){var d=a.a.c(c())||{};a.a.A(d,function(c,
d){d=a.a.c(d);var h=!1===d||null===d||d===p;h&&b.removeAttribute(c);8>=a.a.oa&&c in L?(c=L[c],h?b.removeAttribute(c):b[c]=d):h||b.setAttribute(c,d.toString());"name"===c&&a.a.Cb(b,h?"":d.toString())})}};(function(){a.d.checked={after:["value","attr"],init:function(b,c,d){function e(){return d.has("checkedValue")?a.a.c(d.get("checkedValue")):b.value}function f(){var g=b.checked,f=r?e():g;if(!a.ca.pa()&&(!k||g)){var h=a.k.t(c);l?n!==f?(g&&(a.a.Y(h,f,!0),a.a.Y(h,n,!1)),n=f):a.a.Y(h,f,g):a.g.va(h,d,"checked",
f,!0)}}function h(){var d=a.a.c(c());b.checked=l?0<=a.a.l(d,e()):g?d:e()===d}var g="checkbox"==b.type,k="radio"==b.type;if(g||k){var l=g&&a.a.c(c())instanceof Array,n=l?e():p,r=k||l;k&&!b.name&&a.d.uniqueName.init(b,function(){return!0});a.ba(f,null,{G:b});a.a.q(b,"click",f);a.ba(h,null,{G:b})}}};a.g.W.checked=!0;a.d.checkedValue={update:function(b,c){b.value=a.a.c(c())}}})();a.d.css={update:function(b,c){var d=a.a.c(c());"object"==typeof d?a.a.A(d,function(c,d){d=a.a.c(d);a.a.ua(b,c,d)}):(d=String(d||
""),a.a.ua(b,b.__ko__cssValue,!1),b.__ko__cssValue=d,a.a.ua(b,d,!0))}};a.d.enable={update:function(b,c){var d=a.a.c(c());d&&b.disabled?b.removeAttribute("disabled"):d||b.disabled||(b.disabled=!0)}};a.d.disable={update:function(b,c){a.d.enable.update(b,function(){return!a.a.c(c())})}};a.d.event={init:function(b,c,d,e,f){var h=c()||{};a.a.A(h,function(g){"string"==typeof g&&a.a.q(b,g,function(b){var h,n=c()[g];if(n){try{var r=a.a.R(arguments);e=f.$data;r.unshift(e);h=n.apply(e,r)}finally{!0!==h&&(b.preventDefault?
b.preventDefault():b.returnValue=!1)}!1===d.get(g+"Bubble")&&(b.cancelBubble=!0,b.stopPropagation&&b.stopPropagation())}})})}};a.d.foreach={vb:function(b){return function(){var c=b(),d=a.a.Sa(c);if(!d||"number"==typeof d.length)return{foreach:c,templateEngine:a.K.Ja};a.a.c(c);return{foreach:d.data,as:d.as,includeDestroyed:d.includeDestroyed,afterAdd:d.afterAdd,beforeRemove:d.beforeRemove,afterRender:d.afterRender,beforeMove:d.beforeMove,afterMove:d.afterMove,templateEngine:a.K.Ja}}},init:function(b,
c){return a.d.template.init(b,a.d.foreach.vb(c))},update:function(b,c,d,e,f){return a.d.template.update(b,a.d.foreach.vb(c),d,e,f)}};a.g.aa.foreach=!1;a.e.Q.foreach=!0;a.d.hasfocus={init:function(b,c,d){function e(e){b.__ko_hasfocusUpdating=!0;var k=b.ownerDocument;if("activeElement"in k){var f;try{f=k.activeElement}catch(h){f=k.body}e=f===b}k=c();a.g.va(k,d,"hasfocus",e,!0);b.__ko_hasfocusLastValue=e;b.__ko_hasfocusUpdating=!1}var f=e.bind(null,!0),h=e.bind(null,!1);a.a.q(b,"focus",f);a.a.q(b,"focusin",
f);a.a.q(b,"blur",h);a.a.q(b,"focusout",h)},update:function(b,c){var d=!!a.a.c(c());b.__ko_hasfocusUpdating||b.__ko_hasfocusLastValue===d||(d?b.focus():b.blur(),a.k.t(a.a.ha,null,[b,d?"focusin":"focusout"]))}};a.g.W.hasfocus=!0;a.d.hasFocus=a.d.hasfocus;a.g.W.hasFocus=!0;a.d.html={init:function(){return{controlsDescendantBindings:!0}},update:function(b,c){a.a.Va(b,c())}};H("if");H("ifnot",!1,!0);H("with",!0,!1,function(a,c){return a.createChildContext(c)});var J={};a.d.options={init:function(b){if("select"!==
a.a.B(b))throw Error("options binding applies only to SELECT elements");for(;0<b.length;)b.remove(0);return{controlsDescendantBindings:!0}},update:function(b,c,d){function e(){return a.a.la(b.options,function(a){return a.selected})}function f(a,b,c){var d=typeof b;return"function"==d?b(a):"string"==d?a[b]:c}function h(c,d){if(r.length){var e=0<=a.a.l(r,a.i.p(d[0]));a.a.Db(d[0],e);m&&!e&&a.k.t(a.a.ha,null,[b,"change"])}}var g=0!=b.length&&b.multiple?b.scrollTop:null,k=a.a.c(c()),l=d.get("optionsIncludeDestroyed");
c={};var n,r;r=b.multiple?a.a.ya(e(),a.i.p):0<=b.selectedIndex?[a.i.p(b.options[b.selectedIndex])]:[];k&&("undefined"==typeof k.length&&(k=[k]),n=a.a.la(k,function(b){return l||b===p||null===b||!a.a.c(b._destroy)}),d.has("optionsCaption")&&(k=a.a.c(d.get("optionsCaption")),null!==k&&k!==p&&n.unshift(J)));var m=!1;c.beforeRemove=function(a){b.removeChild(a)};k=h;d.has("optionsAfterRender")&&(k=function(b,c){h(0,c);a.k.t(d.get("optionsAfterRender"),null,[c[0],b!==J?b:p])});a.a.Ua(b,n,function(c,e,g){g.length&&
(r=g[0].selected?[a.i.p(g[0])]:[],m=!0);e=b.ownerDocument.createElement("option");c===J?(a.a.Xa(e,d.get("optionsCaption")),a.i.X(e,p)):(g=f(c,d.get("optionsValue"),c),a.i.X(e,a.a.c(g)),c=f(c,d.get("optionsText"),g),a.a.Xa(e,c));return[e]},c,k);a.k.t(function(){d.get("valueAllowUnset")&&d.has("value")?a.i.X(b,a.a.c(d.get("value")),!0):(b.multiple?r.length&&e().length<r.length:r.length&&0<=b.selectedIndex?a.i.p(b.options[b.selectedIndex])!==r[0]:r.length||0<=b.selectedIndex)&&a.a.ha(b,"change")});a.a.Tb(b);
g&&20<Math.abs(g-b.scrollTop)&&(b.scrollTop=g)}};a.d.options.Pa=a.a.f.L();a.d.selectedOptions={after:["options","foreach"],init:function(b,c,d){a.a.q(b,"change",function(){var e=c(),f=[];a.a.r(b.getElementsByTagName("option"),function(b){b.selected&&f.push(a.i.p(b))});a.g.va(e,d,"selectedOptions",f)})},update:function(b,c){if("select"!=a.a.B(b))throw Error("values binding applies only to SELECT elements");var d=a.a.c(c());d&&"number"==typeof d.length&&a.a.r(b.getElementsByTagName("option"),function(b){var c=
0<=a.a.l(d,a.i.p(b));a.a.Db(b,c)})}};a.g.W.selectedOptions=!0;a.d.style={update:function(b,c){var d=a.a.c(c()||{});a.a.A(d,function(c,d){d=a.a.c(d);b.style[c]=d||""})}};a.d.submit={init:function(b,c,d,e,f){if("function"!=typeof c())throw Error("The value for a submit binding must be a function");a.a.q(b,"submit",function(a){var d,e=c();try{d=e.call(f.$data,b)}finally{!0!==d&&(a.preventDefault?a.preventDefault():a.returnValue=!1)}})}};a.d.text={init:function(){return{controlsDescendantBindings:!0}},
update:function(b,c){a.a.Xa(b,c())}};a.e.Q.text=!0;a.d.uniqueName={init:function(b,c){if(c()){var d="ko_unique_"+ ++a.d.uniqueName.Ob;a.a.Cb(b,d)}}};a.d.uniqueName.Ob=0;a.d.value={after:["options","foreach"],init:function(b,c,d){function e(){g=!1;var e=c(),f=a.i.p(b);a.g.va(e,d,"value",f)}var f=["change"],h=d.get("valueUpdate"),g=!1;h&&("string"==typeof h&&(h=[h]),a.a.$(f,h),f=a.a.ib(f));!a.a.oa||"input"!=b.tagName.toLowerCase()||"text"!=b.type||"off"==b.autocomplete||b.form&&"off"==b.form.autocomplete||
-1!=a.a.l(f,"propertychange")||(a.a.q(b,"propertychange",function(){g=!0}),a.a.q(b,"focus",function(){g=!1}),a.a.q(b,"blur",function(){g&&e()}));a.a.r(f,function(c){var d=e;a.a.kc(c,"after")&&(d=function(){setTimeout(e,0)},c=c.substring(5));a.a.q(b,c,d)})},update:function(b,c,d){var e=a.a.c(c());c=a.i.p(b);if(e!==c)if("select"===a.a.B(b)){var f=d.get("valueAllowUnset");d=function(){a.i.X(b,e,f)};d();f||e===a.i.p(b)?setTimeout(d,0):a.k.t(a.a.ha,null,[b,"change"])}else a.i.X(b,e)}};a.g.W.value=!0;a.d.visible=
{update:function(b,c){var d=a.a.c(c()),e="none"!=b.style.display;d&&!e?b.style.display="":!d&&e&&(b.style.display="none")}};(function(b){a.d[b]={init:function(c,d,e,f,h){return a.d.event.init.call(this,c,function(){var a={};a[b]=d();return a},e,f,h)}}})("click");a.C=function(){};a.C.prototype.renderTemplateSource=function(){throw Error("Override renderTemplateSource");};a.C.prototype.createJavaScriptEvaluatorBlock=function(){throw Error("Override createJavaScriptEvaluatorBlock");};a.C.prototype.makeTemplateSource=
function(b,c){if("string"==typeof b){c=c||w;var d=c.getElementById(b);if(!d)throw Error("Cannot find template with ID "+b);return new a.n.j(d)}if(1==b.nodeType||8==b.nodeType)return new a.n.Z(b);throw Error("Unknown template type: "+b);};a.C.prototype.renderTemplate=function(a,c,d,e){a=this.makeTemplateSource(a,e);return this.renderTemplateSource(a,c,d)};a.C.prototype.isTemplateRewritten=function(a,c){return!1===this.allowTemplateRewriting?!0:this.makeTemplateSource(a,c).data("isRewritten")};a.C.prototype.rewriteTemplate=
function(a,c,d){a=this.makeTemplateSource(a,d);c=c(a.text());a.text(c);a.data("isRewritten",!0)};a.b("templateEngine",a.C);a.Za=function(){function b(b,c,d,g){b=a.g.Ra(b);for(var k=a.g.aa,l=0;l<b.length;l++){var n=b[l].key;if(k.hasOwnProperty(n)){var r=k[n];if("function"===typeof r){if(n=r(b[l].value))throw Error(n);}else if(!r)throw Error("This template engine does not support the '"+n+"' binding within its templates");}}d="ko.__tr_ambtns(function($context,$element){return(function(){return{ "+a.g.qa(b,
{valueAccessors:!0})+" } })()},'"+d.toLowerCase()+"')";return g.createJavaScriptEvaluatorBlock(d)+c}var c=/(<([a-z]+\d*)(?:\s+(?!data-bind\s*=\s*)[a-z0-9\-]+(?:=(?:\"[^\"]*\"|\'[^\']*\'))?)*\s+)data-bind\s*=\s*(["'])([\s\S]*?)\3/gi,d=/\x3c!--\s*ko\b\s*([\s\S]*?)\s*--\x3e/g;return{Ub:function(b,c,d){c.isTemplateRewritten(b,d)||c.rewriteTemplate(b,function(b){return a.Za.dc(b,c)},d)},dc:function(a,f){return a.replace(c,function(a,c,d,e,n){return b(n,c,d,f)}).replace(d,function(a,c){return b(c,"\x3c!-- ko --\x3e",
"#comment",f)})},Mb:function(b,c){return a.w.Na(function(d,g){var k=d.nextSibling;k&&k.nodeName.toLowerCase()===c&&a.xa(k,b,g)})}}}();a.b("__tr_ambtns",a.Za.Mb);(function(){a.n={};a.n.j=function(a){this.j=a};a.n.j.prototype.text=function(){var b=a.a.B(this.j),b="script"===b?"text":"textarea"===b?"value":"innerHTML";if(0==arguments.length)return this.j[b];var c=arguments[0];"innerHTML"===b?a.a.Va(this.j,c):this.j[b]=c};var b=a.a.f.L()+"_";a.n.j.prototype.data=function(c){if(1===arguments.length)return a.a.f.get(this.j,
b+c);a.a.f.set(this.j,b+c,arguments[1])};var c=a.a.f.L();a.n.Z=function(a){this.j=a};a.n.Z.prototype=new a.n.j;a.n.Z.prototype.text=function(){if(0==arguments.length){var b=a.a.f.get(this.j,c)||{};b.$a===p&&b.Ba&&(b.$a=b.Ba.innerHTML);return b.$a}a.a.f.set(this.j,c,{$a:arguments[0]})};a.n.j.prototype.nodes=function(){if(0==arguments.length)return(a.a.f.get(this.j,c)||{}).Ba;a.a.f.set(this.j,c,{Ba:arguments[0]})};a.b("templateSources",a.n);a.b("templateSources.domElement",a.n.j);a.b("templateSources.anonymousTemplate",
a.n.Z)})();(function(){function b(b,c,d){var e;for(c=a.e.nextSibling(c);b&&(e=b)!==c;)b=a.e.nextSibling(e),d(e,b)}function c(c,d){if(c.length){var e=c[0],f=c[c.length-1],h=e.parentNode,m=a.J.instance,q=m.preprocessNode;if(q){b(e,f,function(a,b){var c=a.previousSibling,d=q.call(m,a);d&&(a===e&&(e=d[0]||b),a===f&&(f=d[d.length-1]||c))});c.length=0;if(!e)return;e===f?c.push(e):(c.push(e,f),a.a.ea(c,h))}b(e,f,function(b){1!==b.nodeType&&8!==b.nodeType||a.fb(d,b)});b(e,f,function(b){1!==b.nodeType&&8!==
b.nodeType||a.w.Ib(b,[d])});a.a.ea(c,h)}}function d(a){return a.nodeType?a:0<a.length?a[0]:null}function e(b,e,h,n,r){r=r||{};var m=b&&d(b),m=m&&m.ownerDocument,q=r.templateEngine||f;a.Za.Ub(h,q,m);h=q.renderTemplate(h,n,r,m);if("number"!=typeof h.length||0<h.length&&"number"!=typeof h[0].nodeType)throw Error("Template engine must return an array of DOM nodes");m=!1;switch(e){case "replaceChildren":a.e.U(b,h);m=!0;break;case "replaceNode":a.a.Bb(b,h);m=!0;break;case "ignoreTargetNode":break;default:throw Error("Unknown renderMode: "+
e);}m&&(c(h,n),r.afterRender&&a.k.t(r.afterRender,null,[h,n.$data]));return h}var f;a.Wa=function(b){if(b!=p&&!(b instanceof a.C))throw Error("templateEngine must inherit from ko.templateEngine");f=b};a.Ta=function(b,c,h,n,r){h=h||{};if((h.templateEngine||f)==p)throw Error("Set a template engine before calling renderTemplate");r=r||"replaceChildren";if(n){var m=d(n);return a.h(function(){var f=c&&c instanceof a.I?c:new a.I(a.a.c(c)),p=a.v(b)?b():"function"==typeof b?b(f.$data,f):b,f=e(n,r,p,f,h);
"replaceNode"==r&&(n=f,m=d(n))},null,{Da:function(){return!m||!a.a.Ea(m)},G:m&&"replaceNode"==r?m.parentNode:m})}return a.w.Na(function(d){a.Ta(b,c,h,d,"replaceNode")})};a.jc=function(b,d,f,h,r){function m(a,b){c(b,s);f.afterRender&&f.afterRender(b,a)}function q(a,c){s=r.createChildContext(a,f.as,function(a){a.$index=c});var d="function"==typeof b?b(a,s):b;return e(null,"ignoreTargetNode",d,s,f)}var s;return a.h(function(){var b=a.a.c(d)||[];"undefined"==typeof b.length&&(b=[b]);b=a.a.la(b,function(b){return f.includeDestroyed||
b===p||null===b||!a.a.c(b._destroy)});a.k.t(a.a.Ua,null,[h,b,q,f,m])},null,{G:h})};var h=a.a.f.L();a.d.template={init:function(b,c){var d=a.a.c(c());"string"==typeof d||d.name?a.e.da(b):(d=a.e.childNodes(b),d=a.a.ec(d),(new a.n.Z(b)).nodes(d));return{controlsDescendantBindings:!0}},update:function(b,c,d,e,f){var m=c(),q;c=a.a.c(m);d=!0;e=null;"string"==typeof c?c={}:(m=c.name,"if"in c&&(d=a.a.c(c["if"])),d&&"ifnot"in c&&(d=!a.a.c(c.ifnot)),q=a.a.c(c.data));"foreach"in c?e=a.jc(m||b,d&&c.foreach||
[],c,b,f):d?(f="data"in c?f.createChildContext(q,c.as):f,e=a.Ta(m||b,f,c,b)):a.e.da(b);f=e;(q=a.a.f.get(b,h))&&"function"==typeof q.F&&q.F();a.a.f.set(b,h,f&&f.ga()?f:p)}};a.g.aa.template=function(b){b=a.g.Ra(b);return 1==b.length&&b[0].unknown||a.g.bc(b,"name")?null:"This template engine does not support anonymous templates nested within its templates"};a.e.Q.template=!0})();a.b("setTemplateEngine",a.Wa);a.b("renderTemplate",a.Ta);a.a.nb=function(a,c,d){if(a.length&&c.length){var e,f,h,g,k;for(e=
f=0;(!d||e<d)&&(g=a[f]);++f){for(h=0;k=c[h];++h)if(g.value===k.value){g.moved=k.index;k.moved=g.index;c.splice(h,1);e=h=0;break}e+=h}}};a.a.Aa=function(){function b(b,d,e,f,h){var g=Math.min,k=Math.max,l=[],n,p=b.length,m,q=d.length,s=q-p||1,t=p+q+1,u,w,y;for(n=0;n<=p;n++)for(w=u,l.push(u=[]),y=g(q,n+s),m=k(0,n-1);m<=y;m++)u[m]=m?n?b[n-1]===d[m-1]?w[m-1]:g(w[m]||t,u[m-1]||t)+1:m+1:n+1;g=[];k=[];s=[];n=p;for(m=q;n||m;)q=l[n][m]-1,m&&q===l[n][m-1]?k.push(g[g.length]={status:e,value:d[--m],index:m}):
n&&q===l[n-1][m]?s.push(g[g.length]={status:f,value:b[--n],index:n}):(--m,--n,h.sparse||g.push({status:"retained",value:d[m]}));a.a.nb(k,s,10*p);return g.reverse()}return function(a,d,e){e="boolean"===typeof e?{dontLimitMoves:e}:e||{};a=a||[];d=d||[];return a.length<=d.length?b(a,d,"added","deleted",e):b(d,a,"deleted","added",e)}}();a.b("utils.compareArrays",a.a.Aa);(function(){function b(b,c,f,h,g){var k=[],l=a.h(function(){var l=c(f,g,a.a.ea(k,b))||[];0<k.length&&(a.a.Bb(k,l),h&&a.k.t(h,null,[f,
l,g]));k.length=0;a.a.$(k,l)},null,{G:b,Da:function(){return!a.a.eb(k)}});return{S:k,h:l.ga()?l:p}}var c=a.a.f.L();a.a.Ua=function(d,e,f,h,g){function k(b,c){v=r[c];u!==c&&(z[b]=v);v.Ia(u++);a.a.ea(v.S,d);s.push(v);y.push(v)}function l(b,c){if(b)for(var d=0,e=c.length;d<e;d++)c[d]&&a.a.r(c[d].S,function(a){b(a,d,c[d].ka)})}e=e||[];h=h||{};var n=a.a.f.get(d,c)===p,r=a.a.f.get(d,c)||[],m=a.a.ya(r,function(a){return a.ka}),q=a.a.Aa(m,e,h.dontLimitMoves),s=[],t=0,u=0,w=[],y=[];e=[];for(var z=[],m=[],
v,x=0,A,C;A=q[x];x++)switch(C=A.moved,A.status){case "deleted":C===p&&(v=r[t],v.h&&v.h.F(),w.push.apply(w,a.a.ea(v.S,d)),h.beforeRemove&&(e[x]=v,y.push(v)));t++;break;case "retained":k(x,t++);break;case "added":C!==p?k(x,C):(v={ka:A.value,Ia:a.m(u++)},s.push(v),y.push(v),n||(m[x]=v))}l(h.beforeMove,z);a.a.r(w,h.beforeRemove?a.M:a.removeNode);for(var x=0,n=a.e.firstChild(d),E;v=y[x];x++){v.S||a.a.extend(v,b(d,f,v.ka,g,v.Ia));for(t=0;q=v.S[t];n=q.nextSibling,E=q,t++)q!==n&&a.e.rb(d,q,E);!v.Zb&&g&&(g(v.ka,
v.S,v.Ia),v.Zb=!0)}l(h.beforeRemove,e);l(h.afterMove,z);l(h.afterAdd,m);a.a.f.set(d,c,s)}})();a.b("utils.setDomNodeChildrenFromArrayMapping",a.a.Ua);a.K=function(){this.allowTemplateRewriting=!1};a.K.prototype=new a.C;a.K.prototype.renderTemplateSource=function(b){var c=(9>a.a.oa?0:b.nodes)?b.nodes():null;if(c)return a.a.R(c.cloneNode(!0).childNodes);b=b.text();return a.a.Qa(b)};a.K.Ja=new a.K;a.Wa(a.K.Ja);a.b("nativeTemplateEngine",a.K);(function(){a.La=function(){var a=this.ac=function(){if(!t||
!t.tmpl)return 0;try{if(0<=t.tmpl.tag.tmpl.open.toString().indexOf("__"))return 2}catch(a){}return 1}();this.renderTemplateSource=function(b,e,f){f=f||{};if(2>a)throw Error("Your version of jQuery.tmpl is too old. Please upgrade to jQuery.tmpl 1.0.0pre or later.");var h=b.data("precompiled");h||(h=b.text()||"",h=t.template(null,"{{ko_with $item.koBindingContext}}"+h+"{{/ko_with}}"),b.data("precompiled",h));b=[e.$data];e=t.extend({koBindingContext:e},f.templateOptions);e=t.tmpl(h,b,e);e.appendTo(w.createElement("div"));
t.fragments={};return e};this.createJavaScriptEvaluatorBlock=function(a){return"{{ko_code ((function() { return "+a+" })()) }}"};this.addTemplate=function(a,b){w.write("<script type='text/html' id='"+a+"'>"+b+"\x3c/script>")};0<a&&(t.tmpl.tag.ko_code={open:"__.push($1 || '');"},t.tmpl.tag.ko_with={open:"with($1) {",close:"} "})};a.La.prototype=new a.C;var b=new a.La;0<b.ac&&a.Wa(b);a.b("jqueryTmplTemplateEngine",a.La)})()})})();})();
;
/// Knockout Mapping plugin v2.4.0
/// (c) 2013 Steven Sanderson, Roy Jacobs - http://knockoutjs.com/
/// License: MIT (http://www.opensource.org/licenses/mit-license.php)
(function (factory) {
	// Module systems magic dance.

	if (typeof require === "function" && typeof exports === "object" && typeof module === "object") {
		// CommonJS or Node: hard-coded dependency on "knockout"
		factory(require("knockout"), exports);
	} else if (typeof define === "function" && define["amd"]) {
		// AMD anonymous module with hard-coded dependency on "knockout"
		define(["knockout", "exports"], factory);
	} else {
		// <script> tag: use the global `ko` object, attaching a `mapping` property
		factory(ko, ko.mapping = {});
	}
}(function (ko, exports) {
	var DEBUG=true;
	var mappingProperty = "__ko_mapping__";
	var realKoDependentObservable = ko.dependentObservable;
	var mappingNesting = 0;
	var dependentObservables;
	var visitedObjects;
	var recognizedRootProperties = ["create", "update", "key", "arrayChanged"];
	var emptyReturn = {};

	var _defaultOptions = {
		include: ["_destroy"],
		ignore: [],
		copy: [],
		observe: []
	};
	var defaultOptions = _defaultOptions;

	// Author: KennyTM @ StackOverflow
	function unionArrays (x, y) {
		var obj = {};
		for (var i = x.length - 1; i >= 0; -- i) obj[x[i]] = x[i];
		for (var i = y.length - 1; i >= 0; -- i) obj[y[i]] = y[i];
		var res = [];

		for (var k in obj) {
			res.push(obj[k]);
		};

		return res;
	}

	function extendObject(destination, source) {
		var destType;

		for (var key in source) {
			if (source.hasOwnProperty(key) && source[key]) {
				destType = exports.getType(destination[key]);
				if (key && destination[key] && destType !== "array" && destType !== "string") {
					extendObject(destination[key], source[key]);
				} else {
					var bothArrays = exports.getType(destination[key]) === "array" && exports.getType(source[key]) === "array";
					if (bothArrays) {
						destination[key] = unionArrays(destination[key], source[key]);
					} else {
						destination[key] = source[key];
					}
				}
			}
		}
	}

	function merge(obj1, obj2) {
		var merged = {};
		extendObject(merged, obj1);
		extendObject(merged, obj2);

		return merged;
	}

	exports.isMapped = function (viewModel) {
		var unwrapped = ko.utils.unwrapObservable(viewModel);
		return unwrapped && unwrapped[mappingProperty];
	}

	exports.fromJS = function (jsObject /*, inputOptions, target*/ ) {
		if (arguments.length == 0) throw new Error("When calling ko.fromJS, pass the object you want to convert.");

		try {
			if (!mappingNesting++) {
				dependentObservables = [];
				visitedObjects = new objectLookup();
			}

			var options;
			var target;

			if (arguments.length == 2) {
				if (arguments[1][mappingProperty]) {
					target = arguments[1];
				} else {
					options = arguments[1];
				}
			}
			if (arguments.length == 3) {
				options = arguments[1];
				target = arguments[2];
			}

			if (target) {
				options = merge(options, target[mappingProperty]);
			}
			options = fillOptions(options);

			var result = updateViewModel(target, jsObject, options);
			if (target) {
				result = target;
			}

			// Evaluate any dependent observables that were proxied.
			// Do this after the model's observables have been created
			if (!--mappingNesting) {
				while (dependentObservables.length) {
					var DO = dependentObservables.pop();
					if (DO) DO();
				}
			}

			// Save any new mapping options in the view model, so that updateFromJS can use them later.
			result[mappingProperty] = merge(result[mappingProperty], options);

			return result;
		} catch(e) {
			mappingNesting = 0;
			throw e;
		}
	};

	exports.fromJSON = function (jsonString /*, options, target*/ ) {
		var parsed = ko.utils.parseJson(jsonString);
		arguments[0] = parsed;
		return exports.fromJS.apply(this, arguments);
	};

	exports.updateFromJS = function (viewModel) {
		throw new Error("ko.mapping.updateFromJS, use ko.mapping.fromJS instead. Please note that the order of parameters is different!");
	};

	exports.updateFromJSON = function (viewModel) {
		throw new Error("ko.mapping.updateFromJSON, use ko.mapping.fromJSON instead. Please note that the order of parameters is different!");
	};

	exports.toJS = function (rootObject, options) {
		if (!defaultOptions) exports.resetDefaultOptions();

		if (arguments.length == 0) throw new Error("When calling ko.mapping.toJS, pass the object you want to convert.");
		if (exports.getType(defaultOptions.ignore) !== "array") throw new Error("ko.mapping.defaultOptions().ignore should be an array.");
		if (exports.getType(defaultOptions.include) !== "array") throw new Error("ko.mapping.defaultOptions().include should be an array.");
		if (exports.getType(defaultOptions.copy) !== "array") throw new Error("ko.mapping.defaultOptions().copy should be an array.");

		// Merge in the options used in fromJS
		options = fillOptions(options, rootObject[mappingProperty]);

		// We just unwrap everything at every level in the object graph
		return exports.visitModel(rootObject, function (x) {
			return ko.utils.unwrapObservable(x)
		}, options);
	};

	exports.toJSON = function (rootObject, options) {
		var plainJavaScriptObject = exports.toJS(rootObject, options);
		return ko.utils.stringifyJson(plainJavaScriptObject);
	};

	exports.defaultOptions = function () {
		if (arguments.length > 0) {
			defaultOptions = arguments[0];
		} else {
			return defaultOptions;
		}
	};

	exports.resetDefaultOptions = function () {
		defaultOptions = {
			include: _defaultOptions.include.slice(0),
			ignore: _defaultOptions.ignore.slice(0),
			copy: _defaultOptions.copy.slice(0)
		};
	};

	exports.getType = function(x) {
		if ((x) && (typeof (x) === "object")) {
			if (x.constructor === Date) return "date";
			if (x.constructor === Array) return "array";
		}
		return typeof x;
	}

	function fillOptions(rawOptions, otherOptions) {
		var options = merge({}, rawOptions);

		// Move recognized root-level properties into a root namespace
		for (var i = recognizedRootProperties.length - 1; i >= 0; i--) {
			var property = recognizedRootProperties[i];
			
			// Carry on, unless this property is present
			if (!options[property]) continue;
			
			// Move the property into the root namespace
			if (!(options[""] instanceof Object)) options[""] = {};
			options[""][property] = options[property];
			delete options[property];
		}

		if (otherOptions) {
			options.ignore = mergeArrays(otherOptions.ignore, options.ignore);
			options.include = mergeArrays(otherOptions.include, options.include);
			options.copy = mergeArrays(otherOptions.copy, options.copy);
			options.observe = mergeArrays(otherOptions.observe, options.observe);
		}
		options.ignore = mergeArrays(options.ignore, defaultOptions.ignore);
		options.include = mergeArrays(options.include, defaultOptions.include);
		options.copy = mergeArrays(options.copy, defaultOptions.copy);
		options.observe = mergeArrays(options.observe, defaultOptions.observe);

		options.mappedProperties = options.mappedProperties || {};
		options.copiedProperties = options.copiedProperties || {};
		return options;
	}

	function mergeArrays(a, b) {
		if (exports.getType(a) !== "array") {
			if (exports.getType(a) === "undefined") a = [];
			else a = [a];
		}
		if (exports.getType(b) !== "array") {
			if (exports.getType(b) === "undefined") b = [];
			else b = [b];
		}

		return ko.utils.arrayGetDistinctValues(a.concat(b));
	}

	// When using a 'create' callback, we proxy the dependent observable so that it doesn't immediately evaluate on creation.
	// The reason is that the dependent observables in the user-specified callback may contain references to properties that have not been mapped yet.
	function withProxyDependentObservable(dependentObservables, callback) {
		var localDO = ko.dependentObservable;
		ko.dependentObservable = function (read, owner, options) {
			options = options || {};

			if (read && typeof read == "object") { // mirrors condition in knockout implementation of DO's
				options = read;
			}

			var realDeferEvaluation = options.deferEvaluation;

			var isRemoved = false;

			// We wrap the original dependent observable so that we can remove it from the 'dependentObservables' list we need to evaluate after mapping has
			// completed if the user already evaluated the DO themselves in the meantime.
			var wrap = function (DO) {
				// Temporarily revert ko.dependentObservable, since it is used in ko.isWriteableObservable
				var tmp = ko.dependentObservable;
				ko.dependentObservable = realKoDependentObservable;
				var isWriteable = ko.isWriteableObservable(DO);
				ko.dependentObservable = tmp;

				var wrapped = realKoDependentObservable({
					read: function () {
						if (!isRemoved) {
							ko.utils.arrayRemoveItem(dependentObservables, DO);
							isRemoved = true;
						}
						return DO.apply(DO, arguments);
					},
					write: isWriteable && function (val) {
						return DO(val);
					},
					deferEvaluation: true
				});
				if (DEBUG) wrapped._wrapper = true;
				return wrapped;
			};
			
			options.deferEvaluation = true; // will either set for just options, or both read/options.
			var realDependentObservable = new realKoDependentObservable(read, owner, options);

			if (!realDeferEvaluation) {
				realDependentObservable = wrap(realDependentObservable);
				dependentObservables.push(realDependentObservable);
			}

			return realDependentObservable;
		}
		ko.dependentObservable.fn = realKoDependentObservable.fn;
		ko.computed = ko.dependentObservable;
		var result = callback();
		ko.dependentObservable = localDO;
		ko.computed = ko.dependentObservable;
		return result;
	}

	function updateViewModel(mappedRootObject, rootObject, options, parentName, parent, parentPropertyName, mappedParent) {
		var isArray = exports.getType(ko.utils.unwrapObservable(rootObject)) === "array";

		parentPropertyName = parentPropertyName || "";

		// If this object was already mapped previously, take the options from there and merge them with our existing ones.
		if (exports.isMapped(mappedRootObject)) {
			var previousMapping = ko.utils.unwrapObservable(mappedRootObject)[mappingProperty];
			options = merge(previousMapping, options);
		}

		var callbackParams = {
			data: rootObject,
			parent: mappedParent || parent
		};

		var hasCreateCallback = function () {
			return options[parentName] && options[parentName].create instanceof Function;
		};

		var createCallback = function (data) {
			return withProxyDependentObservable(dependentObservables, function () {
				
				if (ko.utils.unwrapObservable(parent) instanceof Array) {
					return options[parentName].create({
						data: data || callbackParams.data,
						parent: callbackParams.parent,
						skip: emptyReturn
					});
				} else {
					return options[parentName].create({
						data: data || callbackParams.data,
						parent: callbackParams.parent
					});
				}				
			});
		};

		var hasUpdateCallback = function () {
			return options[parentName] && options[parentName].update instanceof Function;
		};

		var updateCallback = function (obj, data) {
			var params = {
				data: data || callbackParams.data,
				parent: callbackParams.parent,
				target: ko.utils.unwrapObservable(obj)
			};

			if (ko.isWriteableObservable(obj)) {
				params.observable = obj;
			}

			return options[parentName].update(params);
		}

		var alreadyMapped = visitedObjects.get(rootObject);
		if (alreadyMapped) {
			return alreadyMapped;
		}

		parentName = parentName || "";

		if (!isArray) {
			// For atomic types, do a direct update on the observable
			if (!canHaveProperties(rootObject)) {
				switch (exports.getType(rootObject)) {
				case "function":
					if (hasUpdateCallback()) {
						if (ko.isWriteableObservable(rootObject)) {
							rootObject(updateCallback(rootObject));
							mappedRootObject = rootObject;
						} else {
							mappedRootObject = updateCallback(rootObject);
						}
					} else {
						mappedRootObject = rootObject;
					}
					break;
				default:
					if (ko.isWriteableObservable(mappedRootObject)) {
						if (hasUpdateCallback()) {
							var valueToWrite = updateCallback(mappedRootObject);
							mappedRootObject(valueToWrite);
							return valueToWrite;
						} else {
							var valueToWrite = ko.utils.unwrapObservable(rootObject);
							mappedRootObject(valueToWrite);
							return valueToWrite;
						}
					} else {
						var hasCreateOrUpdateCallback = hasCreateCallback() || hasUpdateCallback();
						
						if (hasCreateCallback()) {
							mappedRootObject = createCallback();
						} else {
							mappedRootObject = ko.observable(ko.utils.unwrapObservable(rootObject));
						}

						if (hasUpdateCallback()) {
							mappedRootObject(updateCallback(mappedRootObject));
						}
						
						if (hasCreateOrUpdateCallback) return mappedRootObject;
					}
				}

			} else {
				mappedRootObject = ko.utils.unwrapObservable(mappedRootObject);
				if (!mappedRootObject) {
					if (hasCreateCallback()) {
						var result = createCallback();

						if (hasUpdateCallback()) {
							result = updateCallback(result);
						}

						return result;
					} else {
						if (hasUpdateCallback()) {
							return updateCallback(result);
						}

						mappedRootObject = {};
					}
				}

				if (hasUpdateCallback()) {
					mappedRootObject = updateCallback(mappedRootObject);
				}

				visitedObjects.save(rootObject, mappedRootObject);
				if (hasUpdateCallback()) return mappedRootObject;

				// For non-atomic types, visit all properties and update recursively
				visitPropertiesOrArrayEntries(rootObject, function (indexer) {
					var fullPropertyName = parentPropertyName.length ? parentPropertyName + "." + indexer : indexer;

					if (ko.utils.arrayIndexOf(options.ignore, fullPropertyName) != -1) {
						return;
					}

					if (ko.utils.arrayIndexOf(options.copy, fullPropertyName) != -1) {
						mappedRootObject[indexer] = rootObject[indexer];
						return;
					}

					if(typeof rootObject[indexer] != "object" && typeof rootObject[indexer] != "array" && options.observe.length > 0 && ko.utils.arrayIndexOf(options.observe, fullPropertyName) == -1)
					{
						mappedRootObject[indexer] = rootObject[indexer];
						options.copiedProperties[fullPropertyName] = true;
						return;
					}
					
					// In case we are adding an already mapped property, fill it with the previously mapped property value to prevent recursion.
					// If this is a property that was generated by fromJS, we should use the options specified there
					var prevMappedProperty = visitedObjects.get(rootObject[indexer]);
					var retval = updateViewModel(mappedRootObject[indexer], rootObject[indexer], options, indexer, mappedRootObject, fullPropertyName, mappedRootObject);
					var value = prevMappedProperty || retval;
					
					if(options.observe.length > 0 && ko.utils.arrayIndexOf(options.observe, fullPropertyName) == -1)
					{
						mappedRootObject[indexer] = value();
						options.copiedProperties[fullPropertyName] = true;
						return;
					}
					
					if (ko.isWriteableObservable(mappedRootObject[indexer])) {
						mappedRootObject[indexer](ko.utils.unwrapObservable(value));
					} else {
						value = mappedRootObject[indexer] === undefined ? value : ko.utils.unwrapObservable(value);
						mappedRootObject[indexer] = value;
					}

					options.mappedProperties[fullPropertyName] = true;
				});
			}
		} else { //mappedRootObject is an array
			var changes = [];

			var hasKeyCallback = false;
			var keyCallback = function (x) {
				return x;
			}
			if (options[parentName] && options[parentName].key) {
				keyCallback = options[parentName].key;
				hasKeyCallback = true;
			}

			if (!ko.isObservable(mappedRootObject)) {
				// When creating the new observable array, also add a bunch of utility functions that take the 'key' of the array items into account.
				mappedRootObject = ko.observableArray([]);

				mappedRootObject.mappedRemove = function (valueOrPredicate) {
					var predicate = typeof valueOrPredicate == "function" ? valueOrPredicate : function (value) {
							return value === keyCallback(valueOrPredicate);
						};
					return mappedRootObject.remove(function (item) {
						return predicate(keyCallback(item));
					});
				}

				mappedRootObject.mappedRemoveAll = function (arrayOfValues) {
					var arrayOfKeys = filterArrayByKey(arrayOfValues, keyCallback);
					return mappedRootObject.remove(function (item) {
						return ko.utils.arrayIndexOf(arrayOfKeys, keyCallback(item)) != -1;
					});
				}

				mappedRootObject.mappedDestroy = function (valueOrPredicate) {
					var predicate = typeof valueOrPredicate == "function" ? valueOrPredicate : function (value) {
							return value === keyCallback(valueOrPredicate);
						};
					return mappedRootObject.destroy(function (item) {
						return predicate(keyCallback(item));
					});
				}

				mappedRootObject.mappedDestroyAll = function (arrayOfValues) {
					var arrayOfKeys = filterArrayByKey(arrayOfValues, keyCallback);
					return mappedRootObject.destroy(function (item) {
						return ko.utils.arrayIndexOf(arrayOfKeys, keyCallback(item)) != -1;
					});
				}

				mappedRootObject.mappedIndexOf = function (item) {
					var keys = filterArrayByKey(mappedRootObject(), keyCallback);
					var key = keyCallback(item);
					return ko.utils.arrayIndexOf(keys, key);
				}

				mappedRootObject.mappedCreate = function (value) {
					if (mappedRootObject.mappedIndexOf(value) !== -1) {
						throw new Error("There already is an object with the key that you specified.");
					}

					var item = hasCreateCallback() ? createCallback(value) : value;
					if (hasUpdateCallback()) {
						var newValue = updateCallback(item, value);
						if (ko.isWriteableObservable(item)) {
							item(newValue);
						} else {
							item = newValue;
						}
					}
					mappedRootObject.push(item);
					return item;
				}
			}

			var currentArrayKeys = filterArrayByKey(ko.utils.unwrapObservable(mappedRootObject), keyCallback).sort();
			var newArrayKeys = filterArrayByKey(rootObject, keyCallback);
			if (hasKeyCallback) newArrayKeys.sort();
			var editScript = ko.utils.compareArrays(currentArrayKeys, newArrayKeys);

			var ignoreIndexOf = {};
			
			var i, j;

			var unwrappedRootObject = ko.utils.unwrapObservable(rootObject);
			var itemsByKey = {};
			var optimizedKeys = true;
			for (i = 0, j = unwrappedRootObject.length; i < j; i++) {
				var key = keyCallback(unwrappedRootObject[i]);
				if (key === undefined || key instanceof Object) {
					optimizedKeys = false;
					break;
				}
				itemsByKey[key] = unwrappedRootObject[i];
			}

			var newContents = [];
			var passedOver = 0;
			for (i = 0, j = editScript.length; i < j; i++) {
				var key = editScript[i];
				var mappedItem;
				var fullPropertyName = parentPropertyName + "[" + i + "]";
				switch (key.status) {
				case "added":
					var item = optimizedKeys ? itemsByKey[key.value] : getItemByKey(ko.utils.unwrapObservable(rootObject), key.value, keyCallback);
					mappedItem = updateViewModel(undefined, item, options, parentName, mappedRootObject, fullPropertyName, parent);
					if(!hasCreateCallback()) {
						mappedItem = ko.utils.unwrapObservable(mappedItem);
					}

					var index = ignorableIndexOf(ko.utils.unwrapObservable(rootObject), item, ignoreIndexOf);
					
					if (mappedItem === emptyReturn) {
						passedOver++;
					} else {
						newContents[index - passedOver] = mappedItem;
					}
						
					ignoreIndexOf[index] = true;
					break;
				case "retained":
					var item = optimizedKeys ? itemsByKey[key.value] : getItemByKey(ko.utils.unwrapObservable(rootObject), key.value, keyCallback);
					mappedItem = getItemByKey(mappedRootObject, key.value, keyCallback);
					updateViewModel(mappedItem, item, options, parentName, mappedRootObject, fullPropertyName, parent);

					var index = ignorableIndexOf(ko.utils.unwrapObservable(rootObject), item, ignoreIndexOf);
					newContents[index] = mappedItem;
					ignoreIndexOf[index] = true;
					break;
				case "deleted":
					mappedItem = getItemByKey(mappedRootObject, key.value, keyCallback);
					break;
				}

				changes.push({
					event: key.status,
					item: mappedItem
				});
			}

			mappedRootObject(newContents);

			if (options[parentName] && options[parentName].arrayChanged) {
				ko.utils.arrayForEach(changes, function (change) {
					options[parentName].arrayChanged(change.event, change.item);
				});
			}
		}

		return mappedRootObject;
	}

	function ignorableIndexOf(array, item, ignoreIndices) {
		for (var i = 0, j = array.length; i < j; i++) {
			if (ignoreIndices[i] === true) continue;
			if (array[i] === item) return i;
		}
		return null;
	}

	function mapKey(item, callback) {
		var mappedItem;
		if (callback) mappedItem = callback(item);
		if (exports.getType(mappedItem) === "undefined") mappedItem = item;

		return ko.utils.unwrapObservable(mappedItem);
	}

	function getItemByKey(array, key, callback) {
		array = ko.utils.unwrapObservable(array);
		for (var i = 0, j = array.length; i < j; i++) {
			var item = array[i];
			if (mapKey(item, callback) === key) return item;
		}

		throw new Error("When calling ko.update*, the key '" + key + "' was not found!");
	}

	function filterArrayByKey(array, callback) {
		return ko.utils.arrayMap(ko.utils.unwrapObservable(array), function (item) {
			if (callback) {
				return mapKey(item, callback);
			} else {
				return item;
			}
		});
	}

	function visitPropertiesOrArrayEntries(rootObject, visitorCallback) {
		if (exports.getType(rootObject) === "array") {
			for (var i = 0; i < rootObject.length; i++)
			visitorCallback(i);
		} else {
			for (var propertyName in rootObject)
			visitorCallback(propertyName);
		}
	};

	function canHaveProperties(object) {
		var type = exports.getType(object);
		return ((type === "object") || (type === "array")) && (object !== null);
	}

	// Based on the parentName, this creates a fully classified name of a property

	function getPropertyName(parentName, parent, indexer) {
		var propertyName = parentName || "";
		if (exports.getType(parent) === "array") {
			if (parentName) {
				propertyName += "[" + indexer + "]";
			}
		} else {
			if (parentName) {
				propertyName += ".";
			}
			propertyName += indexer;
		}
		return propertyName;
	}

	exports.visitModel = function (rootObject, callback, options) {
		options = options || {};
		options.visitedObjects = options.visitedObjects || new objectLookup();

		var mappedRootObject;
		var unwrappedRootObject = ko.utils.unwrapObservable(rootObject);

		if (!canHaveProperties(unwrappedRootObject)) {
			return callback(rootObject, options.parentName);
		} else {
			options = fillOptions(options, unwrappedRootObject[mappingProperty]);

			// Only do a callback, but ignore the results
			callback(rootObject, options.parentName);
			mappedRootObject = exports.getType(unwrappedRootObject) === "array" ? [] : {};
		}

		options.visitedObjects.save(rootObject, mappedRootObject);

		var parentName = options.parentName;
		visitPropertiesOrArrayEntries(unwrappedRootObject, function (indexer) {
			if (options.ignore && ko.utils.arrayIndexOf(options.ignore, indexer) != -1) return;

			var propertyValue = unwrappedRootObject[indexer];
			options.parentName = getPropertyName(parentName, unwrappedRootObject, indexer);

			// If we don't want to explicitly copy the unmapped property...
			if (ko.utils.arrayIndexOf(options.copy, indexer) === -1) {
				// ...find out if it's a property we want to explicitly include
				if (ko.utils.arrayIndexOf(options.include, indexer) === -1) {
					// The mapped properties object contains all the properties that were part of the original object.
					// If a property does not exist, and it is not because it is part of an array (e.g. "myProp[3]"), then it should not be unmapped.
				    if (unwrappedRootObject[mappingProperty]
				        && unwrappedRootObject[mappingProperty].mappedProperties && !unwrappedRootObject[mappingProperty].mappedProperties[indexer]
				        && unwrappedRootObject[mappingProperty].copiedProperties && !unwrappedRootObject[mappingProperty].copiedProperties[indexer]
				        && !(exports.getType(unwrappedRootObject) === "array")) {
						return;
					}
				}
			}

			var outputProperty;
			switch (exports.getType(ko.utils.unwrapObservable(propertyValue))) {
			case "object":
			case "array":
			case "undefined":
				var previouslyMappedValue = options.visitedObjects.get(propertyValue);
				mappedRootObject[indexer] = (exports.getType(previouslyMappedValue) !== "undefined") ? previouslyMappedValue : exports.visitModel(propertyValue, callback, options);
				break;
			default:
				mappedRootObject[indexer] = callback(propertyValue, options.parentName);
			}
		});

		return mappedRootObject;
	}

	function simpleObjectLookup() {
		var keys = [];
		var values = [];
		this.save = function (key, value) {
			var existingIndex = ko.utils.arrayIndexOf(keys, key);
			if (existingIndex >= 0) values[existingIndex] = value;
			else {
				keys.push(key);
				values.push(value);
			}
		};
		this.get = function (key) {
			var existingIndex = ko.utils.arrayIndexOf(keys, key);
			var value = (existingIndex >= 0) ? values[existingIndex] : undefined;
			return value;
		};
	};
	
	function objectLookup() {
		var buckets = {};
		
		var findBucket = function(key) {
			var bucketKey;
			try {
				bucketKey = key;//JSON.stringify(key);
			}
			catch (e) {
				bucketKey = "$$$";
			}

			var bucket = buckets[bucketKey];
			if (bucket === undefined) {
				bucket = new simpleObjectLookup();
				buckets[bucketKey] = bucket;
			}
			return bucket;
		};
		
		this.save = function (key, value) {
			findBucket(key).save(key, value);
		};
		this.get = function (key) {
			return findBucket(key).get(key);
		};
	};
}));
;
(function () {
    // Private function
    function getColumnsForScaffolding(data) {
        if ((typeof data.length !== 'number') || data.length === 0) {
            return [];
        }
        var columns = [];
        for (var propertyName in data[0]) {
            columns.push({ headerText: propertyName, rowText: propertyName });
        }
        return columns;
    }

    ko.simpleGrid = {
        // Defines a view model class you can use to populate a grid
        viewModel: function (configuration) {
            this.data = configuration.data;
            this.currentPageIndex = ko.observable(0);
            this.pageSize = configuration.pageSize || 5;

            // If you don't specify columns configuration, we'll use scaffolding
            this.columns = configuration.columns || getColumnsForScaffolding(ko.unwrap(this.data));

            this.itemsOnCurrentPage = ko.computed(function () {
                var startIndex = this.pageSize * this.currentPageIndex();
                return ko.unwrap(this.data).slice(startIndex, startIndex + this.pageSize);
            }, this);

            this.maxPageIndex = ko.computed(function () {
                return Math.ceil(ko.unwrap(this.data).length / this.pageSize) - 1;
            }, this);
        }
    };

    // Templates used to render the grid
    var templateEngine = new ko.nativeTemplateEngine();

    templateEngine.addTemplate = function(templateName, templateMarkup) {
        document.write("<script type='text/html' id='" + templateName + "'>" + templateMarkup + "<" + "/script>");
    };

    templateEngine.addTemplate("ko_simpleGrid_grid", "\
                    <table class=\"ko-grid\" cellspacing=\"0\">\
                        <thead>\
                            <tr data-bind=\"foreach: columns\">\
                               <th data-bind=\"text: headerText\"></th>\
                            </tr>\
                        </thead>\
                        <tbody data-bind=\"foreach: itemsOnCurrentPage\">\
                           <tr data-bind=\"foreach: $parent.columns\">\
                               <td data-bind=\"html: typeof rowText == 'function' ? rowText($parent) : $parent[rowText] \"></td>\
                            </tr>\
                        </tbody>\
                    </table>");
    templateEngine.addTemplate("ko_simpleGrid_pageLinks", "\
                    <div class=\"ko-grid-pageLinks\">\
                        <span>Page:</span>\
                        <!-- ko foreach: ko.utils.range(0, maxPageIndex) -->\
                               <a href=\"#\" data-bind=\"text: $data + 1, click: function() { $root.currentPageIndex($data) }, css: { selected: $data == $root.currentPageIndex() }\">\
                            </a>\
                        <!-- /ko -->\
                    </div>");

    // The "simpleGrid" binding
    ko.bindingHandlers.simpleGrid = {
        init: function() {
            return { 'controlsDescendantBindings': true };
        },
        // This method is called to initialize the node, and will also be called again if you change what the grid is bound to
        update: function (element, viewModelAccessor, allBindings) {
            var viewModel = viewModelAccessor();

            // Empty the element
            while(element.firstChild)
                ko.removeNode(element.firstChild);

            // Allow the default templates to be overridden
            var gridTemplateName      = allBindings.get('simpleGridTemplate') || "ko_simpleGrid_grid",
                pageLinksTemplateName = allBindings.get('simpleGridPagerTemplate') || "ko_simpleGrid_pageLinks";

            // Render the main grid
            var gridContainer = element.appendChild(document.createElement("DIV"));
            ko.renderTemplate(gridTemplateName, viewModel, { templateEngine: templateEngine }, gridContainer, "replaceNode");

            // Render the page links
            var pageLinksContainer = element.appendChild(document.createElement("DIV"));
            ko.renderTemplate(pageLinksTemplateName, viewModel, { templateEngine: templateEngine }, pageLinksContainer, "replaceNode");
        }
    };
})();;
/**
 * jquery.Jcrop.min.js v0.9.12 (build:20130202)
 * jQuery Image Cropping Plugin - released under MIT License
 * Copyright (c) 2008-2013 Tapmodo Interactive LLC
 * https://github.com/tapmodo/Jcrop
 */
(function(a){a.Jcrop=function(b,c){function i(a){return Math.round(a)+"px"}function j(a){return d.baseClass+"-"+a}function k(){return a.fx.step.hasOwnProperty("backgroundColor")}function l(b){var c=a(b).offset();return[c.left,c.top]}function m(a){return[a.pageX-e[0],a.pageY-e[1]]}function n(b){typeof b!="object"&&(b={}),d=a.extend(d,b),a.each(["onChange","onSelect","onRelease","onDblClick"],function(a,b){typeof d[b]!="function"&&(d[b]=function(){})})}function o(a,b,c){e=l(D),bc.setCursor(a==="move"?a:a+"-resize");if(a==="move")return bc.activateHandlers(q(b),v,c);var d=_.getFixed(),f=r(a),g=_.getCorner(r(f));_.setPressed(_.getCorner(f)),_.setCurrent(g),bc.activateHandlers(p(a,d),v,c)}function p(a,b){return function(c){if(!d.aspectRatio)switch(a){case"e":c[1]=b.y2;break;case"w":c[1]=b.y2;break;case"n":c[0]=b.x2;break;case"s":c[0]=b.x2}else switch(a){case"e":c[1]=b.y+1;break;case"w":c[1]=b.y+1;break;case"n":c[0]=b.x+1;break;case"s":c[0]=b.x+1}_.setCurrent(c),bb.update()}}function q(a){var b=a;return bd.watchKeys
(),function(a){_.moveOffset([a[0]-b[0],a[1]-b[1]]),b=a,bb.update()}}function r(a){switch(a){case"n":return"sw";case"s":return"nw";case"e":return"nw";case"w":return"ne";case"ne":return"sw";case"nw":return"se";case"se":return"nw";case"sw":return"ne"}}function s(a){return function(b){return d.disabled?!1:a==="move"&&!d.allowMove?!1:(e=l(D),W=!0,o(a,m(b)),b.stopPropagation(),b.preventDefault(),!1)}}function t(a,b,c){var d=a.width(),e=a.height();d>b&&b>0&&(d=b,e=b/a.width()*a.height()),e>c&&c>0&&(e=c,d=c/a.height()*a.width()),T=a.width()/d,U=a.height()/e,a.width(d).height(e)}function u(a){return{x:a.x*T,y:a.y*U,x2:a.x2*T,y2:a.y2*U,w:a.w*T,h:a.h*U}}function v(a){var b=_.getFixed();b.w>d.minSelect[0]&&b.h>d.minSelect[1]?(bb.enableHandles(),bb.done()):bb.release(),bc.setCursor(d.allowSelect?"crosshair":"default")}function w(a){if(d.disabled)return!1;if(!d.allowSelect)return!1;W=!0,e=l(D),bb.disableHandles(),bc.setCursor("crosshair");var b=m(a);return _.setPressed(b),bb.update(),bc.activateHandlers(x,v,a.type.substring
(0,5)==="touch"),bd.watchKeys(),a.stopPropagation(),a.preventDefault(),!1}function x(a){_.setCurrent(a),bb.update()}function y(){var b=a("<div></div>").addClass(j("tracker"));return g&&b.css({opacity:0,backgroundColor:"white"}),b}function be(a){G.removeClass().addClass(j("holder")).addClass(a)}function bf(a,b){function t(){window.setTimeout(u,l)}var c=a[0]/T,e=a[1]/U,f=a[2]/T,g=a[3]/U;if(X)return;var h=_.flipCoords(c,e,f,g),i=_.getFixed(),j=[i.x,i.y,i.x2,i.y2],k=j,l=d.animationDelay,m=h[0]-j[0],n=h[1]-j[1],o=h[2]-j[2],p=h[3]-j[3],q=0,r=d.swingSpeed;c=k[0],e=k[1],f=k[2],g=k[3],bb.animMode(!0);var s,u=function(){return function(){q+=(100-q)/r,k[0]=Math.round(c+q/100*m),k[1]=Math.round(e+q/100*n),k[2]=Math.round(f+q/100*o),k[3]=Math.round(g+q/100*p),q>=99.8&&(q=100),q<100?(bh(k),t()):(bb.done(),bb.animMode(!1),typeof b=="function"&&b.call(bs))}}();t()}function bg(a){bh([a[0]/T,a[1]/U,a[2]/T,a[3]/U]),d.onSelect.call(bs,u(_.getFixed())),bb.enableHandles()}function bh(a){_.setPressed([a[0],a[1]]),_.setCurrent([a[2],
a[3]]),bb.update()}function bi(){return u(_.getFixed())}function bj(){return _.getFixed()}function bk(a){n(a),br()}function bl(){d.disabled=!0,bb.disableHandles(),bb.setCursor("default"),bc.setCursor("default")}function bm(){d.disabled=!1,br()}function bn(){bb.done(),bc.activateHandlers(null,null)}function bo(){G.remove(),A.show(),A.css("visibility","visible"),a(b).removeData("Jcrop")}function bp(a,b){bb.release(),bl();var c=new Image;c.onload=function(){var e=c.width,f=c.height,g=d.boxWidth,h=d.boxHeight;D.width(e).height(f),D.attr("src",a),H.attr("src",a),t(D,g,h),E=D.width(),F=D.height(),H.width(E).height(F),M.width(E+L*2).height(F+L*2),G.width(E).height(F),ba.resize(E,F),bm(),typeof b=="function"&&b.call(bs)},c.src=a}function bq(a,b,c){var e=b||d.bgColor;d.bgFade&&k()&&d.fadeTime&&!c?a.animate({backgroundColor:e},{queue:!1,duration:d.fadeTime}):a.css("backgroundColor",e)}function br(a){d.allowResize?a?bb.enableOnly():bb.enableHandles():bb.disableHandles(),bc.setCursor(d.allowSelect?"crosshair":"default"),bb
.setCursor(d.allowMove?"move":"default"),d.hasOwnProperty("trueSize")&&(T=d.trueSize[0]/E,U=d.trueSize[1]/F),d.hasOwnProperty("setSelect")&&(bg(d.setSelect),bb.done(),delete d.setSelect),ba.refresh(),d.bgColor!=N&&(bq(d.shade?ba.getShades():G,d.shade?d.shadeColor||d.bgColor:d.bgColor),N=d.bgColor),O!=d.bgOpacity&&(O=d.bgOpacity,d.shade?ba.refresh():bb.setBgOpacity(O)),P=d.maxSize[0]||0,Q=d.maxSize[1]||0,R=d.minSize[0]||0,S=d.minSize[1]||0,d.hasOwnProperty("outerImage")&&(D.attr("src",d.outerImage),delete d.outerImage),bb.refresh()}var d=a.extend({},a.Jcrop.defaults),e,f=navigator.userAgent.toLowerCase(),g=/msie/.test(f),h=/msie [1-6]\./.test(f);typeof b!="object"&&(b=a(b)[0]),typeof c!="object"&&(c={}),n(c);var z={border:"none",visibility:"visible",margin:0,padding:0,position:"absolute",top:0,left:0},A=a(b),B=!0;if(b.tagName=="IMG"){if(A[0].width!=0&&A[0].height!=0)A.width(A[0].width),A.height(A[0].height);else{var C=new Image;C.src=A[0].src,A.width(C.width),A.height(C.height)}var D=A.clone().removeAttr("id").
css(z).show();D.width(A.width()),D.height(A.height()),A.after(D).hide()}else D=A.css(z).show(),B=!1,d.shade===null&&(d.shade=!0);t(D,d.boxWidth,d.boxHeight);var E=D.width(),F=D.height(),G=a("<div />").width(E).height(F).addClass(j("holder")).css({position:"relative",backgroundColor:d.bgColor}).insertAfter(A).append(D);d.addClass&&G.addClass(d.addClass);var H=a("<div />"),I=a("<div />").width("100%").height("100%").css({zIndex:310,position:"absolute",overflow:"hidden"}),J=a("<div />").width("100%").height("100%").css("zIndex",320),K=a("<div />").css({position:"absolute",zIndex:600}).dblclick(function(){var a=_.getFixed();d.onDblClick.call(bs,a)}).insertBefore(D).append(I,J);B&&(H=a("<img />").attr("src",D.attr("src")).css(z).width(E).height(F),I.append(H)),h&&K.css({overflowY:"hidden"});var L=d.boundary,M=y().width(E+L*2).height(F+L*2).css({position:"absolute",top:i(-L),left:i(-L),zIndex:290}).mousedown(w),N=d.bgColor,O=d.bgOpacity,P,Q,R,S,T,U,V=!0,W,X,Y;e=l(D);var Z=function(){function a(){var a={},b=["touchstart"
,"touchmove","touchend"],c=document.createElement("div"),d;try{for(d=0;d<b.length;d++){var e=b[d];e="on"+e;var f=e in c;f||(c.setAttribute(e,"return;"),f=typeof c[e]=="function"),a[b[d]]=f}return a.touchstart&&a.touchend&&a.touchmove}catch(g){return!1}}function b(){return d.touchSupport===!0||d.touchSupport===!1?d.touchSupport:a()}return{createDragger:function(a){return function(b){return d.disabled?!1:a==="move"&&!d.allowMove?!1:(e=l(D),W=!0,o(a,m(Z.cfilter(b)),!0),b.stopPropagation(),b.preventDefault(),!1)}},newSelection:function(a){return w(Z.cfilter(a))},cfilter:function(a){return a.pageX=a.originalEvent.changedTouches[0].pageX,a.pageY=a.originalEvent.changedTouches[0].pageY,a},isSupported:a,support:b()}}(),_=function(){function h(d){d=n(d),c=a=d[0],e=b=d[1]}function i(a){a=n(a),f=a[0]-c,g=a[1]-e,c=a[0],e=a[1]}function j(){return[f,g]}function k(d){var f=d[0],g=d[1];0>a+f&&(f-=f+a),0>b+g&&(g-=g+b),F<e+g&&(g+=F-(e+g)),E<c+f&&(f+=E-(c+f)),a+=f,c+=f,b+=g,e+=g}function l(a){var b=m();switch(a){case"ne":return[
b.x2,b.y];case"nw":return[b.x,b.y];case"se":return[b.x2,b.y2];case"sw":return[b.x,b.y2]}}function m(){if(!d.aspectRatio)return p();var f=d.aspectRatio,g=d.minSize[0]/T,h=d.maxSize[0]/T,i=d.maxSize[1]/U,j=c-a,k=e-b,l=Math.abs(j),m=Math.abs(k),n=l/m,r,s,t,u;return h===0&&(h=E*10),i===0&&(i=F*10),n<f?(s=e,t=m*f,r=j<0?a-t:t+a,r<0?(r=0,u=Math.abs((r-a)/f),s=k<0?b-u:u+b):r>E&&(r=E,u=Math.abs((r-a)/f),s=k<0?b-u:u+b)):(r=c,u=l/f,s=k<0?b-u:b+u,s<0?(s=0,t=Math.abs((s-b)*f),r=j<0?a-t:t+a):s>F&&(s=F,t=Math.abs(s-b)*f,r=j<0?a-t:t+a)),r>a?(r-a<g?r=a+g:r-a>h&&(r=a+h),s>b?s=b+(r-a)/f:s=b-(r-a)/f):r<a&&(a-r<g?r=a-g:a-r>h&&(r=a-h),s>b?s=b+(a-r)/f:s=b-(a-r)/f),r<0?(a-=r,r=0):r>E&&(a-=r-E,r=E),s<0?(b-=s,s=0):s>F&&(b-=s-F,s=F),q(o(a,b,r,s))}function n(a){return a[0]<0&&(a[0]=0),a[1]<0&&(a[1]=0),a[0]>E&&(a[0]=E),a[1]>F&&(a[1]=F),[Math.round(a[0]),Math.round(a[1])]}function o(a,b,c,d){var e=a,f=c,g=b,h=d;return c<a&&(e=c,f=a),d<b&&(g=d,h=b),[e,g,f,h]}function p(){var d=c-a,f=e-b,g;return P&&Math.abs(d)>P&&(c=d>0?a+P:a-P),Q&&Math.abs
(f)>Q&&(e=f>0?b+Q:b-Q),S/U&&Math.abs(f)<S/U&&(e=f>0?b+S/U:b-S/U),R/T&&Math.abs(d)<R/T&&(c=d>0?a+R/T:a-R/T),a<0&&(c-=a,a-=a),b<0&&(e-=b,b-=b),c<0&&(a-=c,c-=c),e<0&&(b-=e,e-=e),c>E&&(g=c-E,a-=g,c-=g),e>F&&(g=e-F,b-=g,e-=g),a>E&&(g=a-F,e-=g,b-=g),b>F&&(g=b-F,e-=g,b-=g),q(o(a,b,c,e))}function q(a){return{x:a[0],y:a[1],x2:a[2],y2:a[3],w:a[2]-a[0],h:a[3]-a[1]}}var a=0,b=0,c=0,e=0,f,g;return{flipCoords:o,setPressed:h,setCurrent:i,getOffset:j,moveOffset:k,getCorner:l,getFixed:m}}(),ba=function(){function f(a,b){e.left.css({height:i(b)}),e.right.css({height:i(b)})}function g(){return h(_.getFixed())}function h(a){e.top.css({left:i(a.x),width:i(a.w),height:i(a.y)}),e.bottom.css({top:i(a.y2),left:i(a.x),width:i(a.w),height:i(F-a.y2)}),e.right.css({left:i(a.x2),width:i(E-a.x2)}),e.left.css({width:i(a.x)})}function j(){return a("<div />").css({position:"absolute",backgroundColor:d.shadeColor||d.bgColor}).appendTo(c)}function k(){b||(b=!0,c.insertBefore(D),g(),bb.setBgOpacity(1,0,1),H.hide(),l(d.shadeColor||d.bgColor,1),bb.
isAwake()?n(d.bgOpacity,1):n(1,1))}function l(a,b){bq(p(),a,b)}function m(){b&&(c.remove(),H.show(),b=!1,bb.isAwake()?bb.setBgOpacity(d.bgOpacity,1,1):(bb.setBgOpacity(1,1,1),bb.disableHandles()),bq(G,0,1))}function n(a,e){b&&(d.bgFade&&!e?c.animate({opacity:1-a},{queue:!1,duration:d.fadeTime}):c.css({opacity:1-a}))}function o(){d.shade?k():m(),bb.isAwake()&&n(d.bgOpacity)}function p(){return c.children()}var b=!1,c=a("<div />").css({position:"absolute",zIndex:240,opacity:0}),e={top:j(),left:j().height(F),right:j().height(F),bottom:j()};return{update:g,updateRaw:h,getShades:p,setBgColor:l,enable:k,disable:m,resize:f,refresh:o,opacity:n}}(),bb=function(){function k(b){var c=a("<div />").css({position:"absolute",opacity:d.borderOpacity}).addClass(j(b));return I.append(c),c}function l(b,c){var d=a("<div />").mousedown(s(b)).css({cursor:b+"-resize",position:"absolute",zIndex:c}).addClass("ord-"+b);return Z.support&&d.bind("touchstart.jcrop",Z.createDragger(b)),J.append(d),d}function m(a){var b=d.handleSize,e=l(a,c++
).css({opacity:d.handleOpacity}).addClass(j("handle"));return b&&e.width(b).height(b),e}function n(a){return l(a,c++).addClass("jcrop-dragbar")}function o(a){var b;for(b=0;b<a.length;b++)g[a[b]]=n(a[b])}function p(a){var b,c;for(c=0;c<a.length;c++){switch(a[c]){case"n":b="hline";break;case"s":b="hline bottom";break;case"e":b="vline right";break;case"w":b="vline"}e[a[c]]=k(b)}}function q(a){var b;for(b=0;b<a.length;b++)f[a[b]]=m(a[b])}function r(a,b){d.shade||H.css({top:i(-b),left:i(-a)}),K.css({top:i(b),left:i(a)})}function t(a,b){K.width(Math.round(a)).height(Math.round(b))}function v(){var a=_.getFixed();_.setPressed([a.x,a.y]),_.setCurrent([a.x2,a.y2]),w()}function w(a){if(b)return x(a)}function x(a){var c=_.getFixed();t(c.w,c.h),r(c.x,c.y),d.shade&&ba.updateRaw(c),b||A(),a?d.onSelect.call(bs,u(c)):d.onChange.call(bs,u(c))}function z(a,c,e){if(!b&&!c)return;d.bgFade&&!e?D.animate({opacity:a},{queue:!1,duration:d.fadeTime}):D.css("opacity",a)}function A(){K.show(),d.shade?ba.opacity(O):z(O,!0),b=!0}function B
(){F(),K.hide(),d.shade?ba.opacity(1):z(1),b=!1,d.onRelease.call(bs)}function C(){h&&J.show()}function E(){h=!0;if(d.allowResize)return J.show(),!0}function F(){h=!1,J.hide()}function G(a){a?(X=!0,F()):(X=!1,E())}function L(){G(!1),v()}var b,c=370,e={},f={},g={},h=!1;d.dragEdges&&a.isArray(d.createDragbars)&&o(d.createDragbars),a.isArray(d.createHandles)&&q(d.createHandles),d.drawBorders&&a.isArray(d.createBorders)&&p(d.createBorders),a(document).bind("touchstart.jcrop-ios",function(b){a(b.currentTarget).hasClass("jcrop-tracker")&&b.stopPropagation()});var M=y().mousedown(s("move")).css({cursor:"move",position:"absolute",zIndex:360});return Z.support&&M.bind("touchstart.jcrop",Z.createDragger("move")),I.append(M),F(),{updateVisible:w,update:x,release:B,refresh:v,isAwake:function(){return b},setCursor:function(a){M.css("cursor",a)},enableHandles:E,enableOnly:function(){h=!0},showHandles:C,disableHandles:F,animMode:G,setBgOpacity:z,done:L}}(),bc=function(){function f(b){M.css({zIndex:450}),b?a(document).bind("touchmove.jcrop"
,k).bind("touchend.jcrop",l):e&&a(document).bind("mousemove.jcrop",h).bind("mouseup.jcrop",i)}function g(){M.css({zIndex:290}),a(document).unbind(".jcrop")}function h(a){return b(m(a)),!1}function i(a){return a.preventDefault(),a.stopPropagation(),W&&(W=!1,c(m(a)),bb.isAwake()&&d.onSelect.call(bs,u(_.getFixed())),g(),b=function(){},c=function(){}),!1}function j(a,d,e){return W=!0,b=a,c=d,f(e),!1}function k(a){return b(m(Z.cfilter(a))),!1}function l(a){return i(Z.cfilter(a))}function n(a){M.css("cursor",a)}var b=function(){},c=function(){},e=d.trackDocument;return e||M.mousemove(h).mouseup(i).mouseout(i),D.before(M),{activateHandlers:j,setCursor:n}}(),bd=function(){function e(){d.keySupport&&(b.show(),b.focus())}function f(a){b.hide()}function g(a,b,c){d.allowMove&&(_.moveOffset([b,c]),bb.updateVisible(!0)),a.preventDefault(),a.stopPropagation()}function i(a){if(a.ctrlKey||a.metaKey)return!0;Y=a.shiftKey?!0:!1;var b=Y?10:1;switch(a.keyCode){case 37:g(a,-b,0);break;case 39:g(a,b,0);break;case 38:g(a,0,-b);break;
case 40:g(a,0,b);break;case 27:d.allowSelect&&bb.release();break;case 9:return!0}return!1}var b=a('<input type="radio" />').css({position:"fixed",left:"-120px",width:"12px"}).addClass("jcrop-keymgr"),c=a("<div />").css({position:"absolute",overflow:"hidden"}).append(b);return d.keySupport&&(b.keydown(i).blur(f),h||!d.fixedSupport?(b.css({position:"absolute",left:"-20px"}),c.append(b).insertBefore(D)):b.insertBefore(D)),{watchKeys:e}}();Z.support&&M.bind("touchstart.jcrop",Z.newSelection),J.hide(),br(!0);var bs={setImage:bp,animateTo:bf,setSelect:bg,setOptions:bk,tellSelect:bi,tellScaled:bj,setClass:be,disable:bl,enable:bm,cancel:bn,release:bb.release,destroy:bo,focus:bd.watchKeys,getBounds:function(){return[E*T,F*U]},getWidgetSize:function(){return[E,F]},getScaleFactor:function(){return[T,U]},getOptions:function(){return d},ui:{holder:G,selection:K}};return g&&G.bind("selectstart",function(){return!1}),A.data("Jcrop",bs),bs},a.fn.Jcrop=function(b,c){var d;return this.each(function(){if(a(this).data("Jcrop")){if(
b==="api")return a(this).data("Jcrop");a(this).data("Jcrop").setOptions(b)}else this.tagName=="IMG"?a.Jcrop.Loader(this,function(){a(this).css({display:"block",visibility:"hidden"}),d=a.Jcrop(this,b),a.isFunction(c)&&c.call(d)}):(a(this).css({display:"block",visibility:"hidden"}),d=a.Jcrop(this,b),a.isFunction(c)&&c.call(d))}),this},a.Jcrop.Loader=function(b,c,d){function g(){f.complete?(e.unbind(".jcloader"),a.isFunction(c)&&c.call(f)):window.setTimeout(g,50)}var e=a(b),f=e[0];e.bind("load.jcloader",g).bind("error.jcloader",function(b){e.unbind(".jcloader"),a.isFunction(d)&&d.call(f)}),f.complete&&a.isFunction(c)&&(e.unbind(".jcloader"),c.call(f))},a.Jcrop.defaults={allowSelect:!0,allowMove:!0,allowResize:!0,trackDocument:!0,baseClass:"jcrop",addClass:null,bgColor:"black",bgOpacity:.6,bgFade:!1,borderOpacity:.4,handleOpacity:.5,handleSize:null,aspectRatio:0,keySupport:!0,createHandles:["n","s","e","w","nw","ne","se","sw"],createDragbars:["n","s","e","w"],createBorders:["n","s","e","w"],drawBorders:!0,dragEdges
:!0,fixedSupport:!0,touchSupport:null,shade:null,boxWidth:0,boxHeight:0,boundary:2,fadeTime:400,animationDelay:20,swingSpeed:3,minSelect:[0,0],maxSize:[0,0],minSize:[0,0],onChange:function(){},onSelect:function(){},onDblClick:function(){},onRelease:function(){}}})(jQuery);;
/* PDFObject, copyright (C) 2008 Philip Hutchison (pipwerks.com). Documentation and examples are at www.pdfobject.com. Version 1.2, April 2011. MIT style license */
var PDFObject=function(y){if(!y||!y.url){return false;}var w="1.2",b=y.id||false,i=y.width||"100%",z=y.height||"100%",r=y.pdfOpenParams,a,x;var v=function(){var c=null;if(window.ActiveXObject){c=new ActiveXObject("AcroPDF.PDF");if(!c){c=new ActiveXObject("PDF.PdfCtrl");}if(c!==null){return true;}}return false;};var u=function(){var c,f=navigator.plugins,d=f.length,e=/Adobe Reader|Adobe PDF|Acrobat/gi;for(c=0;c<d;c++){if(e.test(f[c].name)){return true;}}return false;};var t=function(){var c=navigator.mimeTypes["application/pdf"];return(c&&c.enabledPlugin);};var s=function(){var c=null;if(u()||v()){c="Adobe";}else{if(t()){c="generic";}}return c;};var q=function(){var e=document.getElementsByTagName("html");if(!e){return false;}var c=e[0].style,d=document.body.style;c.height="100%";c.overflow="hidden";d.margin="0";d.padding="0";d.height="100%";d.overflow="hidden";};var p=function(d){var c="",e;if(!d){return c;}for(e in d){if(d.hasOwnProperty(e)){c+=e+"=";if(e==="search"){c+=encodeURI(d[e]);}else{c+=d[e];}c+="&";}}return c.slice(0,c.length-1);};var o=function(d){var c=null;switch(d){case"url":c=a;break;case"id":c=b;break;case"width":c=i;break;case"height":c=z;break;case"pdfOpenParams":c=r;break;case"pluginTypeFound":c=x;break;case"pdfobjectversion":c=w;break;}return c;};var n=function(d){if(!x){return false;}var c=null;if(d){c=(d.nodeType&&d.nodeType===1)?d:document.getElementById(d);if(!c){return false;}}else{c=document.body;q();i="100%";z="100%";}c.innerHTML='<object	data="'+a+'" type="application/pdf" width="'+i+'" height="'+z+'"></object>';return c.getElementsByTagName("object")[0];};a=encodeURI(y.url)+"#"+p(r);x=s();this.get=function(c){return o(c);};this.embed=function(c){return n(c);};return this;};;
/**
 * bootbox.js v4.2.0
 *
 * http://bootboxjs.com/license.txt
 */
!function(a,b){"use strict";"function"==typeof define&&define.amd?define(["jquery"],b):"object"==typeof exports?module.exports=b(require("jquery")):a.bootbox=b(a.jQuery)}(this,function a(b,c){"use strict";function d(a){var b=q[o.locale];return b?b[a]:q.en[a]}function e(a,c,d){a.stopPropagation(),a.preventDefault();var e=b.isFunction(d)&&d(a)===!1;e||c.modal("hide")}function f(a){var b,c=0;for(b in a)c++;return c}function g(a,c){var d=0;b.each(a,function(a,b){c(a,b,d++)})}function h(a){var c,d;if("object"!=typeof a)throw new Error("Please supply an object of options");if(!a.message)throw new Error("Please specify a message");return a=b.extend({},o,a),a.buttons||(a.buttons={}),a.backdrop=a.backdrop?"static":!1,c=a.buttons,d=f(c),g(c,function(a,e,f){if(b.isFunction(e)&&(e=c[a]={callback:e}),"object"!==b.type(e))throw new Error("button with key "+a+" must be an object");e.label||(e.label=a),e.className||(e.className=2>=d&&f===d-1?"btn-primary":"btn-default")}),a}function i(a,b){var c=a.length,d={};if(1>c||c>2)throw new Error("Invalid argument length");return 2===c||"string"==typeof a[0]?(d[b[0]]=a[0],d[b[1]]=a[1]):d=a[0],d}function j(a,c,d){return b.extend(!0,{},a,i(c,d))}function k(a,b,c,d){var e={className:"bootbox-"+a,buttons:l.apply(null,b)};return m(j(e,d,c),b)}function l(){for(var a={},b=0,c=arguments.length;c>b;b++){var e=arguments[b],f=e.toLowerCase(),g=e.toUpperCase();a[f]={label:d(g)}}return a}function m(a,b){var d={};return g(b,function(a,b){d[b]=!0}),g(a.buttons,function(a){if(d[a]===c)throw new Error("button key "+a+" is not allowed (options are "+b.join("\n")+")")}),a}var n={dialog:"<div class='bootbox modal' tabindex='-1' role='dialog'><div><div class='modal-dialog'><div class='modal-content'><div class='modal-body'><div class='bootbox-body form-group'></div></div></div></div></div></div>",header:"<div class='modal-header'><div class=\"form-group\"><h1 class=\"modal-title\"></h1></div></div>",footer:"<div class='modal-footer'></div>",closeButton:"<button type='button' class='bootbox-close-button close' data-dismiss='modal' aria-hidden='true'></button>",form:"<form class='bootbox-form'></form>",inputs:{text:"<input class='bootbox-input bootbox-input-text form-control' autocomplete=off type=text />",textarea:"<textarea class='bootbox-input bootbox-input-textarea form-control'></textarea>",email:"<input class='bootbox-input bootbox-input-email form-control' autocomplete='off' type='email' />",select:"<select class='bootbox-input bootbox-input-select form-control'></select>",checkbox:"<div class='checkbox'><label><input class='bootbox-input bootbox-input-checkbox' type='checkbox' /></label></div>",date:"<input class='bootbox-input bootbox-input-date form-control' autocomplete=off type='date' />",time:"<input class='bootbox-input bootbox-input-time form-control' autocomplete=off type='time' />",number:"<input class='bootbox-input bootbox-input-number form-control' autocomplete=off type='number' />",password:"<input class='bootbox-input bootbox-input-password form-control' autocomplete='off' type='password' />"}},o={locale:"en",backdrop:!0,animate:!0,className:null,closeButton:!0,show:!0,container:"body"},p={};p.alert=function(){var a;if(a=k("alert",["ok"],["message","callback"],arguments),a.callback&&!b.isFunction(a.callback))throw new Error("alert requires callback property to be a function when provided");return a.buttons.ok.callback=a.onEscape=function(){return b.isFunction(a.callback)?a.callback():!0},p.dialog(a)},p.confirm=function(){var a;if(a=k("confirm",["cancel","confirm"],["message","callback"],arguments),a.buttons.cancel.callback=a.onEscape=function(){return a.callback(!1)},a.buttons.confirm.callback=function(){return a.callback(!0)},!b.isFunction(a.callback))throw new Error("confirm requires a callback");return p.dialog(a)},p.prompt=function(){var a,d,e,f,h,i,k;f=b(n.form),d={className:"bootbox-prompt",buttons:l("cancel","confirm"),value:"",inputType:"text"},a=m(j(d,arguments,["title","callback"]),["cancel","confirm"]),i=a.show===c?!0:a.show;var o=["date","time","number"],q=document.createElement("input");if(q.setAttribute("type",a.inputType),o[a.inputType]&&(a.inputType=q.type),a.message=f,a.buttons.cancel.callback=a.onEscape=function(){return a.callback(null)},a.buttons.confirm.callback=function(){var c;switch(a.inputType){case"text":case"textarea":case"email":case"select":case"date":case"time":case"number":case"password":c=h.val();break;case"checkbox":var d=h.find("input:checked");c=[],g(d,function(a,d){c.push(b(d).val())})}return a.callback(c)},a.show=!1,!a.title)throw new Error("prompt requires a title");if(!b.isFunction(a.callback))throw new Error("prompt requires a callback");if(!n.inputs[a.inputType])throw new Error("invalid prompt type");switch(h=b(n.inputs[a.inputType]),a.inputType){case"text":case"textarea":case"email":case"date":case"time":case"number":case"password":h.val(a.value);break;case"select":var r={};if(k=a.inputOptions||[],!k.length)throw new Error("prompt with select requires options");g(k,function(a,d){var e=h;if(d.value===c||d.text===c)throw new Error("given options in wrong format");d.group&&(r[d.group]||(r[d.group]=b("<optgroup/>").attr("label",d.group)),e=r[d.group]),e.append("<option value='"+d.value+"'>"+d.text+"</option>")}),g(r,function(a,b){h.append(b)}),h.val(a.value);break;case"checkbox":var s=b.isArray(a.value)?a.value:[a.value];if(k=a.inputOptions||[],!k.length)throw new Error("prompt with checkbox requires options");if(!k[0].value||!k[0].text)throw new Error("given options in wrong format");h=b("<div/>"),g(k,function(c,d){var e=b(n.inputs[a.inputType]);e.find("input").attr("value",d.value),e.find("label").append(d.text),g(s,function(a,b){b===d.value&&e.find("input").prop("checked",!0)}),h.append(e)})}return a.placeholder&&h.attr("placeholder",a.placeholder),a.pattern&&h.attr("pattern",a.pattern),f.append(h),f.on("submit",function(a){a.preventDefault(),e.find(".btn-primary").click()}),e=p.dialog(a),e.off("shown.bs.modal"),e.on("shown.bs.modal",function(){h.focus()}),i===!0&&e.modal("show"),e},p.dialog=function(a){a=h(a);var c=b(n.dialog),d=c.find(".modal-body"),f=a.buttons,i="",j={onEscape:a.onEscape};if(g(f,function(a,b){i+="<button data-bb-handler='"+a+"' type='button' class='btn "+b.className+"'>"+b.label+"</button>",j[a]=b.callback}),d.find(".bootbox-body").html(a.message),a.animate===!0&&c.addClass("fade"),a.className&&c.addClass(a.className),a.title&&d.before(n.header),a.closeButton){var k=b(n.closeButton);a.title?c.find(".modal-header").prepend(k):k.css("margin-top","-10px").prependTo(d)}return a.title&&c.find(".modal-title").html(a.title),i.length&&(d.after(n.footer),c.find(".modal-footer").html(i)),c.on("hidden.bs.modal",function(a){a.target===this&&c.remove()}),c.on("shown.bs.modal",function(){c.find(".btn-primary:first").focus()}),c.on("escape.close.bb",function(a){j.onEscape&&e(a,c,j.onEscape)}),c.on("click",".modal-footer button",function(a){var d=b(this).data("bb-handler");e(a,c,j[d])}),c.on("click",".bootbox-close-button",function(a){e(a,c,j.onEscape)}),c.on("keyup",function(a){27===a.which&&c.trigger("escape.close.bb")}),b(a.container).append(c),c.modal({backdrop:a.backdrop,keyboard:!1,show:!1}),a.show&&c.modal("show"),c},p.setDefaults=function(){var a={};2===arguments.length?a[arguments[0]]=arguments[1]:a=arguments[0],b.extend(o,a)},p.hideAll=function(){b(".bootbox").modal("hide")};var q={br:{OK:"OK",CANCEL:"Cancelar",CONFIRM:"Sim"},da:{OK:"OK",CANCEL:"Annuller",CONFIRM:"Accepter"},de:{OK:"OK",CANCEL:"Abbrechen",CONFIRM:"Akzeptieren"},en:{OK:"OK",CANCEL:"Cancel",CONFIRM:"OK"},es:{OK:"OK",CANCEL:"Cancelar",CONFIRM:"Aceptar"},fi:{OK:"OK",CANCEL:"Peruuta",CONFIRM:"OK"},fr:{OK:"OK",CANCEL:"Annuler",CONFIRM:"D'accord"},he:{OK:"אישור",CANCEL:"ביטול",CONFIRM:"אישור"},it:{OK:"OK",CANCEL:"Annulla",CONFIRM:"Conferma"},lt:{OK:"Gerai",CANCEL:"Atšaukti",CONFIRM:"Patvirtinti"},lv:{OK:"Labi",CANCEL:"Atcelt",CONFIRM:"Apstiprināt"},nl:{OK:"OK",CANCEL:"Annuleren",CONFIRM:"Accepteren"},no:{OK:"OK",CANCEL:"Avbryt",CONFIRM:"OK"},pl:{OK:"OK",CANCEL:"Anuluj",CONFIRM:"Potwierdź"},ru:{OK:"OK",CANCEL:"Отмена",CONFIRM:"Применить"},sv:{OK:"OK",CANCEL:"Avbryt",CONFIRM:"OK"},tr:{OK:"Tamam",CANCEL:"İptal",CONFIRM:"Onayla"},zh_CN:{OK:"OK",CANCEL:"取消",CONFIRM:"确认"},zh_TW:{OK:"OK",CANCEL:"取消",CONFIRM:"確認"}};return p.init=function(c){return a(c||b)},p});;
/*!
 * ZeroClipboard
 * The ZeroClipboard library provides an easy way to copy text to the clipboard using an invisible Adobe Flash movie and a JavaScript interface.
 * Copyright (c) 2009-2014 Jon Rohan, James M. Greene
 * Licensed MIT
 * http://zeroclipboard.org/
 * v2.2.0
 */
!function(a,b){"use strict";var c,d,e,f=a,g=f.document,h=f.navigator,i=f.setTimeout,j=f.clearTimeout,k=f.setInterval,l=f.clearInterval,m=f.getComputedStyle,n=f.encodeURIComponent,o=f.ActiveXObject,p=f.Error,q=f.Number.parseInt||f.parseInt,r=f.Number.parseFloat||f.parseFloat,s=f.Number.isNaN||f.isNaN,t=f.Date.now,u=f.Object.keys,v=f.Object.defineProperty,w=f.Object.prototype.hasOwnProperty,x=f.Array.prototype.slice,y=function(){var a=function(a){return a};if("function"==typeof f.wrap&&"function"==typeof f.unwrap)try{var b=g.createElement("div"),c=f.unwrap(b);1===b.nodeType&&c&&1===c.nodeType&&(a=f.unwrap)}catch(d){}return a}(),z=function(a){return x.call(a,0)},A=function(){var a,c,d,e,f,g,h=z(arguments),i=h[0]||{};for(a=1,c=h.length;c>a;a++)if(null!=(d=h[a]))for(e in d)w.call(d,e)&&(f=i[e],g=d[e],i!==g&&g!==b&&(i[e]=g));return i},B=function(a){var b,c,d,e;if("object"!=typeof a||null==a||"number"==typeof a.nodeType)b=a;else if("number"==typeof a.length)for(b=[],c=0,d=a.length;d>c;c++)w.call(a,c)&&(b[c]=B(a[c]));else{b={};for(e in a)w.call(a,e)&&(b[e]=B(a[e]))}return b},C=function(a,b){for(var c={},d=0,e=b.length;e>d;d++)b[d]in a&&(c[b[d]]=a[b[d]]);return c},D=function(a,b){var c={};for(var d in a)-1===b.indexOf(d)&&(c[d]=a[d]);return c},E=function(a){if(a)for(var b in a)w.call(a,b)&&delete a[b];return a},F=function(a,b){if(a&&1===a.nodeType&&a.ownerDocument&&b&&(1===b.nodeType&&b.ownerDocument&&b.ownerDocument===a.ownerDocument||9===b.nodeType&&!b.ownerDocument&&b===a.ownerDocument))do{if(a===b)return!0;a=a.parentNode}while(a);return!1},G=function(a){var b;return"string"==typeof a&&a&&(b=a.split("#")[0].split("?")[0],b=a.slice(0,a.lastIndexOf("/")+1)),b},H=function(a){var b,c;return"string"==typeof a&&a&&(c=a.match(/^(?:|[^:@]*@|.+\)@(?=http[s]?|file)|.+?\s+(?: at |@)(?:[^:\(]+ )*[\(]?)((?:http[s]?|file):\/\/[\/]?.+?\/[^:\)]*?)(?::\d+)(?::\d+)?/),c&&c[1]?b=c[1]:(c=a.match(/\)@((?:http[s]?|file):\/\/[\/]?.+?\/[^:\)]*?)(?::\d+)(?::\d+)?/),c&&c[1]&&(b=c[1]))),b},I=function(){var a,b;try{throw new p}catch(c){b=c}return b&&(a=b.sourceURL||b.fileName||H(b.stack)),a},J=function(){var a,c,d;if(g.currentScript&&(a=g.currentScript.src))return a;if(c=g.getElementsByTagName("script"),1===c.length)return c[0].src||b;if("readyState"in c[0])for(d=c.length;d--;)if("interactive"===c[d].readyState&&(a=c[d].src))return a;return"loading"===g.readyState&&(a=c[c.length-1].src)?a:(a=I())?a:b},K=function(){var a,c,d,e=g.getElementsByTagName("script");for(a=e.length;a--;){if(!(d=e[a].src)){c=null;break}if(d=G(d),null==c)c=d;else if(c!==d){c=null;break}}return c||b},L=function(){var a=G(J())||K()||"";return a+"ZeroClipboard.swf"},M=function(){return null==a.opener&&(!!a.top&&a!=a.top||!!a.parent&&a!=a.parent)}(),N={bridge:null,version:"0.0.0",pluginType:"unknown",disabled:null,outdated:null,sandboxed:null,unavailable:null,degraded:null,deactivated:null,overdue:null,ready:null},O="11.0.0",P={},Q={},R=null,S=0,T=0,U={ready:"Flash communication is established",error:{"flash-disabled":"Flash is disabled or not installed. May also be attempting to run Flash in a sandboxed iframe, which is impossible.","flash-outdated":"Flash is too outdated to support ZeroClipboard","flash-sandboxed":"Attempting to run Flash in a sandboxed iframe, which is impossible","flash-unavailable":"Flash is unable to communicate bidirectionally with JavaScript","flash-degraded":"Flash is unable to preserve data fidelity when communicating with JavaScript","flash-deactivated":"Flash is too outdated for your browser and/or is configured as click-to-activate.\nThis may also mean that the ZeroClipboard SWF object could not be loaded, so please check your `swfPath` configuration and/or network connectivity.\nMay also be attempting to run Flash in a sandboxed iframe, which is impossible.","flash-overdue":"Flash communication was established but NOT within the acceptable time limit","version-mismatch":"ZeroClipboard JS version number does not match ZeroClipboard SWF version number","clipboard-error":"At least one error was thrown while ZeroClipboard was attempting to inject your data into the clipboard","config-mismatch":"ZeroClipboard configuration does not match Flash's reality","swf-not-found":"The ZeroClipboard SWF object could not be loaded, so please check your `swfPath` configuration and/or network connectivity"}},V=["flash-unavailable","flash-degraded","flash-overdue","version-mismatch","config-mismatch","clipboard-error"],W=["flash-disabled","flash-outdated","flash-sandboxed","flash-unavailable","flash-degraded","flash-deactivated","flash-overdue"],X=new RegExp("^flash-("+W.map(function(a){return a.replace(/^flash-/,"")}).join("|")+")$"),Y=new RegExp("^flash-("+W.slice(1).map(function(a){return a.replace(/^flash-/,"")}).join("|")+")$"),Z={swfPath:L(),trustedDomains:a.location.host?[a.location.host]:[],cacheBust:!0,forceEnhancedClipboard:!1,flashLoadTimeout:3e4,autoActivate:!0,bubbleEvents:!0,containerId:"global-zeroclipboard-html-bridge",containerClass:"global-zeroclipboard-container",swfObjectId:"global-zeroclipboard-flash-bridge",hoverClass:"zeroclipboard-is-hover",activeClass:"zeroclipboard-is-active",forceHandCursor:!1,title:null,zIndex:999999999},$=function(a){if("object"==typeof a&&null!==a)for(var b in a)if(w.call(a,b))if(/^(?:forceHandCursor|title|zIndex|bubbleEvents)$/.test(b))Z[b]=a[b];else if(null==N.bridge)if("containerId"===b||"swfObjectId"===b){if(!nb(a[b]))throw new Error("The specified `"+b+"` value is not valid as an HTML4 Element ID");Z[b]=a[b]}else Z[b]=a[b];{if("string"!=typeof a||!a)return B(Z);if(w.call(Z,a))return Z[a]}},_=function(){return Tb(),{browser:C(h,["userAgent","platform","appName"]),flash:D(N,["bridge"]),zeroclipboard:{version:Vb.version,config:Vb.config()}}},ab=function(){return!!(N.disabled||N.outdated||N.sandboxed||N.unavailable||N.degraded||N.deactivated)},bb=function(a,d){var e,f,g,h={};if("string"==typeof a&&a)g=a.toLowerCase().split(/\s+/);else if("object"==typeof a&&a&&"undefined"==typeof d)for(e in a)w.call(a,e)&&"string"==typeof e&&e&&"function"==typeof a[e]&&Vb.on(e,a[e]);if(g&&g.length){for(e=0,f=g.length;f>e;e++)a=g[e].replace(/^on/,""),h[a]=!0,P[a]||(P[a]=[]),P[a].push(d);if(h.ready&&N.ready&&Vb.emit({type:"ready"}),h.error){for(e=0,f=W.length;f>e;e++)if(N[W[e].replace(/^flash-/,"")]===!0){Vb.emit({type:"error",name:W[e]});break}c!==b&&Vb.version!==c&&Vb.emit({type:"error",name:"version-mismatch",jsVersion:Vb.version,swfVersion:c})}}return Vb},cb=function(a,b){var c,d,e,f,g;if(0===arguments.length)f=u(P);else if("string"==typeof a&&a)f=a.split(/\s+/);else if("object"==typeof a&&a&&"undefined"==typeof b)for(c in a)w.call(a,c)&&"string"==typeof c&&c&&"function"==typeof a[c]&&Vb.off(c,a[c]);if(f&&f.length)for(c=0,d=f.length;d>c;c++)if(a=f[c].toLowerCase().replace(/^on/,""),g=P[a],g&&g.length)if(b)for(e=g.indexOf(b);-1!==e;)g.splice(e,1),e=g.indexOf(b,e);else g.length=0;return Vb},db=function(a){var b;return b="string"==typeof a&&a?B(P[a])||null:B(P)},eb=function(a){var b,c,d;return a=ob(a),a&&!vb(a)?"ready"===a.type&&N.overdue===!0?Vb.emit({type:"error",name:"flash-overdue"}):(b=A({},a),tb.call(this,b),"copy"===a.type&&(d=Db(Q),c=d.data,R=d.formatMap),c):void 0},fb=function(){var a=N.sandboxed;if(Tb(),"boolean"!=typeof N.ready&&(N.ready=!1),N.sandboxed!==a&&N.sandboxed===!0)N.ready=!1,Vb.emit({type:"error",name:"flash-sandboxed"});else if(!Vb.isFlashUnusable()&&null===N.bridge){var b=Z.flashLoadTimeout;"number"==typeof b&&b>=0&&(S=i(function(){"boolean"!=typeof N.deactivated&&(N.deactivated=!0),N.deactivated===!0&&Vb.emit({type:"error",name:"flash-deactivated"})},b)),N.overdue=!1,Bb()}},gb=function(){Vb.clearData(),Vb.blur(),Vb.emit("destroy"),Cb(),Vb.off()},hb=function(a,b){var c;if("object"==typeof a&&a&&"undefined"==typeof b)c=a,Vb.clearData();else{if("string"!=typeof a||!a)return;c={},c[a]=b}for(var d in c)"string"==typeof d&&d&&w.call(c,d)&&"string"==typeof c[d]&&c[d]&&(Q[d]=c[d])},ib=function(a){"undefined"==typeof a?(E(Q),R=null):"string"==typeof a&&w.call(Q,a)&&delete Q[a]},jb=function(a){return"undefined"==typeof a?B(Q):"string"==typeof a&&w.call(Q,a)?Q[a]:void 0},kb=function(a){if(a&&1===a.nodeType){d&&(Lb(d,Z.activeClass),d!==a&&Lb(d,Z.hoverClass)),d=a,Kb(a,Z.hoverClass);var b=a.getAttribute("title")||Z.title;if("string"==typeof b&&b){var c=Ab(N.bridge);c&&c.setAttribute("title",b)}var e=Z.forceHandCursor===!0||"pointer"===Mb(a,"cursor");Rb(e),Qb()}},lb=function(){var a=Ab(N.bridge);a&&(a.removeAttribute("title"),a.style.left="0px",a.style.top="-9999px",a.style.width="1px",a.style.height="1px"),d&&(Lb(d,Z.hoverClass),Lb(d,Z.activeClass),d=null)},mb=function(){return d||null},nb=function(a){return"string"==typeof a&&a&&/^[A-Za-z][A-Za-z0-9_:\-\.]*$/.test(a)},ob=function(a){var b;if("string"==typeof a&&a?(b=a,a={}):"object"==typeof a&&a&&"string"==typeof a.type&&a.type&&(b=a.type),b){b=b.toLowerCase(),!a.target&&(/^(copy|aftercopy|_click)$/.test(b)||"error"===b&&"clipboard-error"===a.name)&&(a.target=e),A(a,{type:b,target:a.target||d||null,relatedTarget:a.relatedTarget||null,currentTarget:N&&N.bridge||null,timeStamp:a.timeStamp||t()||null});var c=U[a.type];return"error"===a.type&&a.name&&c&&(c=c[a.name]),c&&(a.message=c),"ready"===a.type&&A(a,{target:null,version:N.version}),"error"===a.type&&(X.test(a.name)&&A(a,{target:null,minimumVersion:O}),Y.test(a.name)&&A(a,{version:N.version})),"copy"===a.type&&(a.clipboardData={setData:Vb.setData,clearData:Vb.clearData}),"aftercopy"===a.type&&(a=Eb(a,R)),a.target&&!a.relatedTarget&&(a.relatedTarget=pb(a.target)),qb(a)}},pb=function(a){var b=a&&a.getAttribute&&a.getAttribute("data-clipboard-target");return b?g.getElementById(b):null},qb=function(a){if(a&&/^_(?:click|mouse(?:over|out|down|up|move))$/.test(a.type)){var c=a.target,d="_mouseover"===a.type&&a.relatedTarget?a.relatedTarget:b,e="_mouseout"===a.type&&a.relatedTarget?a.relatedTarget:b,h=Nb(c),i=f.screenLeft||f.screenX||0,j=f.screenTop||f.screenY||0,k=g.body.scrollLeft+g.documentElement.scrollLeft,l=g.body.scrollTop+g.documentElement.scrollTop,m=h.left+("number"==typeof a._stageX?a._stageX:0),n=h.top+("number"==typeof a._stageY?a._stageY:0),o=m-k,p=n-l,q=i+o,r=j+p,s="number"==typeof a.movementX?a.movementX:0,t="number"==typeof a.movementY?a.movementY:0;delete a._stageX,delete a._stageY,A(a,{srcElement:c,fromElement:d,toElement:e,screenX:q,screenY:r,pageX:m,pageY:n,clientX:o,clientY:p,x:o,y:p,movementX:s,movementY:t,offsetX:0,offsetY:0,layerX:0,layerY:0})}return a},rb=function(a){var b=a&&"string"==typeof a.type&&a.type||"";return!/^(?:(?:before)?copy|destroy)$/.test(b)},sb=function(a,b,c,d){d?i(function(){a.apply(b,c)},0):a.apply(b,c)},tb=function(a){if("object"==typeof a&&a&&a.type){var b=rb(a),c=P["*"]||[],d=P[a.type]||[],e=c.concat(d);if(e&&e.length){var g,h,i,j,k,l=this;for(g=0,h=e.length;h>g;g++)i=e[g],j=l,"string"==typeof i&&"function"==typeof f[i]&&(i=f[i]),"object"==typeof i&&i&&"function"==typeof i.handleEvent&&(j=i,i=i.handleEvent),"function"==typeof i&&(k=A({},a),sb(i,j,[k],b))}return this}},ub=function(a){var b=null;return(M===!1||a&&"error"===a.type&&a.name&&-1!==V.indexOf(a.name))&&(b=!1),b},vb=function(a){var b=a.target||d||null,f="swf"===a._source;switch(delete a._source,a.type){case"error":var g="flash-sandboxed"===a.name||ub(a);"boolean"==typeof g&&(N.sandboxed=g),-1!==W.indexOf(a.name)?A(N,{disabled:"flash-disabled"===a.name,outdated:"flash-outdated"===a.name,unavailable:"flash-unavailable"===a.name,degraded:"flash-degraded"===a.name,deactivated:"flash-deactivated"===a.name,overdue:"flash-overdue"===a.name,ready:!1}):"version-mismatch"===a.name&&(c=a.swfVersion,A(N,{disabled:!1,outdated:!1,unavailable:!1,degraded:!1,deactivated:!1,overdue:!1,ready:!1})),Pb();break;case"ready":c=a.swfVersion;var h=N.deactivated===!0;A(N,{disabled:!1,outdated:!1,sandboxed:!1,unavailable:!1,degraded:!1,deactivated:!1,overdue:h,ready:!h}),Pb();break;case"beforecopy":e=b;break;case"copy":var i,j,k=a.relatedTarget;!Q["text/html"]&&!Q["text/plain"]&&k&&(j=k.value||k.outerHTML||k.innerHTML)&&(i=k.value||k.textContent||k.innerText)?(a.clipboardData.clearData(),a.clipboardData.setData("text/plain",i),j!==i&&a.clipboardData.setData("text/html",j)):!Q["text/plain"]&&a.target&&(i=a.target.getAttribute("data-clipboard-text"))&&(a.clipboardData.clearData(),a.clipboardData.setData("text/plain",i));break;case"aftercopy":wb(a),Vb.clearData(),b&&b!==Jb()&&b.focus&&b.focus();break;case"_mouseover":Vb.focus(b),Z.bubbleEvents===!0&&f&&(b&&b!==a.relatedTarget&&!F(a.relatedTarget,b)&&xb(A({},a,{type:"mouseenter",bubbles:!1,cancelable:!1})),xb(A({},a,{type:"mouseover"})));break;case"_mouseout":Vb.blur(),Z.bubbleEvents===!0&&f&&(b&&b!==a.relatedTarget&&!F(a.relatedTarget,b)&&xb(A({},a,{type:"mouseleave",bubbles:!1,cancelable:!1})),xb(A({},a,{type:"mouseout"})));break;case"_mousedown":Kb(b,Z.activeClass),Z.bubbleEvents===!0&&f&&xb(A({},a,{type:a.type.slice(1)}));break;case"_mouseup":Lb(b,Z.activeClass),Z.bubbleEvents===!0&&f&&xb(A({},a,{type:a.type.slice(1)}));break;case"_click":e=null,Z.bubbleEvents===!0&&f&&xb(A({},a,{type:a.type.slice(1)}));break;case"_mousemove":Z.bubbleEvents===!0&&f&&xb(A({},a,{type:a.type.slice(1)}))}return/^_(?:click|mouse(?:over|out|down|up|move))$/.test(a.type)?!0:void 0},wb=function(a){if(a.errors&&a.errors.length>0){var b=B(a);A(b,{type:"error",name:"clipboard-error"}),delete b.success,i(function(){Vb.emit(b)},0)}},xb=function(a){if(a&&"string"==typeof a.type&&a){var b,c=a.target||null,d=c&&c.ownerDocument||g,e={view:d.defaultView||f,canBubble:!0,cancelable:!0,detail:"click"===a.type?1:0,button:"number"==typeof a.which?a.which-1:"number"==typeof a.button?a.button:d.createEvent?0:1},h=A(e,a);c&&d.createEvent&&c.dispatchEvent&&(h=[h.type,h.canBubble,h.cancelable,h.view,h.detail,h.screenX,h.screenY,h.clientX,h.clientY,h.ctrlKey,h.altKey,h.shiftKey,h.metaKey,h.button,h.relatedTarget],b=d.createEvent("MouseEvents"),b.initMouseEvent&&(b.initMouseEvent.apply(b,h),b._source="js",c.dispatchEvent(b)))}},yb=function(){var a=Z.flashLoadTimeout;if("number"==typeof a&&a>=0){var b=Math.min(1e3,a/10),c=Z.swfObjectId+"_fallbackContent";T=k(function(){var a=g.getElementById(c);Ob(a)&&(Pb(),N.deactivated=null,Vb.emit({type:"error",name:"swf-not-found"}))},b)}},zb=function(){var a=g.createElement("div");return a.id=Z.containerId,a.className=Z.containerClass,a.style.position="absolute",a.style.left="0px",a.style.top="-9999px",a.style.width="1px",a.style.height="1px",a.style.zIndex=""+Sb(Z.zIndex),a},Ab=function(a){for(var b=a&&a.parentNode;b&&"OBJECT"===b.nodeName&&b.parentNode;)b=b.parentNode;return b||null},Bb=function(){var a,b=N.bridge,c=Ab(b);if(!b){var d=Ib(f.location.host,Z),e="never"===d?"none":"all",h=Gb(A({jsVersion:Vb.version},Z)),i=Z.swfPath+Fb(Z.swfPath,Z);c=zb();var j=g.createElement("div");c.appendChild(j),g.body.appendChild(c);var k=g.createElement("div"),l="activex"===N.pluginType;k.innerHTML='<object id="'+Z.swfObjectId+'" name="'+Z.swfObjectId+'" width="100%" height="100%" '+(l?'classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000"':'type="application/x-shockwave-flash" data="'+i+'"')+">"+(l?'<param name="movie" value="'+i+'"/>':"")+'<param name="allowScriptAccess" value="'+d+'"/><param name="allowNetworking" value="'+e+'"/><param name="menu" value="false"/><param name="wmode" value="transparent"/><param name="flashvars" value="'+h+'"/><div id="'+Z.swfObjectId+'_fallbackContent">&nbsp;</div></object>',b=k.firstChild,k=null,y(b).ZeroClipboard=Vb,c.replaceChild(b,j),yb()}return b||(b=g[Z.swfObjectId],b&&(a=b.length)&&(b=b[a-1]),!b&&c&&(b=c.firstChild)),N.bridge=b||null,b},Cb=function(){var a=N.bridge;if(a){var d=Ab(a);d&&("activex"===N.pluginType&&"readyState"in a?(a.style.display="none",function e(){if(4===a.readyState){for(var b in a)"function"==typeof a[b]&&(a[b]=null);a.parentNode&&a.parentNode.removeChild(a),d.parentNode&&d.parentNode.removeChild(d)}else i(e,10)}()):(a.parentNode&&a.parentNode.removeChild(a),d.parentNode&&d.parentNode.removeChild(d))),Pb(),N.ready=null,N.bridge=null,N.deactivated=null,c=b}},Db=function(a){var b={},c={};if("object"==typeof a&&a){for(var d in a)if(d&&w.call(a,d)&&"string"==typeof a[d]&&a[d])switch(d.toLowerCase()){case"text/plain":case"text":case"air:text":case"flash:text":b.text=a[d],c.text=d;break;case"text/html":case"html":case"air:html":case"flash:html":b.html=a[d],c.html=d;break;case"application/rtf":case"text/rtf":case"rtf":case"richtext":case"air:rtf":case"flash:rtf":b.rtf=a[d],c.rtf=d}return{data:b,formatMap:c}}},Eb=function(a,b){if("object"!=typeof a||!a||"object"!=typeof b||!b)return a;var c={};for(var d in a)if(w.call(a,d))if("errors"===d){c[d]=a[d]?a[d].slice():[];for(var e=0,f=c[d].length;f>e;e++)c[d][e].format=b[c[d][e].format]}else if("success"!==d&&"data"!==d)c[d]=a[d];else{c[d]={};var g=a[d];for(var h in g)h&&w.call(g,h)&&w.call(b,h)&&(c[d][b[h]]=g[h])}return c},Fb=function(a,b){var c=null==b||b&&b.cacheBust===!0;return c?(-1===a.indexOf("?")?"?":"&")+"noCache="+t():""},Gb=function(a){var b,c,d,e,g="",h=[];if(a.trustedDomains&&("string"==typeof a.trustedDomains?e=[a.trustedDomains]:"object"==typeof a.trustedDomains&&"length"in a.trustedDomains&&(e=a.trustedDomains)),e&&e.length)for(b=0,c=e.length;c>b;b++)if(w.call(e,b)&&e[b]&&"string"==typeof e[b]){if(d=Hb(e[b]),!d)continue;if("*"===d){h.length=0,h.push(d);break}h.push.apply(h,[d,"//"+d,f.location.protocol+"//"+d])}return h.length&&(g+="trustedOrigins="+n(h.join(","))),a.forceEnhancedClipboard===!0&&(g+=(g?"&":"")+"forceEnhancedClipboard=true"),"string"==typeof a.swfObjectId&&a.swfObjectId&&(g+=(g?"&":"")+"swfObjectId="+n(a.swfObjectId)),"string"==typeof a.jsVersion&&a.jsVersion&&(g+=(g?"&":"")+"jsVersion="+n(a.jsVersion)),g},Hb=function(a){if(null==a||""===a)return null;if(a=a.replace(/^\s+|\s+$/g,""),""===a)return null;var b=a.indexOf("//");a=-1===b?a:a.slice(b+2);var c=a.indexOf("/");return a=-1===c?a:-1===b||0===c?null:a.slice(0,c),a&&".swf"===a.slice(-4).toLowerCase()?null:a||null},Ib=function(){var a=function(a){var b,c,d,e=[];if("string"==typeof a&&(a=[a]),"object"!=typeof a||!a||"number"!=typeof a.length)return e;for(b=0,c=a.length;c>b;b++)if(w.call(a,b)&&(d=Hb(a[b]))){if("*"===d){e.length=0,e.push("*");break}-1===e.indexOf(d)&&e.push(d)}return e};return function(b,c){var d=Hb(c.swfPath);null===d&&(d=b);var e=a(c.trustedDomains),f=e.length;if(f>0){if(1===f&&"*"===e[0])return"always";if(-1!==e.indexOf(b))return 1===f&&b===d?"sameDomain":"always"}return"never"}}(),Jb=function(){try{return g.activeElement}catch(a){return null}},Kb=function(a,b){var c,d,e,f=[];if("string"==typeof b&&b&&(f=b.split(/\s+/)),a&&1===a.nodeType&&f.length>0)if(a.classList)for(c=0,d=f.length;d>c;c++)a.classList.add(f[c]);else if(a.hasOwnProperty("className")){for(e=" "+a.className+" ",c=0,d=f.length;d>c;c++)-1===e.indexOf(" "+f[c]+" ")&&(e+=f[c]+" ");a.className=e.replace(/^\s+|\s+$/g,"")}return a},Lb=function(a,b){var c,d,e,f=[];if("string"==typeof b&&b&&(f=b.split(/\s+/)),a&&1===a.nodeType&&f.length>0)if(a.classList&&a.classList.length>0)for(c=0,d=f.length;d>c;c++)a.classList.remove(f[c]);else if(a.className){for(e=(" "+a.className+" ").replace(/[\r\n\t]/g," "),c=0,d=f.length;d>c;c++)e=e.replace(" "+f[c]+" "," ");a.className=e.replace(/^\s+|\s+$/g,"")}return a},Mb=function(a,b){var c=m(a,null).getPropertyValue(b);return"cursor"!==b||c&&"auto"!==c||"A"!==a.nodeName?c:"pointer"},Nb=function(a){var b={left:0,top:0,width:0,height:0};if(a.getBoundingClientRect){var c=a.getBoundingClientRect(),d=f.pageXOffset,e=f.pageYOffset,h=g.documentElement.clientLeft||0,i=g.documentElement.clientTop||0,j=0,k=0;if("relative"===Mb(g.body,"position")){var l=g.body.getBoundingClientRect(),m=g.documentElement.getBoundingClientRect();j=l.left-m.left||0,k=l.top-m.top||0}b.left=c.left+d-h-j,b.top=c.top+e-i-k,b.width="width"in c?c.width:c.right-c.left,b.height="height"in c?c.height:c.bottom-c.top}return b},Ob=function(a){if(!a)return!1;var b=m(a,null),c=r(b.height)>0,d=r(b.width)>0,e=r(b.top)>=0,f=r(b.left)>=0,g=c&&d&&e&&f,h=g?null:Nb(a),i="none"!==b.display&&"collapse"!==b.visibility&&(g||!!h&&(c||h.height>0)&&(d||h.width>0)&&(e||h.top>=0)&&(f||h.left>=0));return i},Pb=function(){j(S),S=0,l(T),T=0},Qb=function(){var a;if(d&&(a=Ab(N.bridge))){var b=Nb(d);A(a.style,{width:b.width+"px",height:b.height+"px",top:b.top+"px",left:b.left+"px",zIndex:""+Sb(Z.zIndex)})}},Rb=function(a){N.ready===!0&&(N.bridge&&"function"==typeof N.bridge.setHandCursor?N.bridge.setHandCursor(a):N.ready=!1)},Sb=function(a){if(/^(?:auto|inherit)$/.test(a))return a;var b;return"number"!=typeof a||s(a)?"string"==typeof a&&(b=Sb(q(a,10))):b=a,"number"==typeof b?b:"auto"},Tb=function(b){var c,d,e,f=N.sandboxed,g=null;if(b=b===!0,M===!1)g=!1;else{try{d=a.frameElement||null}catch(h){e={name:h.name,message:h.message}}if(d&&1===d.nodeType&&"IFRAME"===d.nodeName)try{g=d.hasAttribute("sandbox")}catch(h){g=null}else{try{c=document.domain||null}catch(h){c=null}(null===c||e&&"SecurityError"===e.name&&/(^|[\s\(\[@])sandbox(es|ed|ing|[\s\.,!\)\]@]|$)/.test(e.message.toLowerCase()))&&(g=!0)}}return N.sandboxed=g,f===g||b||Ub(o),g},Ub=function(a){function b(a){var b=a.match(/[\d]+/g);return b.length=3,b.join(".")}function c(a){return!!a&&(a=a.toLowerCase())&&(/^(pepflashplayer\.dll|libpepflashplayer\.so|pepperflashplayer\.plugin)$/.test(a)||"chrome.plugin"===a.slice(-13))}function d(a){a&&(i=!0,a.version&&(l=b(a.version)),!l&&a.description&&(l=b(a.description)),a.filename&&(k=c(a.filename)))}var e,f,g,i=!1,j=!1,k=!1,l="";if(h.plugins&&h.plugins.length)e=h.plugins["Shockwave Flash"],d(e),h.plugins["Shockwave Flash 2.0"]&&(i=!0,l="2.0.0.11");else if(h.mimeTypes&&h.mimeTypes.length)g=h.mimeTypes["application/x-shockwave-flash"],e=g&&g.enabledPlugin,d(e);else if("undefined"!=typeof a){j=!0;try{f=new a("ShockwaveFlash.ShockwaveFlash.7"),i=!0,l=b(f.GetVariable("$version"))}catch(m){try{f=new a("ShockwaveFlash.ShockwaveFlash.6"),i=!0,l="6.0.21"}catch(n){try{f=new a("ShockwaveFlash.ShockwaveFlash"),i=!0,l=b(f.GetVariable("$version"))}catch(o){j=!1}}}}N.disabled=i!==!0,N.outdated=l&&r(l)<r(O),N.version=l||"0.0.0",N.pluginType=k?"pepper":j?"activex":i?"netscape":"unknown"};Ub(o),Tb(!0);var Vb=function(){return this instanceof Vb?void("function"==typeof Vb._createClient&&Vb._createClient.apply(this,z(arguments))):new Vb};v(Vb,"version",{value:"2.2.0",writable:!1,configurable:!0,enumerable:!0}),Vb.config=function(){return $.apply(this,z(arguments))},Vb.state=function(){return _.apply(this,z(arguments))},Vb.isFlashUnusable=function(){return ab.apply(this,z(arguments))},Vb.on=function(){return bb.apply(this,z(arguments))},Vb.off=function(){return cb.apply(this,z(arguments))},Vb.handlers=function(){return db.apply(this,z(arguments))},Vb.emit=function(){return eb.apply(this,z(arguments))},Vb.create=function(){return fb.apply(this,z(arguments))},Vb.destroy=function(){return gb.apply(this,z(arguments))},Vb.setData=function(){return hb.apply(this,z(arguments))},Vb.clearData=function(){return ib.apply(this,z(arguments))},Vb.getData=function(){return jb.apply(this,z(arguments))},Vb.focus=Vb.activate=function(){return kb.apply(this,z(arguments))},Vb.blur=Vb.deactivate=function(){return lb.apply(this,z(arguments))},Vb.activeElement=function(){return mb.apply(this,z(arguments))};var Wb=0,Xb={},Yb=0,Zb={},$b={};A(Z,{autoActivate:!0});var _b=function(a){var b=this;b.id=""+Wb++,Xb[b.id]={instance:b,elements:[],handlers:{}},a&&b.clip(a),Vb.on("*",function(a){return b.emit(a)}),Vb.on("destroy",function(){b.destroy()}),Vb.create()},ac=function(a,d){var e,f,g,h={},i=Xb[this.id],j=i&&i.handlers;if(!i)throw new Error("Attempted to add new listener(s) to a destroyed ZeroClipboard client instance");if("string"==typeof a&&a)g=a.toLowerCase().split(/\s+/);else if("object"==typeof a&&a&&"undefined"==typeof d)for(e in a)w.call(a,e)&&"string"==typeof e&&e&&"function"==typeof a[e]&&this.on(e,a[e]);if(g&&g.length){for(e=0,f=g.length;f>e;e++)a=g[e].replace(/^on/,""),h[a]=!0,j[a]||(j[a]=[]),j[a].push(d);if(h.ready&&N.ready&&this.emit({type:"ready",client:this}),h.error){for(e=0,f=W.length;f>e;e++)if(N[W[e].replace(/^flash-/,"")]){this.emit({type:"error",name:W[e],client:this});break}c!==b&&Vb.version!==c&&this.emit({type:"error",name:"version-mismatch",jsVersion:Vb.version,swfVersion:c})}}return this},bc=function(a,b){var c,d,e,f,g,h=Xb[this.id],i=h&&h.handlers;if(!i)return this;if(0===arguments.length)f=u(i);else if("string"==typeof a&&a)f=a.split(/\s+/);else if("object"==typeof a&&a&&"undefined"==typeof b)for(c in a)w.call(a,c)&&"string"==typeof c&&c&&"function"==typeof a[c]&&this.off(c,a[c]);if(f&&f.length)for(c=0,d=f.length;d>c;c++)if(a=f[c].toLowerCase().replace(/^on/,""),g=i[a],g&&g.length)if(b)for(e=g.indexOf(b);-1!==e;)g.splice(e,1),e=g.indexOf(b,e);else g.length=0;return this},cc=function(a){var b=null,c=Xb[this.id]&&Xb[this.id].handlers;return c&&(b="string"==typeof a&&a?c[a]?c[a].slice(0):[]:B(c)),b},dc=function(a){if(ic.call(this,a)){"object"==typeof a&&a&&"string"==typeof a.type&&a.type&&(a=A({},a));var b=A({},ob(a),{client:this});jc.call(this,b)}return this},ec=function(a){if(!Xb[this.id])throw new Error("Attempted to clip element(s) to a destroyed ZeroClipboard client instance");a=kc(a);for(var b=0;b<a.length;b++)if(w.call(a,b)&&a[b]&&1===a[b].nodeType){a[b].zcClippingId?-1===Zb[a[b].zcClippingId].indexOf(this.id)&&Zb[a[b].zcClippingId].push(this.id):(a[b].zcClippingId="zcClippingId_"+Yb++,Zb[a[b].zcClippingId]=[this.id],Z.autoActivate===!0&&lc(a[b]));var c=Xb[this.id]&&Xb[this.id].elements;-1===c.indexOf(a[b])&&c.push(a[b])}return this},fc=function(a){var b=Xb[this.id];if(!b)return this;var c,d=b.elements;a="undefined"==typeof a?d.slice(0):kc(a);for(var e=a.length;e--;)if(w.call(a,e)&&a[e]&&1===a[e].nodeType){for(c=0;-1!==(c=d.indexOf(a[e],c));)d.splice(c,1);var f=Zb[a[e].zcClippingId];if(f){for(c=0;-1!==(c=f.indexOf(this.id,c));)f.splice(c,1);0===f.length&&(Z.autoActivate===!0&&mc(a[e]),delete a[e].zcClippingId)}}return this},gc=function(){var a=Xb[this.id];return a&&a.elements?a.elements.slice(0):[]},hc=function(){Xb[this.id]&&(this.unclip(),this.off(),delete Xb[this.id])},ic=function(a){if(!a||!a.type)return!1;if(a.client&&a.client!==this)return!1;var b=Xb[this.id],c=b&&b.elements,d=!!c&&c.length>0,e=!a.target||d&&-1!==c.indexOf(a.target),f=a.relatedTarget&&d&&-1!==c.indexOf(a.relatedTarget),g=a.client&&a.client===this;return b&&(e||f||g)?!0:!1},jc=function(a){var b=Xb[this.id];if("object"==typeof a&&a&&a.type&&b){var c=rb(a),d=b&&b.handlers["*"]||[],e=b&&b.handlers[a.type]||[],g=d.concat(e);if(g&&g.length){var h,i,j,k,l,m=this;for(h=0,i=g.length;i>h;h++)j=g[h],k=m,"string"==typeof j&&"function"==typeof f[j]&&(j=f[j]),"object"==typeof j&&j&&"function"==typeof j.handleEvent&&(k=j,j=j.handleEvent),"function"==typeof j&&(l=A({},a),sb(j,k,[l],c))}}},kc=function(a){return"string"==typeof a&&(a=[]),"number"!=typeof a.length?[a]:a},lc=function(a){if(a&&1===a.nodeType){var b=function(a){(a||(a=f.event))&&("js"!==a._source&&(a.stopImmediatePropagation(),a.preventDefault()),delete a._source)},c=function(c){(c||(c=f.event))&&(b(c),Vb.focus(a))};a.addEventListener("mouseover",c,!1),a.addEventListener("mouseout",b,!1),a.addEventListener("mouseenter",b,!1),a.addEventListener("mouseleave",b,!1),a.addEventListener("mousemove",b,!1),$b[a.zcClippingId]={mouseover:c,mouseout:b,mouseenter:b,mouseleave:b,mousemove:b}}},mc=function(a){if(a&&1===a.nodeType){var b=$b[a.zcClippingId];if("object"==typeof b&&b){for(var c,d,e=["move","leave","enter","out","over"],f=0,g=e.length;g>f;f++)c="mouse"+e[f],d=b[c],"function"==typeof d&&a.removeEventListener(c,d,!1);delete $b[a.zcClippingId]}}};Vb._createClient=function(){_b.apply(this,z(arguments))},Vb.prototype.on=function(){return ac.apply(this,z(arguments))},Vb.prototype.off=function(){return bc.apply(this,z(arguments))},Vb.prototype.handlers=function(){return cc.apply(this,z(arguments))},Vb.prototype.emit=function(){return dc.apply(this,z(arguments))},Vb.prototype.clip=function(){return ec.apply(this,z(arguments))},Vb.prototype.unclip=function(){return fc.apply(this,z(arguments))},Vb.prototype.elements=function(){return gc.apply(this,z(arguments))},Vb.prototype.destroy=function(){return hc.apply(this,z(arguments))},Vb.prototype.setText=function(a){if(!Xb[this.id])throw new Error("Attempted to set pending clipboard data from a destroyed ZeroClipboard client instance");return Vb.setData("text/plain",a),this},Vb.prototype.setHtml=function(a){if(!Xb[this.id])throw new Error("Attempted to set pending clipboard data from a destroyed ZeroClipboard client instance");return Vb.setData("text/html",a),this},Vb.prototype.setRichText=function(a){if(!Xb[this.id])throw new Error("Attempted to set pending clipboard data from a destroyed ZeroClipboard client instance");return Vb.setData("application/rtf",a),this},Vb.prototype.setData=function(){if(!Xb[this.id])throw new Error("Attempted to set pending clipboard data from a destroyed ZeroClipboard client instance");return Vb.setData.apply(this,z(arguments)),this},Vb.prototype.clearData=function(){if(!Xb[this.id])throw new Error("Attempted to clear pending clipboard data from a destroyed ZeroClipboard client instance");return Vb.clearData.apply(this,z(arguments)),this},Vb.prototype.getData=function(){if(!Xb[this.id])throw new Error("Attempted to get pending clipboard data from a destroyed ZeroClipboard client instance");return Vb.getData.apply(this,z(arguments))},"function"==typeof define&&define.amd?define(function(){return Vb}):"object"==typeof module&&module&&"object"==typeof module.exports&&module.exports?module.exports=Vb:a.ZeroClipboard=Vb}(function(){return this||window}());
//# sourceMappingURL=ZeroClipboard.min.map;
/*
* jQuery easyShare plugin
* Update on 28 december 2011
* Version 1.0
*
* Licensed under GPL <http://en.wikipedia.org/wiki/GNU_General_Public_License>
* Copyright (c) 2008, St�phane Litou <contact@mushtitude.com>
* All rights reserved.
*
    This program is free software: you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by
    the Free Software Foundation, either version 3 of the License, or
    (at your option) any later version.
    This program is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    GNU General Public License for more details.
    You should have received a copy of the GNU General Public License
    along with this program.  If not, see <http://www.gnu.org/licenses/>.
*/

(function ($) {
    $.fn.easyPaginate = function (options) {
        var defaults = {
            paginateElement: 'li',
            hashPage: 'page',
            elementsPerPage: 10,
            effect: 'default',
            slideOffset: 200,
            firstButton: true,
            firstButtonText: '<<',
            lastButton: true,
            lastButtonText: '>>',
            prevButton: true,
            prevButtonText: '<',
            nextButton: true,
            nextButtonText: '>'
        }

        return this.each(function (instance) {

            var plugin = Object;
            plugin.el = $(this);
            plugin.el.addClass('easyPaginateList');

            plugin.settings = {
                pages: 0,
                objElements: Object,
                currentPage: 1
            }

            var getNbOfPages = function () {
                return Math.ceil(plugin.settings.objElements.length / plugin.settings.elementsPerPage);
            };

            var displayNav = function () {
                htmlNav = '<div class="easyPaginateNav">';

                if (plugin.settings.firstButton) {
                    htmlNav += '<a href="#' + plugin.settings.hashPage + ':1" title="First page" rel="1" class="first">' + plugin.settings.firstButtonText + '</a>';
                }

                if (plugin.settings.prevButton) {
                    htmlNav += '<a href="" title="Previous" rel="" class="prev">' + plugin.settings.prevButtonText + '</a>';
                }

                for (i = 1; i <= plugin.settings.pages; i++) {
                    htmlNav += '<a href="#' + plugin.settings.hashPage + ':' + i + '" title="Page ' + i + '" rel="' + i + '" class="page">' + i + '</a>';
                };

                if (plugin.settings.nextButton) {
                    htmlNav += '<a href="" title="Next" rel="" class="next">' + plugin.settings.nextButtonText + '</a>';
                }

                if (plugin.settings.lastButton) {
                    htmlNav += '<a href="#' + plugin.settings.hashPage + ':' + plugin.settings.pages + '" title="Last page" rel="' + plugin.settings.pages + '" class="last">' + plugin.settings.lastButtonText + '</a>';
                }

                htmlNav += '</div>';
                plugin.nav = $(htmlNav);
                plugin.nav.css({
                    'width': plugin.el.width()
                });
                plugin.el.after(plugin.nav);

                $('.easyPaginateNav a.page, .easyPaginateNav a.first, .easyPaginateNav a.last', plugin).on('click', function (e) {
                    e.preventDefault();
                    displayPage($(this).attr('rel'));
                });

                $('.easyPaginateNav a.prev', plugin).on('click', function (e) {
                    e.preventDefault();
                    page = plugin.settings.currentPage > 1 ? parseInt(plugin.settings.currentPage) - 1 : 1;
                    displayPage(page);
                });

                $('.easyPaginateNav a.next', plugin).on('click', function (e) {
                    e.preventDefault();
                    page = plugin.settings.currentPage < plugin.settings.pages ? parseInt(plugin.settings.currentPage) + 1 : plugin.settings.pages;
                    displayPage(page);
                });
            };

            var that = this;

            var displayPage = function (page, forceEffect) {
                if (plugin.settings.currentPage != page) {
                    plugin.settings.currentPage = parseInt(page);
                    offsetStart = (page - 1) * plugin.settings.elementsPerPage;
                    offsetEnd = page * plugin.settings.elementsPerPage;


                    var effectFunctionRef = {
                        "slide": transition_slide,
                        "default": transition_default,
                        "fade": transition_fade,
                        "climb": transition_climb
                    }

                    if (typeof (forceEffect) != 'undefined') {
                        effectFunctionRef[forceEffect](offsetStart, offsetEnd);
                    } else {
                        effectFunctionRef[plugin.settings.effect](offsetStart, offsetEnd);
                    }

                    plugin.nav.find('.current').removeClass('current');
                    plugin.nav.find('a.page:eq(' + (page - 1) + ')').addClass('current');

                    switch (plugin.settings.currentPage) {
                        case 1:
                            $('.easyPaginateNav a', plugin).removeClass('disabled');
                            $('.easyPaginateNav a.first, .easyPaginateNav a.prev', plugin).addClass('disabled');
                            break;
                        case plugin.settings.pages:
                            $('.easyPaginateNav a', plugin).removeClass('disabled');
                            $('.easyPaginateNav a.last, .easyPaginateNav a.next', plugin).addClass('disabled');
                            break;
                        default:
                            $('.easyPaginateNav a', plugin).removeClass('disabled');
                            break;
                    }
                }
            };

            var transition_default = function (offsetStart, offsetEnd) {
                plugin.currentElements.hide();
                plugin.currentElements = plugin.settings.objElements.slice(offsetStart, offsetEnd).clone();
                plugin.el.html(plugin.currentElements);
                plugin.currentElements.show();
            };

            var transition_fade = function (offsetStart, offsetEnd) {
                plugin.currentElements.fadeOut();
                plugin.currentElements = plugin.settings.objElements.slice(offsetStart, offsetEnd).clone();
                plugin.el.html(plugin.currentElements);
                plugin.currentElements.fadeIn();
            };

            var transition_slide = function (offsetStart, offsetEnd) {
                plugin.currentElements.animate({
                    'margin-left': plugin.settings.slideOffset * -1,
                    'opacity': 0
                }, function () {
                    $(this).remove();
                });

                plugin.currentElements = plugin.settings.objElements.slice(offsetStart, offsetEnd).clone();
                plugin.currentElements.css({
                    'margin-left': plugin.settings.slideOffset,
                    'display': 'block',
                    'opacity': 0,
                    'min-width': plugin.el.width() / 2
                });
                plugin.el.html(plugin.currentElements);
                plugin.currentElements.animate({
                    'margin-left': 0,
                    'opacity': 1
                });
            };

            var transition_climb = function (offsetStart, offsetEnd) {
                plugin.currentElements.each(function (i) {
                    var $objThis = $(this);
                    setTimeout(function () {
                        $objThis.animate({
                            'margin-left': plugin.settings.slideOffset * -1,
                            'opacity': 0
                        }, function () {
                            $(this).remove();
                        });
                    }, i * 200);
                });

                plugin.currentElements = plugin.settings.objElements.slice(offsetStart, offsetEnd).clone();
                plugin.currentElements.css({
                    'margin-left': plugin.settings.slideOffset,
                    'display': 'block',
                    'opacity': 0,
                    'min-width': plugin.el.width() / 2
                });
                plugin.el.html(plugin.currentElements);
                plugin.currentElements.each(function (i) {
                    var $objThis = $(this);
                    setTimeout(function () {
                        $objThis.animate({
                            'margin-left': 0,
                            'opacity': 1
                        });
                    }, i * 200);
                });
            };

            plugin.settings = $.extend({}, defaults, options);

            plugin.currentElements = $([]);
            plugin.settings.objElements = plugin.el.find(plugin.settings.paginateElement);
            plugin.settings.pages = getNbOfPages();
            if (plugin.settings.pages > 1) {
                plugin.el.html();

                // Here we go
                displayNav();

                page = 1;
                if (document.location.hash.indexOf('#' + plugin.settings.hashPage + ':') != -1) {
                    page = parseInt(document.location.hash.replace('#' + plugin.settings.hashPage + ':', ''));
                    if (page.length <= 0 || page < 1 || page > plugin.settings.pages) {
                        page = 1;
                    }
                }

                displayPage(page, 'default');
            }
        });
    };
})(jQuery);;
/*
 * jQuery FlexSlider v2.5.0
 * Copyright 2012 WooThemes
 * Contributing Author: Tyler Smith
 */!function($){$.flexslider=function(e,t){var a=$(e);a.vars=$.extend({},$.flexslider.defaults,t);var n=a.vars.namespace,i=window.navigator&&window.navigator.msPointerEnabled&&window.MSGesture,s=("ontouchstart"in window||i||window.DocumentTouch&&document instanceof DocumentTouch)&&a.vars.touch,r="click touchend MSPointerUp keyup",o="",l,c="vertical"===a.vars.direction,d=a.vars.reverse,u=a.vars.itemWidth>0,v="fade"===a.vars.animation,p=""!==a.vars.asNavFor,m={},f=!0;$.data(e,"flexslider",a),m={init:function(){a.animating=!1,a.currentSlide=parseInt(a.vars.startAt?a.vars.startAt:0,10),isNaN(a.currentSlide)&&(a.currentSlide=0),a.animatingTo=a.currentSlide,a.atEnd=0===a.currentSlide||a.currentSlide===a.last,a.containerSelector=a.vars.selector.substr(0,a.vars.selector.search(" ")),a.slides=$(a.vars.selector,a),a.container=$(a.containerSelector,a),a.count=a.slides.length,a.syncExists=$(a.vars.sync).length>0,"slide"===a.vars.animation&&(a.vars.animation="swing"),a.prop=c?"top":"marginLeft",a.args={},a.manualPause=!1,a.stopped=!1,a.started=!1,a.startTimeout=null,a.transitions=!a.vars.video&&!v&&a.vars.useCSS&&function(){var e=document.createElement("div"),t=["perspectiveProperty","WebkitPerspective","MozPerspective","OPerspective","msPerspective"];for(var n in t)if(void 0!==e.style[t[n]])return a.pfx=t[n].replace("Perspective","").toLowerCase(),a.prop="-"+a.pfx+"-transform",!0;return!1}(),a.ensureAnimationEnd="",""!==a.vars.controlsContainer&&(a.controlsContainer=$(a.vars.controlsContainer).length>0&&$(a.vars.controlsContainer)),""!==a.vars.manualControls&&(a.manualControls=$(a.vars.manualControls).length>0&&$(a.vars.manualControls)),""!==a.vars.customDirectionNav&&(a.customDirectionNav=2===$(a.vars.customDirectionNav).length&&$(a.vars.customDirectionNav)),a.vars.randomize&&(a.slides.sort(function(){return Math.round(Math.random())-.5}),a.container.empty().append(a.slides)),a.doMath(),a.setup("init"),a.vars.controlNav&&m.controlNav.setup(),a.vars.directionNav&&m.directionNav.setup(),a.vars.keyboard&&(1===$(a.containerSelector).length||a.vars.multipleKeyboard)&&$(document).bind("keyup",function(e){var t=e.keyCode;if(!a.animating&&(39===t||37===t)){var n=39===t?a.getTarget("next"):37===t?a.getTarget("prev"):!1;a.flexAnimate(n,a.vars.pauseOnAction)}}),a.vars.mousewheel&&a.bind("mousewheel",function(e,t,n,i){e.preventDefault();var s=a.getTarget(0>t?"next":"prev");a.flexAnimate(s,a.vars.pauseOnAction)}),a.vars.pausePlay&&m.pausePlay.setup(),a.vars.slideshow&&a.vars.pauseInvisible&&m.pauseInvisible.init(),a.vars.slideshow&&(a.vars.pauseOnHover&&a.hover(function(){a.manualPlay||a.manualPause||a.pause()},function(){a.manualPause||a.manualPlay||a.stopped||a.play()}),a.vars.pauseInvisible&&m.pauseInvisible.isHidden()||(a.vars.initDelay>0?a.startTimeout=setTimeout(a.play,a.vars.initDelay):a.play())),p&&m.asNav.setup(),s&&a.vars.touch&&m.touch(),(!v||v&&a.vars.smoothHeight)&&$(window).bind("resize orientationchange focus",m.resize),a.find("img").attr("draggable","false"),setTimeout(function(){a.vars.start(a)},200)},asNav:{setup:function(){a.asNav=!0,a.animatingTo=Math.floor(a.currentSlide/a.move),a.currentItem=a.currentSlide,a.slides.removeClass(n+"active-slide").eq(a.currentItem).addClass(n+"active-slide"),i?(e._slider=a,a.slides.each(function(){var e=this;e._gesture=new MSGesture,e._gesture.target=e,e.addEventListener("MSPointerDown",function(e){e.preventDefault(),e.currentTarget._gesture&&e.currentTarget._gesture.addPointer(e.pointerId)},!1),e.addEventListener("MSGestureTap",function(e){e.preventDefault();var t=$(this),n=t.index();$(a.vars.asNavFor).data("flexslider").animating||t.hasClass("active")||(a.direction=a.currentItem<n?"next":"prev",a.flexAnimate(n,a.vars.pauseOnAction,!1,!0,!0))})})):a.slides.on(r,function(e){e.preventDefault();var t=$(this),i=t.index(),s=t.offset().left-$(a).scrollLeft();0>=s&&t.hasClass(n+"active-slide")?a.flexAnimate(a.getTarget("prev"),!0):$(a.vars.asNavFor).data("flexslider").animating||t.hasClass(n+"active-slide")||(a.direction=a.currentItem<i?"next":"prev",a.flexAnimate(i,a.vars.pauseOnAction,!1,!0,!0))})}},controlNav:{setup:function(){a.manualControls?m.controlNav.setupManual():m.controlNav.setupPaging()},setupPaging:function(){var e="thumbnails"===a.vars.controlNav?"control-thumbs":"control-paging",t=1,i,s;if(a.controlNavScaffold=$('<ol class="'+n+"control-nav "+n+e+'"></ol>'),a.pagingCount>1)for(var l=0;l<a.pagingCount;l++){if(s=a.slides.eq(l),i="thumbnails"===a.vars.controlNav?'<img src="'+s.attr("data-thumb")+'"/>':"<a>"+t+"</a>","thumbnails"===a.vars.controlNav&&!0===a.vars.thumbCaptions){var c=s.attr("data-thumbcaption");""!==c&&void 0!==c&&(i+='<span class="'+n+'caption">'+c+"</span>")}a.controlNavScaffold.append("<li>"+i+"</li>"),t++}a.controlsContainer?$(a.controlsContainer).append(a.controlNavScaffold):a.append(a.controlNavScaffold),m.controlNav.set(),m.controlNav.active(),a.controlNavScaffold.delegate("a, img",r,function(e){if(e.preventDefault(),""===o||o===e.type){var t=$(this),i=a.controlNav.index(t);t.hasClass(n+"active")||(a.direction=i>a.currentSlide?"next":"prev",a.flexAnimate(i,a.vars.pauseOnAction))}""===o&&(o=e.type),m.setToClearWatchedEvent()})},setupManual:function(){a.controlNav=a.manualControls,m.controlNav.active(),a.controlNav.bind(r,function(e){if(e.preventDefault(),""===o||o===e.type){var t=$(this),i=a.controlNav.index(t);t.hasClass(n+"active")||(a.direction=i>a.currentSlide?"next":"prev",a.flexAnimate(i,a.vars.pauseOnAction))}""===o&&(o=e.type),m.setToClearWatchedEvent()})},set:function(){var e="thumbnails"===a.vars.controlNav?"img":"a";a.controlNav=$("."+n+"control-nav li "+e,a.controlsContainer?a.controlsContainer:a)},active:function(){a.controlNav.removeClass(n+"active").eq(a.animatingTo).addClass(n+"active")},update:function(e,t){a.pagingCount>1&&"add"===e?a.controlNavScaffold.append($("<li><a>"+a.count+"</a></li>")):1===a.pagingCount?a.controlNavScaffold.find("li").remove():a.controlNav.eq(t).closest("li").remove(),m.controlNav.set(),a.pagingCount>1&&a.pagingCount!==a.controlNav.length?a.update(t,e):m.controlNav.active()}},directionNav:{setup:function(){var e=$('<ul class="'+n+'direction-nav"><li class="'+n+'nav-prev"><a class="'+n+'prev" href="#">'+a.vars.prevText+'</a></li><li class="'+n+'nav-next"><a class="'+n+'next" href="#">'+a.vars.nextText+"</a></li></ul>");a.customDirectionNav?a.directionNav=a.customDirectionNav:a.controlsContainer?($(a.controlsContainer).append(e),a.directionNav=$("."+n+"direction-nav li a",a.controlsContainer)):(a.append(e),a.directionNav=$("."+n+"direction-nav li a",a)),m.directionNav.update(),a.directionNav.bind(r,function(e){e.preventDefault();var t;(""===o||o===e.type)&&(t=a.getTarget($(this).hasClass(n+"next")?"next":"prev"),a.flexAnimate(t,a.vars.pauseOnAction)),""===o&&(o=e.type),m.setToClearWatchedEvent()})},update:function(){var e=n+"disabled";1===a.pagingCount?a.directionNav.addClass(e).attr("tabindex","-1"):a.vars.animationLoop?a.directionNav.removeClass(e).removeAttr("tabindex"):0===a.animatingTo?a.directionNav.removeClass(e).filter("."+n+"prev").addClass(e).attr("tabindex","-1"):a.animatingTo===a.last?a.directionNav.removeClass(e).filter("."+n+"next").addClass(e).attr("tabindex","-1"):a.directionNav.removeClass(e).removeAttr("tabindex")}},pausePlay:{setup:function(){var e=$('<div class="'+n+'pauseplay"><a></a></div>');a.controlsContainer?(a.controlsContainer.append(e),a.pausePlay=$("."+n+"pauseplay a",a.controlsContainer)):(a.append(e),a.pausePlay=$("."+n+"pauseplay a",a)),m.pausePlay.update(a.vars.slideshow?n+"pause":n+"play"),a.pausePlay.bind(r,function(e){e.preventDefault(),(""===o||o===e.type)&&($(this).hasClass(n+"pause")?(a.manualPause=!0,a.manualPlay=!1,a.pause()):(a.manualPause=!1,a.manualPlay=!0,a.play())),""===o&&(o=e.type),m.setToClearWatchedEvent()})},update:function(e){"play"===e?a.pausePlay.removeClass(n+"pause").addClass(n+"play").html(a.vars.playText):a.pausePlay.removeClass(n+"play").addClass(n+"pause").html(a.vars.pauseText)}},touch:function(){function t(t){t.stopPropagation(),a.animating?t.preventDefault():(a.pause(),e._gesture.addPointer(t.pointerId),w=0,p=c?a.h:a.w,f=Number(new Date),l=u&&d&&a.animatingTo===a.last?0:u&&d?a.limit-(a.itemW+a.vars.itemMargin)*a.move*a.animatingTo:u&&a.currentSlide===a.last?a.limit:u?(a.itemW+a.vars.itemMargin)*a.move*a.currentSlide:d?(a.last-a.currentSlide+a.cloneOffset)*p:(a.currentSlide+a.cloneOffset)*p)}function n(t){t.stopPropagation();var a=t.target._slider;if(a){var n=-t.translationX,i=-t.translationY;return w+=c?i:n,m=w,y=c?Math.abs(w)<Math.abs(-n):Math.abs(w)<Math.abs(-i),t.detail===t.MSGESTURE_FLAG_INERTIA?void setImmediate(function(){e._gesture.stop()}):void((!y||Number(new Date)-f>500)&&(t.preventDefault(),!v&&a.transitions&&(a.vars.animationLoop||(m=w/(0===a.currentSlide&&0>w||a.currentSlide===a.last&&w>0?Math.abs(w)/p+2:1)),a.setProps(l+m,"setTouch"))))}}function s(e){e.stopPropagation();var t=e.target._slider;if(t){if(t.animatingTo===t.currentSlide&&!y&&null!==m){var a=d?-m:m,n=t.getTarget(a>0?"next":"prev");t.canAdvance(n)&&(Number(new Date)-f<550&&Math.abs(a)>50||Math.abs(a)>p/2)?t.flexAnimate(n,t.vars.pauseOnAction):v||t.flexAnimate(t.currentSlide,t.vars.pauseOnAction,!0)}r=null,o=null,m=null,l=null,w=0}}var r,o,l,p,m,f,g,h,S,y=!1,x=0,b=0,w=0;i?(e.style.msTouchAction="none",e._gesture=new MSGesture,e._gesture.target=e,e.addEventListener("MSPointerDown",t,!1),e._slider=a,e.addEventListener("MSGestureChange",n,!1),e.addEventListener("MSGestureEnd",s,!1)):(g=function(t){a.animating?t.preventDefault():(window.navigator.msPointerEnabled||1===t.touches.length)&&(a.pause(),p=c?a.h:a.w,f=Number(new Date),x=t.touches[0].pageX,b=t.touches[0].pageY,l=u&&d&&a.animatingTo===a.last?0:u&&d?a.limit-(a.itemW+a.vars.itemMargin)*a.move*a.animatingTo:u&&a.currentSlide===a.last?a.limit:u?(a.itemW+a.vars.itemMargin)*a.move*a.currentSlide:d?(a.last-a.currentSlide+a.cloneOffset)*p:(a.currentSlide+a.cloneOffset)*p,r=c?b:x,o=c?x:b,e.addEventListener("touchmove",h,!1),e.addEventListener("touchend",S,!1))},h=function(e){x=e.touches[0].pageX,b=e.touches[0].pageY,m=c?r-b:r-x,y=c?Math.abs(m)<Math.abs(x-o):Math.abs(m)<Math.abs(b-o);var t=500;(!y||Number(new Date)-f>t)&&(e.preventDefault(),!v&&a.transitions&&(a.vars.animationLoop||(m/=0===a.currentSlide&&0>m||a.currentSlide===a.last&&m>0?Math.abs(m)/p+2:1),a.setProps(l+m,"setTouch")))},S=function(t){if(e.removeEventListener("touchmove",h,!1),a.animatingTo===a.currentSlide&&!y&&null!==m){var n=d?-m:m,i=a.getTarget(n>0?"next":"prev");a.canAdvance(i)&&(Number(new Date)-f<550&&Math.abs(n)>50||Math.abs(n)>p/2)?a.flexAnimate(i,a.vars.pauseOnAction):v||a.flexAnimate(a.currentSlide,a.vars.pauseOnAction,!0)}e.removeEventListener("touchend",S,!1),r=null,o=null,m=null,l=null},e.addEventListener("touchstart",g,!1))},resize:function(){!a.animating&&a.is(":visible")&&(u||a.doMath(),v?m.smoothHeight():u?(a.slides.width(a.computedW),a.update(a.pagingCount),a.setProps()):c?(a.viewport.height(a.h),a.setProps(a.h,"setTotal")):(a.vars.smoothHeight&&m.smoothHeight(),a.newSlides.width(a.computedW),a.setProps(a.computedW,"setTotal")))},smoothHeight:function(e){if(!c||v){var t=v?a:a.viewport;e?t.animate({height:a.slides.eq(a.animatingTo).height()},e):t.height(a.slides.eq(a.animatingTo).height())}},sync:function(e){var t=$(a.vars.sync).data("flexslider"),n=a.animatingTo;switch(e){case"animate":t.flexAnimate(n,a.vars.pauseOnAction,!1,!0);break;case"play":t.playing||t.asNav||t.play();break;case"pause":t.pause()}},uniqueID:function(e){return e.filter("[id]").add(e.find("[id]")).each(function(){var e=$(this);e.attr("id",e.attr("id")+"_clone")}),e},pauseInvisible:{visProp:null,init:function(){var e=m.pauseInvisible.getHiddenProp();if(e){var t=e.replace(/[H|h]idden/,"")+"visibilitychange";document.addEventListener(t,function(){m.pauseInvisible.isHidden()?a.startTimeout?clearTimeout(a.startTimeout):a.pause():a.started?a.play():a.vars.initDelay>0?setTimeout(a.play,a.vars.initDelay):a.play()})}},isHidden:function(){var e=m.pauseInvisible.getHiddenProp();return e?document[e]:!1},getHiddenProp:function(){var e=["webkit","moz","ms","o"];if("hidden"in document)return"hidden";for(var t=0;t<e.length;t++)if(e[t]+"Hidden"in document)return e[t]+"Hidden";return null}},setToClearWatchedEvent:function(){clearTimeout(l),l=setTimeout(function(){o=""},3e3)}},a.flexAnimate=function(e,t,i,r,o){if(a.vars.animationLoop||e===a.currentSlide||(a.direction=e>a.currentSlide?"next":"prev"),p&&1===a.pagingCount&&(a.direction=a.currentItem<e?"next":"prev"),!a.animating&&(a.canAdvance(e,o)||i)&&a.is(":visible")){if(p&&r){var l=$(a.vars.asNavFor).data("flexslider");if(a.atEnd=0===e||e===a.count-1,l.flexAnimate(e,!0,!1,!0,o),a.direction=a.currentItem<e?"next":"prev",l.direction=a.direction,Math.ceil((e+1)/a.visible)-1===a.currentSlide||0===e)return a.currentItem=e,a.slides.removeClass(n+"active-slide").eq(e).addClass(n+"active-slide"),!1;a.currentItem=e,a.slides.removeClass(n+"active-slide").eq(e).addClass(n+"active-slide"),e=Math.floor(e/a.visible)}if(a.animating=!0,a.animatingTo=e,t&&a.pause(),a.vars.before(a),a.syncExists&&!o&&m.sync("animate"),a.vars.controlNav&&m.controlNav.active(),u||a.slides.removeClass(n+"active-slide").eq(e).addClass(n+"active-slide"),a.atEnd=0===e||e===a.last,a.vars.directionNav&&m.directionNav.update(),e===a.last&&(a.vars.end(a),a.vars.animationLoop||a.pause()),v)s?(a.slides.eq(a.currentSlide).css({opacity:0,zIndex:1}),a.slides.eq(e).css({opacity:1,zIndex:2}),a.wrapup(f)):(a.slides.eq(a.currentSlide).css({zIndex:1}).animate({opacity:0},a.vars.animationSpeed,a.vars.easing),a.slides.eq(e).css({zIndex:2}).animate({opacity:1},a.vars.animationSpeed,a.vars.easing,a.wrapup));else{var f=c?a.slides.filter(":first").height():a.computedW,g,h,S;u?(g=a.vars.itemMargin,S=(a.itemW+g)*a.move*a.animatingTo,h=S>a.limit&&1!==a.visible?a.limit:S):h=0===a.currentSlide&&e===a.count-1&&a.vars.animationLoop&&"next"!==a.direction?d?(a.count+a.cloneOffset)*f:0:a.currentSlide===a.last&&0===e&&a.vars.animationLoop&&"prev"!==a.direction?d?0:(a.count+1)*f:d?(a.count-1-e+a.cloneOffset)*f:(e+a.cloneOffset)*f,a.setProps(h,"",a.vars.animationSpeed),a.transitions?(a.vars.animationLoop&&a.atEnd||(a.animating=!1,a.currentSlide=a.animatingTo),a.container.unbind("webkitTransitionEnd transitionend"),a.container.bind("webkitTransitionEnd transitionend",function(){clearTimeout(a.ensureAnimationEnd),a.wrapup(f)}),clearTimeout(a.ensureAnimationEnd),a.ensureAnimationEnd=setTimeout(function(){a.wrapup(f)},a.vars.animationSpeed+100)):a.container.animate(a.args,a.vars.animationSpeed,a.vars.easing,function(){a.wrapup(f)})}a.vars.smoothHeight&&m.smoothHeight(a.vars.animationSpeed)}},a.wrapup=function(e){v||u||(0===a.currentSlide&&a.animatingTo===a.last&&a.vars.animationLoop?a.setProps(e,"jumpEnd"):a.currentSlide===a.last&&0===a.animatingTo&&a.vars.animationLoop&&a.setProps(e,"jumpStart")),a.animating=!1,a.currentSlide=a.animatingTo,a.vars.after(a)},a.animateSlides=function(){!a.animating&&f&&a.flexAnimate(a.getTarget("next"))},a.pause=function(){clearInterval(a.animatedSlides),a.animatedSlides=null,a.playing=!1,a.vars.pausePlay&&m.pausePlay.update("play"),a.syncExists&&m.sync("pause")},a.play=function(){a.playing&&clearInterval(a.animatedSlides),a.animatedSlides=a.animatedSlides||setInterval(a.animateSlides,a.vars.slideshowSpeed),a.started=a.playing=!0,a.vars.pausePlay&&m.pausePlay.update("pause"),a.syncExists&&m.sync("play")},a.stop=function(){a.pause(),a.stopped=!0},a.canAdvance=function(e,t){var n=p?a.pagingCount-1:a.last;return t?!0:p&&a.currentItem===a.count-1&&0===e&&"prev"===a.direction?!0:p&&0===a.currentItem&&e===a.pagingCount-1&&"next"!==a.direction?!1:e!==a.currentSlide||p?a.vars.animationLoop?!0:a.atEnd&&0===a.currentSlide&&e===n&&"next"!==a.direction?!1:a.atEnd&&a.currentSlide===n&&0===e&&"next"===a.direction?!1:!0:!1},a.getTarget=function(e){return a.direction=e,"next"===e?a.currentSlide===a.last?0:a.currentSlide+1:0===a.currentSlide?a.last:a.currentSlide-1},a.setProps=function(e,t,n){var i=function(){var n=e?e:(a.itemW+a.vars.itemMargin)*a.move*a.animatingTo,i=function(){if(u)return"setTouch"===t?e:d&&a.animatingTo===a.last?0:d?a.limit-(a.itemW+a.vars.itemMargin)*a.move*a.animatingTo:a.animatingTo===a.last?a.limit:n;switch(t){case"setTotal":return d?(a.count-1-a.currentSlide+a.cloneOffset)*e:(a.currentSlide+a.cloneOffset)*e;case"setTouch":return d?e:e;case"jumpEnd":return d?e:a.count*e;case"jumpStart":return d?a.count*e:e;default:return e}}();return-1*i+"px"}();a.transitions&&(i=c?"translate3d(0,"+i+",0)":"translate3d("+i+",0,0)",n=void 0!==n?n/1e3+"s":"0s",a.container.css("-"+a.pfx+"-transition-duration",n),a.container.css("transition-duration",n)),a.args[a.prop]=i,(a.transitions||void 0===n)&&a.container.css(a.args),a.container.css("transform",i)},a.setup=function(e){if(v)a.slides.css({width:"100%","float":"left",marginRight:"-100%",position:"relative"}),"init"===e&&(s?a.slides.css({opacity:0,display:"block",webkitTransition:"opacity "+a.vars.animationSpeed/1e3+"s ease",zIndex:1}).eq(a.currentSlide).css({opacity:1,zIndex:2}):0==a.vars.fadeFirstSlide?a.slides.css({opacity:0,display:"block",zIndex:1}).eq(a.currentSlide).css({zIndex:2}).css({opacity:1}):a.slides.css({opacity:0,display:"block",zIndex:1}).eq(a.currentSlide).css({zIndex:2}).animate({opacity:1},a.vars.animationSpeed,a.vars.easing)),a.vars.smoothHeight&&m.smoothHeight();else{var t,i;"init"===e&&(a.viewport=$('<div class="'+n+'viewport"></div>').css({overflow:"hidden",position:"relative"}).appendTo(a).append(a.container),a.cloneCount=0,a.cloneOffset=0,d&&(i=$.makeArray(a.slides).reverse(),a.slides=$(i),a.container.empty().append(a.slides))),a.vars.animationLoop&&!u&&(a.cloneCount=2,a.cloneOffset=1,"init"!==e&&a.container.find(".clone").remove(),a.container.append(m.uniqueID(a.slides.first().clone().addClass("clone")).attr("aria-hidden","true")).prepend(m.uniqueID(a.slides.last().clone().addClass("clone")).attr("aria-hidden","true"))),a.newSlides=$(a.vars.selector,a),t=d?a.count-1-a.currentSlide+a.cloneOffset:a.currentSlide+a.cloneOffset,c&&!u?(a.container.height(200*(a.count+a.cloneCount)+"%").css("position","absolute").width("100%"),setTimeout(function(){a.newSlides.css({display:"block"}),a.doMath(),a.viewport.height(a.h),a.setProps(t*a.h,"init")},"init"===e?100:0)):(a.container.width(200*(a.count+a.cloneCount)+"%"),a.setProps(t*a.computedW,"init"),setTimeout(function(){a.doMath(),a.newSlides.css({width:a.computedW,"float":"left",display:"block"}),a.vars.smoothHeight&&m.smoothHeight()},"init"===e?100:0))}u||a.slides.removeClass(n+"active-slide").eq(a.currentSlide).addClass(n+"active-slide"),a.vars.init(a)},a.doMath=function(){var e=a.slides.first(),t=a.vars.itemMargin,n=a.vars.minItems,i=a.vars.maxItems;a.w=void 0===a.viewport?a.width():a.viewport.width(),a.h=e.height(),a.boxPadding=e.outerWidth()-e.width(),u?(a.itemT=a.vars.itemWidth+t,a.minW=n?n*a.itemT:a.w,a.maxW=i?i*a.itemT-t:a.w,a.itemW=a.minW>a.w?(a.w-t*(n-1))/n:a.maxW<a.w?(a.w-t*(i-1))/i:a.vars.itemWidth>a.w?a.w:a.vars.itemWidth,a.visible=Math.floor(a.w/a.itemW),a.move=a.vars.move>0&&a.vars.move<a.visible?a.vars.move:a.visible,a.pagingCount=Math.ceil((a.count-a.visible)/a.move+1),a.last=a.pagingCount-1,a.limit=1===a.pagingCount?0:a.vars.itemWidth>a.w?a.itemW*(a.count-1)+t*(a.count-1):(a.itemW+t)*a.count-a.w-t):(a.itemW=a.w,a.pagingCount=a.count,a.last=a.count-1),a.computedW=a.itemW-a.boxPadding},a.update=function(e,t){a.doMath(),u||(e<a.currentSlide?a.currentSlide+=1:e<=a.currentSlide&&0!==e&&(a.currentSlide-=1),a.animatingTo=a.currentSlide),a.vars.controlNav&&!a.manualControls&&("add"===t&&!u||a.pagingCount>a.controlNav.length?m.controlNav.update("add"):("remove"===t&&!u||a.pagingCount<a.controlNav.length)&&(u&&a.currentSlide>a.last&&(a.currentSlide-=1,a.animatingTo-=1),m.controlNav.update("remove",a.last))),a.vars.directionNav&&m.directionNav.update()},a.addSlide=function(e,t){var n=$(e);a.count+=1,a.last=a.count-1,c&&d?void 0!==t?a.slides.eq(a.count-t).after(n):a.container.prepend(n):void 0!==t?a.slides.eq(t).before(n):a.container.append(n),a.update(t,"add"),a.slides=$(a.vars.selector+":not(.clone)",a),a.setup(),a.vars.added(a)},a.removeSlide=function(e){var t=isNaN(e)?a.slides.index($(e)):e;a.count-=1,a.last=a.count-1,isNaN(e)?$(e,a.slides).remove():c&&d?a.slides.eq(a.last).remove():a.slides.eq(e).remove(),a.doMath(),a.update(t,"remove"),a.slides=$(a.vars.selector+":not(.clone)",a),a.setup(),a.vars.removed(a)},m.init()},$(window).blur(function(e){focused=!1}).focus(function(e){focused=!0}),$.flexslider.defaults={namespace:"flex-",selector:".slides > li",animation:"fade",easing:"swing",direction:"horizontal",reverse:!1,animationLoop:!0,smoothHeight:!1,startAt:0,slideshow:!0,slideshowSpeed:7e3,animationSpeed:600,initDelay:0,randomize:!1,fadeFirstSlide:!0,thumbCaptions:!1,pauseOnAction:!0,pauseOnHover:!1,pauseInvisible:!0,useCSS:!0,touch:!0,video:!1,controlNav:!0,directionNav:!0,prevText:"Previous",nextText:"Next",keyboard:!0,multipleKeyboard:!1,mousewheel:!1,pausePlay:!1,pauseText:"Pause",playText:"Play",controlsContainer:"",manualControls:"",customDirectionNav:"",sync:"",asNavFor:"",itemWidth:0,itemMargin:0,minItems:1,maxItems:0,move:0,allowOneSlide:!0,start:function(){},before:function(){},after:function(){},end:function(){},added:function(){},removed:function(){},init:function(){}},$.fn.flexslider=function(e){if(void 0===e&&(e={}),"object"==typeof e)return this.each(function(){var t=$(this),a=e.selector?e.selector:".slides > li",n=t.find(a);1===n.length&&e.allowOneSlide===!0||0===n.length?(n.fadeIn(400),e.start&&e.start(t)):void 0===t.data("flexslider")&&new $.flexslider(this,e)});var t=$(this).data("flexslider");switch(e){case"play":t.play();break;case"pause":t.pause();break;case"stop":t.stop();break;case"next":t.flexAnimate(t.getTarget("next"),!0);break;case"prev":case"previous":t.flexAnimate(t.getTarget("prev"),!0);break;default:"number"==typeof e&&t.flexAnimate(e,!0)}}}(jQuery);;
/*
 *	jQuery dotdotdot 1.7.4
 *
 *	Copyright (c) Fred Heusschen
 *	www.frebsite.nl
 *
 *	Plugin website:
 *	dotdotdot.frebsite.nl
 *
 *	Licensed under the MIT license.
 *	http://en.wikipedia.org/wiki/MIT_License
 */
!function(t,e){function n(t,e,n){var r=t.children(),o=!1;t.empty();for(var i=0,d=r.length;d>i;i++){var l=r.eq(i);if(t.append(l),n&&t.append(n),a(t,e)){l.remove(),o=!0;break}n&&n.detach()}return o}function r(e,n,i,d,l){var s=!1,c="a, table, thead, tbody, tfoot, tr, col, colgroup, object, embed, param, ol, ul, dl, blockquote, select, optgroup, option, textarea, script, style",u="script, .dotdotdot-keep";return e.contents().detach().each(function(){var h=this,f=t(h);if("undefined"==typeof h)return!0;if(f.is(u))e.append(f);else{if(s)return!0;e.append(f),!l||f.is(d.after)||f.find(d.after).length||e[e.is(c)?"after":"append"](l),a(i,d)&&(s=3==h.nodeType?o(f,n,i,d,l):r(f,n,i,d,l)),s||l&&l.detach()}}),n.addClass("is-truncated"),s}function o(e,n,r,o,d){var c=e[0];if(!c)return!1;var h=s(c),f=-1!==h.indexOf(" ")?" ":"　",p="letter"==o.wrap?"":f,g=h.split(p),v=-1,w=-1,b=0,y=g.length-1;for(o.fallbackToLetter&&0==b&&0==y&&(p="",g=h.split(p),y=g.length-1);y>=b&&(0!=b||0!=y);){var m=Math.floor((b+y)/2);if(m==w)break;w=m,l(c,g.slice(0,w+1).join(p)+o.ellipsis),r.children().each(function(){t(this).toggle().toggle()}),a(r,o)?(y=w,o.fallbackToLetter&&0==b&&0==y&&(p="",g=g[0].split(p),v=-1,w=-1,b=0,y=g.length-1)):(v=w,b=w)}if(-1==v||1==g.length&&0==g[0].length){var x=e.parent();e.detach();var T=d&&d.closest(x).length?d.length:0;x.contents().length>T?c=u(x.contents().eq(-1-T),n):(c=u(x,n,!0),T||x.detach()),c&&(h=i(s(c),o),l(c,h),T&&d&&t(c).parent().append(d))}else h=i(g.slice(0,v+1).join(p),o),l(c,h);return!0}function a(t,e){return t.innerHeight()>e.maxHeight}function i(e,n){for(;t.inArray(e.slice(-1),n.lastCharacter.remove)>-1;)e=e.slice(0,-1);return t.inArray(e.slice(-1),n.lastCharacter.noEllipsis)<0&&(e+=n.ellipsis),e}function d(t){return{width:t.innerWidth(),height:t.innerHeight()}}function l(t,e){t.innerText?t.innerText=e:t.nodeValue?t.nodeValue=e:t.textContent&&(t.textContent=e)}function s(t){return t.innerText?t.innerText:t.nodeValue?t.nodeValue:t.textContent?t.textContent:""}function c(t){do t=t.previousSibling;while(t&&1!==t.nodeType&&3!==t.nodeType);return t}function u(e,n,r){var o,a=e&&e[0];if(a){if(!r){if(3===a.nodeType)return a;if(t.trim(e.text()))return u(e.contents().last(),n)}for(o=c(a);!o;){if(e=e.parent(),e.is(n)||!e.length)return!1;o=c(e[0])}if(o)return u(t(o),n)}return!1}function h(e,n){return e?"string"==typeof e?(e=t(e,n),e.length?e:!1):e.jquery?e:!1:!1}function f(t){for(var e=t.innerHeight(),n=["paddingTop","paddingBottom"],r=0,o=n.length;o>r;r++){var a=parseInt(t.css(n[r]),10);isNaN(a)&&(a=0),e-=a}return e}if(!t.fn.dotdotdot){t.fn.dotdotdot=function(e){if(0==this.length)return t.fn.dotdotdot.debug('No element found for "'+this.selector+'".'),this;if(this.length>1)return this.each(function(){t(this).dotdotdot(e)});var o=this,i=o.contents();o.data("dotdotdot")&&o.trigger("destroy.dot"),o.data("dotdotdot-style",o.attr("style")||""),o.css("word-wrap","break-word"),"nowrap"===o.css("white-space")&&o.css("white-space","normal"),o.bind_events=function(){return o.bind("update.dot",function(e,d){switch(o.removeClass("is-truncated"),e.preventDefault(),e.stopPropagation(),typeof l.height){case"number":l.maxHeight=l.height;break;case"function":l.maxHeight=l.height.call(o[0]);break;default:l.maxHeight=f(o)}l.maxHeight+=l.tolerance,"undefined"!=typeof d&&(("string"==typeof d||"nodeType"in d&&1===d.nodeType)&&(d=t("<div />").append(d).contents()),d instanceof t&&(i=d)),g=o.wrapInner('<div class="dotdotdot" />').children(),g.contents().detach().end().append(i.clone(!0)).find("br").replaceWith("  <br />  ").end().css({height:"auto",width:"auto",border:"none",padding:0,margin:0});var c=!1,u=!1;return s.afterElement&&(c=s.afterElement.clone(!0),c.show(),s.afterElement.detach()),a(g,l)&&(u="children"==l.wrap?n(g,l,c):r(g,o,g,l,c)),g.replaceWith(g.contents()),g=null,t.isFunction(l.callback)&&l.callback.call(o[0],u,i),s.isTruncated=u,u}).bind("isTruncated.dot",function(t,e){return t.preventDefault(),t.stopPropagation(),"function"==typeof e&&e.call(o[0],s.isTruncated),s.isTruncated}).bind("originalContent.dot",function(t,e){return t.preventDefault(),t.stopPropagation(),"function"==typeof e&&e.call(o[0],i),i}).bind("destroy.dot",function(t){t.preventDefault(),t.stopPropagation(),o.unwatch().unbind_events().contents().detach().end().append(i).attr("style",o.data("dotdotdot-style")||"").data("dotdotdot",!1)}),o},o.unbind_events=function(){return o.unbind(".dot"),o},o.watch=function(){if(o.unwatch(),"window"==l.watch){var e=t(window),n=e.width(),r=e.height();e.bind("resize.dot"+s.dotId,function(){n==e.width()&&r==e.height()&&l.windowResizeFix||(n=e.width(),r=e.height(),u&&clearInterval(u),u=setTimeout(function(){o.trigger("update.dot")},100))})}else c=d(o),u=setInterval(function(){if(o.is(":visible")){var t=d(o);(c.width!=t.width||c.height!=t.height)&&(o.trigger("update.dot"),c=t)}},500);return o},o.unwatch=function(){return t(window).unbind("resize.dot"+s.dotId),u&&clearInterval(u),o};var l=t.extend(!0,{},t.fn.dotdotdot.defaults,e),s={},c={},u=null,g=null;return l.lastCharacter.remove instanceof Array||(l.lastCharacter.remove=t.fn.dotdotdot.defaultArrays.lastCharacter.remove),l.lastCharacter.noEllipsis instanceof Array||(l.lastCharacter.noEllipsis=t.fn.dotdotdot.defaultArrays.lastCharacter.noEllipsis),s.afterElement=h(l.after,o),s.isTruncated=!1,s.dotId=p++,o.data("dotdotdot",!0).bind_events().trigger("update.dot"),l.watch&&o.watch(),o},t.fn.dotdotdot.defaults={ellipsis:"... ",wrap:"word",fallbackToLetter:!0,lastCharacter:{},tolerance:0,callback:null,after:null,height:null,watch:!1,windowResizeFix:!0},t.fn.dotdotdot.defaultArrays={lastCharacter:{remove:[" ","　",",",";",".","!","?"],noEllipsis:[]}},t.fn.dotdotdot.debug=function(t){};var p=1,g=t.fn.html;t.fn.html=function(n){return n!=e&&!t.isFunction(n)&&this.data("dotdotdot")?this.trigger("update",[n]):g.apply(this,arguments)};var v=t.fn.text;t.fn.text=function(n){return n!=e&&!t.isFunction(n)&&this.data("dotdotdot")?(n=t("<div />").text(n).html(),this.trigger("update",[n])):v.apply(this,arguments)}}}(jQuery);
;
!function(a){"use strict";"function"==typeof define&&define.amd?define(["./blueimp-helper"],a):(window.blueimp=window.blueimp||{},window.blueimp.Gallery=a(window.blueimp.helper||window.jQuery))}(function(a){"use strict";function b(a,c){return void 0===document.body.style.maxHeight?null:this&&this.options===b.prototype.options?a&&a.length?(this.list=a,this.num=a.length,this.initOptions(c),void this.initialize()):void this.console.log("blueimp Gallery: No or empty list provided as first argument.",a):new b(a,c)}return a.extend(b.prototype,{options:{container:"#blueimp-gallery",slidesContainer:"div",titleElement:"h3",displayClass:"blueimp-gallery-display",controlsClass:"blueimp-gallery-controls",singleClass:"blueimp-gallery-single",leftEdgeClass:"blueimp-gallery-left",rightEdgeClass:"blueimp-gallery-right",playingClass:"blueimp-gallery-playing",slideClass:"slide",slideLoadingClass:"slide-loading",slideErrorClass:"slide-error",slideContentClass:"slide-content",toggleClass:"toggle",prevClass:"prev",nextClass:"next",closeClass:"close",playPauseClass:"play-pause",typeProperty:"type",titleProperty:"title",urlProperty:"href",displayTransition:!0,clearSlides:!0,stretchImages:!1,toggleControlsOnReturn:!0,toggleSlideshowOnSpace:!0,enableKeyboardNavigation:!0,closeOnEscape:!0,closeOnSlideClick:!0,closeOnSwipeUpOrDown:!0,emulateTouchEvents:!0,stopTouchEventsPropagation:!1,hidePageScrollbars:!0,disableScroll:!0,carousel:!1,continuous:!0,unloadElements:!0,startSlideshow:!1,slideshowInterval:5e3,index:0,preloadRange:2,transitionSpeed:400,slideshowTransitionSpeed:void 0,event:void 0,onopen:void 0,onopened:void 0,onslide:void 0,onslideend:void 0,onslidecomplete:void 0,onclose:void 0,onclosed:void 0},carouselOptions:{hidePageScrollbars:!1,toggleControlsOnReturn:!1,toggleSlideshowOnSpace:!1,enableKeyboardNavigation:!1,closeOnEscape:!1,closeOnSlideClick:!1,closeOnSwipeUpOrDown:!1,disableScroll:!1,startSlideshow:!0},console:window.console&&"function"==typeof window.console.log?window.console:{log:function(){}},support:function(b){var c={touch:void 0!==window.ontouchstart||window.DocumentTouch&&document instanceof DocumentTouch},d={webkitTransition:{end:"webkitTransitionEnd",prefix:"-webkit-"},MozTransition:{end:"transitionend",prefix:"-moz-"},OTransition:{end:"otransitionend",prefix:"-o-"},transition:{end:"transitionend",prefix:""}},e=function(){var a,d,e=c.transition;document.body.appendChild(b),e&&(a=e.name.slice(0,-9)+"ransform",void 0!==b.style[a]&&(b.style[a]="translateZ(0)",d=window.getComputedStyle(b).getPropertyValue(e.prefix+"transform"),c.transform={prefix:e.prefix,name:a,translate:!0,translateZ:!!d&&"none"!==d})),void 0!==b.style.backgroundSize&&(c.backgroundSize={},b.style.backgroundSize="contain",c.backgroundSize.contain="contain"===window.getComputedStyle(b).getPropertyValue("background-size"),b.style.backgroundSize="cover",c.backgroundSize.cover="cover"===window.getComputedStyle(b).getPropertyValue("background-size")),document.body.removeChild(b)};return function(a,c){var d;for(d in c)if(c.hasOwnProperty(d)&&void 0!==b.style[d]){a.transition=c[d],a.transition.name=d;break}}(c,d),document.body?e():a(document).on("DOMContentLoaded",e),c}(document.createElement("div")),requestAnimationFrame:window.requestAnimationFrame||window.webkitRequestAnimationFrame||window.mozRequestAnimationFrame,initialize:function(){return this.initStartIndex(),this.initWidget()===!1?!1:(this.initEventListeners(),this.onslide(this.index),this.ontransitionend(),void(this.options.startSlideshow&&this.play()))},slide:function(a,b){window.clearTimeout(this.timeout);var c,d,e,f=this.index;if(f!==a&&1!==this.num){if(b||(b=this.options.transitionSpeed),this.support.transform){for(this.options.continuous||(a=this.circle(a)),c=Math.abs(f-a)/(f-a),this.options.continuous&&(d=c,c=-this.positions[this.circle(a)]/this.slideWidth,c!==d&&(a=-c*this.num+a)),e=Math.abs(f-a)-1;e;)e-=1,this.move(this.circle((a>f?a:f)-e-1),this.slideWidth*c,0);a=this.circle(a),this.move(f,this.slideWidth*c,b),this.move(a,0,b),this.options.continuous&&this.move(this.circle(a-c),-(this.slideWidth*c),0)}else a=this.circle(a),this.animate(f*-this.slideWidth,a*-this.slideWidth,b);this.onslide(a)}},getIndex:function(){return this.index},getNumber:function(){return this.num},prev:function(){(this.options.continuous||this.index)&&this.slide(this.index-1)},next:function(){(this.options.continuous||this.index<this.num-1)&&this.slide(this.index+1)},play:function(a){var b=this;window.clearTimeout(this.timeout),this.interval=a||this.options.slideshowInterval,this.elements[this.index]>1&&(this.timeout=this.setTimeout(!this.requestAnimationFrame&&this.slide||function(a,c){b.animationFrameId=b.requestAnimationFrame.call(window,function(){b.slide(a,c)})},[this.index+1,this.options.slideshowTransitionSpeed],this.interval)),this.container.addClass(this.options.playingClass)},pause:function(){window.clearTimeout(this.timeout),this.interval=null,this.container.removeClass(this.options.playingClass)},add:function(a){var b;for(a.concat||(a=Array.prototype.slice.call(a)),this.list.concat||(this.list=Array.prototype.slice.call(this.list)),this.list=this.list.concat(a),this.num=this.list.length,this.num>2&&null===this.options.continuous&&(this.options.continuous=!0,this.container.removeClass(this.options.leftEdgeClass)),this.container.removeClass(this.options.rightEdgeClass).removeClass(this.options.singleClass),b=this.num-a.length;b<this.num;b+=1)this.addSlide(b),this.positionSlide(b);this.positions.length=this.num,this.initSlides(!0)},resetSlides:function(){this.slidesContainer.empty(),this.unloadAllSlides(),this.slides=[]},handleClose:function(){var a=this.options;this.destroyEventListeners(),this.pause(),this.container[0].style.display="none",this.container.removeClass(a.displayClass).removeClass(a.singleClass).removeClass(a.leftEdgeClass).removeClass(a.rightEdgeClass),a.hidePageScrollbars&&(document.body.style.overflow=this.bodyOverflowStyle),this.options.clearSlides&&this.resetSlides(),this.options.onclosed&&this.options.onclosed.call(this)},close:function(){var a=this,b=function(c){c.target===a.container[0]&&(a.container.off(a.support.transition.end,b),a.handleClose())};this.options.onclose&&this.options.onclose.call(this),this.support.transition&&this.options.displayTransition?(this.container.on(this.support.transition.end,b),this.container.removeClass(this.options.displayClass)):this.handleClose()},circle:function(a){return(this.num+a%this.num)%this.num},move:function(a,b,c){this.translateX(a,b,c),this.positions[a]=b},translate:function(a,b,c,d){var e=this.slides[a].style,f=this.support.transition,g=this.support.transform;e[f.name+"Duration"]=d+"ms",e[g.name]="translate("+b+"px, "+c+"px)"+(g.translateZ?" translateZ(0)":"")},translateX:function(a,b,c){this.translate(a,b,0,c)},translateY:function(a,b,c){this.translate(a,0,b,c)},animate:function(a,b,c){if(!c)return void(this.slidesContainer[0].style.left=b+"px");var d=this,e=(new Date).getTime(),f=window.setInterval(function(){var g=(new Date).getTime()-e;return g>c?(d.slidesContainer[0].style.left=b+"px",d.ontransitionend(),void window.clearInterval(f)):void(d.slidesContainer[0].style.left=(b-a)*(Math.floor(g/c*100)/100)+a+"px")},4)},preventDefault:function(a){a.preventDefault?a.preventDefault():a.returnValue=!1},stopPropagation:function(a){a.stopPropagation?a.stopPropagation():a.cancelBubble=!0},onresize:function(){this.initSlides(!0)},onmousedown:function(a){a.which&&1===a.which&&"VIDEO"!==a.target.nodeName&&(a.preventDefault(),(a.originalEvent||a).touches=[{pageX:a.pageX,pageY:a.pageY}],this.ontouchstart(a))},onmousemove:function(a){this.touchStart&&((a.originalEvent||a).touches=[{pageX:a.pageX,pageY:a.pageY}],this.ontouchmove(a))},onmouseup:function(a){this.touchStart&&(this.ontouchend(a),delete this.touchStart)},onmouseout:function(b){if(this.touchStart){var c=b.target,d=b.relatedTarget;(!d||d!==c&&!a.contains(c,d))&&this.onmouseup(b)}},ontouchstart:function(a){this.options.stopTouchEventsPropagation&&this.stopPropagation(a);var b=(a.originalEvent||a).touches[0];this.touchStart={x:b.pageX,y:b.pageY,time:Date.now()},this.isScrolling=void 0,this.touchDelta={}},ontouchmove:function(a){this.options.stopTouchEventsPropagation&&this.stopPropagation(a);var b,c,d=(a.originalEvent||a).touches[0],e=(a.originalEvent||a).scale,f=this.index;if(!(d.length>1||e&&1!==e))if(this.options.disableScroll&&a.preventDefault(),this.touchDelta={x:d.pageX-this.touchStart.x,y:d.pageY-this.touchStart.y},b=this.touchDelta.x,void 0===this.isScrolling&&(this.isScrolling=this.isScrolling||Math.abs(b)<Math.abs(this.touchDelta.y)),this.isScrolling)this.options.closeOnSwipeUpOrDown&&this.translateY(f,this.touchDelta.y+this.positions[f],0);else for(a.preventDefault(),window.clearTimeout(this.timeout),this.options.continuous?c=[this.circle(f+1),f,this.circle(f-1)]:(this.touchDelta.x=b/=!f&&b>0||f===this.num-1&&0>b?Math.abs(b)/this.slideWidth+1:1,c=[f],f&&c.push(f-1),f<this.num-1&&c.unshift(f+1));c.length;)f=c.pop(),this.translateX(f,b+this.positions[f],0)},ontouchend:function(a){this.options.stopTouchEventsPropagation&&this.stopPropagation(a);var b,c,d,e,f,g=this.index,h=this.options.transitionSpeed,i=this.slideWidth,j=Number(Date.now()-this.touchStart.time)<250,k=j&&Math.abs(this.touchDelta.x)>20||Math.abs(this.touchDelta.x)>i/2,l=!g&&this.touchDelta.x>0||g===this.num-1&&this.touchDelta.x<0,m=!k&&this.options.closeOnSwipeUpOrDown&&(j&&Math.abs(this.touchDelta.y)>20||Math.abs(this.touchDelta.y)>this.slideHeight/2);this.options.continuous&&(l=!1),b=this.touchDelta.x<0?-1:1,this.isScrolling?m?this.close():this.translateY(g,0,h):k&&!l?(c=g+b,d=g-b,e=i*b,f=-i*b,this.options.continuous?(this.move(this.circle(c),e,0),this.move(this.circle(g-2*b),f,0)):c>=0&&c<this.num&&this.move(c,e,0),this.move(g,this.positions[g]+e,h),this.move(this.circle(d),this.positions[this.circle(d)]+e,h),g=this.circle(d),this.onslide(g)):this.options.continuous?(this.move(this.circle(g-1),-i,h),this.move(g,0,h),this.move(this.circle(g+1),i,h)):(g&&this.move(g-1,-i,h),this.move(g,0,h),g<this.num-1&&this.move(g+1,i,h))},ontouchcancel:function(a){this.touchStart&&(this.ontouchend(a),delete this.touchStart)},ontransitionend:function(a){var b=this.slides[this.index];a&&b!==a.target||(this.interval&&this.play(),this.setTimeout(this.options.onslideend,[this.index,b]))},oncomplete:function(b){var c,d=b.target||b.srcElement,e=d&&d.parentNode;d&&e&&(c=this.getNodeIndex(e),a(e).removeClass(this.options.slideLoadingClass),"error"===b.type?(a(e).addClass(this.options.slideErrorClass),this.elements[c]=3):this.elements[c]=2,d.clientHeight>this.container[0].clientHeight&&(d.style.maxHeight=this.container[0].clientHeight),this.interval&&this.slides[this.index]===e&&this.play(),this.setTimeout(this.options.onslidecomplete,[c,e]))},onload:function(a){this.oncomplete(a)},onerror:function(a){this.oncomplete(a)},onkeydown:function(a){switch(a.which||a.keyCode){case 13:this.options.toggleControlsOnReturn&&(this.preventDefault(a),this.toggleControls());break;case 27:this.options.closeOnEscape&&(this.close(),a.stopImmediatePropagation());break;case 32:this.options.toggleSlideshowOnSpace&&(this.preventDefault(a),this.toggleSlideshow());break;case 37:this.options.enableKeyboardNavigation&&(this.preventDefault(a),this.prev());break;case 39:this.options.enableKeyboardNavigation&&(this.preventDefault(a),this.next())}},handleClick:function(b){var c=this.options,d=b.target||b.srcElement,e=d.parentNode,f=function(b){return a(d).hasClass(b)||a(e).hasClass(b)};f(c.toggleClass)?(this.preventDefault(b),this.toggleControls()):f(c.prevClass)?(this.preventDefault(b),this.prev()):f(c.nextClass)?(this.preventDefault(b),this.next()):f(c.closeClass)?(this.preventDefault(b),this.close()):f(c.playPauseClass)?(this.preventDefault(b),this.toggleSlideshow()):e===this.slidesContainer[0]?(this.preventDefault(b),c.closeOnSlideClick?this.close():this.toggleControls()):e.parentNode&&e.parentNode===this.slidesContainer[0]&&(this.preventDefault(b))},onclick:function(a){return this.options.emulateTouchEvents&&this.touchDelta&&(Math.abs(this.touchDelta.x)>20||Math.abs(this.touchDelta.y)>20)?void delete this.touchDelta:this.handleClick(a)},updateEdgeClasses:function(a){a?this.container.removeClass(this.options.leftEdgeClass):this.container.addClass(this.options.leftEdgeClass),a===this.num-1?this.container.addClass(this.options.rightEdgeClass):this.container.removeClass(this.options.rightEdgeClass)},handleSlide:function(a){this.options.continuous||this.updateEdgeClasses(a),this.loadElements(a),this.options.unloadElements&&this.unloadElements(a),this.setTitle(a)},onslide:function(a){this.index=a,this.handleSlide(a),this.setTimeout(this.options.onslide,[a,this.slides[a]])},setTitle:function(a){var b=this.slides[a].firstChild.title,c=this.titleElement;c.length&&(this.titleElement.empty(),b&&c[0].appendChild(document.createTextNode(b)))},setTimeout:function(a,b,c){var d=this;return a&&window.setTimeout(function(){a.apply(d,b||[])},c||0)},imageFactory:function(b,c){var d,e,f,g=this,h=this.imagePrototype.cloneNode(!1),i=b,j=this.options.stretchImages,k=function(b){if(!d){if(b={type:b.type,target:e},!e.parentNode)return g.setTimeout(k,[b]);d=!0,a(h).off("load error",k),j&&"load"===b.type&&(e.style.background='url("'+i+'") center no-repeat',e.style.backgroundSize=j),c(b)}};return"string"!=typeof i&&(i=this.getItemProperty(b,this.options.urlProperty),f=this.getItemProperty(b,this.options.titleProperty)),j===!0&&(j="contain"),j=this.support.backgroundSize&&this.support.backgroundSize[j]&&j,j?e=this.elementPrototype.cloneNode(!1):(e=h,h.draggable=!1),f&&(e.title=f),a(h).on("load error",k),h.src=i,e},createElement:function(b,c){var d=b&&this.getItemProperty(b,this.options.typeProperty),e=d&&this[d.split("/")[0]+"Factory"]||this.imageFactory,f=b&&e.call(this,b,c);return f||(f=this.elementPrototype.cloneNode(!1),this.setTimeout(c,[{type:"error",target:f}])),a(f).addClass(this.options.slideContentClass),f},loadElement:function(b){this.elements[b]||(this.slides[b].firstChild?this.elements[b]=a(this.slides[b]).hasClass(this.options.slideErrorClass)?3:2:(this.elements[b]=1,a(this.slides[b]).addClass(this.options.slideLoadingClass),this.slides[b].appendChild(this.createElement(this.list[b],this.proxyListener))))},loadElements:function(a){var b,c=Math.min(this.num,2*this.options.preloadRange+1),d=a;for(b=0;c>b;b+=1)d+=b*(b%2===0?-1:1),d=this.circle(d),this.loadElement(d)},unloadElements:function(a){var b,c;for(b in this.elements)this.elements.hasOwnProperty(b)&&(c=Math.abs(a-b),c>this.options.preloadRange&&c+this.options.preloadRange<this.num&&(this.unloadSlide(b),delete this.elements[b]))},addSlide:function(a){var b=this.slidePrototype.cloneNode(!1);b.setAttribute("data-index",a),this.slidesContainer[0].appendChild(b),this.slides.push(b)},positionSlide:function(a){var b=this.slides[a];b.style.width=this.slideWidth+"px",this.support.transform&&(b.style.left=a*-this.slideWidth+"px",this.move(a,this.index>a?-this.slideWidth:this.index<a?this.slideWidth:0,0))},initSlides:function(b){var c,d;for(b||(this.positions=[],this.positions.length=this.num,this.elements={},this.imagePrototype=document.createElement("img"),this.elementPrototype=document.createElement("div"),this.slidePrototype=document.createElement("div"),a(this.slidePrototype).addClass(this.options.slideClass),this.slides=this.slidesContainer[0].children,c=this.options.clearSlides||this.slides.length!==this.num),this.slideWidth=this.container[0].offsetWidth,this.slideHeight=this.container[0].offsetHeight,this.slidesContainer[0].style.width=this.num*this.slideWidth+"px",c&&this.resetSlides(),d=0;d<this.num;d+=1)c&&this.addSlide(d),this.positionSlide(d);this.options.continuous&&this.support.transform&&(this.move(this.circle(this.index-1),-this.slideWidth,0),this.move(this.circle(this.index+1),this.slideWidth,0)),this.support.transform||(this.slidesContainer[0].style.left=this.index*-this.slideWidth+"px")},unloadSlide:function(a){var b,c;b=this.slides[a],c=b.firstChild,null!==c&&b.removeChild(c)},unloadAllSlides:function(){var a,b;for(a=0,b=this.slides.length;b>a;a++)this.unloadSlide(a)},toggleControls:function(){var a=this.options.controlsClass;this.container.hasClass(a)?this.container.removeClass(a):this.container.addClass(a)},toggleSlideshow:function(){this.interval?this.pause():this.play()},getNodeIndex:function(a){return parseInt(a.getAttribute("data-index"),10)},getNestedProperty:function(a,b){return b.replace(/\[(?:'([^']+)'|"([^"]+)"|(\d+))\]|(?:(?:^|\.)([^\.\[]+))/g,function(b,c,d,e,f){var g=f||c||d||e&&parseInt(e,10);b&&a&&(a=a[g])}),a},getDataProperty:function(b,c){if(b.getAttribute){var d=b.getAttribute("data-"+c.replace(/([A-Z])/g,"-$1").toLowerCase());if("string"==typeof d){if(/^(true|false|null|-?\d+(\.\d+)?|\{[\s\S]*\}|\[[\s\S]*\])$/.test(d))try{return a.parseJSON(d)}catch(e){}return d}}},getItemProperty:function(a,b){var c=a[b];return void 0===c&&(c=this.getDataProperty(a,b),void 0===c&&(c=this.getNestedProperty(a,b))),c},initStartIndex:function(){var a,b=this.options.index,c=this.options.urlProperty;if(b&&"number"!=typeof b)for(a=0;a<this.num;a+=1)if(this.list[a]===b||this.getItemProperty(this.list[a],c)===this.getItemProperty(b,c)){b=a;break}this.index=this.circle(parseInt(b,10)||0)},initEventListeners:function(){var b=this,c=this.slidesContainer,d=function(a){var c=b.support.transition&&b.support.transition.end===a.type?"transitionend":a.type;b["on"+c](a)};a(window).on("resize",d),a(document.body).on("keydown",d),this.container.on("click",d),this.support.touch?c.on("touchstart touchmove touchend touchcancel",d):this.options.emulateTouchEvents&&this.support.transition&&c.on("mousedown mousemove mouseup mouseout",d),this.support.transition&&c.on(this.support.transition.end,d),this.proxyListener=d},destroyEventListeners:function(){var b=this.slidesContainer,c=this.proxyListener;a(window).off("resize",c),a(document.body).off("keydown",c),this.container.off("click",c),this.support.touch?b.off("touchstart touchmove touchend touchcancel",c):this.options.emulateTouchEvents&&this.support.transition&&b.off("mousedown mousemove mouseup mouseout",c),this.support.transition&&b.off(this.support.transition.end,c)},handleOpen:function(){this.options.onopened&&this.options.onopened.call(this)},initWidget:function(){var b=this,c=function(a){a.target===b.container[0]&&(b.container.off(b.support.transition.end,c),b.handleOpen())};return this.container=a(this.options.container),this.container.length?(this.slidesContainer=this.container.find(this.options.slidesContainer).first(),this.slidesContainer.length?(this.titleElement=this.container.find(this.options.titleElement).first(),1===this.num&&this.container.addClass(this.options.singleClass),this.options.onopen&&this.options.onopen.call(this),this.support.transition&&this.options.displayTransition?this.container.on(this.support.transition.end,c):this.handleOpen(),this.options.hidePageScrollbars&&(this.bodyOverflowStyle=document.body.style.overflow,document.body.style.overflow="hidden"),this.container[0].style.display="block",this.initSlides(),void this.container.addClass(this.options.displayClass)):(this.console.log("blueimp Gallery: Slides container not found.",this.options.slidesContainer),!1)):(this.console.log("blueimp Gallery: Widget container not found.",this.options.container),!1)},initOptions:function(b){this.options=a.extend({},this.options),(b&&b.carousel||this.options.carousel&&(!b||b.carousel!==!1))&&a.extend(this.options,this.carouselOptions),a.extend(this.options,b),this.num<3&&(this.options.continuous=this.options.continuous?null:!1),this.support.transition||(this.options.emulateTouchEvents=!1),this.options.event&&this.preventDefault(this.options.event)}}),b}),function(a){"use strict";"function"==typeof define&&define.amd?define(["./blueimp-helper","./blueimp-gallery"],a):a(window.blueimp.helper||window.jQuery,window.blueimp.Gallery)}(function(a,b){"use strict";a.extend(b.prototype.options,{fullScreen:!1});var c=b.prototype.initialize,d=b.prototype.close;return a.extend(b.prototype,{getFullScreenElement:function(){return document.fullscreenElement||document.webkitFullscreenElement||document.mozFullScreenElement||document.msFullscreenElement},requestFullScreen:function(a){a.requestFullscreen?a.requestFullscreen():a.webkitRequestFullscreen?a.webkitRequestFullscreen():a.mozRequestFullScreen?a.mozRequestFullScreen():a.msRequestFullscreen&&a.msRequestFullscreen()},exitFullScreen:function(){document.exitFullscreen?document.exitFullscreen():document.webkitCancelFullScreen?document.webkitCancelFullScreen():document.mozCancelFullScreen?document.mozCancelFullScreen():document.msExitFullscreen&&document.msExitFullscreen()},initialize:function(){c.call(this),this.options.fullScreen&&!this.getFullScreenElement()&&this.requestFullScreen(this.container[0])},close:function(){this.getFullScreenElement()===this.container[0]&&this.exitFullScreen(),d.call(this)}}),b}),function(a){"use strict";"function"==typeof define&&define.amd?define(["./blueimp-helper","./blueimp-gallery"],a):a(window.blueimp.helper||window.jQuery,window.blueimp.Gallery)}(function(a,b){"use strict";a.extend(b.prototype.options,{indicatorContainer:"ol",activeIndicatorClass:"active",thumbnailProperty:"thumbnail",thumbnailIndicators:!0});var c=b.prototype.initSlides,d=b.prototype.addSlide,e=b.prototype.resetSlides,f=b.prototype.handleClick,g=b.prototype.handleSlide,h=b.prototype.handleClose;return a.extend(b.prototype,{createIndicator:function(b){var c,d,e=this.indicatorPrototype.cloneNode(!1),f=this.getItemProperty(b,this.options.titleProperty),g=this.options.thumbnailProperty;return this.options.thumbnailIndicators&&(g&&(c=this.getItemProperty(b,g)),void 0===c&&(d=b.getElementsByTagName&&a(b).find("img")[0],d&&(c=d.src)),c&&(e.style.backgroundImage='url("'+c+'")')),f&&(e.title=f),e},addIndicator:function(a){if(this.indicatorContainer.length){var b=this.createIndicator(this.list[a]);b.setAttribute("data-index",a),this.indicatorContainer[0].appendChild(b),this.indicators.push(b)}},setActiveIndicator:function(b){this.indicators&&(this.activeIndicator&&this.activeIndicator.removeClass(this.options.activeIndicatorClass),this.activeIndicator=a(this.indicators[b]),this.activeIndicator.addClass(this.options.activeIndicatorClass))},initSlides:function(a){a||(this.indicatorContainer=this.container.find(this.options.indicatorContainer),this.indicatorContainer.length&&(this.indicatorPrototype=document.createElement("li"),this.indicators=this.indicatorContainer[0].children)),c.call(this,a)},addSlide:function(a){d.call(this,a),this.addIndicator(a)},resetSlides:function(){e.call(this),this.indicatorContainer.empty(),this.indicators=[]},handleClick:function(a){var b=a.target||a.srcElement,c=b.parentNode;if(c===this.indicatorContainer[0])this.preventDefault(a),this.slide(this.getNodeIndex(b));else{if(c.parentNode!==this.indicatorContainer[0])return f.call(this,a);this.preventDefault(a),this.slide(this.getNodeIndex(c))}},handleSlide:function(a){g.call(this,a),this.setActiveIndicator(a)},handleClose:function(){this.activeIndicator&&this.activeIndicator.removeClass(this.options.activeIndicatorClass),h.call(this)}}),b}),function(a){"use strict";"function"==typeof define&&define.amd?define(["./blueimp-helper","./blueimp-gallery"],a):a(window.blueimp.helper||window.jQuery,window.blueimp.Gallery)}(function(a,b){"use strict";a.extend(b.prototype.options,{videoContentClass:"video-content",videoLoadingClass:"video-loading",videoPlayingClass:"video-playing",videoPosterProperty:"poster",videoSourcesProperty:"sources"});var c=b.prototype.handleSlide;return a.extend(b.prototype,{handleSlide:function(a){c.call(this,a),this.playingVideo&&this.playingVideo.pause()},videoFactory:function(b,c,d){var e,f,g,h,i,j=this,k=this.options,l=this.elementPrototype.cloneNode(!1),m=a(l),n=[{type:"error",target:l}],o=d||document.createElement("video"),p=this.getItemProperty(b,k.urlProperty),q=this.getItemProperty(b,k.typeProperty),r=this.getItemProperty(b,k.titleProperty),s=this.getItemProperty(b,k.videoPosterProperty),t=this.getItemProperty(b,k.videoSourcesProperty);if(m.addClass(k.videoContentClass),r&&(l.title=r),o.canPlayType)if(p&&q&&o.canPlayType(q))o.src=p;else for(;t&&t.length;)if(f=t.shift(),p=this.getItemProperty(f,k.urlProperty),q=this.getItemProperty(f,k.typeProperty),p&&q&&o.canPlayType(q)){o.src=p;break}return s&&(o.poster=s,e=this.imagePrototype.cloneNode(!1),a(e).addClass(k.toggleClass),e.src=s,e.draggable=!1,l.appendChild(e)),g=document.createElement("a"),g.setAttribute("target","_blank"),d||g.setAttribute("download",r),g.href=p,o.src&&(o.controls=!0,(d||a(o)).on("error",function(){j.setTimeout(c,n)}).on("pause",function(){h=!1,m.removeClass(j.options.videoLoadingClass).removeClass(j.options.videoPlayingClass),i&&j.container.addClass(j.options.controlsClass),delete j.playingVideo,j.interval&&j.play()}).on("playing",function(){h=!1,m.removeClass(j.options.videoLoadingClass).addClass(j.options.videoPlayingClass),j.container.hasClass(j.options.controlsClass)?(i=!0,j.container.removeClass(j.options.controlsClass)):i=!1}).on("play",function(){window.clearTimeout(j.timeout),h=!0,m.addClass(j.options.videoLoadingClass),j.playingVideo=o}),a(g).on("click",function(a){j.preventDefault(a),h?o.pause():o.play()}),l.appendChild(d&&d.element||o)),l.appendChild(g),this.setTimeout(c,[{type:"load",target:l}]),l}}),b}),function(a){"use strict";"function"==typeof define&&define.amd?define(["./blueimp-helper","./blueimp-gallery-video"],a):a(window.blueimp.helper||window.jQuery,window.blueimp.Gallery)}(function(a,b){"use strict";if(!window.postMessage)return b;a.extend(b.prototype.options,{vimeoVideoIdProperty:"vimeo",vimeoPlayerUrl:"//player.vimeo.com/video/VIDEO_ID?api=1&player_id=PLAYER_ID",vimeoPlayerIdPrefix:"vimeo-player-",vimeoClickToPlay:!0});var c=b.prototype.textFactory||b.prototype.imageFactory,d=function(a,b,c,d){this.url=a,this.videoId=b,this.playerId=c,this.clickToPlay=d,this.element=document.createElement("div"),this.listeners={}},e=0;return a.extend(d.prototype,{canPlayType:function(){return!0},on:function(a,b){return this.listeners[a]=b,this},loadAPI:function(){for(var b,c,d=this,e="//"+("https"===location.protocol?"secure-":"")+"a.vimeocdn.com/js/froogaloop2.min.js",f=document.getElementsByTagName("script"),g=f.length,h=function(){!c&&d.playOnReady&&d.play(),c=!0};g;)if(g-=1,f[g].src===e){b=f[g];break}b||(b=document.createElement("script"),b.src=e),a(b).on("load",h),f[0].parentNode.insertBefore(b,f[0]),/loaded|complete/.test(b.readyState)&&h()},onReady:function(){var a=this;this.ready=!0,this.player.addEvent("play",function(){a.hasPlayed=!0,a.onPlaying()}),this.player.addEvent("pause",function(){a.onPause()}),this.player.addEvent("finish",function(){a.onPause()}),this.playOnReady&&this.play()},onPlaying:function(){this.playStatus<2&&(this.listeners.playing(),this.playStatus=2)},onPause:function(){this.listeners.pause(),delete this.playStatus},insertIframe:function(){var a=document.createElement("iframe");a.src=this.url.replace("VIDEO_ID",this.videoId).replace("PLAYER_ID",this.playerId),a.id=this.playerId,this.element.parentNode.replaceChild(a,this.element),this.element=a},play:function(){var a=this;this.playStatus||(this.listeners.play(),this.playStatus=1),this.ready?!this.hasPlayed&&(this.clickToPlay||window.navigator&&/iP(hone|od|ad)/.test(window.navigator.platform))?this.onPlaying():this.player.api("play"):(this.playOnReady=!0,window.$f?this.player||(this.insertIframe(),this.player=$f(this.element),this.player.addEvent("ready",function(){a.onReady()})):this.loadAPI())},pause:function(){this.ready?this.player.api("pause"):this.playStatus&&(delete this.playOnReady,this.listeners.pause(),delete this.playStatus)}}),a.extend(b.prototype,{VimeoPlayer:d,textFactory:function(a,b){var f=this.options,g=this.getItemProperty(a,f.vimeoVideoIdProperty);return g?(void 0===this.getItemProperty(a,f.urlProperty)&&(a[f.urlProperty]="//vimeo.com/"+g),e+=1,this.videoFactory(a,b,new d(f.vimeoPlayerUrl,g,f.vimeoPlayerIdPrefix+e,f.vimeoClickToPlay))):c.call(this,a,b)}}),b}),function(a){"use strict";"function"==typeof define&&define.amd?define(["./blueimp-helper","./blueimp-gallery-video"],a):a(window.blueimp.helper||window.jQuery,window.blueimp.Gallery)}(function(a,b){"use strict";if(!window.postMessage)return b;a.extend(b.prototype.options,{youTubeVideoIdProperty:"youtube",youTubePlayerVars:{wmode:"transparent"},youTubeClickToPlay:!0});var c=b.prototype.textFactory||b.prototype.imageFactory,d=function(a,b,c){this.videoId=a,this.playerVars=b,this.clickToPlay=c,this.element=document.createElement("div"),this.listeners={}};return a.extend(d.prototype,{canPlayType:function(){return!0},on:function(a,b){return this.listeners[a]=b,this},loadAPI:function(){var a,b=this,c=window.onYouTubeIframeAPIReady,d="//www.youtube.com/iframe_api",e=document.getElementsByTagName("script"),f=e.length;for(window.onYouTubeIframeAPIReady=function(){c&&c.apply(this),b.playOnReady&&b.play()};f;)if(f-=1,e[f].src===d)return;a=document.createElement("script"),a.src=d,e[0].parentNode.insertBefore(a,e[0])},onReady:function(){this.ready=!0,this.playOnReady&&this.play()},onPlaying:function(){this.playStatus<2&&(this.listeners.playing(),this.playStatus=2)},onPause:function(){b.prototype.setTimeout.call(this,this.checkSeek,null,2e3)},checkSeek:function(){(this.stateChange===YT.PlayerState.PAUSED||this.stateChange===YT.PlayerState.ENDED)&&(this.listeners.pause(),delete this.playStatus)},onStateChange:function(a){switch(a.data){case YT.PlayerState.PLAYING:this.hasPlayed=!0,this.onPlaying();break;case YT.PlayerState.PAUSED:case YT.PlayerState.ENDED:this.onPause()}this.stateChange=a.data},onError:function(a){this.listeners.error(a)},play:function(){var a=this;this.playStatus||(this.listeners.play(),this.playStatus=1),this.ready?!this.hasPlayed&&(this.clickToPlay||window.navigator&&/iP(hone|od|ad)/.test(window.navigator.platform))?this.onPlaying():this.player.playVideo():(this.playOnReady=!0,window.YT&&YT.Player?this.player||(this.player=new YT.Player(this.element,{videoId:this.videoId,playerVars:this.playerVars,events:{onReady:function(){a.onReady()},onStateChange:function(b){a.onStateChange(b)},onError:function(b){a.onError(b)}}})):this.loadAPI())},pause:function(){this.ready?this.player.pauseVideo():this.playStatus&&(delete this.playOnReady,this.listeners.pause(),delete this.playStatus)}}),a.extend(b.prototype,{YouTubePlayer:d,textFactory:function(a,b){var e=this.options,f=this.getItemProperty(a,e.youTubeVideoIdProperty);return f?(void 0===this.getItemProperty(a,e.urlProperty)&&(a[e.urlProperty]="//www.youtube.com/watch?v="+f),void 0===this.getItemProperty(a,e.videoPosterProperty)&&(a[e.videoPosterProperty]="//img.youtube.com/vi/"+f+"/maxresdefault.jpg"),this.videoFactory(a,b,new d(f,e.youTubePlayerVars,e.youTubeClickToPlay))):c.call(this,a,b)}}),b}),function(a){"use strict";"function"==typeof define&&define.amd?define(["jquery","./blueimp-gallery"],a):a(window.jQuery,window.blueimp.Gallery)}(function(a,b){"use strict";a(document).on("click","[data-gallery]",function(c){var d=a(this).data("gallery"),e=a(d),f=e.length&&e||a(b.prototype.options.container),g={onopen:function(){f.data("gallery",this).trigger("open")},onopened:function(){f.trigger("opened")},onslide:function(){f.trigger("slide",arguments)},onslideend:function(){f.trigger("slideend",arguments)},onslidecomplete:function(){f.trigger("slidecomplete",arguments)},onclose:function(){f.trigger("close")},onclosed:function(){f.trigger("closed").removeData("gallery")}},h=a.extend(f.data(),{container:f[0],index:this,event:c},g),i=a('[data-gallery="'+d+'"]');return h.filter&&(i=i.filter(h.filter)),new b(i,h)})});;
!function(a){"use strict";"function"==typeof define&&define.amd?define(["jquery","./blueimp-gallery"],a):a(window.jQuery,window.blueimp.Gallery)}(function(a,b){"use strict";a(document).on("click","[data-dialog]",function(c){var d=a(this).data("dialog"),e=a(d),f=e.length&&e||a("#blueimp-gallery-dialog"),g=f.find(".blueimp-gallery"),h=!1,i=a.extend({modal:!0,width:"auto"},f.data()),j=a.extend({toggleControlsOnReturn:!0,toggleSlideshowOnSpace:!0,enableKeyboardNavigation:!0,startSlideshow:!1},g.data(),{container:g[0],index:this,event:c,carousel:!0,onslide:function(b,c){var d=this,e=c.firstChild.title;h?f.dialog("option","title",e):(i.title=e,f.data("gallery",this).one("dialogclose",function(){a(this).dialog("destroy"),d.handleClose()}).one("dialogresize",function(){g.css("width","auto")}).dialog(i).css({visibility:"visible",height:"auto",overflow:"visible"}),h=!0),f.trigger("slide",arguments)},onslideend:function(){f.trigger("slideend",arguments)},onslidecomplete:function(){f.trigger("slidecomplete",arguments)}}),k=a('[data-dialog="'+d+'"]'),l=function(){var b=a(window).width()-(i.offsetWidth||100),c=a(window).height()-(i.offsetHeight||150),d=16/9/(b/c);1>d&&(b*=d),g.css("width",b)};return j.filter&&(k=k.filter(j.filter)),f.css({visibility:"hidden",height:0,overflow:"hidden"}),l(),new b(k,j)})});;
/*! jQuery UI - v1.9.2 - 2014-03-21
* http://jqueryui.com
* Includes: jquery.ui.effect.js
* Copyright 2014 jQuery Foundation and other contributors; Licensed MIT */

jQuery.effects||function(e,t){var i=e.uiBackCompat!==!1,a="ui-effects-";e.effects={effect:{}},function(t,i){function a(e,t,i){var a=c[t.type]||{};return null==e?i||!t.def?null:t.def:(e=a.floor?~~e:parseFloat(e),isNaN(e)?t.def:a.mod?(e+a.mod)%a.mod:0>e?0:e>a.max?a.max:e)}function s(e){var a=u(),s=a._rgba=[];return e=e.toLowerCase(),m(l,function(t,n){var r,o=n.re.exec(e),h=o&&n.parse(o),l=n.space||"rgba";return h?(r=a[l](h),a[d[l].cache]=r[d[l].cache],s=a._rgba=r._rgba,!1):i}),s.length?("0,0,0,0"===s.join()&&t.extend(s,r.transparent),a):r[e]}function n(e,t,i){return i=(i+1)%1,1>6*i?e+6*(t-e)*i:1>2*i?t:2>3*i?e+6*(t-e)*(2/3-i):e}var r,o="backgroundColor borderBottomColor borderLeftColor borderRightColor borderTopColor color columnRuleColor outlineColor textDecorationColor textEmphasisColor".split(" "),h=/^([\-+])=\s*(\d+\.?\d*)/,l=[{re:/rgba?\(\s*(\d{1,3})\s*,\s*(\d{1,3})\s*,\s*(\d{1,3})\s*(?:,\s*(\d+(?:\.\d+)?)\s*)?\)/,parse:function(e){return[e[1],e[2],e[3],e[4]]}},{re:/rgba?\(\s*(\d+(?:\.\d+)?)\%\s*,\s*(\d+(?:\.\d+)?)\%\s*,\s*(\d+(?:\.\d+)?)\%\s*(?:,\s*(\d+(?:\.\d+)?)\s*)?\)/,parse:function(e){return[2.55*e[1],2.55*e[2],2.55*e[3],e[4]]}},{re:/#([a-f0-9]{2})([a-f0-9]{2})([a-f0-9]{2})/,parse:function(e){return[parseInt(e[1],16),parseInt(e[2],16),parseInt(e[3],16)]}},{re:/#([a-f0-9])([a-f0-9])([a-f0-9])/,parse:function(e){return[parseInt(e[1]+e[1],16),parseInt(e[2]+e[2],16),parseInt(e[3]+e[3],16)]}},{re:/hsla?\(\s*(\d+(?:\.\d+)?)\s*,\s*(\d+(?:\.\d+)?)\%\s*,\s*(\d+(?:\.\d+)?)\%\s*(?:,\s*(\d+(?:\.\d+)?)\s*)?\)/,space:"hsla",parse:function(e){return[e[1],e[2]/100,e[3]/100,e[4]]}}],u=t.Color=function(e,i,a,s){return new t.Color.fn.parse(e,i,a,s)},d={rgba:{props:{red:{idx:0,type:"byte"},green:{idx:1,type:"byte"},blue:{idx:2,type:"byte"}}},hsla:{props:{hue:{idx:0,type:"degrees"},saturation:{idx:1,type:"percent"},lightness:{idx:2,type:"percent"}}}},c={"byte":{floor:!0,max:255},percent:{max:1},degrees:{mod:360,floor:!0}},p=u.support={},f=t("<p>")[0],m=t.each;f.style.cssText="background-color:rgba(1,1,1,.5)",p.rgba=f.style.backgroundColor.indexOf("rgba")>-1,m(d,function(e,t){t.cache="_"+e,t.props.alpha={idx:3,type:"percent",def:1}}),u.fn=t.extend(u.prototype,{parse:function(n,o,h,l){if(n===i)return this._rgba=[null,null,null,null],this;(n.jquery||n.nodeType)&&(n=t(n).css(o),o=i);var c=this,p=t.type(n),f=this._rgba=[];return o!==i&&(n=[n,o,h,l],p="array"),"string"===p?this.parse(s(n)||r._default):"array"===p?(m(d.rgba.props,function(e,t){f[t.idx]=a(n[t.idx],t)}),this):"object"===p?(n instanceof u?m(d,function(e,t){n[t.cache]&&(c[t.cache]=n[t.cache].slice())}):m(d,function(t,i){var s=i.cache;m(i.props,function(e,t){if(!c[s]&&i.to){if("alpha"===e||null==n[e])return;c[s]=i.to(c._rgba)}c[s][t.idx]=a(n[e],t,!0)}),c[s]&&0>e.inArray(null,c[s].slice(0,3))&&(c[s][3]=1,i.from&&(c._rgba=i.from(c[s])))}),this):i},is:function(e){var t=u(e),a=!0,s=this;return m(d,function(e,n){var r,o=t[n.cache];return o&&(r=s[n.cache]||n.to&&n.to(s._rgba)||[],m(n.props,function(e,t){return null!=o[t.idx]?a=o[t.idx]===r[t.idx]:i})),a}),a},_space:function(){var e=[],t=this;return m(d,function(i,a){t[a.cache]&&e.push(i)}),e.pop()},transition:function(e,t){var i=u(e),s=i._space(),n=d[s],r=0===this.alpha()?u("transparent"):this,o=r[n.cache]||n.to(r._rgba),h=o.slice();return i=i[n.cache],m(n.props,function(e,s){var n=s.idx,r=o[n],l=i[n],u=c[s.type]||{};null!==l&&(null===r?h[n]=l:(u.mod&&(l-r>u.mod/2?r+=u.mod:r-l>u.mod/2&&(r-=u.mod)),h[n]=a((l-r)*t+r,s)))}),this[s](h)},blend:function(e){if(1===this._rgba[3])return this;var i=this._rgba.slice(),a=i.pop(),s=u(e)._rgba;return u(t.map(i,function(e,t){return(1-a)*s[t]+a*e}))},toRgbaString:function(){var e="rgba(",i=t.map(this._rgba,function(e,t){return null==e?t>2?1:0:e});return 1===i[3]&&(i.pop(),e="rgb("),e+i.join()+")"},toHslaString:function(){var e="hsla(",i=t.map(this.hsla(),function(e,t){return null==e&&(e=t>2?1:0),t&&3>t&&(e=Math.round(100*e)+"%"),e});return 1===i[3]&&(i.pop(),e="hsl("),e+i.join()+")"},toHexString:function(e){var i=this._rgba.slice(),a=i.pop();return e&&i.push(~~(255*a)),"#"+t.map(i,function(e){return e=(e||0).toString(16),1===e.length?"0"+e:e}).join("")},toString:function(){return 0===this._rgba[3]?"transparent":this.toRgbaString()}}),u.fn.parse.prototype=u.fn,d.hsla.to=function(e){if(null==e[0]||null==e[1]||null==e[2])return[null,null,null,e[3]];var t,i,a=e[0]/255,s=e[1]/255,n=e[2]/255,r=e[3],o=Math.max(a,s,n),h=Math.min(a,s,n),l=o-h,u=o+h,d=.5*u;return t=h===o?0:a===o?60*(s-n)/l+360:s===o?60*(n-a)/l+120:60*(a-s)/l+240,i=0===d||1===d?d:.5>=d?l/u:l/(2-u),[Math.round(t)%360,i,d,null==r?1:r]},d.hsla.from=function(e){if(null==e[0]||null==e[1]||null==e[2])return[null,null,null,e[3]];var t=e[0]/360,i=e[1],a=e[2],s=e[3],r=.5>=a?a*(1+i):a+i-a*i,o=2*a-r;return[Math.round(255*n(o,r,t+1/3)),Math.round(255*n(o,r,t)),Math.round(255*n(o,r,t-1/3)),s]},m(d,function(e,s){var n=s.props,r=s.cache,o=s.to,l=s.from;u.fn[e]=function(e){if(o&&!this[r]&&(this[r]=o(this._rgba)),e===i)return this[r].slice();var s,h=t.type(e),d="array"===h||"object"===h?e:arguments,c=this[r].slice();return m(n,function(e,t){var i=d["object"===h?e:t.idx];null==i&&(i=c[t.idx]),c[t.idx]=a(i,t)}),l?(s=u(l(c)),s[r]=c,s):u(c)},m(n,function(i,a){u.fn[i]||(u.fn[i]=function(s){var n,r=t.type(s),o="alpha"===i?this._hsla?"hsla":"rgba":e,l=this[o](),u=l[a.idx];return"undefined"===r?u:("function"===r&&(s=s.call(this,u),r=t.type(s)),null==s&&a.empty?this:("string"===r&&(n=h.exec(s),n&&(s=u+parseFloat(n[2])*("+"===n[1]?1:-1))),l[a.idx]=s,this[o](l)))})})}),m(o,function(e,i){t.cssHooks[i]={set:function(e,a){var n,r,o="";if("string"!==t.type(a)||(n=s(a))){if(a=u(n||a),!p.rgba&&1!==a._rgba[3]){for(r="backgroundColor"===i?e.parentNode:e;(""===o||"transparent"===o)&&r&&r.style;)try{o=t.css(r,"backgroundColor"),r=r.parentNode}catch(h){}a=a.blend(o&&"transparent"!==o?o:"_default")}a=a.toRgbaString()}try{e.style[i]=a}catch(l){}}},t.fx.step[i]=function(e){e.colorInit||(e.start=u(e.elem,i),e.end=u(e.end),e.colorInit=!0),t.cssHooks[i].set(e.elem,e.start.transition(e.end,e.pos))}}),t.cssHooks.borderColor={expand:function(e){var t={};return m(["Top","Right","Bottom","Left"],function(i,a){t["border"+a+"Color"]=e}),t}},r=t.Color.names={aqua:"#00ffff",black:"#000000",blue:"#0000ff",fuchsia:"#ff00ff",gray:"#808080",green:"#008000",lime:"#00ff00",maroon:"#800000",navy:"#000080",olive:"#808000",purple:"#800080",red:"#ff0000",silver:"#c0c0c0",teal:"#008080",white:"#ffffff",yellow:"#ffff00",transparent:[null,null,null,0],_default:"#ffffff"}}(jQuery),function(){function i(){var t,i,a=this.ownerDocument.defaultView?this.ownerDocument.defaultView.getComputedStyle(this,null):this.currentStyle,s={};if(a&&a.length&&a[0]&&a[a[0]])for(i=a.length;i--;)t=a[i],"string"==typeof a[t]&&(s[e.camelCase(t)]=a[t]);else for(t in a)"string"==typeof a[t]&&(s[t]=a[t]);return s}function a(t,i){var a,s,r={};for(a in i)s=i[a],t[a]!==s&&(n[a]||(e.fx.step[a]||!isNaN(parseFloat(s)))&&(r[a]=s));return r}var s=["add","remove","toggle"],n={border:1,borderBottom:1,borderColor:1,borderLeft:1,borderRight:1,borderTop:1,borderWidth:1,margin:1,padding:1};e.each(["borderLeftStyle","borderRightStyle","borderBottomStyle","borderTopStyle"],function(t,i){e.fx.step[i]=function(e){("none"!==e.end&&!e.setAttr||1===e.pos&&!e.setAttr)&&(jQuery.style(e.elem,i,e.end),e.setAttr=!0)}}),e.effects.animateClass=function(t,n,r,o){var h=e.speed(n,r,o);return this.queue(function(){var n,r=e(this),o=r.attr("class")||"",l=h.children?r.find("*").andSelf():r;l=l.map(function(){var t=e(this);return{el:t,start:i.call(this)}}),n=function(){e.each(s,function(e,i){t[i]&&r[i+"Class"](t[i])})},n(),l=l.map(function(){return this.end=i.call(this.el[0]),this.diff=a(this.start,this.end),this}),r.attr("class",o),l=l.map(function(){var t=this,i=e.Deferred(),a=jQuery.extend({},h,{queue:!1,complete:function(){i.resolve(t)}});return this.el.animate(this.diff,a),i.promise()}),e.when.apply(e,l.get()).done(function(){n(),e.each(arguments,function(){var t=this.el;e.each(this.diff,function(e){t.css(e,"")})}),h.complete.call(r[0])})})},e.fn.extend({_addClass:e.fn.addClass,addClass:function(t,i,a,s){return i?e.effects.animateClass.call(this,{add:t},i,a,s):this._addClass(t)},_removeClass:e.fn.removeClass,removeClass:function(t,i,a,s){return i?e.effects.animateClass.call(this,{remove:t},i,a,s):this._removeClass(t)},_toggleClass:e.fn.toggleClass,toggleClass:function(i,a,s,n,r){return"boolean"==typeof a||a===t?s?e.effects.animateClass.call(this,a?{add:i}:{remove:i},s,n,r):this._toggleClass(i,a):e.effects.animateClass.call(this,{toggle:i},a,s,n)},switchClass:function(t,i,a,s,n){return e.effects.animateClass.call(this,{add:i,remove:t},a,s,n)}})}(),function(){function s(t,i,a,s){return e.isPlainObject(t)&&(i=t,t=t.effect),t={effect:t},null==i&&(i={}),e.isFunction(i)&&(s=i,a=null,i={}),("number"==typeof i||e.fx.speeds[i])&&(s=a,a=i,i={}),e.isFunction(a)&&(s=a,a=null),i&&e.extend(t,i),a=a||i.duration,t.duration=e.fx.off?0:"number"==typeof a?a:a in e.fx.speeds?e.fx.speeds[a]:e.fx.speeds._default,t.complete=s||i.complete,t}function n(t){return!t||"number"==typeof t||e.fx.speeds[t]?!0:"string"!=typeof t||e.effects.effect[t]?!1:i&&e.effects[t]?!1:!0}e.extend(e.effects,{version:"1.9.2",save:function(e,t){for(var i=0;t.length>i;i++)null!==t[i]&&e.data(a+t[i],e[0].style[t[i]])},restore:function(e,i){var s,n;for(n=0;i.length>n;n++)null!==i[n]&&(s=e.data(a+i[n]),s===t&&(s=""),e.css(i[n],s))},setMode:function(e,t){return"toggle"===t&&(t=e.is(":hidden")?"show":"hide"),t},getBaseline:function(e,t){var i,a;switch(e[0]){case"top":i=0;break;case"middle":i=.5;break;case"bottom":i=1;break;default:i=e[0]/t.height}switch(e[1]){case"left":a=0;break;case"center":a=.5;break;case"right":a=1;break;default:a=e[1]/t.width}return{x:a,y:i}},createWrapper:function(t){if(t.parent().is(".ui-effects-wrapper"))return t.parent();var i={width:t.outerWidth(!0),height:t.outerHeight(!0),"float":t.css("float")},a=e("<div></div>").addClass("ui-effects-wrapper").css({fontSize:"100%",background:"transparent",border:"none",margin:0,padding:0}),s={width:t.width(),height:t.height()},n=document.activeElement;try{n.id}catch(r){n=document.body}return t.wrap(a),(t[0]===n||e.contains(t[0],n))&&e(n).focus(),a=t.parent(),"static"===t.css("position")?(a.css({position:"relative"}),t.css({position:"relative"})):(e.extend(i,{position:t.css("position"),zIndex:t.css("z-index")}),e.each(["top","left","bottom","right"],function(e,a){i[a]=t.css(a),isNaN(parseInt(i[a],10))&&(i[a]="auto")}),t.css({position:"relative",top:0,left:0,right:"auto",bottom:"auto"})),t.css(s),a.css(i).show()},removeWrapper:function(t){var i=document.activeElement;return t.parent().is(".ui-effects-wrapper")&&(t.parent().replaceWith(t),(t[0]===i||e.contains(t[0],i))&&e(i).focus()),t},setTransition:function(t,i,a,s){return s=s||{},e.each(i,function(e,i){var n=t.cssUnit(i);n[0]>0&&(s[i]=n[0]*a+n[1])}),s}}),e.fn.extend({effect:function(){function t(t){function i(){e.isFunction(n)&&n.call(s[0]),e.isFunction(t)&&t()}var s=e(this),n=a.complete,r=a.mode;(s.is(":hidden")?"hide"===r:"show"===r)?i():o.call(s[0],a,i)}var a=s.apply(this,arguments),n=a.mode,r=a.queue,o=e.effects.effect[a.effect],h=!o&&i&&e.effects[a.effect];return e.fx.off||!o&&!h?n?this[n](a.duration,a.complete):this.each(function(){a.complete&&a.complete.call(this)}):o?r===!1?this.each(t):this.queue(r||"fx",t):h.call(this,{options:a,duration:a.duration,callback:a.complete,mode:a.mode})},_show:e.fn.show,show:function(e){if(n(e))return this._show.apply(this,arguments);var t=s.apply(this,arguments);return t.mode="show",this.effect.call(this,t)},_hide:e.fn.hide,hide:function(e){if(n(e))return this._hide.apply(this,arguments);var t=s.apply(this,arguments);return t.mode="hide",this.effect.call(this,t)},__toggle:e.fn.toggle,toggle:function(t){if(n(t)||"boolean"==typeof t||e.isFunction(t))return this.__toggle.apply(this,arguments);var i=s.apply(this,arguments);return i.mode="toggle",this.effect.call(this,i)},cssUnit:function(t){var i=this.css(t),a=[];return e.each(["em","px","%","pt"],function(e,t){i.indexOf(t)>0&&(a=[parseFloat(i),t])}),a}})}(),function(){var t={};e.each(["Quad","Cubic","Quart","Quint","Expo"],function(e,i){t[i]=function(t){return Math.pow(t,e+2)}}),e.extend(t,{Sine:function(e){return 1-Math.cos(e*Math.PI/2)},Circ:function(e){return 1-Math.sqrt(1-e*e)},Elastic:function(e){return 0===e||1===e?e:-Math.pow(2,8*(e-1))*Math.sin((80*(e-1)-7.5)*Math.PI/15)},Back:function(e){return e*e*(3*e-2)},Bounce:function(e){for(var t,i=4;((t=Math.pow(2,--i))-1)/11>e;);return 1/Math.pow(4,3-i)-7.5625*Math.pow((3*t-2)/22-e,2)}}),e.each(t,function(t,i){e.easing["easeIn"+t]=i,e.easing["easeOut"+t]=function(e){return 1-i(1-e)},e.easing["easeInOut"+t]=function(e){return.5>e?i(2*e)/2:1-i(-2*e+2)/2}})}()}(jQuery);
;
/*! Copyright (c) 2011 Piotr Rochala (http://rocha.la)
 * Dual licensed under the MIT (http://www.opensource.org/licenses/mit-license.php)
 * and GPL (http://www.opensource.org/licenses/gpl-license.php) licenses.
 *
 * Version: 1.3.2 (modified for fullpage.js ) (v 1.1)
 *
 */
(function(f){jQuery.fn.extend({slimScroll:function(g){var a=f.extend({width:"auto",height:"250px",size:"7px",color:"#000",position:"right",distance:"1px",start:"top",opacity:.4,alwaysVisible:!1,disableFadeOut:!1,railVisible:!1,railColor:"#333",railOpacity:.2,railDraggable:!0,railClass:"slimScrollRail",barClass:"slimScrollBar",wrapperClass:"slimScrollDiv",allowPageScroll:!1,wheelStep:20,touchScrollStep:200,borderRadius:"7px",railBorderRadius:"7px"},g);this.each(function(){function m(d){if(u){d=d||
window.event;var c=0;d.wheelDelta&&(c=-d.wheelDelta/120);d.detail&&(c=d.detail/3);f(d.target||d.srcTarget||d.srcElement).closest("."+a.wrapperClass).is(b.parent())&&n(c,!0);d.preventDefault&&!k&&d.preventDefault();k||(d.returnValue=!1)}}function n(d,f,g){k=!1;var e=d,h=b.outerHeight()-c.outerHeight();f&&(e=parseInt(c.css("top"))+d*parseInt(a.wheelStep)/100*c.outerHeight(),e=Math.min(Math.max(e,0),h),e=0<d?Math.ceil(e):Math.floor(e),c.css({top:e+"px"}));l=parseInt(c.css("top"))/(b.outerHeight()-c.outerHeight());
e=l*(b[0].scrollHeight-b.outerHeight());g&&(e=d,d=e/b[0].scrollHeight*b.outerHeight(),d=Math.min(Math.max(d,0),h),c.css({top:d+"px"}));b.scrollTop(e);b.trigger("slimscrolling",~~e);w();q()}function D(){window.addEventListener?(this.addEventListener("DOMMouseScroll",m,!1),this.addEventListener("mousewheel",m,!1)):document.attachEvent("onmousewheel",m)}function E(){window.removeEventListener?(this.removeEventListener("DOMMouseScroll",m),this.removeEventListener("mousewheel",m)):document.detachEvent("onmousewheel",
m)}function x(){v=Math.max(b.outerHeight()/b[0].scrollHeight*b.outerHeight(),30);c.css({height:v+"px"});var a=v==b.outerHeight()?"none":"block";c.css({display:a})}function w(){x();clearTimeout(B);l==~~l?(k=a.allowPageScroll,C!=l&&b.trigger("slimscroll",0==~~l?"top":"bottom")):k=!1;C=l;v>=b.outerHeight()?k=!0:(c.stop(!0,!0).fadeIn("fast"),a.railVisible&&h.stop(!0,!0).fadeIn("fast"))}function q(){a.alwaysVisible||(B=setTimeout(function(){a.disableFadeOut&&u||y||z||(c.fadeOut("slow"),h.fadeOut("slow"))},
1E3))}var u,y,z,B,A,v,l,C,k=!1,b=f(this);if(b.parent().hasClass(a.wrapperClass)){var p=b.scrollTop(),c=b.parent().find("."+a.barClass),h=b.parent().find("."+a.railClass);x();if(f.isPlainObject(g)){if("height"in g&&"auto"==g.height){b.parent().css("height","auto");b.css("height","auto");var r=b.parent().parent().height();b.parent().css("height",r);b.css("height",r)}if("scrollTo"in g)p=parseInt(a.scrollTo);else if("scrollBy"in g)p+=parseInt(a.scrollBy);else if("destroy"in g){E();c.remove();h.remove();
b.unwrap();return}n(p,!1,!0)}}else{a.height="auto"==g.height?b.parent().height():g.height;p=f("<div></div>").addClass(a.wrapperClass).css({position:"relative",overflow:"hidden",width:a.width,height:a.height});b.css({overflow:"hidden",width:a.width,height:a.height});var h=f("<div></div>").addClass(a.railClass).css({width:a.size,height:"100%",position:"absolute",top:0,display:a.alwaysVisible&&a.railVisible?"block":"none","border-radius":a.railBorderRadius,background:a.railColor,opacity:a.railOpacity,
zIndex:90}),c=f("<div></div>").addClass(a.barClass).css({background:a.color,width:a.size,position:"absolute",top:0,opacity:a.opacity,display:a.alwaysVisible?"block":"none","border-radius":a.borderRadius,BorderRadius:a.borderRadius,MozBorderRadius:a.borderRadius,WebkitBorderRadius:a.borderRadius,zIndex:99}),r="right"==a.position?{right:a.distance}:{left:a.distance};h.css(r);c.css(r);b.wrap(p);b.parent().append(c);b.parent().append(h);a.railDraggable&&c.bind("mousedown",function(a){var b=f(document);
z=!0;t=parseFloat(c.css("top"));pageY=a.pageY;b.bind("mousemove.slimscroll",function(a){currTop=t+a.pageY-pageY;c.css("top",currTop);n(0,c.position().top,!1)});b.bind("mouseup.slimscroll",function(a){z=!1;q();b.unbind(".slimscroll")});return!1}).bind("selectstart.slimscroll",function(a){a.stopPropagation();a.preventDefault();return!1});h.hover(function(){w()},function(){q()});c.hover(function(){y=!0},function(){y=!1});b.hover(function(){u=!0;w();q()},function(){u=!1;q()});b.bind("touchstart",function(a,
b){a.originalEvent.touches.length&&(A=a.originalEvent.touches[0].pageY)});b.bind("touchmove",function(b){k||b.originalEvent.preventDefault();b.originalEvent.touches.length&&(n((A-b.originalEvent.touches[0].pageY)/a.touchScrollStep,!0),A=b.originalEvent.touches[0].pageY)});x();"bottom"===a.start?(c.css({top:b.outerHeight()-c.outerHeight()}),n(0,!0)):"top"!==a.start&&(n(f(a.start).position().top,null,!0),a.alwaysVisible||c.hide());D()}});return this}});jQuery.fn.extend({slimscroll:jQuery.fn.slimScroll})})(jQuery);;
/*!
 * fullPage 2.7.4
 * https://github.com/alvarotrigo/fullPage.js
 * @license MIT licensed
 *
 * Copyright (C) 2015 alvarotrigo.com - A project by Alvaro Trigo
 */
(function(c,k){"function"===typeof define&&define.amd?define(["jquery"],function(m){return k(m,c,c.document,c.Math)}):"undefined"!==typeof exports?module.exports=k(require("jquery"),c,c.document,c.Math):k(jQuery,c,c.document,c.Math)})("undefined"!==typeof window?window:this,function(c,k,m,p,D){var n=c(k),t=c(m);c.fn.fullpage=function(d){function La(){d.css3&&(d.css3=Ma());d.anchors.length||(d.anchors=c("[data-anchor]").map(function(){return c(this).data("anchor").toString()}).get());Na();e.setAllowScrolling(!0);
q=n.height();e.setAutoScrolling(d.autoScrolling,"internal");var a=c(".fp-section.active").find(".fp-slide.active");a.length&&(0!==c(".fp-section.active").index(".fp-section")||0===c(".fp-section.active").index(".fp-section")&&0!==a.index())&&T(a);ja();ka();n.on("load",function(){var a=k.location.hash.replace("#","").split("/"),c=a[0],a=a[1];c&&(d.animateAnchor?U(c,a):e.silentMoveTo(c,a))})}function Na(){h.css({height:"100%",position:"relative"});h.addClass("fullpage-wrapper");c("html").addClass("fp-enabled");
h.removeClass("fp-destroyed");Oa();c(".fp-section").each(function(a){var b=c(this),g=b.find(".fp-slide"),f=g.length;a||0!==c(".fp-section.active").length||b.addClass("active");b.css("height",q+"px");d.paddingTop&&b.css("padding-top",d.paddingTop);d.paddingBottom&&b.css("padding-bottom",d.paddingBottom);"undefined"!==typeof d.sectionsColor[a]&&b.css("background-color",d.sectionsColor[a]);"undefined"!==typeof d.anchors[a]&&b.attr("data-anchor",d.anchors[a]);"undefined"!==typeof d.anchors[a]&&b.hasClass("active")&&
V(d.anchors[a],a);d.menu&&d.css3&&c(d.menu).closest(".fullpage-wrapper").length&&c(d.menu).appendTo(r);0<f?Pa(b,g,f):d.verticalCentered&&la(b)});d.fixedElements&&d.css3&&c(d.fixedElements).appendTo(r);d.navigation&&Qa();d.scrollOverflow?("complete"===m.readyState&&ma(),n.on("load",ma)):na()}function Pa(a,b,g){var f=100*g,e=100/g;b.wrapAll('<div class="fp-slidesContainer" />');b.parent().wrap('<div class="fp-slides" />');a.find(".fp-slidesContainer").css("width",f+"%");1<g&&(d.controlArrows&&Ra(a),
d.slidesNavigation&&Sa(a,g));b.each(function(a){c(this).css("width",e+"%");d.verticalCentered&&la(c(this))});a=a.find(".fp-slide.active");a.length&&(0!==c(".fp-section.active").index(".fp-section")||0===c(".fp-section.active").index(".fp-section")&&0!==a.index())?T(a):b.eq(0).addClass("active")}function Oa(){c(d.sectionSelector).each(function(){c(this).addClass("fp-section")});c(d.slideSelector).each(function(){c(this).addClass("fp-slide")})}function Ra(a){a.find(".fp-slides").after('<div class="fp-controlArrow fp-prev"></div><div class="fp-controlArrow fp-next"></div>');
"#fff"!=d.controlArrowColor&&(a.find(".fp-controlArrow.fp-next").css("border-color","transparent transparent transparent "+d.controlArrowColor),a.find(".fp-controlArrow.fp-prev").css("border-color","transparent "+d.controlArrowColor+" transparent transparent"));d.loopHorizontal||a.find(".fp-controlArrow.fp-prev").hide()}function Qa(){r.append('<div id="fp-nav"><ul></ul></div>');var a=c("#fp-nav");a.addClass(function(){return d.showActiveTooltip?"fp-show-active "+d.navigationPosition:d.navigationPosition});
for(var b=0;b<c(".fp-section").length;b++){var g="";d.anchors.length&&(g=d.anchors[b]);var g='<li><a href="#'+g+'"><span></span></a>',f=d.navigationTooltips[b];"undefined"!==typeof f&&""!==f&&(g+='<div class="fp-tooltip '+d.navigationPosition+'">'+f+"</div>");g+="</li>";a.find("ul").append(g)}c("#fp-nav").css("margin-top","-"+c("#fp-nav").height()/2+"px");c("#fp-nav").find("li").eq(c(".fp-section.active").index(".fp-section")).find("a").addClass("active")}function ma(){c(".fp-section").each(function(){var a=
c(this).find(".fp-slide");a.length?a.each(function(){I(c(this))}):I(c(this))});na()}function na(){var a=c(".fp-section.active"),b=a.find("SLIDES_WRAPPER"),g=a.find(".fp-scrollable");b.length&&(g=b.find(".fp-slide.active"));g.mouseover();J(a);oa(a);c.isFunction(d.afterLoad)&&d.afterLoad.call(a,a.data("anchor"),a.index(".fp-section")+1);c.isFunction(d.afterRender)&&d.afterRender.call(h)}function pa(){var a;if(!d.autoScrolling||d.scrollBar){for(var b=n.scrollTop(),g=0,f=p.abs(b-m.querySelectorAll(".fp-section")[0].offsetTop),
e=m.querySelectorAll(".fp-section"),h=0;h<e.length;++h){var k=p.abs(b-e[h].offsetTop);k<f&&(g=h,f=k)}a=c(e).eq(g);if(!a.hasClass("active")&&!a.hasClass("fp-auto-height")){W=!0;b=c(".fp-section.active");g=b.index(".fp-section")+1;f=X(a);e=a.data("anchor");h=a.index(".fp-section")+1;k=a.find(".fp-slide.active");if(k.length)var l=k.data("anchor"),q=k.index();u&&(a.addClass("active").siblings().removeClass("active"),c.isFunction(d.onLeave)&&d.onLeave.call(b,g,h,f),c.isFunction(d.afterLoad)&&d.afterLoad.call(a,
e,h),J(a),V(e,h-1),d.anchors.length&&(y=e,Y(q,l,e,h)));clearTimeout(Z);Z=setTimeout(function(){W=!1},100)}d.fitToSection&&(clearTimeout(aa),aa=setTimeout(function(){u&&d.fitToSection&&(c(".fp-section.active").is(a)&&requestAnimFrame(function(){v=!0}),z(a),requestAnimFrame(function(){v=!1}))},d.fitToSectionDelay))}}function qa(a){return a.find(".fp-slides").length?a.find(".fp-slide.active").find(".fp-scrollable"):a.find(".fp-scrollable")}function K(a,b){if(l.m[a]){var d,c;"down"==a?(d="bottom",c=e.moveSectionDown):
(d="top",c=e.moveSectionUp);if(0<b.length)if(d="top"===d?!b.scrollTop():"bottom"===d?b.scrollTop()+1+b.innerHeight()>=b[0].scrollHeight:void 0,d)c();else return!0;else c()}}function Ta(a){var b=a.originalEvent;if(!ra(a.target)&&ba(b)){d.autoScrolling&&a.preventDefault();a=c(".fp-section.active");var g=qa(a);u&&!w&&(b=sa(b),E=b.y,L=b.x,a.find(".fp-slides").length&&p.abs(M-L)>p.abs(F-E)?p.abs(M-L)>n.width()/100*d.touchSensitivity&&(M>L?l.m.right&&e.moveSlideRight():l.m.left&&e.moveSlideLeft()):d.autoScrolling&&
p.abs(F-E)>n.height()/100*d.touchSensitivity&&(F>E?K("down",g):E>F&&K("up",g)))}}function ra(a,b){b=b||0;var g=c(a).parent();return b<d.normalScrollElementTouchThreshold&&g.is(d.normalScrollElements)?!0:b==d.normalScrollElementTouchThreshold?!1:ra(g,++b)}function ba(a){return"undefined"===typeof a.pointerType||"mouse"!=a.pointerType}function Ua(a){a=a.originalEvent;d.fitToSection&&x.stop();ba(a)&&(a=sa(a),F=a.y,M=a.x)}function ta(a,b){for(var d=0,c=a.slice(p.max(a.length-b,1)),e=0;e<c.length;e++)d+=
c[e];return p.ceil(d/b)}function A(a){var b=(new Date).getTime();if(d.autoScrolling&&!N){a=a||k.event;var g=a.wheelDelta||-a.deltaY||-a.detail,f=p.max(-1,p.min(1,g)),e="undefined"!==typeof a.wheelDeltaX||"undefined"!==typeof a.deltaX,e=p.abs(a.wheelDeltaX)<p.abs(a.wheelDelta)||p.abs(a.deltaX)<p.abs(a.deltaY)||!e;149<B.length&&B.shift();B.push(p.abs(g));d.scrollBar&&(a.preventDefault?a.preventDefault():a.returnValue=!1);a=c(".fp-section.active");a=qa(a);g=b-ua;ua=b;200<g&&(B=[]);u&&(b=ta(B,10),g=ta(B,
70),b>=g&&e&&(0>f?K("down",a):K("up",a)));return!1}d.fitToSection&&x.stop()}function va(a){var b=c(".fp-section.active").find(".fp-slides"),g=b.find(".fp-slide").length;if(!(!b.length||w||2>g)){var g=b.find(".fp-slide.active"),f=null,f="prev"===a?g.prev(".fp-slide"):g.next(".fp-slide");if(!f.length){if(!d.loopHorizontal)return;f="prev"===a?g.siblings(":last"):g.siblings(":first")}w=!0;G(b,f)}}function wa(){c(".fp-slide.active").each(function(){T(c(this),"internal")})}function z(a,b,g){requestAnimFrame(function(){var f=
a.position();if("undefined"!==typeof f){var e=a.hasClass("fp-auto-height")?f.top-q+a.height():f.top,f={element:a,callback:b,isMovementUp:g,dest:f,dtop:e,yMovement:X(a),anchorLink:a.data("anchor"),sectionIndex:a.index(".fp-section"),activeSlide:a.find(".fp-slide.active"),activeSection:c(".fp-section.active"),leavingSection:c(".fp-section.active").index(".fp-section")+1,localIsResizing:v};if(!(f.activeSection.is(a)&&!v||d.scrollBar&&n.scrollTop()===f.dtop&&!a.hasClass("fp-auto-height"))){if(f.activeSlide.length)var h=
f.activeSlide.data("anchor"),k=f.activeSlide.index();d.autoScrolling&&d.continuousVertical&&"undefined"!==typeof f.isMovementUp&&(!f.isMovementUp&&"up"==f.yMovement||f.isMovementUp&&"down"==f.yMovement)&&(f.isMovementUp?c(".fp-section.active").before(f.activeSection.nextAll(".fp-section")):c(".fp-section.active").after(f.activeSection.prevAll(".fp-section").get().reverse()),H(c(".fp-section.active").position().top),wa(),f.wrapAroundElements=f.activeSection,f.dest=f.element.position(),f.dtop=f.dest.top,
f.yMovement=X(f.element));if(c.isFunction(d.onLeave)&&!f.localIsResizing){if(!1===d.onLeave.call(f.activeSection,f.leavingSection,f.sectionIndex+1,f.yMovement))return;Va(f.activeSection)}a.addClass("active").siblings().removeClass("active");J(a);u=!1;Y(k,h,f.anchorLink,f.sectionIndex);Wa(f);y=f.anchorLink;V(f.anchorLink,f.sectionIndex)}}})}function Wa(a){if(d.css3&&d.autoScrolling&&!d.scrollBar)xa("translate3d(0px, -"+a.dtop+"px, 0px)",!0),d.scrollingSpeed?ca=setTimeout(function(){da(a)},d.scrollingSpeed):
da(a);else{var b=Xa(a);c(b.element).animate(b.options,d.scrollingSpeed,d.easing).promise().done(function(){da(a)})}}function Xa(a){var b={};d.autoScrolling&&!d.scrollBar?(b.options={top:-a.dtop},b.element=".fullpage-wrapper"):(b.options={scrollTop:a.dtop},b.element="html, body");return b}function da(a){a.wrapAroundElements&&a.wrapAroundElements.length&&(a.isMovementUp?c(".fp-section:first").before(a.wrapAroundElements):c(".fp-section:last").after(a.wrapAroundElements),H(c(".fp-section.active").position().top),
wa());a.element.find(".fp-scrollable").mouseover();c.isFunction(d.afterLoad)&&!a.localIsResizing&&d.afterLoad.call(a.element,a.anchorLink,a.sectionIndex+1);oa(a.element);u=!0;c.isFunction(a.callback)&&a.callback.call(this)}function J(a){var b=a.find(".fp-slide.active");b.length&&(a=c(b));a.find("img[data-src], source[data-src], audio[data-src]").each(function(){c(this).attr("src",c(this).data("src"));c(this).removeAttr("data-src");c(this).is("source")&&c(this).closest("video").get(0).load()})}function oa(a){a.find("video, audio").each(function(){var a=
c(this).get(0);a.hasAttribute("autoplay")&&"function"===typeof a.play&&a.play()})}function Va(a){a.find("video, audio").each(function(){var a=c(this).get(0);a.hasAttribute("data-ignore")||"function"!==typeof a.pause||a.pause()})}function ya(){if(!W&&!d.lockAnchors){var a=k.location.hash.replace("#","").split("/"),b=a[0],a=a[1],c="undefined"===typeof y,f="undefined"===typeof y&&"undefined"===typeof a&&!w;b.length&&(b&&b!==y&&!c||f||!w&&ea!=a)&&U(b,a)}}function Ya(a){u&&(a.pageY<O?e.moveSectionUp():
a.pageY>O&&e.moveSectionDown());O=a.pageY}function G(a,b){var g=b.position(),f=b.index(),e=a.closest(".fp-section"),h=e.index(".fp-section"),k=e.data("anchor"),l=e.find(".fp-slidesNav"),m=fa(b),n=v;if(d.onSlideLeave){var q=e.find(".fp-slide.active"),r=q.index(),t;t=r==f?"none":r>f?"left":"right";if(!n&&"none"!==t&&c.isFunction(d.onSlideLeave)&&!1===d.onSlideLeave.call(q,k,h+1,r,t,f)){w=!1;return}}b.addClass("active").siblings().removeClass("active");n||J(b);!d.loopHorizontal&&d.controlArrows&&(e.find(".fp-controlArrow.fp-prev").toggle(0!==
f),e.find(".fp-controlArrow.fp-next").toggle(!b.is(":last-child")));e.hasClass("active")&&Y(f,m,k,h);var u=function(){n||c.isFunction(d.afterSlideLoad)&&d.afterSlideLoad.call(b,k,h+1,m,f);w=!1};d.css3?(g="translate3d(-"+p.round(g.left)+"px, 0px, 0px)",za(a.find(".fp-slidesContainer"),0<d.scrollingSpeed).css(Aa(g)),ga=setTimeout(function(){u()},d.scrollingSpeed,d.easing)):a.animate({scrollLeft:p.round(g.left)},d.scrollingSpeed,d.easing,function(){u()});l.find(".active").removeClass("active");l.find("li").eq(f).find("a").addClass("active")}
function Ba(){ja();if(P){var a=c(m.activeElement);a.is("textarea")||a.is("input")||a.is("select")||(a=n.height(),p.abs(a-ha)>20*p.max(ha,a)/100&&(e.reBuild(!0),ha=a))}else clearTimeout(ia),ia=setTimeout(function(){e.reBuild(!0)},350)}function ja(){var a=d.responsive||d.responsiveWidth,b=d.responsiveHeight,c=a&&n.width()<a,f=b&&n.height()<b;a&&b?e.setResponsive(c||f):a?e.setResponsive(c):b&&e.setResponsive(f)}function za(a){var b="all "+d.scrollingSpeed+"ms "+d.easingcss3;a.removeClass("fp-notransition");
return a.css({"-webkit-transition":b,transition:b})}function Za(a,b){if(825>a||900>b){var c=p.min(100*a/825,100*b/900).toFixed(2);r.css("font-size",c+"%")}else r.css("font-size","100%")}function V(a,b){d.menu&&(c(d.menu).find(".active").removeClass("active"),c(d.menu).find('[data-menuanchor="'+a+'"]').addClass("active"));d.navigation&&(c("#fp-nav").find(".active").removeClass("active"),a?c("#fp-nav").find('a[href="#'+a+'"]').addClass("active"):c("#fp-nav").find("li").eq(b).find("a").addClass("active"))}
function X(a){var b=c(".fp-section.active").index(".fp-section");a=a.index(".fp-section");return b==a?"none":b>a?"up":"down"}function I(a){a.css("overflow","hidden");var b=a.closest(".fp-section"),c=a.find(".fp-scrollable"),f;c.length?f=c.get(0).scrollHeight:(f=a.get(0).scrollHeight,d.verticalCentered&&(f=a.find(".fp-tableCell").get(0).scrollHeight));b=q-parseInt(b.css("padding-bottom"))-parseInt(b.css("padding-top"));f>b?c.length?c.css("height",b+"px").parent().css("height",b+"px"):(d.verticalCentered?
a.find(".fp-tableCell").wrapInner('<div class="fp-scrollable" />'):a.wrapInner('<div class="fp-scrollable" />'),a.find(".fp-scrollable").slimScroll({allowPageScroll:!0,height:b+"px",size:"10px",alwaysVisible:!0})):Ca(a);a.css("overflow","")}function Ca(a){a.find(".fp-scrollable").children().first().unwrap().unwrap();a.find(".slimScrollBar").remove();a.find(".slimScrollRail").remove()}function la(a){a.addClass("fp-table").wrapInner('<div class="fp-tableCell" style="height:'+Da(a)+'px;" />')}function Da(a){var b=
q;if(d.paddingTop||d.paddingBottom)b=a,b.hasClass("fp-section")||(b=a.closest(".fp-section")),a=parseInt(b.css("padding-top"))+parseInt(b.css("padding-bottom")),b=q-a;return b}function xa(a,b){b?za(h):h.addClass("fp-notransition");h.css(Aa(a));setTimeout(function(){h.removeClass("fp-notransition")},10)}function Ea(a){var b=c('.fp-section[data-anchor="'+a+'"]');b.length||(b=c(".fp-section").eq(a-1));return b}function U(a,b){var c=Ea(a);"undefined"===typeof b&&(b=0);a===y||c.hasClass("active")?Fa(c,
b):z(c,function(){Fa(c,b)})}function Fa(a,b){if("undefined"!==typeof b){var c=a.find(".fp-slides"),d;d=a.find(".fp-slides");var e=d.find('.fp-slide[data-anchor="'+b+'"]');e.length||(e=d.find(".fp-slide").eq(b));d=e;d.length&&G(c,d)}}function Sa(a,b){a.append('<div class="fp-slidesNav"><ul></ul></div>');var c=a.find(".fp-slidesNav");c.addClass(d.slidesNavPosition);for(var f=0;f<b;f++)c.find("ul").append('<li><a href="#"><span></span></a></li>');c.css("margin-left","-"+c.width()/2+"px");c.find("li").first().find("a").addClass("active")}
function Y(a,b,c,f){f="";d.anchors.length&&!d.lockAnchors&&(a?("undefined"!==typeof c&&(f=c),"undefined"===typeof b&&(b=a),ea=b,Ga(f+"/"+b)):("undefined"!==typeof a&&(ea=b),Ga(c)));ka()}function Ga(a){if(d.recordHistory)location.hash=a;else if(P||Q)history.replaceState(D,D,"#"+a);else{var b=k.location.href.split("#")[0];k.location.replace(b+"#"+a)}}function fa(a){var b=a.data("anchor");a=a.index();"undefined"===typeof b&&(b=a);return b}function ka(){var a=c(".fp-section.active"),b=a.find(".fp-slide.active"),
d=fa(a),f=fa(b);a.index(".fp-section");a=String(d);b.length&&(a=a+"-"+f);a=a.replace("/","-").replace("#","");r[0].className=r[0].className.replace(RegExp("\\b\\s?fp-viewing-[^\\s]+\\b","g"),"");r.addClass("fp-viewing-"+a)}function Ma(){var a=m.createElement("p"),b,c={webkitTransform:"-webkit-transform",OTransform:"-o-transform",msTransform:"-ms-transform",MozTransform:"-moz-transform",transform:"transform"};m.body.insertBefore(a,null);for(var d in c)a.style[d]!==D&&(a.style[d]="translate3d(1px,1px,1px)",
b=k.getComputedStyle(a).getPropertyValue(c[d]));m.body.removeChild(a);return b!==D&&0<b.length&&"none"!==b}function $a(){if(P||Q){var a=Ha();c(".fullpage-wrapper").off("touchstart "+a.down).on("touchstart "+a.down,Ua);c(".fullpage-wrapper").off("touchmove "+a.move).on("touchmove "+a.move,Ta)}}function ab(){if(P||Q){var a=Ha();c(".fullpage-wrapper").off("touchstart "+a.down);c(".fullpage-wrapper").off("touchmove "+a.move)}}function Ha(){return k.PointerEvent?{down:"pointerdown",move:"pointermove"}:
{down:"MSPointerDown",move:"MSPointerMove"}}function sa(a){var b=[];b.y="undefined"!==typeof a.pageY&&(a.pageY||a.pageX)?a.pageY:a.touches[0].pageY;b.x="undefined"!==typeof a.pageX&&(a.pageY||a.pageX)?a.pageX:a.touches[0].pageX;Q&&ba(a)&&d.scrollBar&&(b.y=a.touches[0].pageY,b.x=a.touches[0].pageX);return b}function T(a,b){e.setScrollingSpeed(0,"internal");"undefined"!==typeof b&&(v=!0);G(a.closest(".fp-slides"),a);"undefined"!==typeof b&&(v=!1);e.setScrollingSpeed(C.scrollingSpeed,"internal")}function H(a){d.scrollBar?
h.scrollTop(a):d.css3?xa("translate3d(0px, -"+a+"px, 0px)",!1):h.css("top",-a)}function Aa(a){return{"-webkit-transform":a,"-moz-transform":a,"-ms-transform":a,transform:a}}function Ia(a,b,c){switch(b){case "up":l[c].up=a;break;case "down":l[c].down=a;break;case "left":l[c].left=a;break;case "right":l[c].right=a;break;case "all":"m"==c?e.setAllowScrolling(a):e.setKeyboardScrolling(a)}}function bb(){H(0);c("#fp-nav, .fp-slidesNav, .fp-controlArrow").remove();c(".fp-section").css({height:"","background-color":"",
padding:""});c(".fp-slide").css({width:""});h.css({height:"",position:"","-ms-touch-action":"","touch-action":""});x.css({overflow:"",height:""});c("html").removeClass("fp-enabled");c.each(r.get(0).className.split(/\s+/),function(a,b){0===b.indexOf("fp-viewing")&&r.removeClass(b)});c(".fp-section, .fp-slide").each(function(){Ca(c(this));c(this).removeClass("fp-table active")});h.addClass("fp-notransition");h.find(".fp-tableCell, .fp-slidesContainer, .fp-slides").each(function(){c(this).replaceWith(this.childNodes)});
x.scrollTop(0)}function R(a,b,c){d[a]=b;"internal"!==c&&(C[a]=b)}function S(a,b){console&&console[a]&&console[a]("fullPage: "+b)}var x=c("html, body"),r=c("body"),e=c.fn.fullpage;d=c.extend({menu:!1,anchors:[],lockAnchors:!1,navigation:!1,navigationPosition:"right",navigationTooltips:[],showActiveTooltip:!1,slidesNavigation:!1,slidesNavPosition:"bottom",scrollBar:!1,css3:!0,scrollingSpeed:700,autoScrolling:!0,fitToSection:!0,fitToSectionDelay:1E3,easing:"easeInOutCubic",easingcss3:"ease",loopBottom:!1,
loopTop:!1,loopHorizontal:!0,continuousVertical:!1,normalScrollElements:null,scrollOverflow:!1,touchSensitivity:5,normalScrollElementTouchThreshold:5,keyboardScrolling:!0,animateAnchor:!0,recordHistory:!0,controlArrows:!0,controlArrowColor:"#fff",verticalCentered:!0,resize:!1,sectionsColor:[],paddingTop:0,paddingBottom:0,fixedElements:null,responsive:0,responsiveWidth:0,responsiveHeight:0,sectionSelector:".section",slideSelector:".slide",afterLoad:null,onLeave:null,afterRender:null,afterResize:null,
afterReBuild:null,afterSlideLoad:null,onSlideLeave:null},d);(function(){d.continuousVertical&&(d.loopTop||d.loopBottom)&&(d.continuousVertical=!1,S("warn","Option `loopTop/loopBottom` is mutually exclusive with `continuousVertical`; `continuousVertical` disabled"));d.scrollBar&&d.scrollOverflow&&S("warn","Option `scrollBar` is mutually exclusive with `scrollOverflow`. Sections with scrollOverflow might not work well in Firefox");d.continuousVertical&&d.scrollBar&&(d.continuousVertical=!1,S("warn",
"Option `scrollBar` is mutually exclusive with `continuousVertical`; `continuousVertical` disabled"));c.each(d.anchors,function(a,b){(c("#"+b).length||c('[name="'+b+'"]').length)&&S("error","data-anchor tags can not have the same value as any `id` element on the site (or `name` element for IE).")})})();c.extend(c.easing,{easeInOutCubic:function(a,b,c,d,e){return 1>(b/=e/2)?d/2*b*b*b+c:d/2*((b-=2)*b*b+2)+c}});c.extend(c.easing,{easeInQuart:function(a,b,c,d,e){return d*(b/=e)*b*b*b+c}});e.setAutoScrolling=
function(a,b){R("autoScrolling",a,b);var g=c(".fp-section.active");d.autoScrolling&&!d.scrollBar?(x.css({overflow:"hidden",height:"100%"}),e.setRecordHistory(C.recordHistory,"internal"),h.css({"-ms-touch-action":"none","touch-action":"none"}),g.length&&H(g.position().top)):(x.css({overflow:"visible",height:"initial"}),e.setRecordHistory(!1,"internal"),h.css({"-ms-touch-action":"","touch-action":""}),H(0),g.length&&x.scrollTop(g.position().top))};e.setRecordHistory=function(a,b){R("recordHistory",
a,b)};e.setScrollingSpeed=function(a,b){R("scrollingSpeed",a,b)};e.setFitToSection=function(a,b){R("fitToSection",a,b)};e.setLockAnchors=function(a){d.lockAnchors=a};e.setMouseWheelScrolling=function(a){if(a){a="";var b;k.addEventListener?b="addEventListener":(b="attachEvent",a="on");var c="onwheel"in m.createElement("div")?"wheel":m.onmousewheel!==D?"mousewheel":"DOMMouseScroll";if("DOMMouseScroll"==c)m[b](a+"MozMousePixelScroll",A,!1);else m[b](a+c,A,!1)}else m.addEventListener?(m.removeEventListener("mousewheel",
A,!1),m.removeEventListener("wheel",A,!1),m.removeEventListener("MozMousePixelScroll",A,!1)):m.detachEvent("onmousewheel",A)};e.setAllowScrolling=function(a,b){"undefined"!==typeof b?(b=b.replace(/ /g,"").split(","),c.each(b,function(b,c){Ia(a,c,"m")})):a?(e.setMouseWheelScrolling(!0),$a()):(e.setMouseWheelScrolling(!1),ab())};e.setKeyboardScrolling=function(a,b){"undefined"!==typeof b?(b=b.replace(/ /g,"").split(","),c.each(b,function(b,c){Ia(a,c,"k")})):d.keyboardScrolling=a};e.moveSectionUp=function(){var a=
c(".fp-section.active").prev(".fp-section");a.length||!d.loopTop&&!d.continuousVertical||(a=c(".fp-section").last());a.length&&z(a,null,!0)};e.moveSectionDown=function(){var a=c(".fp-section.active").next(".fp-section");a.length||!d.loopBottom&&!d.continuousVertical||(a=c(".fp-section").first());a.length&&z(a,null,!1)};e.silentMoveTo=function(a,b){requestAnimFrame(function(){e.setScrollingSpeed(0,"internal")});e.moveTo(a,b);requestAnimFrame(function(){e.setScrollingSpeed(C.scrollingSpeed,"internal")})};
e.moveTo=function(a,b){var c=Ea(a);"undefined"!==typeof b?U(a,b):0<c.length&&z(c)};e.moveSlideRight=function(){va("next")};e.moveSlideLeft=function(){va("prev")};e.reBuild=function(a){if(!h.hasClass("fp-destroyed")){requestAnimFrame(function(){v=!0});var b=n.width();q=n.height();d.resize&&Za(q,b);c(".fp-section").each(function(){var a=c(this).find(".fp-slides"),b=c(this).find(".fp-slide");d.verticalCentered&&c(this).find(".fp-tableCell").css("height",Da(c(this))+"px");c(this).css("height",q+"px");
d.scrollOverflow&&(b.length?b.each(function(){I(c(this))}):I(c(this)));1<b.length&&G(a,a.find(".fp-slide.active"))});(b=c(".fp-section.active").index(".fp-section"))&&e.silentMoveTo(b+1);requestAnimFrame(function(){v=!1});c.isFunction(d.afterResize)&&a&&d.afterResize.call(h);c.isFunction(d.afterReBuild)&&!a&&d.afterReBuild.call(h)}};e.setResponsive=function(a){var b=h.hasClass("fp-responsive");a?b||(e.setAutoScrolling(!1,"internal"),e.setFitToSection(!1,"internal"),c("#fp-nav").hide(),h.addClass("fp-responsive")):
b&&(e.setAutoScrolling(C.autoScrolling,"internal"),e.setFitToSection(C.autoScrolling,"internal"),c("#fp-nav").show(),h.removeClass("fp-responsive"))};var w=!1,P=navigator.userAgent.match(/(iPhone|iPod|iPad|Android|playbook|silk|BlackBerry|BB10|Windows Phone|Tizen|Bada|webOS|IEMobile|Opera Mini)/),Q="ontouchstart"in k||0<navigator.msMaxTouchPoints||navigator.maxTouchPoints,h=c(this),q=n.height(),v=!1,Ja=!0,y,ea,u=!0,B=[],N,l={m:{up:!0,down:!0,left:!0,right:!0}};l.k=c.extend(!0,{},l.m);var C=c.extend(!0,
{},d),ia,ca,ga,Z,aa,Ka;c(this).length&&La();var W=!1;n.on("scroll",pa);var F=0,M=0,E=0,L=0,ua=(new Date).getTime();k.requestAnimFrame=function(){return k.requestAnimationFrame||k.webkitRequestAnimationFrame||k.mozRequestAnimationFrame||k.oRequestAnimationFrame||k.msRequestAnimationFrame||function(a){a()}}();n.on("hashchange",ya);t.keydown(function(a){clearTimeout(Ka);var b=c(":focus");b.is("textarea")||b.is("input")||b.is("select")||!d.keyboardScrolling||!d.autoScrolling||(-1<c.inArray(a.which,[40,
38,32,33,34])&&a.preventDefault(),N=a.ctrlKey,Ka=setTimeout(function(){var b=a.shiftKey;switch(a.which){case 38:case 33:l.k.up&&e.moveSectionUp();break;case 32:if(b&&l.k.up){e.moveSectionUp();break}case 40:case 34:l.k.down&&e.moveSectionDown();break;case 36:l.k.up&&e.moveTo(1);break;case 35:l.k.down&&e.moveTo(c(".fp-section").length);break;case 37:l.k.left&&e.moveSlideLeft();break;case 39:l.k.right&&e.moveSlideRight()}},150))});t.keyup(function(a){Ja&&(N=a.ctrlKey)});c(k).blur(function(){N=Ja=!1});
h.mousedown(function(a){2==a.which&&(O=a.pageY,h.on("mousemove",Ya))});h.mouseup(function(a){2==a.which&&h.off("mousemove")});var O=0;t.on("click touchstart","#fp-nav a",function(a){a.preventDefault();a=c(this).parent().index();z(c(".fp-section").eq(a))});t.on("click touchstart",".fp-slidesNav a",function(a){a.preventDefault();a=c(this).closest(".fp-section").find(".fp-slides");var b=a.find(".fp-slide").eq(c(this).closest("li").index());G(a,b)});d.normalScrollElements&&(t.on("mouseenter",d.normalScrollElements,
function(){e.setMouseWheelScrolling(!1)}),t.on("mouseleave",d.normalScrollElements,function(){e.setMouseWheelScrolling(!0)}));c(".fp-section").on("click touchstart",".fp-controlArrow",function(){c(this).hasClass("fp-prev")?l.m.left&&e.moveSlideLeft():l.m.right&&e.moveSlideRight()});n.resize(Ba);var ha=q;e.destroy=function(a){e.setAutoScrolling(!1,"internal");e.setAllowScrolling(!1);e.setKeyboardScrolling(!1);h.addClass("fp-destroyed");clearTimeout(ga);clearTimeout(ca);clearTimeout(ia);clearTimeout(Z);
clearTimeout(aa);n.off("scroll",pa).off("hashchange",ya).off("resize",Ba);t.off("click","#fp-nav a").off("mouseenter","#fp-nav li").off("mouseleave","#fp-nav li").off("click",".fp-slidesNav a").off("mouseover",d.normalScrollElements).off("mouseout",d.normalScrollElements);c(".fp-section").off("click",".fp-controlArrow");clearTimeout(ga);clearTimeout(ca);a&&bb()}}});;
// -- Sammy.js -- /sammy.js
// http://sammyjs.org
// Version: 0.7.6
// Built: 2014-08-26 10:45:34 +0300
(function(factory){if(typeof define==="function"&&define.amd){define(["jquery"],factory)}else{jQuery.sammy=window.Sammy=factory(jQuery)}})(function($){var Sammy,PATH_REPLACER="([^/]+)",PATH_NAME_MATCHER=/:([\w\d]+)/g,QUERY_STRING_MATCHER=/\?([^#]*)?$/,_makeArray=function(nonarray){return Array.prototype.slice.call(nonarray)},_isFunction=function(obj){return Object.prototype.toString.call(obj)==="[object Function]"},_isArray=function(obj){return Object.prototype.toString.call(obj)==="[object Array]"},_isRegExp=function(obj){return Object.prototype.toString.call(obj)==="[object RegExp]"},_decode=function(str){return decodeURIComponent((str||"").replace(/\+/g," "))},_encode=encodeURIComponent,_escapeHTML=function(s){return String(s).replace(/&(?!\w+;)/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;").replace(/"/g,"&quot;")},_routeWrapper=function(verb){return function(){return this.route.apply(this,[verb].concat(Array.prototype.slice.call(arguments)))}},_template_cache={},_has_history=!!(window.history&&history.pushState),loggers=[];Sammy=function(){var args=_makeArray(arguments),app,selector;Sammy.apps=Sammy.apps||{};if(args.length===0||args[0]&&_isFunction(args[0])){return Sammy.apply(Sammy,["body"].concat(args))}else if(typeof(selector=args.shift())=="string"){app=Sammy.apps[selector]||new Sammy.Application;app.element_selector=selector;if(args.length>0){$.each(args,function(i,plugin){app.use(plugin)})}if(app.element_selector!=selector){delete Sammy.apps[selector]}Sammy.apps[app.element_selector]=app;return app}};Sammy.VERSION="0.7.6";Sammy.addLogger=function(logger){loggers.push(logger)};Sammy.log=function(){var args=_makeArray(arguments);args.unshift("["+Date()+"]");$.each(loggers,function(i,logger){logger.apply(Sammy,args)})};if(typeof window.console!="undefined"){if(typeof window.console.log==="function"&&_isFunction(window.console.log.apply)){Sammy.addLogger(function(){window.console.log.apply(window.console,arguments)})}else{Sammy.addLogger(function(){window.console.log(arguments)})}}else if(typeof console!="undefined"){Sammy.addLogger(function(){console.log.apply(console,arguments)})}$.extend(Sammy,{makeArray:_makeArray,isFunction:_isFunction,isArray:_isArray});Sammy.Object=function(obj){return $.extend(this,obj||{})};$.extend(Sammy.Object.prototype,{escapeHTML:_escapeHTML,h:_escapeHTML,toHash:function(){var json={};$.each(this,function(k,v){if(!_isFunction(v)){json[k]=v}});return json},toHTML:function(){var display="";$.each(this,function(k,v){if(!_isFunction(v)){display+="<strong>"+k+"</strong> "+v+"<br />"}});return display},keys:function(attributes_only){var keys=[];for(var property in this){if(!_isFunction(this[property])||!attributes_only){keys.push(property)}}return keys},has:function(key){return this[key]&&$.trim(this[key].toString())!==""},join:function(){var args=_makeArray(arguments);var delimiter=args.shift();return args.join(delimiter)},log:function(){Sammy.log.apply(Sammy,arguments)},toString:function(include_functions){var s=[];$.each(this,function(k,v){if(!_isFunction(v)||include_functions){s.push('"'+k+'": '+v.toString())}});return"Sammy.Object: {"+s.join(",")+"}"}});Sammy.targetIsThisWindow=function targetIsThisWindow(event,tagName){var targetElement=$(event.target).closest(tagName);if(targetElement.length===0){return true}var targetWindow=targetElement.attr("target");if(!targetWindow||targetWindow===window.name||targetWindow==="_self"){return true}if(targetWindow==="_blank"){return false}if(targetWindow==="top"&&window===window.top){return true}return false};Sammy.DefaultLocationProxy=function(app,run_interval_every){this.app=app;this.is_native=false;this.has_history=_has_history;this._startPolling(run_interval_every)};Sammy.DefaultLocationProxy.fullPath=function(location_obj){var matches=location_obj.toString().match(/^[^#]*(#.+)$/);var hash=matches?matches[1]:"";return[location_obj.pathname,location_obj.search,hash].join("")};$.extend(Sammy.DefaultLocationProxy.prototype,{bind:function(){var proxy=this,app=this.app,lp=Sammy.DefaultLocationProxy;$(window).bind("hashchange."+this.app.eventNamespace(),function(e,non_native){if(proxy.is_native===false&&!non_native){proxy.is_native=true;window.clearInterval(lp._interval);lp._interval=null}app.trigger("location-changed")});if(_has_history&&!app.disable_push_state){$(window).bind("popstate."+this.app.eventNamespace(),function(e){app.trigger("location-changed")});$(document).delegate("a","click.history-"+this.app.eventNamespace(),function(e){if(e.isDefaultPrevented()||e.metaKey||e.ctrlKey){return}var full_path=lp.fullPath(this),hostname=this.hostname?this.hostname:function(a){var l=document.createElement("a");l.href=a.href;return l.hostname}(this);if(hostname==window.location.hostname&&app.lookupRoute("get",full_path)&&Sammy.targetIsThisWindow(e,"a")){e.preventDefault();proxy.setLocation(full_path);return false}})}if(!lp._bindings){lp._bindings=0}lp._bindings++},unbind:function(){$(window).unbind("hashchange."+this.app.eventNamespace());$(window).unbind("popstate."+this.app.eventNamespace());$(document).undelegate("a","click.history-"+this.app.eventNamespace());Sammy.DefaultLocationProxy._bindings--;if(Sammy.DefaultLocationProxy._bindings<=0){window.clearInterval(Sammy.DefaultLocationProxy._interval);Sammy.DefaultLocationProxy._interval=null}},getLocation:function(){return Sammy.DefaultLocationProxy.fullPath(window.location)},setLocation:function(new_location){if(/^([^#\/]|$)/.test(new_location)){if(_has_history&&!this.app.disable_push_state){new_location="/"+new_location}else{new_location="#!/"+new_location}}if(new_location!=this.getLocation()){if(_has_history&&!this.app.disable_push_state&&/^\//.test(new_location)){history.pushState({path:new_location},window.title,new_location);this.app.trigger("location-changed")}else{return window.location=new_location}}},_startPolling:function(every){var proxy=this;if(!Sammy.DefaultLocationProxy._interval){if(!every){every=10}var hashCheck=function(){var current_location=proxy.getLocation();if(typeof Sammy.DefaultLocationProxy._last_location=="undefined"||current_location!=Sammy.DefaultLocationProxy._last_location){window.setTimeout(function(){$(window).trigger("hashchange",[true])},0)}Sammy.DefaultLocationProxy._last_location=current_location};hashCheck();Sammy.DefaultLocationProxy._interval=window.setInterval(hashCheck,every)}}});Sammy.Application=function(app_function){var app=this;this.routes={};this.listeners=new Sammy.Object({});this.arounds=[];this.befores=[];this.namespace=(new Date).getTime()+"-"+parseInt(Math.random()*1e3,10);this.context_prototype=function(){Sammy.EventContext.apply(this,arguments)};this.context_prototype.prototype=new Sammy.EventContext;if(_isFunction(app_function)){app_function.apply(this,[this])}if(!this._location_proxy){this.setLocationProxy(new Sammy.DefaultLocationProxy(this,this.run_interval_every))}if(this.debug){this.bindToAllEvents(function(e,data){app.log(app.toString(),e.cleaned_type,data||{})})}};Sammy.Application.prototype=$.extend({},Sammy.Object.prototype,{ROUTE_VERBS:["get","post","put","delete"],APP_EVENTS:["run","unload","lookup-route","run-route","route-found","event-context-before","event-context-after","changed","error","check-form-submission","redirect","location-changed"],_last_route:null,_location_proxy:null,_running:false,element_selector:"body",debug:false,raise_errors:false,run_interval_every:50,disable_push_state:false,template_engine:null,toString:function(){return"Sammy.Application:"+this.element_selector},$element:function(selector){return selector?$(this.element_selector).find(selector):$(this.element_selector)},use:function(){var args=_makeArray(arguments),plugin=args.shift(),plugin_name=plugin||"";try{args.unshift(this);if(typeof plugin=="string"){plugin_name="Sammy."+plugin;plugin=Sammy[plugin]}plugin.apply(this,args)}catch(e){if(typeof plugin==="undefined"){this.error("Plugin Error: called use() but plugin ("+plugin_name.toString()+") is not defined",e)}else if(!_isFunction(plugin)){this.error("Plugin Error: called use() but '"+plugin_name.toString()+"' is not a function",e)}else{this.error("Plugin Error",e)}}return this},setLocationProxy:function(new_proxy){var original_proxy=this._location_proxy;this._location_proxy=new_proxy;if(this.isRunning()){if(original_proxy){original_proxy.unbind()}this._location_proxy.bind()}},log:function(){Sammy.log.apply(Sammy,Array.prototype.concat.apply([this.element_selector],arguments))},route:function(verb,path){var app=this,param_names=[],add_route,path_match,callback=Array.prototype.slice.call(arguments,2);if(callback.length===0&&_isFunction(path)){callback=[path];path=verb;verb="any"}verb=verb.toLowerCase();if(path.constructor==String){PATH_NAME_MATCHER.lastIndex=0;while((path_match=PATH_NAME_MATCHER.exec(path))!==null){param_names.push(path_match[1])}path=new RegExp(path.replace(PATH_NAME_MATCHER,PATH_REPLACER)+"$")}$.each(callback,function(i,cb){if(typeof cb==="string"){callback[i]=app[cb]}});add_route=function(with_verb){var r={verb:with_verb,path:path,callback:callback,param_names:param_names};app.routes[with_verb]=app.routes[with_verb]||[];app.routes[with_verb].push(r)};if(verb==="any"){$.each(this.ROUTE_VERBS,function(i,v){add_route(v)})}else{add_route(verb)}return this},get:_routeWrapper("get"),post:_routeWrapper("post"),put:_routeWrapper("put"),del:_routeWrapper("delete"),any:_routeWrapper("any"),mapRoutes:function(route_array){var app=this;$.each(route_array,function(i,route_args){app.route.apply(app,route_args)});return this},eventNamespace:function(){return["sammy-app",this.namespace].join("-")},bind:function(name,data,callback){var app=this;if(typeof callback=="undefined"){callback=data}var listener_callback=function(){var e,context,data;e=arguments[0];data=arguments[1];if(data&&data.context){context=data.context;delete data.context}else{context=new app.context_prototype(app,"bind",e.type,data,e.target)}e.cleaned_type=e.type.replace(app.eventNamespace(),"");callback.apply(context,[e,data])};if(!this.listeners[name]){this.listeners[name]=[]}this.listeners[name].push(listener_callback);if(this.isRunning()){this._listen(name,listener_callback)}return this},trigger:function(name,data){this.$element().trigger([name,this.eventNamespace()].join("."),[data]);return this},refresh:function(){this.last_location=null;this.trigger("location-changed");return this},before:function(options,callback){if(_isFunction(options)){callback=options;options={}}this.befores.push([options,callback]);return this},after:function(callback){return this.bind("event-context-after",callback)},around:function(callback){this.arounds.push(callback);return this},onComplete:function(callback){this._onComplete=callback;return this},isRunning:function(){return this._running},helpers:function(extensions){$.extend(this.context_prototype.prototype,extensions);return this},helper:function(name,method){this.context_prototype.prototype[name]=method;return this},run:function(start_url){if(this.isRunning()){return false}var app=this;$.each(this.listeners.toHash(),function(name,callbacks){$.each(callbacks,function(i,listener_callback){app._listen(name,listener_callback)})});this.trigger("run",{start_url:start_url});this._running=true;this.last_location=null;if(!/\#(.+)/.test(this.getLocation())&&typeof start_url!="undefined"){this.setLocation(start_url)}this._checkLocation();this._location_proxy.bind();this.bind("location-changed",function(){app._checkLocation()});this.bind("submit",function(e){if(!Sammy.targetIsThisWindow(e,"form")){return true}var returned=app._checkFormSubmission($(e.target).closest("form"));return returned===false?e.preventDefault():false});$(window).bind("unload",function(){app.unload()});return this.trigger("changed")},unload:function(){if(!this.isRunning()){return false}var app=this;this.trigger("unload");this._location_proxy.unbind();this.$element().unbind("submit").removeClass(app.eventNamespace());$.each(this.listeners.toHash(),function(name,listeners){$.each(listeners,function(i,listener_callback){app._unlisten(name,listener_callback)})});this._running=false;return this},destroy:function(){this.unload();delete Sammy.apps[this.element_selector];return this},bindToAllEvents:function(callback){var app=this;$.each(this.APP_EVENTS,function(i,e){app.bind(e,callback)});$.each(this.listeners.keys(true),function(i,name){if($.inArray(name,app.APP_EVENTS)==-1){app.bind(name,callback)}});return this},routablePath:function(path){return path.replace(QUERY_STRING_MATCHER,"")},lookupRoute:function(verb,path){var app=this,routed=false,i=0,l,route;if(typeof this.routes[verb]!="undefined"){l=this.routes[verb].length;for(;i<l;i++){route=this.routes[verb][i];if(app.routablePath(path).match(route.path)){routed=route;break}}}return routed},runRoute:function(verb,path,params,target){var app=this,route=this.lookupRoute(verb,path),context,wrapped_route,arounds,around,befores,before,callback_args,path_params,final_returned;if(this.debug){this.log("runRoute",[verb,path].join(" "))}this.trigger("run-route",{verb:verb,path:path,params:params});if(typeof params=="undefined"){params={}}$.extend(params,this._parseQueryString(path));if(route){this.trigger("route-found",{route:route});if((path_params=route.path.exec(this.routablePath(path)))!==null){path_params.shift();$.each(path_params,function(i,param){if(route.param_names[i]){params[route.param_names[i]]=_decode(param)}else{if(!params.splat){params.splat=[]}params.splat.push(_decode(param))}})}context=new this.context_prototype(this,verb,path,params,target);arounds=this.arounds.slice(0);befores=this.befores.slice(0);callback_args=[context];if(params.splat){callback_args=callback_args.concat(params.splat)}wrapped_route=function(){var returned,i,nextRoute;while(befores.length>0){before=befores.shift();if(app.contextMatchesOptions(context,before[0])){returned=before[1].apply(context,[context]);if(returned===false){return false}}}app.last_route=route;context.trigger("event-context-before",{context:context});if(typeof route.callback==="function"){route.callback=[route.callback]}if(route.callback&&route.callback.length){i=-1;nextRoute=function(){i++;if(route.callback[i]){returned=route.callback[i].apply(context,callback_args)}else if(app._onComplete&&typeof(app._onComplete==="function")){app._onComplete(context)}};callback_args.push(nextRoute);nextRoute()}context.trigger("event-context-after",{context:context});return returned};$.each(arounds.reverse(),function(i,around){var last_wrapped_route=wrapped_route;wrapped_route=function(){return around.apply(context,[last_wrapped_route])}});try{final_returned=wrapped_route()}catch(e){this.error(["500 Error",verb,path].join(" "),e)}return final_returned}else{return this.notFound(verb,path)}},contextMatchesOptions:function(context,match_options,positive){var options=match_options;if(typeof options==="string"||_isRegExp(options)){options={path:options}}if(typeof positive==="undefined"){positive=true}if($.isEmptyObject(options)){return true}if(_isArray(options.path)){var results,numopt,opts,len;results=[];for(numopt=0,len=options.path.length;numopt<len;numopt+=1){opts=$.extend({},options,{path:options.path[numopt]});results.push(this.contextMatchesOptions(context,opts))}var matched=$.inArray(true,results)>-1?true:false;return positive?matched:!matched}if(options.only){return this.contextMatchesOptions(context,options.only,true)}else if(options.except){return this.contextMatchesOptions(context,options.except,false)}var path_matched=true,verb_matched=true;if(options.path){if(!_isRegExp(options.path)){options.path=new RegExp(options.path.toString()+"$")}path_matched=options.path.test(context.path)}if(options.verb){if(typeof options.verb==="string"){verb_matched=options.verb===context.verb}else{verb_matched=options.verb.indexOf(context.verb)>-1}}return positive?verb_matched&&path_matched:!(verb_matched&&path_matched)},getLocation:function(){return this._location_proxy.getLocation()},setLocation:function(new_location){return this._location_proxy.setLocation(new_location)},swap:function(content,callback){var $el=this.$element().html(content);if(_isFunction(callback)){callback(content)}return $el},templateCache:function(key,value){if(typeof value!="undefined"){return _template_cache[key]=value}else{return _template_cache[key]}},clearTemplateCache:function(){return _template_cache={}},notFound:function(verb,path){var ret=this.error(["404 Not Found",verb,path].join(" "));return verb==="get"?ret:true},error:function(message,original_error){if(!original_error){original_error=new Error}original_error.message=[message,original_error.message].join(" ");this.trigger("error",{message:original_error.message,error:original_error});if(this.raise_errors){throw original_error}else{this.log(original_error.message,original_error)}},_checkLocation:function(){var location,returned;location=this.getLocation();if(!this.last_location||this.last_location[0]!="get"||this.last_location[1]!=location){this.last_location=["get",location];returned=this.runRoute("get",location)}return returned},_getFormVerb:function(form){var $form=$(form),verb,$_method;$_method=$form.find('input[name="_method"]');if($_method.length>0){verb=$_method.val()}if(!verb){verb=$form[0].getAttribute("method")}if(!verb||verb===""){verb="get"}return $.trim(verb.toString().toLowerCase())},_checkFormSubmission:function(form){var $form,path,verb,params,returned;this.trigger("check-form-submission",{form:form});$form=$(form);path=$form.attr("action")||"";verb=this._getFormVerb($form);if(this.debug){this.log("_checkFormSubmission",$form,path,verb)}if(verb==="get"){params=this._serializeFormParams($form);if(params!==""){path+="?"+params}this.setLocation(path);returned=false}else{params=$.extend({},this._parseFormParams($form));returned=this.runRoute(verb,path,params,form.get(0))}return typeof returned=="undefined"?false:returned},_serializeFormParams:function($form){var queryString="",fields=$form.serializeArray(),i;if(fields.length>0){queryString=this._encodeFormPair(fields[0].name,fields[0].value);for(i=1;i<fields.length;i++){queryString=queryString+"&"+this._encodeFormPair(fields[i].name,fields[i].value)}}return queryString},_encodeFormPair:function(name,value){return _encode(name)+"="+_encode(value)},_parseFormParams:function($form){var params={},form_fields=$form.serializeArray(),i;for(i=0;i<form_fields.length;i++){params=this._parseParamPair(params,form_fields[i].name,form_fields[i].value)}return params},_parseQueryString:function(path){var params={},parts,pairs,pair,i;parts=path.match(QUERY_STRING_MATCHER);if(parts&&parts[1]){pairs=parts[1].split("&");for(i=0;i<pairs.length;i++){pair=pairs[i].split("=");params=this._parseParamPair(params,_decode(pair[0]),_decode(pair[1]||""))}}return params},_parseParamPair:function(params,key,value){if(typeof params[key]!=="undefined"){if(_isArray(params[key])){params[key].push(value)}else{params[key]=[params[key],value]}}else{params[key]=value}return params},_listen:function(name,callback){return this.$element().bind([name,this.eventNamespace()].join("."),callback)},_unlisten:function(name,callback){return this.$element().unbind([name,this.eventNamespace()].join("."),callback)}});Sammy.RenderContext=function(event_context){this.event_context=event_context;this.callbacks=[];this.previous_content=null;this.content=null;this.next_engine=false;this.waiting=false};Sammy.RenderContext.prototype=$.extend({},Sammy.Object.prototype,{then:function(callback){if(!_isFunction(callback)){if(typeof callback==="string"&&callback in this.event_context){var helper=this.event_context[callback];callback=function(content){return helper.apply(this.event_context,[content])}}else{return this}}var context=this;if(this.waiting){this.callbacks.push(callback)}else{this.wait();window.setTimeout(function(){var returned=callback.apply(context,[context.content,context.previous_content]);if(returned!==false){context.next(returned)}},0)}return this},wait:function(){this.waiting=true},next:function(content){this.waiting=false;if(typeof content!=="undefined"){this.previous_content=this.content;this.content=content}if(this.callbacks.length>0){this.then(this.callbacks.shift())}},load:function(location,options,callback){var context=this;return this.then(function(){var should_cache,cached,is_json,location_array;if(_isFunction(options)){callback=options;options={}}else{options=$.extend({},options)}if(callback){this.then(callback)}if(typeof location==="string"){is_json=location.match(/\.json(\?|$)/)||options.json;should_cache=is_json?options.cache===true:options.cache!==false;context.next_engine=context.event_context.engineFor(location);delete options.cache;delete options.json;if(options.engine){context.next_engine=options.engine;delete options.engine}if(should_cache&&(cached=this.event_context.app.templateCache(location))){return cached}this.wait();$.ajax($.extend({url:location,data:{},dataType:is_json?"json":"text",type:"get",success:function(data){if(should_cache){context.event_context.app.templateCache(location,data)}context.next(data)}},options));return false}else{if(location.nodeType){return location.innerHTML}if(location.selector){context.next_engine=location.attr("data-engine");if(options.clone===false){return location.remove()[0].innerHTML.toString()}else{return location[0].innerHTML.toString()}}}})},loadPartials:function(partials){var name;if(partials){this.partials=this.partials||{};for(name in partials){(function(context,name){context.load(partials[name]).then(function(template){this.partials[name]=template})})(this,name)}}return this},render:function(location,data,callback,partials){if(_isFunction(location)&&!data){return this.then(location)}else{if(_isFunction(data)){partials=callback;callback=data;data=null}else if(callback&&!_isFunction(callback)){partials=callback;callback=null}return this.loadPartials(partials).load(location).interpolate(data,location).then(callback)}},partial:function(location,data,callback,partials){if(_isFunction(callback)){return this.render(location,data,partials).swap(callback)}else if(_isFunction(data)){return this.render(location,{},callback).swap(data)}else{return this.render(location,data,callback).swap()}},send:function(){var context=this,args=_makeArray(arguments),fun=args.shift();if(_isArray(args[0])){args=args[0]}return this.then(function(content){args.push(function(response){context.next(response)});context.wait();fun.apply(fun,args);return false})},collect:function(array,callback,now){var context=this;var coll=function(){if(_isFunction(array)){callback=array;array=this.content}var contents=[],doms=false;$.each(array,function(i,item){var returned=callback.apply(context,[i,item]);if(returned.jquery&&returned.length==1){returned=returned[0];doms=true}contents.push(returned);return returned});return doms?contents:contents.join("")};return now?coll():this.then(coll)},renderEach:function(location,name,data,callback){if(_isArray(name)){callback=data;data=name;name=null}return this.load(location).then(function(content){var rctx=this;if(!data){data=_isArray(this.previous_content)?this.previous_content:[]}if(callback){$.each(data,function(i,value){var idata={},engine=this.next_engine||location;if(name){idata[name]=value}else{idata=value}callback(value,rctx.event_context.interpolate(content,idata,engine))})}else{return this.collect(data,function(i,value){var idata={},engine=this.next_engine||location;if(name){idata[name]=value}else{idata=value}return this.event_context.interpolate(content,idata,engine)},true)}})},interpolate:function(data,engine,retain){var context=this;return this.then(function(content,prev){if(!data&&prev){data=prev}if(this.next_engine){engine=this.next_engine;this.next_engine=false}var rendered=context.event_context.interpolate(content,data,engine,this.partials);return retain?prev+rendered:rendered})},swap:function(callback){return this.then(function(content){this.event_context.swap(content,callback);return content}).trigger("changed",{})},appendTo:function(selector){return this.then(function(content){$(selector).append(content)}).trigger("changed",{})},prependTo:function(selector){return this.then(function(content){$(selector).prepend(content)}).trigger("changed",{})},replace:function(selector){return this.then(function(content){$(selector).html(content)}).trigger("changed",{})},trigger:function(name,data){return this.then(function(content){if(typeof data=="undefined"){data={content:content}}this.event_context.trigger(name,data);return content})}});Sammy.EventContext=function(app,verb,path,params,target){this.app=app;this.verb=verb;this.path=path;this.params=new Sammy.Object(params);this.target=target};Sammy.EventContext.prototype=$.extend({},Sammy.Object.prototype,{$element:function(){return this.app.$element(_makeArray(arguments).shift())},engineFor:function(engine){var context=this,engine_match;if(_isFunction(engine)){return engine}engine=(engine||context.app.template_engine).toString();if(engine_match=engine.match(/\.([^\.\?\#]+)(\?|$)/)){engine=engine_match[1]}if(engine&&_isFunction(context[engine])){return context[engine]}if(context.app.template_engine){return this.engineFor(context.app.template_engine)}return function(content,data){return content}},interpolate:function(content,data,engine,partials){return this.engineFor(engine).apply(this,[content,data,partials])},render:function(location,data,callback,partials){return new Sammy.RenderContext(this).render(location,data,callback,partials)},renderEach:function(location,name,data,callback){return new Sammy.RenderContext(this).renderEach(location,name,data,callback)},load:function(location,options,callback){return new Sammy.RenderContext(this).load(location,options,callback)},loadPartials:function(partials){return new Sammy.RenderContext(this).loadPartials(partials)},partial:function(location,data,callback,partials){return new Sammy.RenderContext(this).partial(location,data,callback,partials)},send:function(){var rctx=new Sammy.RenderContext(this);return rctx.send.apply(rctx,arguments)},redirect:function(){var to,args=_makeArray(arguments),current_location=this.app.getLocation(),l=args.length;if(l>1){var i=0,paths=[],pairs=[],params={},has_params=false;for(;i<l;i++){if(typeof args[i]=="string"){paths.push(args[i])}else{$.extend(params,args[i]);has_params=true}}to=paths.join("/");if(has_params){for(var k in params){pairs.push(this.app._encodeFormPair(k,params[k]))}to+="?"+pairs.join("&")}}else{to=args[0]}this.trigger("redirect",{to:to});this.app.last_location=[this.verb,this.path];this.app.setLocation(to);if(new RegExp(to).test(current_location)){this.app.trigger("location-changed")}},trigger:function(name,data){if(typeof data=="undefined"){data={}}if(!data.context){data.context=this}return this.app.trigger(name,data)},eventNamespace:function(){return this.app.eventNamespace()},swap:function(contents,callback){return this.app.swap(contents,callback)},notFound:function(){return this.app.notFound(this.verb,this.path)},json:function(string){return $.parseJSON(string)},toString:function(){return"Sammy.EventContext: "+[this.verb,this.path,this.params].join(" ")}});return Sammy});;
function pushViewEvent(sessionId, resourceCategoryId, resourceId, baseUrl) {
    $.ajax({
        url: baseUrl + '/events',
        type: 'POST',
        cache: false,
        contentType: "application/json; charset=utf-8",
        dataType: "json",
        data: JSON.stringify({ "ResourceCategoryId": resourceCategoryId, "ResourceId": resourceId, "EventType": "0", "SessionId": sessionId })
    });
}

function getResourceViews(sessionId, resourceCategoryId, resourceId, baseUrl, successHandler) {
        $.ajax({
            url: baseUrl + '/counters',
            type: 'POST',
            cache: false,
            contentType: "application/json; charset=utf-8",
            dataType: "json",
            data: JSON.stringify(
                {
                    "CounterId": "cf369842-c885-4820-ba9f-23c3933a3f9e",
                    "Filter": [{ "ResourceCategoryId": resourceCategoryId, "ResourceIdList": [resourceId] }],
                    "SessionId": sessionId
                }),
            success: function (data) {
                if (data.Successful === true) {
                    successHandler(data.Result[0].Value)
                }
            }
        });
};
var cm = (function () {
    
    var sessionId = function () {
        return getCookiesValue('ALU_SID_1');
    };

    var consts = {
    };

    var variables = {
    };

    var monthNames = ["January", "February", "March", "April", "May", "June",
        "July", "August", "September", "October", "November", "December"];

    var newGuid = function () {
        function s4() {
            return Math.floor((1 + Math.random()) * 0x10000)
                       .toString(16)
                       .substring(1).toUpperCase();
        }

        return s4() + s4() + '-' + s4() + '-' + s4() + '-' +
                s4() + '-' + s4() + s4() + s4();
    };

    var formatBigNumber = function (number) {
        // Displays Bs
        if (number >= 1000000000) return "Bs";

        if (number >= 10000000) {
            var result = number / 1000000;
            return result.toFixed(0) + "M";
        }

        if (number >= 1000000) {
            var result = number / 1000000;
            return result.toFixed(1) + "M";
        }

        if (number >= 10000) {
            var result = number / 1000;
            return result.toFixed(0) + "K";
        }

        if (number >= 1000) {
            var result = number / 1000;
            return result.toFixed(1) + "K";
        }

        return number;
    }

    /* Start: Page Params */

    var pageParams = (function () {

        // paramsObject
        var paramsObject;

        // initParams
        var initParams = function () {
            paramsObject = new Object;
            paramsObject.controllerName = '';
            paramsObject.actionName = '';
            paramsObject.global = new Object;
            paramsObject.controllerParams = new Object;
            paramsObject.local = new Object;
        }

        // loadParams
        var loadParams = function () {
            if (window.name == '') {
                initParams();
            } else {
                try {
                    paramsObject = JSON.parse(window.name);
                } catch (e) {
                    initParams();
                }
            }

            // Reset local parameters if controller or action is changed
            var inputControllerName = document.getElementById('cm-conntroller-name');
            var inputActionName = document.getElementById('cm-action-name');

            if (inputControllerName && inputActionName) {
                var currentControllerName = inputControllerName.value;
                var currentActionName = inputActionName.value;

                if (paramsObject.controllerName != currentControllerName) {
                    paramsObject.controllerParams = new Object;
                }

                if (paramsObject.controllerName != currentControllerName ||
                    paramsObject.actionName != currentActionName) {
                    paramsObject.local = new Object;
                }

                paramsObject.controllerName = currentControllerName;
                paramsObject.actionName = currentActionName;

                window.name = JSON.stringify(paramsObject);
            }
        }

        // addParam
        var addParam = function (key, value) {
            if (!paramsObject.local) {
                paramsObject.local = new Object;
            }

            paramsObject.local[key] = value;
            window.name = JSON.stringify(paramsObject);
        }

        // getParam
        var getParam = function (key) {
            if (!paramsObject.local) {
                paramsObject.local = new Object;
            }

            return paramsObject.local[key];
        }

        // addControllerParam
        var addControllerParam = function (key, value) {
            if (!paramsObject.controllerParams) {
                paramsObject.controllerParams = new Object;
            }

            paramsObject.controllerParams[key] = value;
            window.name = JSON.stringify(paramsObject);
        }

        // getControllerParam
        var getControllerParam = function (key) {
            if (!paramsObject.controllerParams) {
                paramsObject.controllerParams = new Object;
            }

            return paramsObject.controllerParams[key];
        }

        // addGlobalParam
        var addGlobalParam = function (key, value) {
            if (!paramsObject.global) {
                paramsObject.global = new Object;
            }

            paramsObject.global[key] = value;
            window.name = JSON.stringify(paramsObject);
            
        }

        // getGlobalParam
        var getGlobalParam = function (key) {
            if (!paramsObject.global) {
                paramsObject.global = new Object;
            }

            return paramsObject.global[key];
        }

        // getAndEraseGlobalParam
        var getAndEraseGlobalParam = function (key) {
            var res = paramsObject.global[key];
            paramsObject.global[key] = undefined;
            return res;
        }

        // loadParams
        loadParams();

        return {
            // Action Params
            addParam: addParam,
            getParam: getParam,
            // Controller Params
            addControllerParam: addControllerParam,
            getControllerParam: getControllerParam,
            // Global Params
            addGlobalParam: addGlobalParam,
            getGlobalParam: getGlobalParam,
            getAndEraseGlobalParam: getAndEraseGlobalParam
        }
    })();

    /* End: Page Params */

    

    var pleaseWait = (function () {
        var showQueue = new Array;
        var pleaseWaitInProgress = false;

        var pleaseWaitDiv =
            $(
            '<div id="pleaseWaitDiv" class="modal fade">' +
                '<div class="modal-dialog modal-sm modal-please-wait">' +
                    '<div class="modal-content">' +
                        '<div class="modal-header">' +
                            '<h4 class="modal-title">Please wait...</h4>' +
                        '</div>' +
                        '<div class="modal-body">' +
                            '<div class="progress">' +
                                '<div class="progress-bar progress-bar-striped progress-bar-warning active" role="progressbar" aria-valuenow="100" aria-valuemin="0" aria-valuemax="100" style="width: 100%">' +
                                    '<span class="sr-only">Please wait...</span>' +
                                '</div>' +
                            '</div>' +
                         '</div>' +
                     '</div>' +
                 '</div>' +
             '</div>');

        var pleaseWaitShown = function () {
            pleaseWaitInProgress = false;

            if (showQueue.length == 1 && !showQueue[0]) {
                cm.pleaseWait.hide();
            }
        }

        var pleaseWaitHidden = function () {
            pleaseWaitInProgress = false;

            var showPleaseWait = (showQueue.length == 1 && showQueue[0]);
            showQueue.pop();

            if (showPleaseWait) {
                cm.pleaseWait.show();
            }
        }

        pleaseWaitDiv.bind('shown.bs.modal', pleaseWaitShown);
        pleaseWaitDiv.bind('hidden.bs.modal', pleaseWaitHidden);

        return {
            hasQueue: function() {
                return (showQueue.length > 0);
            },
            show: function () {
                if (showQueue.length == 1 && !showQueue[0]) {
                    showQueue[0] = true;
                } else {
                    showQueue.push(true);
                }
                
                if (pleaseWaitInProgress) { return; }

                pleaseWaitInProgress = true;
                pleaseWaitDiv.modal({ keyboard: false, backdrop: "static" });
            },
            hide: function () {
                if (showQueue.length == 0) { return; }

                if (showQueue.length > 1) {
                    showQueue.pop();
                } else {
                    showQueue[0] = false;
                }
                
                if (pleaseWaitInProgress) { return; }

                pleaseWaitInProgress = true;
                pleaseWaitDiv.modal('hide');
            },
        };
    })();

    var confirm = function(message, callback) {
        bootbox.dialog({
            title: 'Circuit Maker Message',
            message: message,
            buttons: {
                Ok: {
                    label: "OK",
                    className: "btn-cm-style small",
                    callback: function() {
                        callback(true);
                    }
                },
                cancel: {
                    label: "Cancel",
                    className: "btn-cm-dark-style",
                    callback: function() {
                        callback(false);
                    }
                }
            }
        });
    };

    var alert = function (message, callback) {
        bootbox.dialog({
            className: "bootbox-alert",
            title: 'Circuit Maker Message',
            message: message,
            buttons: {
                Ok: {
                    label: "OK",
                    className: "btn-cm-style small",
                    callback: callback
                }
            }
        });
    };

    var switchchk = function (chkid) {
        var checked = $('#' + chkid).val().toLowerCase() == "true" ? false : true;
        $('#' + chkid).prop('value', checked);
        $('input[name=' + chkid + ']').prop('value', checked);
        if (checked)
            { $('#' + chkid + '_inner').css('display', 'block'); }
        else
            { $('#' + chkid + '_inner').css('display', 'none'); }
    }


    var baseUrl = function() {
        return $('body').data('actionUrls').baseUrl;
    };

    var getCookiesValue = function(cookieName) {
        var indexStart = document.cookie.indexOf(cookieName + "=");
        if (indexStart > -1) {
            indexStart += (cookieName + "=").length;
            var indexStop = document.cookie.indexOf(";", indexStart);
            if (indexStop == -1) {
                indexStop = document.cookie.length;
            }
            cookieValue = document.cookie.substring(indexStart, indexStop);
            return decodeURIComponent(cookieValue);
        }
    };

    var setCookiesValue = function(name, value, days) {
        if (days) {
            var date = new Date();
            date.setTime(date.getTime() + (days * 24 * 60 * 60 * 1000));
            var expires = "; expires=" + date.toGMTString();
        } else var expires = "";
        document.cookie = name + "=" + value + expires + "; path=/";
    };

    var breadcrumbsItemType = {
        link: 0,
        text: 1,
        wait: 2
    };

    var BreadcrumbsViewModel = function () {
        
        var items = ko.observableArray([]);

        function addMainIfNeed() {
            if (items().length == 0) {
                items.push({ type: breadcrumbsItemType.link, url: baseUrl(), name: 'Home' });
            }
        }

        function addLink(url, name) {
            addMainIfNeed();
            items.push({ type: breadcrumbsItemType.link, url: url, name: name });
        }

        function addText(name) {
            addMainIfNeed();
            items.push({ type: breadcrumbsItemType.text, url: '', name: name });
        }

        function addWait() {
            addMainIfNeed();
            items.push({ type: breadcrumbsItemType.wait, url: baseUrl() + 'Content/Images/ajax-loader.gif', name: '' });
        }

        function removeWait() {
            items.remove(function(item) {
                if (item.type == breadcrumbsItemType.wait) {
                    return item;
                }
            });
        };

        function isLastItem(index) {
            return index == items().length - 1;
        };

        function htmlBind(){
            var breadcrumbElement = document.getElementById('breadcrumb');
            if (breadcrumbElement != null) {
                ko.applyBindings(cm.breadcrumbsViewModel, breadcrumbElement);
            }
        }

        return {
            items: items,
            addText: addText,
            addLink: addLink,
            addWait: addWait,
            removeWait: removeWait,
            isLastItem: isLastItem,
            htmlBind: htmlBind,
        };
    };

    var breadcrumbsViewModel = new BreadcrumbsViewModel();

    // enable validation in popup form with content from action
    var preparePopupValidation = function (formId) {
        var form = $('#' + formId)
            .removeData("validator")
            .removeData("unobtrusiveValidation");

        $.validator.unobtrusive.parse(form);
    };

    // get top zIndex (if we wants to place DIV over all existing DIVs)
    var gettopmost = function() {
        var elements = document.getElementsByTagName("*");
        var highest_index = 0;

        for (var i = 0; i < elements.length - 1; i++) {
            if (parseInt(elements[i].style.zIndex) > highest_index) {
                highest_index = parseInt(elements[i].style.zIndex);
            }
        }
        return highest_index;

    };

    var getRandomInt = function (min, max) {
        return Math.floor(Math.random() * (max - min)) + min;
    }
    
    // Publish/Subscribe for CRUD operation in Modal forms with content from Action
    function Observers () {
        this.observers = [];
    };

    Observers.prototype.add = function(observer) {
        this.observers.push(observer);
    };

    Observers.prototype.remove = function(observer) {
        var index = this.observers.indexOf(observer);

        if (~index) {
            this.observers.splice(index, 1);
        }
    };

    Observers.prototype.notify = function(message) {
        for (var i = this.observers.length - 1; i >= 0; i--) {
            this.observers[i](message);
        }
        ;
    };

    function formatNumber(number) {
        return ("" + number).replace(/\B(?=(\d{3})+(?!\d))/g, " ");
    };

    function formatDateFull(date, isShort) {
        
        // create Date object for current location
        var localDate = date;
        if (!(date instanceof Date)) {
            localDate = new Date(parseInt(date.substr(6)));
        }

        var monthesEn = {
            month_names: ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December'],
            month_names_short: ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec']
        };
        
        var monthName = localDate.getMonth();

        var result;

        if (isShort) {
            var shortMonthName = monthesEn.month_names_short[monthName];
            result = shortMonthName + " " + localDate.getDate() + ", " + localDate.getFullYear();
        } else {
            result = localDate.getDate() + " " + monthesEn.month_names[monthName] + ", " + localDate.getFullYear();
        }

        
        return result;
    };

    function formatDate(date) {
        return formatDateFull(date, true);
    };

    function formatDateFullForArray(items, originalPropertyName, formattedPropertyName) {
        if (!originalPropertyName) {
            return;
        }
        formattedPropertyName = formattedPropertyName || originalPropertyName + "Formatted";
        
        items.forEach(function (item) {
            item[formattedPropertyName] = ko.computed(function () {
                return cm.formatDateFull(item[originalPropertyName]);
            }, this);
        });

    };

    function getTimeAgoFromMilisecond(strDate) {
        var localDate = new Date(parseInt(strDate.substr(6)));
        return getTimeAgo(localDate);
    }

    function getTimeAgo(postDate) {
        
        var date2 = new Date();
        var date1 = postDate;

        var second = 1000, minute = second * 60, hour = minute * 60, day = hour * 24, week = day * 7;
        
        
        var timeDiff = date2 - date1;

        var yearDiff = Math.floor(timeDiff / (day*365));
        if (yearDiff > 0) {
            if (yearDiff == 1) {
                return "{0} year ago".format(yearDiff);
            } else {
                return "{0} years ago".format(yearDiff);
            }
        }
        

        var monthDiff = Math.floor(timeDiff / (day * 31));
        if (monthDiff > 0) {
            if (monthDiff == 1) {
                return "{0} month ago".format(monthDiff);
            } else {
                return "{0} months ago".format(monthDiff);
            }
        }
        
        
        var weekDiff = Math.floor(timeDiff / week);
        if (weekDiff > 0) {
            if (weekDiff == 1) {
                return "{0} week ago".format(weekDiff);
            } else {
                return "{0} weeks ago".format(weekDiff);
            }
        }

        var dayDiff = Math.floor(timeDiff / day);
        if (dayDiff > 0) {
            if (dayDiff == 1) {
                return "{0} day ago".format(dayDiff);
            } else {
                return "{0} days ago".format(dayDiff);
            }
        }
            

        var hourDiff = Math.floor(timeDiff / hour);
        if (hourDiff > 0) {
            if (hourDiff == 1) {
                return "{0} hour ago".format(hourDiff);
            } else {
                return "{0} hours ago".format(hourDiff);
            }
        }
            

        var ninuteDiff = Math.floor(timeDiff / minute);
        if (ninuteDiff > 0) {
            if (ninuteDiff == 1) {
                return "{0} minute ago".format(ninuteDiff);
            } else {
                return "{0} minutes ago".format(ninuteDiff);
            }
        }
        return "just now";
    };

    var PagedItem = function (pageNum, viewType) {
        this.pageNum = pageNum;
        this.viewType = viewType;
    };

    var PaginationOptions = function () {
        // paging ptions
        this.pageSize = 10;
        this.paginationLength = 5;
        // controls options 
        this.showPreviousPageArrow = true;
        this.showNextPageArrow = true;
    };

    var PagedList = function (paginationOptions, callback) {
        var self = this;

        self.paginationOptions = paginationOptions;
        if (self.paginationOptions.paginationLength < 1) { self.paginationOptions.paginationLength = 1; };

        var action = callback;

        this.currentIndex = ko.observable(0);

        this.totalRecords = ko.observable(0);

        this.lastPage = function () {
            return Math.ceil(self.totalRecords() / (self.paginationOptions.pageSize));
        }
      
        this.paginationItems = ko.computed(function () {
            var arr = [];

            if (self.totalRecords() == 0)
                return arr;
            
            var currentPage = self.currentIndex();
            var currentLastPage = self.lastPage();

            if (self.paginationOptions.paginationLength >= currentLastPage)
            {
                for (var i = 1; i <= currentLastPage; i++)
                {
                    if (i == currentPage) {
                        arr.push(new PagedItem(i, 0));
                    }
                    else {
                        arr.push(new PagedItem(i, 1));
                    }
                }
            }
            else {
                var startPageIndex = currentPage - self.paginationOptions.paginationLength;
                var endPageIndex = currentPage + self.paginationOptions.paginationLength;

                if (startPageIndex < 1) { startPageIndex = 1; }
                if (endPageIndex > currentLastPage) { endPageIndex = currentLastPage; }

                // Correcting indexes to show self.paginationOptions.paginationLength * 2 pages if possible
                var indexSubtraction = endPageIndex - startPageIndex;
                var expectedIndexSubtraction = self.paginationOptions.paginationLength * 2;
                if (indexSubtraction < expectedIndexSubtraction) {
                    var pageIndexShift = expectedIndexSubtraction - indexSubtraction;

                    // the more active page is close the last page, more pages will be added to the left from the current page
                    if (endPageIndex - currentPage < self.paginationOptions.paginationLength) {
                        startPageIndex -= pageIndexShift;
                        if (startPageIndex < 1) { startPageIndex = 1; }
                    }

                    // the more active page is close the first page, more pages will be added to the right from the current page
                    if (currentPage - startPageIndex < self.paginationOptions.paginationLength) {
                        endPageIndex += pageIndexShift;
                        if (endPageIndex > currentLastPage) { endPageIndex = currentLastPage; }
                    }
                }

                // main pages block
                for (var i = startPageIndex; i <= endPageIndex; i++) {
                    if (i == currentPage) {
                        arr.push(new PagedItem(i, 0));
                    }
                    else {
                        arr.push(new PagedItem(i, 1));
                    }
                }

                // first page index
                if (startPageIndex > 1) {
                    if (arr[0].pageNum != 2) { arr.unshift(new PagedItem('...', 2)); };
                    arr.unshift(new PagedItem(1, 1));
                }

                // last page index
                if (endPageIndex < currentLastPage) {
                    if (arr[arr.length - 1].pageNum != currentLastPage - 1) { arr.push(new PagedItem('...', 2)); };
                    arr.push(new PagedItem(currentLastPage, 1));
                }
            }

            // previous page button
            if (currentPage > 1) {
                arr.unshift(new PagedItem(currentPage - 1, 3));
            }

            // next page button
            if (currentPage < currentLastPage) {
                arr.push(new PagedItem(currentPage + 1, 3));
            }

            return arr;
        });

        this.pageClick = function (index) {
            if (action) {
                action(index);
            }
        }

        this.pagePreviousClick = function (page) {
            if (self.isActivePrevious(page)) {
                self.pageClick(page.pageNum);
            } else {
                return false;
            }
        }

        this.pageNextClick = function (page) {
            if (self.isActiveNext(page)) {
                self.pageClick(page.pageNum);
            } else {
                return false;
            }
        }

        this.isActivePrevious = function (page) {
            return self.paginationOptions.showPreviousPageArrow && page.viewType == 3 && page.pageNum < self.currentIndex();
        };

        this.isActiveNext = function (page) {
            return self.paginationOptions.showNextPageArrow && page.viewType == 3 && page.pageNum > self.currentIndex();
        };
    };

    var PagedGridModel = function (pagedList, isClientPagination, defaultTemplateName, useCookieTemplateStorage) {
        var self = this;
        
        var itemsCollection = ko.observableArray([]);
        this.isReady = ko.observable(false);
        var cookiTemplateName = getCookiesValue("_TEMPLATE_MODE");

        useCookieTemplateStorage = useCookieTemplateStorage !== undefined ? useCookieTemplateStorage : false;
        this.templateName = ko.observable(cookiTemplateName && useCookieTemplateStorage ? cookiTemplateName : defaultTemplateName);

        this.templateName.subscribe(function (templateName) {
            setCookiesValue("_TEMPLATE_MODE", templateName, 36500);
        });

        this.isActiveTemplateByName = function (templateName) {
            return ko.dependentObservable(function () {
                return self.templateName() ? self.templateName() == templateName : false;
            }, this)();
        };

        this.setCollection = function(collection) {
            itemsCollection(collection);
        }

        this.setParams = function(currentIndex, totalRecords) {
            self.pagedList.currentIndex(currentIndex);
            self.pagedList.totalRecords(totalRecords);

            if (self.pagedList.currentIndex() > self.pagedList.lastPage()) {
                self.pagedList.currentIndex(self.pagedList.lastPage());
            }
        };

        this.items = ko.computed(function () {
            if (itemsCollection() == null) { return []; }

            if (!isClientPagination) {
                return itemsCollection();
            } else {
                var startIndex = (pagedList.currentIndex() - 1) * pagedList.paginationOptions.pageSize;
                var endIndex = startIndex + pagedList.paginationOptions.pageSize;
                return itemsCollection().slice(startIndex, endIndex);
            }
        });

        this.pagedList = pagedList;
    };

    var onBeginRequest = function () {
        pleaseWait.show();
    };

    var onCompleteRequest = function (data, textStatus) {
       pleaseWait.hide();
    };

    var createSortOrderViewModel = function () {
        var sortViewModel = new Object();
        sortViewModel.sortOrderItems = ko.observableArray();
        sortViewModel.selectedSortValue = ko.observable();
        sortViewModel.selectedSortText = ko.observable();

        sortViewModel.setOderByValue = function (valueOrderItem) {

            var index = arrayFirstIndexOf(sortViewModel.sortOrderItems(), function (arrayItem)
            {
                return arrayItem.value === valueOrderItem;
            });
            if (index>-1) {
                sortViewModel.selectedSortValue(sortViewModel.sortOrderItems()[index].value);
                sortViewModel.selectedSortText(sortViewModel.sortOrderItems()[index].text);
           }
        }

        sortViewModel.onSortChanged = function (sortOrderItem) {
            sortViewModel.selectedSortValue(sortOrderItem.value);
            sortViewModel.selectedSortText(sortOrderItem.text);
        }

        sortViewModel.createNewSortItem = function (value, text) {
            return { value : value, text : text };
        }

        sortViewModel.addSortItem = function (value, text) {
            sortViewModel.sortOrderItems.push(sortViewModel.createNewSortItem(value, text));
        }

        sortViewModel.existsSortItem = function(value) {
            var index = arrayFirstIndexOf(sortViewModel.sortOrderItems(), function (arrayItem) {
                return arrayItem.value === value;
            });
            return index > -1;
        };

        function arrayFirstIndexOf(array, predicate, predicateOwner) {
            for (var i = 0, j = array.length; i < j; i++) {
                if (predicate.call(predicateOwner, array[i])) {
                    return i;
                }
            }
            return -1;
        }

        return sortViewModel;
    };

    ko.bindingHandlers.backgroundImage = {
        update: function (element, valueAccessor) {
            ko.bindingHandlers.style.update(element,
              function () { return { backgroundImage: "url('" + valueAccessor() + "')" } });
        }
    };

    // getNewTabDxpUrl
    var getNewTabDxpUrl = function (url) {
        if (url == null || url.trim() == '') return '';

        var urlEncoded = encodeURIComponent(url);
        var dxpUrl = 'DXP://WorkspaceManager:OpenURLAddress_URL?Target=' + urlEncoded;

        return dxpUrl;
    }

    // getShortText
    var getShortText = function (text, length) {
        if (text == null) {
            return '';
        }

        if (text.length <= length)
            return text;

        var shortText = text.substr(0, length - 1);

        var spaceIndex = shortText.lastIndexOf(' ');
        if (spaceIndex == -1) {
            return shortText + "...";
        }

        shortText = shortText.substr(0, spaceIndex - 1);

        return shortText + "...";
    }

    function createDummyElement(text, options) {
        var element = document.createElement("div"),
          textNode = document.createTextNode(text);

        element.appendChild(textNode);

        element.style.fontFamily = options.font;
        element.style.fontSize = options.fontSize;
        element.style.fontWeight = options.fontWeight;
        element.style.position = "absolute";
        element.style.visibility = "hidden";
        element.style.left = "-999px";
        element.style.top = "-999px";
        element.style.width = "auto";
        element.style.height = "auto";

        document.body.appendChild(element);

        return element;
    }

    function destoryElement(element) {
        element.parentNode.removeChild(element);
    }

    // calculateTextSize
    var calculateTextSize = function (text, options) {
        options = options || {};
        options.font = options.font || "Open Sans";
        options.fontSize = options.fontSize || "12px";
        options.fontWeight = options.fontWeight || "normal";

        var size = {};
        var element = createDummyElement(text, options);

        size.width = element.offsetWidth;
        size.height = element.offsetHeight;

        destoryElement(element);

        return size;
    };

    return {
        sessionId: sessionId,
        newGuid: newGuid,
        formatBigNumber: formatBigNumber,
        pageParams: pageParams,
        pleaseWait: pleaseWait,
        confirm: confirm,
        alert: alert,
        switchchk: switchchk,
        getCookiesValue: getCookiesValue,
        setCookiesValue: setCookiesValue,
        breadcrumbsViewModel: breadcrumbsViewModel,
        baseUrl: baseUrl,
        preparePopupValidation: preparePopupValidation,
        Observers: Observers,
        consts: consts,
        variables: variables,
		getTimeAgo: getTimeAgo,
		getTimeAgoFromMilisecond:getTimeAgoFromMilisecond,
		formatDate:formatDate,
		formatDateFull: formatDateFull,
		formatDateFullForArray: formatDateFullForArray,
		gettopmost: gettopmost,
		PaginationOptions: PaginationOptions,
		PagedList: PagedList,
		PagedGridModel: PagedGridModel,
		monthNames: monthNames,
		getRandomInt: getRandomInt,
		formatNumber: formatNumber,
		onBeginRequest: onBeginRequest,
		onCompleteRequest: onCompleteRequest,
		createSortOrderViewModel: createSortOrderViewModel,
		getNewTabDxpUrl: getNewTabDxpUrl,
		getShortText: getShortText,
		calculateTextSize: calculateTextSize
    }})();

// IE11 Compability: forEach
if (!Array.prototype.forEach) {
    Array.prototype.forEach = function(fn, scope) {
        for (var i = 0, len = this.length; i < len; ++i) {
            fn.call(scope, this[i], i, this);
        }
    };
}

// IE11 Compability: filter
if (!Array.prototype.filter) {
    Array.prototype.filter = function (fun /*, thisp */) {
        "use strict";

        if (this == null)
            throw new TypeError();

        var t = Object(this);
        var len = t.length >>> 0;
        if (typeof fun != "function")
            throw new TypeError();

        var res = [];
        var thisp = arguments[1];
        for (var i = 0; i < len; i++) {
            if (i in t) {
                var val = t[i]; // in case fun mutates this
                if (fun.call(thisp, val, i, t))
                    res.push(val);
            }
        }

        return res;
    };
}

if (typeof String.prototype.startsWithIngnorCase != 'function') {
    // see below for better implementation!
    String.prototype.startsWithIngnorCase = function (str) {
        return this.toUpperCase().indexOf(str.toUpperCase()) === 0;
    };
}

if (!String.prototype.format) {
    String.prototype.format = function () {
        var args = arguments;
        return this.replace(/{(\d+)}/g, function (match, number) {
            return typeof args[number] != 'undefined'
              ? args[number]
              : match
            ;
        });
    };
}

ko.bindingHandlers.stopBinding = {
    init: function () {
        return { controlsDescendantBindings: true };
    }
};

ko.observableArray.fn.pushAll = function (valuesToPush) {
    var underlyingArray = this();
    this.valueWillMutate();
    ko.utils.arrayPushAll(underlyingArray, valuesToPush);
    this.valueHasMutated();
    return this;
};

//Main event documet ready 
$(document).ready(function () {
    // trancate all elements with dotdotdotElem class
    $(".dotdotdotElem").dotdotdot({
        ellipsis: "... ",
        watch: true
    });

    //init tooltips
    //$('[data-toggle="tooltip"]').tooltip();
});

$(function () {
    $.ajaxSetup({
        statusCode: {
            401: function () {
                cm.signInUpDialog.dialogSlideIn({ activeTab: 1 });

                /*cm.alert("You are not logged in", function () {
                    window.location.href = window.location.href;
                });*/
            },
            500: function (jqXHR, exception) {
                var model = JSON.parse(jqXHR.responseText);

                if (!jqXHR.suppressErrors && !model.IsSuppressGlobalJsError && model.ErrorMessage) {
                    cm.alert(model.ErrorMessage, null);
                }
            }
        },
        error: function (jqXHR, exception) {
            if (jqXHR.status === 0) {
                // 
            } else if (jqXHR.status == 401) {
                //
            } else if (jqXHR.status == 404) {
                alert('Requested page not found. [404]');
            } else if (jqXHR.status == 500) {
                //
            } else if (exception === 'parsererror') {
                alert('Requested JSON parse failed.');
            } else if (exception === 'timeout') {
                alert('Time out error.');
            } else if (exception === 'abort') {
                alert('Ajax request aborted.');
            } else {
                alert('Uncaught Error.\n' + jqXHR.responseText);
            }
        }
    });
});;
// bootstrapPopover
ko.bindingHandlers.bootstrapPopover = {
    update: function (element, valueAccessor, allBindings, viewModel, bindingContext) {
        var $element = $(element);

        $element.popover({
            html: true
        });

        $element.on('show.bs.popover', function () {
            var isInnerContentHidden = element.scrollWidth > element.clientWidth || element.scrollHeight > element.clientHeight;
            var isInnerContentTrancated = $(".is-truncated", $element).length > 0;
            return isInnerContentHidden || isInnerContentTrancated;
        });
    }
};

// koDotDotDot
ko.bindingHandlers.koDotDotDot = {
    update: function (element, valueAccessor, allBindings, viewModel, bindingContext) {
        var options = valueAccessor();

        // default options
        var dotdotdotOptions = {
            ellipsis: (options.dotdotdotOptions != undefined && options.dotdotdotOptions.ellipsis != undefined) ? options.dotdotdotOptions.ellipsis : " ... ",
            watch: true,
            callback: null
        }

        // Expand/Collapse
        if (options.expandCollapse && options.expandCollapse.contentSelector) {
            dotdotdotOptions.callback = function (isTruncated, orgContent) {
                if (isTruncated) {
                    var expandCollapseElement = $(options.expandCollapse.contentSelector);

                    // Expand/Collapse Button
                    var expandCollapseButtonId = options.expandCollapse.contentSelector.replace(/#/, '') + "-expand-collapse-button";
                    if ($('#' + expandCollapseButtonId).length == 0) {
                        var expandCollapseButton = $("<div id=\"" + expandCollapseButtonId + "\" class=\"arrow-button-middle-collapsed-down\"></div>");
                        expandCollapseElement.after(expandCollapseButton);

                        expandCollapseButton.on("click", function () {
                            if (expandCollapseButton.hasClass('arrow-button-middle-collapsed-down')) {
                                expandCollapseElement.trigger("destroy");
                                expandCollapseElement.css('height', 'auto');
                            } else {
                                expandCollapseElement.dotdotdot({
                                    ellipsis: dotdotdotOptions.ellipsis,
                                    watch: dotdotdotOptions.watch,
                                    callback: dotdotdotOptions.callback
                                });
                                expandCollapseElement.css('height', '');
                            }

                            expandCollapseButton.toggleClass('arrow-button-middle-collapsed-down');
                            expandCollapseButton.toggleClass('arrow-button-middle-expanded-up');
                        });
                    }
                }
            }
        }

        setTimeout(function () {
            $(element).dotdotdot({
                ellipsis: dotdotdotOptions.ellipsis,
                watch: dotdotdotOptions.watch,
                callback: dotdotdotOptions.callback
            });
        }, 300);
    }
};

// koTooltip
ko.bindingHandlers.koTooltip = {
    init: function (element, valueAccessor, allBindings, viewModel, bindingContext) {
    },
    update: function (element, valueAccessor, allBindings, viewModel, bindingContext) {
        var tooltipSelector = valueAccessor();
        var $element = $(element);
        var $tooltip = $(tooltipSelector);
        var css = "ko-active";

        if ($tooltip.length) {
            ko.utils.registerEventHandler($element[0], "click", function (e) {
                ko.utils.toggleDomNodeCssClass($tooltip[0], ko.utils.unwrapObservable(css), true);
                e.stopPropagation();
            });

            ko.utils.registerEventHandler($tooltip[0], "click", function (e) {
                e.stopPropagation();
            });

            ko.utils.registerEventHandler(document, "click", function (e) {
                ko.utils.toggleDomNodeCssClass($tooltip[0], ko.utils.unwrapObservable(css), false);
            });
        }
    }
};;
cm.notifications = (function () {
    var changeUnreadNotifCountObservers = new cm.Observers();

    var viewModel = {
        FlagMore: ko.observable(false),

        isReady: ko.observable(false),

        isReadyPopup: ko.observable(false),

        TotalNotifications: ko.observable(0),

        Notifications: ko.observableArray([]),

        NotificationsPopup: ko.observableArray([]),

        refreshUnreadNotificationsCount: function (recycle) {
            if (cm.variables.isAuth) {
                $.ajax({
                    url: $("body").data("actionUrls").getUnreadNotificationsCountAction,
                    type: 'POST',
                    cache: false,
                    success: function (data) {

                        viewModel.TotalNotifications(data.count);
                        if (recycle) {
                            setTimeout(function() {
                                viewModel.refreshUnreadNotificationsCount(true);
                            }, 60000);
                        }
                    },
                    error: function() {
                        console.log('error getUnreadNotificationsCountAction');
                    }
                });
            }
        },

        getUnreadNotificationsPopup: function () {
            $.ajax({
                url: $("body").data("actionUrls").getUnreadNotificationsAction,
                type: 'POST',
                cache: false,
                data: {
                    maxCount: 5,
                    fromIndex: 0
                },
                beforeSend: function () {
                    viewModel.isReadyPopup(false);
                },
                success: function (data) {
                    var model = data.viewModel;
                    viewModel.applayTimeAgo(model.Notifications);
                    viewModel.NotificationsPopup(model.Notifications);
                    viewModel.FlagMore(model.FlagMore);
                },
                complete: function () {
                    viewModel.isReadyPopup(true);
                }
            });
        },

        getNotifications: function () {
            $.ajax({
                url: $("body").data("actionUrls").getUnreadNotificationsAction,
                type: 'POST',
                cache: false,
                data: {
                    maxCount: 5,
                    fromIndex: viewModel.Notifications().length
                },
                beforeSend: function () {
                    viewModel.isReady(false);
                },
                success: function (data) {
                    var model = data.viewModel;
                    viewModel.applayTimeAgo(model.Notifications);
                    viewModel.Notifications.pushAll(model.Notifications);
                    viewModel.FlagMore(model.FlagMore);
                },
                complete: function () {
                    viewModel.isReady(true);
                }
            });
        },

        markAsReed: function (elem) {
            $.ajax({
                url: $("body").data("actionUrls").markNotifAsReedAction,
                type: 'POST',
                data: {
                    id: elem.Id
                },
                cache: false,
                beforeSend: function () {
                },
                success: function (data) {
                    if (data.status) {
                        viewModel.TotalNotifications(viewModel.TotalNotifications() - 1);
                        viewModel.Notifications.remove(elem);
                        viewModel.NotificationsPopup.remove(elem);
                    }
                    else {
                        alert(data.message);
                    }
                }
            });
        },
        applayTimeAgo: function (notifications) {
            notifications.forEach(function (notification) {
                notification.EventTimeAgo = cm.getTimeAgoFromMilisecond(notification.EventTime);
            });
        }
    };

    viewModel.TotalNotifications.subscribe(function(count) {
        changeUnreadNotifCountObservers.notify(count);
    });

    var init = function () {
        var notificationElement = document.getElementById('notificationCount');
        if (notificationElement) {
            ko.applyBindings(viewModel, document.getElementById('notificationCount'));
            viewModel.refreshUnreadNotificationsCount(true);
        } else {
            viewModel.refreshUnreadNotificationsCount(false);
        }
    };

    var addFollowData = function (objectKind, objectId, successCallback) {
        $.ajax({
            url: $("body").data("actionUrls").addFollowData,
            type: 'POST',
            cache: false,
            data: {
                objectKind: objectKind,
                objectId: objectId
            },
            beforeSend: function () {
                cm.pleaseWait.show();
            },
            success: function (data) {
                if (!data.status) {
                    alert(data.message);
                    return;
                }

                if (successCallback != null) {
                    successCallback();
                }
            },
            complete: function () {
                cm.pleaseWait.hide();
            },
            async: false
        });
    };
    
    var getFollowStatus = function (objectKindId, id, callbackSuccess, callbackError) {
        $.ajax({
            url: $("body").data("actionUrls").checkFollow,
            type: 'POST',
            cache: false,
            data: {
                objectKind: objectKindId,
                objectId: id
            },
            beforeSend: function () {
            },
            success: function (data) {
                if (!data.status) {
                    alert(data.message);
                    return;
                }
                if (callbackSuccess) {
                    callbackSuccess(data);
                }
            }
        });
    };

    var removeFollowData = function (objectKind, objectId, successCallback) {
        $.ajax({
            url: $("body").data("actionUrls").removeFollowData,
            type: 'POST',
            cache: false,
            data: {
                objectKind: objectKind,
                objectId: objectId
            },
            beforeSend: function () {
                cm.pleaseWait.show();
            },
            success: function (data) {
                if (!data.status) {
                    alert(data.message);
                    return;
                }
                
                if (successCallback != null) {
                    successCallback();
                }
            },
            complete: function () {
                cm.pleaseWait.hide();
            },
            async: false
        });
    };

    var initList = function () {
        cm.breadcrumbsViewModel.addText('Notifications');
        viewModel.getNotifications();
        ko.applyBindings(viewModel, document.getElementById('notifications'));
    };

    return {
        init: init,
        initList: initList,
        addFollowData: addFollowData,
        removeFollowData: removeFollowData,
        getFollowStatus:getFollowStatus,
        refreshUnreadNotificationCount: viewModel.refreshUnreadNotificationsCount,
        changeUnreadNotifCountObservers: changeUnreadNotifCountObservers
    };
})();;
// Start: Add Team Request
cm.AddTeamRequest = function () {

    // options
    var options;
    /*
        projectGuid
        modalFormCallbackUrl
        modalFormId
        modalFormAjaxSuccessCallback
        setUpDialog
        teamRequestSuccessCallback
    */

    var init = function (initOptions) {
        options = initOptions;
    }

    // showAddTeamRequestDialog
    var showAddTeamRequestDialog = function () {
        $.ajax({
            url: options.modalFormCallbackUrl,
            type: 'POST',
            cache: false,
            data: {
                ProjectGuid: options.projectGuid,
                ModalFormId: options.modalFormId,
                ModalFormAjaxSuccessCallback: options.modalFormAjaxSuccessCallback
            },
            beforeSend: function () {
                cm.pleaseWait.show();
            },
            success: function (data) {
                if (!data.status) {
                    cm.alert(data.message);
                    return;
                }

                loadDialogToPopup(data.view);

                if (options.setUpDialog) options.setUpDialog();

                $('#cm-modal').modal({ keyboard: false, backdrop: "static" });
            },
            complete: function () {
                cm.pleaseWait.hide();
            }
        });
    }

    // loadDialogToPopup
    var loadDialogToPopup = function (view) {
        $('#cm-modal').html(view);
        cm.preparePopupValidation(options.modalFormId);
    }

    // addTeamRequestSuccess
    var addTeamRequestSuccess = function (data) {
        if (!data.status) {
            if (data.message != null && data.message != '') {
                cm.alert(data.message);
            }

            loadDialogToPopup(data.view);

            return;
        }

        $('#cm-modal').modal('hide');

        if (options.teamRequestSuccessCallback) options.teamRequestSuccessCallback();
    }

    // return
    return {
        init: init,
        showAddTeamRequestDialog: showAddTeamRequestDialog,
        addTeamRequestSuccess: addTeamRequestSuccess
    };
};;
cm.projects = (function () {
    var self = this;
    self.projectSearchParams = '';

    var options = null;
    /*
    {
        searchResultModeElement: DOM element,
        tagsFilterElement: DOM element,
        ownerType: int,
        lazyLoad: bool,
        useSammy: bool,
        useCookieTemplateStorage: bool,
        pagination: {
            showPagination: bool,
            pageSize: int
        },
        sortOptions: {
            SortElement: DOM element,
            Options: [{ Name: string, FieldKey: string }],
            DefaultOption: string
        },
    }
    */

    var initialized = false;
    var sortSubscription;
    var sammyApp;
    var successCreateObservers = new cm.Observers();
    var successDeleteObservers = new cm.Observers();
    var successCancelObservers = new cm.Observers();
    var projectsCount = ko.observable(0);
    var privateProjectsValidationResults;

    // editItem
    var editItemGuid = '';

    var createProjectTileImageUrl = "/Content/Images/Projects/add-project.png";

    /*
        searchResultModeElement,
        sortElement,
        tagsFilterElement,
        showPagination,
        basePageSize,
        lazyLoad,
        useCookieTemplateStorage,
        ownerType,
        additionalSortItems,
        sortOrder,
        setUseSammy
    */
    // init
    var init = function (projectOptions) {
        // options
        options = projectOptions;
        options.ownerType = options.ownerType || 0;
        // pagination
        if (options.pagination == null) {
            options.pagination = { showPagination: true, pageSize: 12 };
        } else {
            options.pagination.showPagination = !!options.pagination.showPagination;
            options.pagination.pageSize = typeof options.pagination.pageSize === "undefined" ? 12 : options.pagination.pageSize;
        }
        // sortOptions
        if (options.sortOptions == null) {
            options.sortOptions = { Options: [{ Name: 'Most Popular', FieldKey: '0' }] };
        }

        // findProjectsParams
        findProjectsParams = createFindProjectsParams();
        fillFindProjectsParamsFromOptions(findProjectsParams);

        // initSammy
        if (options.useSammy) initSammy();
        
        // lazyLoad
        if (options.lazyLoad === false) {
            //subscribe on change sort mode
            activeteSortSubscription();

            //subscribe on change sort mode
            findProjectsParams.OwnerType.subscribe(function () {
                if (options.useSammy) setSammyLocation();
                else findProjects();
            });
        }

        // Grid Pagination Options
        var paginationOptions = new cm.PaginationOptions();
        paginationOptions.pageSize = findProjectsParams.CountPerPage();

        // Grid Paged List
        var pagedList = new cm.PagedList(paginationOptions, pageIndexChanged);
        pagedList.currentIndex(findProjectsParams.NumberOfPage());

        // Grid View Model
        pagedGridViewModel = new cm.PagedGridModel(pagedList, false, "template-tile", options.useCookieTemplateStorage);
        pagedGridViewModel.createProjectTileImageUrl = ko.observable(createProjectTileImageUrl);
        pagedGridViewModel.showPagination = options.pagination.showPagination;
        pagedGridViewModel.isTeamProjectsWithoutFilter = function() {
            return (findProjectsParams.OwnerType() == 2 && (!!findProjectsParams.Filter() == false));
        };

        //setup bindings
        if (options.searchResultModeElement) {
            ko.applyBindings(pagedGridViewModel, options.searchResultModeElement);
        }

        if (options.sortOptions.SortElement) {
            ko.applyBindings(findProjectsParams.SortViewModel, options.sortOptions.SortElement);
        }

        if (options.tagsFilterElement) {
            ko.applyBindings(findProjectsParams.FilterTags, options.tagsFilterElement);
        }

        ko.applyBindings(pagedGridViewModel, document.getElementById('projects-content'));

        // Search
        cm.search.init(findProjectsParams.Filter(), function (filterProjName) {
            findProjectsParams.NumberOfPage(1);
            findProjectsParams.Filter(filterProjName);
            findProjectsParams.HasDocument();

            if (options.useSammy) setSammyLocation();
            else findProjects();
        });

        // attach button click handler and add callback on successful project create
        bindCreateProjectHandlers();

        initialized = true;

        return findProjectsParams;
    }

    // Start: Find Projects Params

    // createFindProjectsParams
    var createFindProjectsParams = function () {
        var filter = new Object();
        filter.Filter = ko.observable('');
        filter.OrderByField = ko.observable('COUNT');
        filter.AccessType = ko.observable(0);
        filter.OwnerType = ko.observable(0);
        filter.CountPerPage = ko.observable(0);
        filter.NumberOfPage = ko.observable(1);
        filter.CategoryGuid = ko.observable('');
        filter.CategoryName = ko.observable('');
        filter.HasDocument = ko.observable(true);
        filter.TagsOrder = ko.observable('');
        filter.FilterTags = ko.observableArray();

        // Tags
        filter.TagGuids = ko.computed(function () {
            var arrayOfGuid = new Array();
            ko.utils.arrayForEach(filter.FilterTags(), function (tag) { arrayOfGuid.push(tag.Guid); });
            return arrayOfGuid;
        }, filter);

        // Hubs
        filter.HubGuids = ko.observableArray();

        // return
        return filter;
    };

    // fillFindProjectsParamsFromOptions
    var fillFindProjectsParamsFromOptions = function (params) {
        // OwnerType
        params.OwnerType = ko.observable(options.ownerType);

        // Pagination
        params.CountPerPage(options.pagination.pageSize);

        //init sort ViewModel
        var defaultOption = options.sortOptions.Options[0];

        params.SortViewModel = cm.createSortOrderViewModel();
        for (var sortOptionIndex = 0; sortOptionIndex <= options.sortOptions.Options.length - 1; sortOptionIndex++) {
            var loopSortOption = options.sortOptions.Options[sortOptionIndex];
            params.SortViewModel.addSortItem(loopSortOption.FieldKey, loopSortOption.Name);

            if (loopSortOption.Default) { defaultOption = loopSortOption; }
        }

        params.SortViewModel.setOderByValue(defaultOption.FieldKey);

        params.ProjectSortOrder = ko.computed(function () {
            return params.SortViewModel.selectedSortValue();
        });
    }

    // End: Find Projects Params

    // Start: sammy

    // initSammy
    var initSammy = function () {
        sammyApp = $.sammy(function () {
            this.get(/\#\/(.*)\/(.*)\/(.*)\/(.*)/, function (context) {
                var params = context.params['splat'];
                var filter = params[0];
                var sortorder = params[1];
                var tags = params[2];
                var pageindex = params[3];

                // Filter
                if (filter != null) {
                    findProjectsParams.Filter(filter);
                    cm.search.setValue(filter);
                }

                // Sort Order
                if (sortorder != null) {
                    disableSortSubscription();
                    findProjectsParams.SortViewModel.setOderByValue(parseInt(sortorder));
                    activeteSortSubscription();
                }

                // Tags
                if (tags != null) {
                    findProjectsParams.FilterTags.removeAll();

                    var tagsArray = tags.split('|');
                    for (var index = 0; index <= tagsArray.length - 1; index++) {
                        var loopGuid = tagsArray[index];
                        if (loopGuid.replace(/ /g, '') == '') continue;
                        findProjectsParams.FilterTags.push({ Guid: loopGuid, Hrid: ko.observable('') });
                    }

                    if (findProjectsParams.FilterTags().length > 0) loadSelectedTags();
                }

                // Page Index
                if (pageindex != null) {
                    findProjectsParams.NumberOfPage(parseInt(pageindex));
                }

                // projectSearchParams
                self.projectSearchParams = findProjectsParams;

                // findProjects
                if (initialized) {
                    storeSearchParameters();
                    findProjects();
                }
            });

            var patternUrlStartPage = this.getLocation();
            this.get(patternUrlStartPage, function () {
                startPage();
            });
        });

        // sammyApp
        sammyApp.run();
    }

    var startPage = function () {
        if (initialized) {
            findProjectsParams.Filter('');
            cm.search.setValue('');
            findProjectsParams.NumberOfPage(1);
            findProjectsParams.FilterTags.removeAll();
            if (options.SortOptions.DefaultOption != undefined) {
                disableSortSubscription();
                findProjectsParams.SortViewModel.setOderByValue(options.SortOptions.DefaultOption);
                activeteSortSubscription();
            }

            findProjects();
        }
    };

    // getSammyLocation
    var getSammyLocation = function () {
        var filter = encodeURIComponent(findProjectsParams.Filter());
        var sortorder = encodeURIComponent(findProjectsParams.SortViewModel.selectedSortValue());
        var pageindex = encodeURIComponent(findProjectsParams.NumberOfPage());

        // tags
        var tagsGuids = findProjectsParams.TagGuids();

        var tags = '';
        for (var index = 0; index <= tagsGuids.length - 1; index++) {
            var loopGuid = tagsGuids[index];
            tags += loopGuid + '|';
        }
        if (tags.length > 0) tags = tags.substr(0, tags.length - 1);

        // locationUrl
        var locationUrl = '#/' + filter + '/' + sortorder + '/' + tags + '/' + pageindex;

        return locationUrl;
    }

    // setSammyLocation
    var setSammyLocation = function () {
        // locationUrl
        var locationUrl = getSammyLocation();

        // setLocation
        sammyApp.setLocation(locationUrl);
    }

    // End: sammy

    function createProjectPrepare(data) {
        var view = data.view;

        if (cm.pleaseWait.hasQueue()) {
            setTimeout(function () { createProjectPrepare(data); }, 500);
            return;
        }

        $('#project-edit-create-modal').html(view).modal({ keyboard: false, backdrop: 'static' });

        $('#project-close').bind('click', function () { addEditItemClose(data.isDesktop); });
        $('#project-cancel').bind('click', function () { addEditItemClose(data.isDesktop); });

        cm.preparePopupValidation("project-edit-create-modal");

        if ($('#AccessType_1', $("#createProjectAccessType")).attr('checked') != 'checked') {
            $("input[name=AccessType]:radio").on("change", function() { onProjectAccessTypeChange(this, $("#Guid").val(), $("#createProjectAccessType"), $("#project-save")); });
        }

        // Hubs
        if (findProjectsParams.HubGuids().length > 0) {
            var hubGuidsString = findProjectsParams.HubGuids()[0];
            for (var hubIndex = 1; hubIndex <= findProjectsParams.HubGuids().length - 1; hubIndex++) {
                hubGuidsString += "," + findProjectsParams.HubGuids()[hubIndex];
            }

            $('#HubGuids').val(hubGuidsString);
        }
    }

    var addEditItemClose = function (isDesktop) {
        editItemGuid = '';

        if (isDesktop === true) {
            window.location.href = $('body').data("actionUrls").baseUrl;
        }
    };

    var addItem = function () {
        if (cm.projects.successCreateObservers.observers.length == 0) {
            cm.projects.successCreateObservers.add(function (data) {
                window.location.href = data.project.editUrl;
            });
        }

        $.ajax({
            url: $("body").data("actionUrls").addProjectAction,
            type: 'POST',
            cache: false,
            beforeSend: function () {
                cm.pleaseWait.show();
            },
            success: function (data) {
                cm.pleaseWait.hide();

                if (!data.status) {
                    alert(data.message);
                    return;
                }

                createProjectPrepare(data);
            },
            complete: function (data, textStatus) {
                if (textStatus != 'success') {
                    cm.pleaseWait.hide();
                }
            }
        });
    };

    var detailItem = function (guid) {
        document.location.href = $('body').data('actionUrls').detailsProjectAction + '/' + guid;
    };

    var deleteItem = function (projectName) {
        $('#warningMessageProjectName').html(projectName);

        $('#deleteProject_HRID').val('');
        $('#invalidProjectMessage').html('');
        $('#invalidProjectBlock').hide();

        $('#project-delete-modal').modal({ keyboard: false, backdrop: 'static' });
    }

    var deleteItemConfirmed = function (guid, projectName) {
        var confirmedProjectName = $('#deleteProject_HRID').val().toLowerCase();
        var projectNameLowerCase = projectName.toLowerCase();

        if (confirmedProjectName == null
            || confirmedProjectName.replace(/ /g, '') == '') {
            return;
        }

        if (confirmedProjectName != projectNameLowerCase) {
            $('#invalidProjectMessage').html('You entered invalid project\'s name.');
            $('#invalidProjectBlock').show();
            return;
        }
        
        $.ajax({
            url: $("body").data("actionUrls").deleteProjectAction,
            type: 'POST',
            cache: false,
            data: {
                guid: guid
            },
            beforeSend: function () {
                cm.pleaseWait.show();
            },
            success: function (data) {
                if (data.status) {
                    $("#project-delete-modal").modal('hide');

                    var newUrl = '';
                    if (cm.variables.isRunFromDesktopApp) {
                        newUrl = 'DXP://WorkspaceManager:DeleteProject_URL?ProjectGUID=' + guid;
                    } else {
                        newUrl = $('body').data('actionUrls').projectsAction;
                    }

                    cm.alert('Project successfully deleted.', function () {
                        window.location.href = newUrl;
                    });
                }
                else {
                    $('#invalidProjectMessage').html(data.message);
                    $('#invalidProjectBlock').show();
                }
            },
            complete: function () {
                cm.pleaseWait.hide();
            }
        });
    };

    var wipeOutItem = function (projectName) {
      $('#warningMessageProjectName').html(projectName);
      $('#project-wipeOut-modal').modal({ keyboard: false, backdrop: 'static' });
    }

    var wipeOutConfirmed = function (guid, projectName) {

      $.ajax({
      url: $("body").data("actionUrls").wipeOutProjectAction,
      type: 'POST',
      cache: false,
      data: {
        guid: guid
      },
      beforeSend: function () {
        cm.pleaseWait.show();
      },
      success: function (data) {
        if (data.status) {
          $("#project-wipeOut-modal").modal('hide');

          var newUrl = '';
          if (cm.variables.isRunFromDesktopApp) {
            newUrl = 'DXP://WorkspaceManager:DeleteProject_URL?ProjectGUID=' + guid;
          } else {
            newUrl = $('body').data('actionUrls').projectsAction;
          }

          cm.alert('Project successfully deleted.', function () {
            window.location.href = newUrl;
          });
        }
        else {
          $('#invalidProjectMessage-wipeOut').html(data.message);
          $('#invalidProjectBlock-wipeOut').show();
        }
      },
      complete: function () {
        cm.pleaseWait.hide();
      }
    });
  };

    var fork = function (projectGuid, projectHrid) {
        $.ajax({
            url: $("body").data("actionUrls").forksProjectNameEditorAction,
            type: 'POST',
            cache: false,
            data: {
                sourceProjectId: projectGuid,
                sourceProjectName: projectHrid
            },
            beforeSend: function () {
                cm.pleaseWait.show();
            },
            success: function (data) {
                $('#dialogOrderPreview').html(data.view).modal({ keyboard: false, backdrop: 'static' });
                cm.preparePopupValidation("dialogOrderPreview");
            },
            complete: function () {
                cm.pleaseWait.hide();
            }
        });
    };

    var onForkSuccess = function (result) {
        if (result.status) {
            $("#dialogOrderPreview").modal('hide');
            window.location.href = result.newProjectUrl;
        } else {
            $("#dialogOrderPreview").html(result.view);
            cm.preparePopupValidation("dialogOrderPreview");
        }
    }

    var pagedGridViewModel = null;
    var findProjectsParams = null;

    //var searchProjects = function (component) {
    //    findProjectsParams.Filter(component);
    //    findProjects(1);
    //}

    var storeSearchParameters = function () {
        if (!findProjectsParams) {
            findProjectsParams = createFindProjectsParams();
        }

        var storedProjectsParams = new Object;

        storedProjectsParams.Filter = findProjectsParams.Filter();
        storedProjectsParams.OrderByField = findProjectsParams.OrderByField();
        storedProjectsParams.AccessType = findProjectsParams.AccessType();
        storedProjectsParams.OwnerType = findProjectsParams.OwnerType();
        storedProjectsParams.NumberOfPage = findProjectsParams.NumberOfPage();
        storedProjectsParams.CategoryGuid = findProjectsParams.CategoryGuid();
        storedProjectsParams.CategoryName = findProjectsParams.CategoryName();
        storedProjectsParams.HasDocument = findProjectsParams.HasDocument();
        storedProjectsParams.TagsOrder = findProjectsParams.TagsOrder();
        storedProjectsParams.FilterTags = $.map(findProjectsParams.FilterTags(), function (val, i) {
            return {
                Guid: val.Guid,
                Hrid: val.Hrid()
            }
        });
        storedProjectsParams.ProjectSortOrder = findProjectsParams.ProjectSortOrder();
        cm.pageParams.addControllerParam('findProjectsParams', storedProjectsParams);

        self.projectSearchParams = findProjectsParams;
        return storedProjectsParams;
    }

    var loadSearchParameters = function () {
        var storedProjectsParams = cm.pageParams.getControllerParam('findProjectsParams');
        
        if (storedProjectsParams != null
            && storedProjectsParams.OwnerType == findProjectsParams.OwnerType()) {
            findProjectsParams.Filter(storedProjectsParams.Filter);
            findProjectsParams.OrderByField(storedProjectsParams.OrderByField);
            findProjectsParams.AccessType(storedProjectsParams.AccessType);
            findProjectsParams.OwnerType(storedProjectsParams.OwnerType);
            findProjectsParams.NumberOfPage(storedProjectsParams.NumberOfPage);
            findProjectsParams.CategoryGuid(storedProjectsParams.CategoryGuid);
            findProjectsParams.CategoryName(storedProjectsParams.CategoryName);
            findProjectsParams.TagsOrder(storedProjectsParams.TagsOrder);
            findProjectsParams.FilterTags($.map(storedProjectsParams.FilterTags, function (val, i)
            {
                return {
                    Guid: val.Guid,
                    Hrid: ko.observable(val.Hrid)
                }
            }));
            findProjectsParams.SortViewModel.setOderByValue(storedProjectsParams.ProjectSortOrder);
            var hasDocumentParam = storedProjectsParams.HasDocument;
            if (hasDocumentParam != undefined) findProjectsParams.HasDocument(hasDocumentParam);

        }
    }
    // Find projects by parameters
    var findProjects = function () {
        projectsCount(0);
        loadSearchParameters();
        var jsonFiler = ko.toJSON(findProjectsParams);

        $.ajax({
            url: $("body").data("actionUrls").findProjectsAction,
            type: 'POST',
            contentType:"application/json;",
            cache: false,
            timeout: 0,
            traditional: false,
            data: jsonFiler,
            beforeSend: function () {
                pagedGridViewModel.setCollection([]);
                pagedGridViewModel.setParams(0, 0);
                pagedGridViewModel.isReady(false);
            },
            success: function (data) {
                if (!data.status) {
                    alert(data.message);
                    return;
                }

                var model = data.viewModel;

                function applyModelChanges(items) {
                    items.forEach(function (item) {
                        item.DescriptionFormatted = item.Description.replace(/\n/g, '<br />');
                        item.CreatedAt = cm.getTimeAgoFromMilisecond(item.CreatedAt);

                        //add computed property by filter active tag
                        if (item.Tags && item.Tags.length > 0) {
                            item.Tags.forEach(function (tag) {
                                tag.filterTagsContainsIt = ko.computed(function () {
                                    var filteredTags = findProjectsParams.FilterTags().filter(function(filterTag) {
                                        return filterTag.Guid === tag.Guid;
                                    });
                                    return filteredTags.length > 0;
                                });
                            });
                        }

                        // Start: Metrics
                        item.FollowsHRCount = ko.computed(function () {
                            return cm.formatBigNumber(item.FollowsCount);
                        });

                        item.CommentsHRCount = ko.computed(function () {
                            return cm.formatBigNumber(item.CommentsCount);
                        });

                        item.ViewsHRCount = ko.computed(function () {
                            return cm.formatBigNumber(item.ViewsCount);
                        });

                        item.ForksHRCount = ko.computed(function () {
                            return cm.formatBigNumber(item.ForksCount);
                        });

                        item.VotesHRCount = ko.computed(function () {
                            return cm.formatBigNumber(item.VotesCount);
                        });

                        // Clickable Metrics
                        item.FollowsClickable = ko.computed(function () {
                            return item.FollowsCount > 0;
                        });

                        item.CommentsClickable = ko.computed(function () {
                            return item.CommentsCount > 0;
                        });

                        item.ForksClickable = ko.computed(function () {
                            return item.ForksCount > 0;
                        });

                        item.VotesClickable = ko.computed(function () {
                            return item.VotesCount > 0;
                        });

                        // Metrics Pages
                        item.OpenFollowersPage = function () {
                            if (item.FollowsCount < 1) return;
                            if (item.FollowersUrl == null || item.FollowersUrl == '') return;

                            window.location = item.FollowersUrl;
                        };

                        item.OpenCommentsPage = function () {
                            if (item.CommentsCount < 1) return;
                            if (item.CommentsUrl == null || item.CommentsUrl == '') return;

                            window.location = self.CommentsUrl;
                        };

                        item.OpenForksPage = function () {
                            if (item.ForksCount < 1) return;
                            if (item.ForksUrl == null || item.ForksUrl == '') return;

                            window.location = item.ForksUrl;
                        };

                        item.OpenVotesPage = function () {
                            if (item.VotesCount < 1) return;
                            if (item.VotesUrl == null || item.VotesUrl == '') return;

                            window.location = item.VotesUrl;
                        };
                        // Start: Metrics

                        item.MoreTagsBtnVisible = ko.computed(function () {
                            var width = 0;
                            if (item.Tags && item.Tags.length > 0) {
                                item.Tags.forEach(function(tag) {
                                    // width of text + padding + margin right
                                    width += cm.calculateTextSize(tag.Hrid).width + 20 + 5;
                                });
                            }
                            return width > 335;
                        });
                    });
                }

                applyModelChanges(model.Items);

                pagedGridViewModel.setCollection(model.Items);
                pagedGridViewModel.setParams(model.PageIndex, model.TotalRecords);

                projectsCount(model.TotalRecords);
                //tooltips
                $('[data-toggle="tooltip"]').tooltip();

                storeSearchParameters();
            },
            complete: function () {
                pagedGridViewModel.isReady(true);
            }
        });
    }

    var addTagToFilterAndFindProjects = function (tag) {
        findProjectsParams.FilterTags.push({
            Guid: tag.Guid,
            Hrid: ko.observable(tag.Hrid)
        });

        findProjectsParams.NumberOfPage(1);
        findProjectsParams.Filter($('#txtSearch').val());

        if (options.useSammy) setSammyLocation();
        else {
            storeSearchParameters();
            findProjects();
        }
    }
    var addTagFromFilterAndFindProjects = function (tag) {
        findProjectsParams.FilterTags.remove(function (itemTag) { return itemTag.Guid == tag.Guid; });
        findProjectsParams.NumberOfPage(1);
        findProjectsParams.Filter($('#txtSearch').val());

        if (options.useSammy) setSammyLocation();
        else {
            storeSearchParameters();
            findProjects();
        }
    }

    //-----------------------------------------
    
    var onBeginCreateProject = function () {
        cm.pleaseWait.show();
    };

    var onSuccessCreateProject = function (data) {
        if (!data.status) {
            alert(data.message);
            return;
        }

        successCreateObservers.notify(data);
    }

    var onFailureCreateProject = function (data) {
        var viewModel = JSON.parse(data.responseText);
        if (viewModel = Object(viewModel)) {
            if (viewModel.ErrorMessage) {
                cm.alert(viewModel.ErrorMessage);
            }
        }
    }

    var onCompleteCreateProject = function () {
        cm.pleaseWait.hide();
    }

    var bindCreateProjectHandlers = function () {
        $("#button-add-project").on("click", function () {
            cm.projects.addItem();
        });
    }

    var changeSortHandler = function () {
        var oldFindValue = findProjectsParams.Filter().toLowerCase();
        var newFindValue = $('#txtSearch').val().replace(/ /g, '').toLowerCase();

        if (oldFindValue != newFindValue) {
            findProjectsParams.NumberOfPage(1);
        }
        
        findProjectsParams.Filter($('#txtSearch').val());

        if (options.useSammy) setSammyLocation();
        else findProjects();
    }

    var activeteSortSubscription=function()
    {
        sortSubscription = findProjectsParams.SortViewModel.selectedSortValue.subscribe(function () {
            changeSortHandler();
        });
    }

    var disableSortSubscription=function() {
        if (sortSubscription) {
            sortSubscription.dispose();
        }
    }

    // loadSelectedTags
    var loadSelectedTags = function () {
        // params
        var tagParams = {
            AccessType: -1,
            ProjectOwnerType: 0,
            ProjectSortOrder: 0,
            Filter: "[NoCounts]",
            TagGuids: []
        }

        for (var tagIndex = 0; tagIndex <= findProjectsParams.FilterTags().length - 1; tagIndex++) {
            var loopTag = findProjectsParams.FilterTags()[tagIndex];
            tagParams.TagGuids.push(loopTag.Guid);
        }

        // ajax
        $.ajax({
            url: $("body").data("actionUrls").loadProjectTags,
            type: 'POST',
            cache: false,
            data: JSON.stringify(tagParams),
            contentType: "application/json;",
            dataType: 'json',
            success: function (data) {
                if (!data.status) {
                    alert(data.message);
                    return;
                }

                for (var itemIndex = 0; itemIndex <= data.viewModel.Items.length - 1; itemIndex++) {
                    var loopItem = data.viewModel.Items[itemIndex];

                    for (tagIndex = 0; tagIndex <= findProjectsParams.FilterTags().length - 1; tagIndex++) {
                        loopTag = findProjectsParams.FilterTags()[tagIndex];
                        if (loopTag.Guid.toLowerCase() == loopItem.TagGuid.toLowerCase()) {
                            loopTag.Hrid(loopItem.TagName);
                            break;
                        }
                    }
                }
            }
        });
    }

    // pageIndexChanged
    var pageIndexChanged = function (newPageIndex) {
        findProjectsParams.NumberOfPage(newPageIndex);

        if (options.useSammy) setSammyLocation();
        else findProjects();
    }

    var onProjectAccessTypeChange = function (control, projectGuid, context, buttonSave) {
        var value = $(control, context).val();
        if (value.toLowerCase() === "sandbox") {
            $(buttonSave).attr('disabled', 'disabled');
            
            $("#limitProjectLoader", context).show();
            checkLimitPrivateProject(projectGuid, function (validationResult) {
                $("#limitProjectLoader", context).hide();
                var privatePrjectsLeft = validationResult.SandBoxProjectsAllowed - validationResult.SandBoxProjectsUsed;
                if (privatePrjectsLeft > 0) {
                    $(buttonSave).removeAttr('disabled');
                    $("#limitPrivateProject", context).hide();
                } else {
                    privateProjectsValidationResults = validationResult;
                    $("#limitPrivateProject", context).show();

                    $("#privatePrjectsLimitMessage", context).text(
                        'You have reached the maximum limit of sandbox projects ('
                        + validationResult.SandBoxProjectsUsed
                        + ' out of ' + validationResult.SandBoxProjectsAllowed + ').');

                    if (validationResult.RequiredRatePlanId != null) {
                        $("#privateProjectsUpgradeMessage", context).show();
                    }
                }
            });
        } else {
            $("#limitProjectLoader", context).hide();
            $(buttonSave).removeAttr('disabled');
            $("#limitPrivateProject", context).hide();
        }
    };

    // showInAppPrivateProjectsPurchase
    var showInAppPrivateProjectsPurchase = function () {
        $('#project-edit-create-modal').modal('hide');
        cm.subscription.previewOrder(privateProjectsValidationResults.PrivateProjectsProductId, privateProjectsValidationResults.RequiredRatePlanId, showInAppPrivateProjectsPurchaseCallback);
    }

    var showInAppPrivateProjectsPurchaseCallback = function () {
        if (editItemGuid.replace(/ /g, '') == '') {
            addItem();
        } else {
            editItem(editItemGuid);
        }
    }

    var checkLimitPrivateProject = function (guid, callback) {
        $.ajax({
            url: $("body").data("actionUrls").checkLimitPrivateProject,
            type: 'POST',
            data: { id: guid },
            success: function (data) {
                if (!data.status) {
                    cm.alert(data.message);
                    callback(false);
                }
                callback(data.validationResult);
            },
        });
    };

    return {
        init: init,
        successCreateObservers: successCreateObservers,
        successDeleteObservers: successDeleteObservers,
        findProjects: findProjects,
        addItem: addItem,
        detailItem: detailItem,
        deleteItem: deleteItem,
        deleteItemConfirmed: deleteItemConfirmed,
        fork: fork,
        onBeginCreateProject: onBeginCreateProject,
        onSuccessCreateProject: onSuccessCreateProject,
        onCompleteCreateProject: onCompleteCreateProject,
        onFailureCreateProject: onFailureCreateProject,
        onForkSuccess: onForkSuccess,
        createFindProjectsParams: createFindProjectsParams,
        storeSearchParameters: storeSearchParameters,
        projectSearchParams: projectSearchParams,
        addTagToFilterAndFindProjects: addTagToFilterAndFindProjects,
        addTagFromFilterAndFindProjects: addTagFromFilterAndFindProjects,
        onProjectAccessTypeChange: onProjectAccessTypeChange,
        projectsCount: projectsCount,
        wipeOutItem: wipeOutItem,
        wipeOutConfirmed: wipeOutConfirmed
    }
})();
;
function ProjectTeamConstructor() {
    var mainViewModel;

    var teamViewModel = null;

    var init = function (viewModel) {
        mainViewModel = viewModel;

        teamViewModel = {};
        // error
        teamViewModel.isError = ko.observable(false);
        teamViewModel.errorMessage = ko.observable('');
        //
        teamViewModel.isReady = ko.observable(false);
        teamViewModel.currentTab = ko.observable(1);
        teamViewModel.isAdmin = ko.observable(false);
        teamViewModel.isAuthor = ko.observable(false);
        teamViewModel.accessRights = ko.observable(0);
        teamViewModel.canChangeAccessRights = ko.observable(false);
        teamViewModel.hasPendingRequests = ko.observable(false);

        // Loading Team Info
        loadTeamInfo();

        ko.applyBindings(teamViewModel, document.getElementById('project-team'));

        // Active Participants
        activeParticipants.init();

        // Pending Participants
        teamRequests.init();

        // Add New Members Popup
        addEditMembers.init();

        // Add Team Request
        addTeamRequest.init({
            projectGuid: mainViewModel.Guid(),
            modalFormCallbackUrl: $("body").data("actionUrls").addNewTeamRequest,
            modalFormId: 'project-add-team-request-form',
            modalFormAjaxSuccessCallback: 'cm.projectsDetails.team.addTeamRequest.addTeamRequestSuccess',
            teamRequestSuccessCallback: addTeamRequestSuccess
        });

        // loadCurrentTab
        loadCurrentTab();
    }

    var loadTeamInfo = function() {
        $.ajax({
            url: $("body").data("actionUrls").getTeamMainInfo,
            type: 'POST',
            cache: false,
            data: {
                projectGuid: mainViewModel.Guid()
            },
            beforeSend: function () {
                teamViewModel.isReady(false);
            },
            success: function (data) {
                if (!data.status) {
                    teamViewModel.isError(true);
                    teamViewModel.errorMessage(data.message);
                    return;
                }

                teamViewModel.isAdmin(data.viewModel.IsAdmin);
                teamViewModel.isAuthor(data.viewModel.IsAuthor);
                teamViewModel.accessRights(data.viewModel.AccessRights);
                teamViewModel.canChangeAccessRights(data.viewModel.CanChangeAccessRights);
                teamViewModel.hasPendingRequests(data.viewModel.HasPendingRequests);
            },
            complete: function () {
                teamViewModel.isReady(true);
            }
        });
    }

    var loadCurrentTab = function() {
        if (teamViewModel.currentTab() == 2) {
            teamRequests.getTeamRequests();
            $('#activeParticipantContent').hide();
            $('#pendingParticipantContent').show();
        } else {
            activeParticipants.getAccessRights();
            $('#activeParticipantContent').show();
            $('#pendingParticipantContent').hide();
        }
    }

    var setCurrentTab = function(newTabIndex) {
        if (newTabIndex == teamViewModel.currentTab()) return;
        teamViewModel.currentTab(newTabIndex);
        loadCurrentTab();
    }

    // Active Participants
    var activeParticipants = (function () {
        var viewModelParameters = null;

        var accessRightsPaginationOptions = null;
        var accessRightsPagedList = null;
        var accessRightsGridModel = null;

        var init = function () {
            $("#btnSearchParticipant").bind('click', function () {
                searchParticipants();
            });

            $("#txtSearchParticipant").keypress(function (event) {
                if (event.which == 13) {
                    searchParticipants();
                }
            });

            // View Model Parameters
            var storedPageIndex = cm.pageParams.getParam('projectsTeam_activeParticipants_pageIndex');
            if (storedPageIndex == null || storedPageIndex < 1) { storedPageIndex = 1; }

            viewModelParameters = {};
            viewModelParameters.projectGuid = mainViewModel.Guid();
            viewModelParameters.searchPhrase = '';
            viewModelParameters.pageSize = 5;
            viewModelParameters.pageIndex = storedPageIndex;

            // Start: Access Rights Grid
            accessRightsPaginationOptions = new cm.PaginationOptions();
            accessRightsPaginationOptions.pageSize = viewModelParameters.pageSize;
            accessRightsPagedList = new cm.PagedList(accessRightsPaginationOptions, pageChanged);
            accessRightsPagedList.currentIndex(viewModelParameters.pageIndex);
            accessRightsGridModel = new cm.PagedGridModel(accessRightsPagedList, false);
            accessRightsGridModel.isLoaded = ko.observable(false);

            ko.applyBindings(accessRightsGridModel, document.getElementById('project-team-active-participants'));
            // End: Access Rights Grid
        }

        var searchParticipants = function () {
            var searchPhrase = $('#txtSearchParticipant').val().trim();

            if (searchPhrase == '') searchPhrase = null;

            viewModelParameters.searchPhrase = searchPhrase;

            getAccessRights();
        }

        var getAccessRights = function () {
            accessRightsGridModel.setCollection(new Array());

            $.ajax({
                url: $("body").data("actionUrls").getProjectAccessRights,
                type: 'POST',
                cache: false,
                data: viewModelParameters,
                beforeSend: function () {
                    accessRightsGridModel.isLoaded(false);
                    $('#team-loading').show();
                },
                success: function (data) {
                    if (!data.status) {
                        cm.alert(data.message);
                        return;
                    }
                    
                    if (data.projectAccessRightsViewModel.TotalRecord <= viewModelParameters.pageSize) {
                        
                    }

                    accessRightsGridModel.setCollection(data.projectAccessRightsViewModel.AccessRights);
                    accessRightsGridModel.setParams(viewModelParameters.pageIndex, data.projectAccessRightsViewModel.TotalRecord);

                    viewModelParameters.pageIndex = accessRightsPagedList.currentIndex();
                    cm.pageParams.addParam('projectsTeam_activeParticipants_pageIndex', viewModelParameters.pageIndex);
                },
                complete: function () {
                    accessRightsGridModel.isLoaded(true);
                    $('#team-loading').hide();
                }
            });
        }

        var pageChanged = function (newPageIndex) {
            viewModelParameters.pageIndex = newPageIndex;
            getAccessRights();
            
            cm.pageParams.addParam('projectsTeam_activeParticipants_pageIndex', newPageIndex);
        };

        var confirmDeleteAccessRight = function (accessRightsIndex) {
            var projectAccessRight = accessRightsGridModel.items()[accessRightsIndex];
            cm.confirm('Are you sure you want to delete "' + projectAccessRight.AccessRightsName + '" access rights for user "' + projectAccessRight.TrusteeName + '".', function (confirmResult) {
                if (confirmResult) {
                    deleteAccessRight(projectAccessRight.ObjectGUID, projectAccessRight.TrusteeGUID, projectAccessRight.AccessRights);
                }
            });
        }

        var deleteAccessRight = function (projectGuid, userGuid, accessRights) {
            $.ajax({
                url: $("body").data("actionUrls").deleteAccessRight,
                type: 'POST',
                cache: false,
                data: {
                    projectGuid: projectGuid,
                    userGuid: userGuid,
                    accessRights: accessRights
                },
                beforeSend: function () {
                },
                success: function (data) {
                    if (!data.status) {
                        cm.alert(data.message);
                        return;
                    }
                },
                complete: function () {
                    activeParticipants.getAccessRights();
                }
            });
        }

        return {
            init: init,
            getAccessRights: getAccessRights,
            confirmDeleteAccessRight: confirmDeleteAccessRight
        }

    })();

    // Team Requests
    var teamRequests = (function () {
        var viewModelParameters = null;

        var teamRequestsPaginationOptions = null;
        var teamRequestsPagedList = null;
        var teamRequestsGridModel = null;

        var init = function () {
            // View Model Parameters
            var storedPageIndex = cm.pageParams.getParam('projectsTeam_teamRequests_pageIndex');
            if (storedPageIndex == null || storedPageIndex < 1) { storedPageIndex = 1; }

            viewModelParameters = {};
            viewModelParameters.projectGuid = mainViewModel.Guid();
            viewModelParameters.pageSize = 5;
            viewModelParameters.pageIndex = storedPageIndex;

            // Start: Team Requests Grid
            teamRequestsPaginationOptions = new cm.PaginationOptions();
            teamRequestsPaginationOptions.pageSize = viewModelParameters.pageSize;
            teamRequestsPagedList = new cm.PagedList(teamRequestsPaginationOptions, pageChanged);
            teamRequestsPagedList.currentIndex(viewModelParameters.pageIndex);
            teamRequestsGridModel = new cm.PagedGridModel(teamRequestsPagedList, false);
            teamRequestsGridModel.isLoaded = ko.observable(false);

            ko.applyBindings(teamRequestsGridModel, document.getElementById('project-team-pending-participants'));
            // End: Team Requests Grid
        }

        var getTeamRequests = function () {
            teamRequestsGridModel.setCollection(new Array());

            $.ajax({
                url: $("body").data("actionUrls").GetTeamRequests,
                type: 'POST',
                cache: false,
                data: viewModelParameters,
                beforeSend: function () {
                    teamRequestsGridModel.isLoaded(false);

                    $('#team-loading').show();
                },
                success: function (data) {
                    if (!data.status) {
                        cm.alert(data.message);
                        return;
                    }

                    for (var requestIndex = 0; requestIndex <= data.viewModel.TeamRequests.length - 1; requestIndex++) {
                        var loopRequest = data.viewModel.TeamRequests[requestIndex];
                        loopRequest.RequestIndex = requestIndex;

                        // Description
                        loopRequest.ShortDescription = cm.getShortText(loopRequest.Description, 100);
                        loopRequest.DescriptionToShow = ko.observable(loopRequest.ShortDescription);
                        
                        // Resolution
                        loopRequest.ShortResolution = cm.getShortText(loopRequest.Resolution, 100);
                        loopRequest.ResolutionToShow = ko.observable(loopRequest.ShortResolution);

                        // Item mouse over functions
                        loopRequest.ItemMouseOver = function (requestItem) {
                            requestItem.DescriptionToShow(requestItem.Description);
                            requestItem.ResolutionToShow(requestItem.Resolution);
                        }
                        loopRequest.ItemMouseOut = function (requestItem) {
                            requestItem.DescriptionToShow(requestItem.ShortDescription);
                            requestItem.ResolutionToShow(requestItem.ShortResolution);
                        }

                        loopRequest.CreatedAt = JSON.parse(loopRequest.CreatedAt);
                        loopRequest.LastModifiedAt = JSON.parse(loopRequest.LastModifiedAt);
                    }

                    teamRequestsGridModel.setCollection(data.viewModel.TeamRequests);
                    teamRequestsGridModel.setParams(viewModelParameters.pageIndex, data.viewModel.TotalRecord);

                    viewModelParameters.pageIndex = teamRequestsPagedList.currentIndex();
                    cm.pageParams.addParam('projectsTeam_teamRequests_pageIndex', viewModelParameters.pageIndex);
                },
                complete: function () {
                    teamRequestsGridModel.isLoaded(true);
                    $('#team-loading').hide();
                }
            });
        }

        var pageChanged = function (newPageIndex) {
            viewModelParameters.pageIndex = newPageIndex;
            getTeamRequests();

            cm.pageParams.addParam('projectsTeam_teamRequests_pageIndex', newPageIndex);
        };

        var approveTeamRequest = function(teamRequestGuid) {
            cm.confirm('Approving this team request will grant the user requested rights. Please confirm if you really want procced and grant the rights to the user.', function (confirmResult) {
                if (confirmResult) {
                    approveTeamRequestApproved(teamRequestGuid);
                }
            });
        }

        var approveTeamRequestApproved = function (teamRequestGuid) {
            $.ajax({
                url: $("body").data("actionUrls").approveTeamRequest,
                type: 'POST',
                cache: false,
                data: {
                    teamRequestGuid: teamRequestGuid
                },
                beforeSend: function () {
                    cm.pleaseWait.show();
                },
                success: function (data) {
                    if (!data.status) {
                        cm.alert(data.message);
                        return;
                    }

                    getTeamRequests();
                },
                complete: function () {
                    cm.pleaseWait.hide();
                }
            });
        }

        var showRejectTeamRequestDialog = function (teamRequestGuid) {
            $.ajax({
                url: $("body").data("actionUrls").rejectTeamRequestDialog,
                type: 'POST',
                cache: false,
                data: {
                    teamRequestGuid: teamRequestGuid,
                },
                beforeSend: function () {
                    cm.pleaseWait.show();
                },
                success: function (data) {
                    if (!data.status) {
                        cm.alert(data.message);
                        return;
                    }

                    loadDialogToPopup(data.view);

                    $('#project-reject-team-request-dialog').modal({ keyboard: false, backdrop: "static" });
                },
                complete: function () {
                    cm.pleaseWait.hide();
                }
            });
        }

        var loadDialogToPopup = function (view) {
            $('#project-reject-team-request-dialog').html(view);
            cm.preparePopupValidation("project-reject-team-request-dialog");
        }

        var rejectTeamRequestSuccess = function (data) {
            if (!data.status) {
                if (data.message != null && data.message != '') {
                    cm.alert(data.message);
                }

                loadDialogToPopup(data.view);

                return;
            }

            $('#project-reject-team-request-dialog').modal('hide');
            teamRequests.getTeamRequests();
        }

        return {
            init: init,
            getTeamRequests: getTeamRequests,
            approveTeamRequest: approveTeamRequest,
            showRejectTeamRequestDialog: showRejectTeamRequestDialog,
            rejectTeamRequestSuccess: rejectTeamRequestSuccess
        }

    })();

    // Start: Add New Member
    var addEditMembers = (function() {

        var viewModel = null;

        // init
        var init = function () {
            $("#btnSearchMember").bind('click', function () {
                searchIdsUsers();
            });

            $("#txtSearchMember").keypress(function(event) {
                if (event.which == 13) {
                    searchIdsUsers();
                }
            });

            // Users Grid
            viewModel = {};
            viewModel.paginationOptions = new cm.PaginationOptions();
            if (cm.variables.isRunFromDesktopApp) {
                viewModel.paginationOptions.pageSize = 3;
                $('#project-add-member-userslist').css('height', '330px');
                $('#project-addedit-team-member-dialog').css('margin', '30px auto');
            } else {
                viewModel.paginationOptions.pageSize = 4;
            }
            viewModel.paginationOptions.paginationLength = 1;
            viewModel.pagedList = new cm.PagedList(viewModel.paginationOptions, pageIndexChanged);
            viewModel.pagedList.currentIndex(1);
            viewModel.pagedGrid = new cm.PagedGridModel(viewModel.pagedList, false, null);
            
            ko.applyBindings(viewModel.pagedGrid, document.getElementById('project-addedit-team-member-dialog'));
        }

        // showAddEditMemberDialog
        var showAddEditMemberDialog = function () {
            clear();
            searchIdsUsers();
            $('#project-team-add-member-dialog').modal({ keyboard: false, backdrop: "static" });
        }

        // clear
        var clear = function () {
            viewModel.pagedGrid.isReady(false);
            viewModel.pagedList.currentIndex(1);
            viewModel.pagedGrid.setCollection([]);
            $("#txtSearchMember").val('');
        }

        // searchIdsUsers
        var searchIdsUsers = function (searchParams) {
            // searchParams
            if (searchParams == null) {
                searchParams = {
                    searchString: $('#txtSearchMember').val().trim(),
                    sortOption: 4,
                    pageIndex: viewModel.pagedList.currentIndex(),
                    usersPerPage: viewModel.paginationOptions.pageSize
                };
            }

            $.ajax({
                url: $("body").data("actionUrls").projectSearchIdsUsers,
                type: 'POST',
                cache: false,
                data: {
                    projectGuid: mainViewModel.Guid(),
                    searchString: searchParams.searchString,
                    sortOption: searchParams.sortOption,
                    pageIndex: searchParams.pageIndex,
                    usersPerPage: searchParams.usersPerPage
                },
                beforeSend: function () {
                    viewModel.pagedGrid.isReady(false);
                },
                success: function(data) {
                    if (!data.status) {
                        cm.alert(data.message);
                        return;
                    }

                    var usersData = [];
                    for (var userIndex = 0; userIndex <= data.foundUsers.length - 1; userIndex++) {
                        var loopFoundUser = data.foundUsers[userIndex];
                        var loopUserData = {};

                        // From Found User
                        loopUserData.UserGuid = loopFoundUser.UserGuid;
                        loopUserData.UserProfileUrl = loopFoundUser.UserProfileUrl;
                        loopUserData.UserImageURL = loopFoundUser.UserImageURL;
                        loopUserData.UserDisplayName = loopFoundUser.UserDisplayName;
                        loopUserData.MailingCountry = loopFoundUser.MailingCountry;
                        loopUserData.Specialties = loopFoundUser.Specialties;
                        loopUserData.UserDescription = loopFoundUser.UserDescription;
                        loopUserData.UserAccessRight = ko.observable(loopFoundUser.UserAccessRight);
                        // Rights
                        loopUserData.hasNoRights = data.foundUsers[userIndex].UserAccessRight == 0;
                        loopUserData.hasReadRight = data.foundUsers[userIndex].UserAccessRight == 1;
                        loopUserData.hasEditRight = data.foundUsers[userIndex].UserAccessRight == 7;
                        //data.foundUsers[userIndex].hasFullRight = data.foundUsers[userIndex].UserAccessRight == 15;

                        // Visibility
                        loopUserData.isNoneVisible =
                            mainViewModel.AccessType() == 'Sandbox';
                        loopUserData.isReadVisible =
                            mainViewModel.AccessType() == 'Sandbox'
                            || (mainViewModel.AccessType() == 'Public');

                        // Selected Value
                        loopUserData.isNoneSelected = false;
                        if (data.foundUsers[userIndex].hasNoRights
                            || mainViewModel.AccessType() == 'Sandbox') {
                            loopUserData.isNoneSelected = "selected";
                        }

                        loopUserData.isReadSelected = false;
                        if (data.foundUsers[userIndex].hasReadRight
                            || mainViewModel.AccessType() == 'Public') {
                            loopUserData.isReadSelected = "selected";
                        }

                        loopUserData.isEditSelected = false;
                        if (data.foundUsers[userIndex].hasEditRight) {
                            loopUserData.isEditSelected = "selected";
                        }

                        /*data.foundUsers[userIndex].isFullSelected = false;
                        if (data.foundUsers[userIndex].hasFullRight) {
                            data.foundUsers[userIndex].isFullSelected = "selected";
                        }*/

                        usersData[userIndex] = loopUserData;
                    }

                    viewModel.pagedGrid.setCollection(usersData);
                    viewModel.pagedGrid.setParams(searchParams.pageIndex, data.totalUsers);
                },
                complete: function () {
                    viewModel.pagedGrid.isReady(true);
                }
            });
        }

        // pageIndexChanged
        var pageIndexChanged = function (pageIndex) {
            var searchParams = {
                searchString: $('#txtSearchMember').val().trim(),
                sortOption: 4,
                pageIndex: pageIndex,
                usersPerPage: viewModel.paginationOptions.pageSize
            };

            searchIdsUsers(searchParams);
        }

        var saveAccessRights = function (userGuid) {
            var intAccessRight = 0;
            var newRights = [];

            var userRow = document.getElementById(userGuid);
            var userRightsSelect = userRow.getElementsByTagName('select')[0];
            var selectedRightOption = userRightsSelect.options[userRightsSelect.selectedIndex];

            if (mainViewModel.AccessType() == 'Sandbox' && selectedRightOption.text == 'None') {
                return;
            } else {
                if (selectedRightOption.text == 'Can Read') {
                    intAccessRight = 1;
                } else if(selectedRightOption.text == 'Can Edit') {
                    intAccessRight = 7;
                    /*} else if(selectedRightOption.text == 'Full') {
                    intAccessRight = 15;*/
                }

                if (intAccessRight == 0) {
                    return;
                }

                newRights[newRights.length] = {
                    AccessRights: intAccessRight,
                    ObjectGUID: mainViewModel.Guid(),
                    ObjectType: '',
                    ObjectName: '',
                    TrusteeGUID: userGuid,
                    TrusteeType: 0,
                    TrusteeTypeUIName: '',
                    TrusteeName: '',
                    TrusteeImageURL: '',
                    isTrusteeAnAuthor: false
                };
            }

            $.ajax({
                url: $("body").data("actionUrls").projectSaveRights,
                type: 'POST',
                cache: false,
                data: {
                    newRightsJSON: JSON.stringify(newRights)
                },
                beforeSend: function () {
                    cm.pleaseWait.show();
                },
                success: function (data) {
                    if (!data.status) {
                        cm.alert(data.message);
                        return;
                    }

                    for (var userIndex = 0; userIndex <= viewModel.pagedGrid.items().length - 1; userIndex++) {
                        var loopUser = viewModel.pagedGrid.items()[userIndex];

                        if (loopUser.UserGuid == userGuid) {
                            loopUser.UserAccessRight(intAccessRight);
                            break;
                        }
                    }
                },
                complete: function () {
                    cm.pleaseWait.hide();
                    teamViewModel.currentTab(1);
                    loadCurrentTab();
                }
            });
        }
        
        return {
            init: init,
            showAddEditMemberDialog: showAddEditMemberDialog,
            clear: clear,
            saveAccessRights: saveAccessRights
        };

    })();
    // End: Add New Member

    // Start: Add Team Request
    var addTeamRequest = new cm.AddTeamRequest();

    // addTeamRequestSuccess
    var addTeamRequestSuccess = function () {
        teamViewModel.hasPendingRequests(true);

        if (teamViewModel.currentTab() == 2) {
            teamRequests.getTeamRequests();
        } else {
            teamViewModel.currentTab(2);
            loadCurrentTab();
        }
    }

    // End: Add Team Request

    return {
        init: init,
        setCurrentTab: setCurrentTab,
        activeParticipants: activeParticipants,
        teamRequests: teamRequests,
        addEditMembers: addEditMembers,
        addTeamRequest: addTeamRequest,

        teamViewModel: function () { return teamViewModel; }
    };

};
var ProjectReleasesConstructor = function(viewModel) {
    
    // mainViewModel
    var mainViewModel = viewModel;

    // init
    var init = function () {
        // applyBindings
        ko.applyBindings(mainViewModel, document.getElementById('project-details-releases'));
       
        // Events
        $(document).on('click', '#userProfileReleasesId', function(e) {
            e.stopImmediatePropagation();
        });
    };

    // parseDate
    /*var parseDate = function(createdAt) {
        var date = new Date(createdAt);
        return date.getUTCDate() + ' '
            + cm.monthNames[date.getMonth()] + ' '
            + date.getFullYear();
    };*/

    // getReleases
    var getReleases = function () {
        $.ajax({
            url: $("body").data("actionUrls").getProjectReleases,
            type: 'POST',
            cache: false,
            data: {
                id: mainViewModel.Guid()
            },
            beforeSend: function () {
                mainViewModel.isReleasesReady(false);
            },
            success: function (data) {
                if (!data.status) {
                    alert(data.message);
                    return;
                }

                var resultsViewModel = JSON.parse(data.viewModel);
                
                // Releases
                resultsViewModel.Releases.forEach(function (item) { item.FilesHtml = ko.observable(); item.ComponentsHtml = ko.observable(); });
                mainViewModel.ProjectReleases(resultsViewModel.Releases);
            },
            complete: function () {
                mainViewModel.isReleasesReady(true);
            }
        });
    };

    // showHideReleaseFiles
    var showHideReleaseFiles = function (release, event) {
        if (!release.FilesHtml()) {
            loadComponents(release);
            $('#releaseRadio2' + release.Guid).prop('checked', true);
        }

        $('input[name="namereleaseRadio' + release.Guid + '"]').click(function () {
            $(this).tab('show');
        });
    }

    // loadFiles
    var loadFiles = function (release) {
        $.ajax({
            url: $("body").data("actionUrls").GetReleaseFiles,
            type: 'POST',
            cache: false,
            data: {
                revisionId: release.RevisionId
            },
            beforeSend: function () { },
            success: function (data) {
                release.FilesHtml(data);
            },
            complete: function () {
            }
        });
    }

    var loadComponents = function (release) {
        if (!release.ComponentsHtml()) {
            $.ajax({
                url: $("body").data("actionUrls").GetReleaseComponents,
                type: 'POST',
                cache: false,
                data: {
                    revisionId: release.RevisionId
                },
                beforeSend: function () { },
                success: function (data) {
                    release.ComponentsHtml(data);
                },
                complete: function () {
                }
            });
        }
    }

    // downloadAllReleasedDocuments
    var downloadAllReleasedDocuments = function (revisionGuid) {
        // Not Authenticated User
        if (!cm.variables.isAuth) {
            cm.signInUpDialog.dialogSlideIn(1);
            return;
        }

        // Authenticated User
        $.ajax({
            url: $("body").data("actionUrls").downloadAllReleasedDocuments,
            type: 'POST',
            cache: false,
            data: {
                revisionGuid: revisionGuid
            },
            beforeSend: function () {
                //isProjectReleasesPleaseWait(true);
                cm.pleaseWait.show();
            },
            success: function (data) {
                if (data.status && data.downloadUrl) {
                    window.location.href = data.downloadUrl;
                }
            },
            complete: function () {
                cm.pleaseWait.hide();
            }
        });
    };

    // Start: Fabrication

    // resetFabricationModal
    var resetFabricationModal = function() {
        $('#radio_fabrication_circuitHub').attr('checked');
        $('#radio_fabrication_oshPark').removeAttr('checked');
        $('#radio_fabrication_Seeed').removeAttr('checked');
    }

    // selectFabrication
    function showFabricateModal(releaseItem) {
        if (releaseItem.FabricateOshParkUrl.replace(/ /g) == '' && releaseItem.FabricateSeeedUrl.replace(/ /g) == '') {
            // If OSH Park not enabled, use Circuit Hub by default
            cm.projectsDetails.releases.fabricate(releaseItem.FabricateCircuitHubUrl);
        } else {
            $('#radio_fabrication_circuitHub').val(releaseItem.FabricateCircuitHubUrl);
            if (releaseItem.FabricateOshParkUrl.replace(/ /g) == '')
                $('#radio_fabrication_oshPark').parent().hide();
            else
                $('#radio_fabrication_oshPark').val(releaseItem.FabricateOshParkUrl);

            if (releaseItem.FabricateSeeedUrl.replace(/ /g) == '')
                $('#radio_fabrication_Seeed').parent().hide();
            else
                $('#radio_fabrication_Seeed').val(releaseItem.FabricateSeeedUrl);

            $('#selectFabrication').modal('show');
        }
    }

    // fabricate
    var fabricate = function (fabricateUrl) {
        // Hide fabrication modal
        $('#selectFabrication').modal('hide');

        // Getting fabricate URL from radio buttons
        if (fabricateUrl == null || fabricateUrl.replace(/ /g) == '') {
            
            var radio = $('#divFabricateCheckBoxes input:radio:checked');
            fabricateUrl = $(radio).val();
        }
        
        // Opening new window with fabricate URL
        if (fabricateUrl) {
            var win = window.open(fabricateUrl, '_blank');
            win.focus();
        }

        // resetFabricationModal
        resetFabricationModal();
    };

    // End: Fabrication

    // deleteRelease
    var deleteRelease = function(releaseGuid) {
        $("#removeReleaseDialogDiv").modal({ keyboard: false, backdrop: 'static' });
        var deleteButton = $('#removeReleaseDialogDivOkButton');
        $(deleteButton).unbind("click");
        $(deleteButton).bind("click", function() {
            $.ajax({
                url: $("body").data("actionUrls").deleteRelease,
                type: 'POST',
                cache: false,
                data: {
                    projectGuid: mainViewModel.Guid(),
                    releaseGuid: releaseGuid
                },
                beforeSend: function() {
                    cm.pleaseWait.show();
                },
                success: function(data) {
                    if (!data.status) {
                        cm.alert(data.message);
                    }
                    getReleases();
                },
                complete: function() {
                    cm.pleaseWait.hide();
                    $("#removeReleaseDialogDiv").modal('hide');
                }
            });
        });
    };

    var downloadReleaseOnClient = function () {
        $("#downloadReleaseFromClient-hyperlink").focus(function () { $(this).select() });
        $("#downloadReleaseFromClient-hyperlink").mouseup(function (e) { e.preventDefault(); });
        $('#downloadReleaseFromClientDialogDiv').on('shown.bs.modal', function () {
            $("#downloadReleaseFromClient-hyperlink").focus();
            //$("#downloadReleaseFromClient-hyperlink").select();
        })
        $('#downloadReleaseFromClientDialogDiv').modal({ keyboard: false, backdrop: 'static' });
    }

    return {
        init: init,
        getReleases: getReleases,
        showHideReleaseFiles: showHideReleaseFiles,
        loadFiles: loadFiles,
        downloadAllReleasedDocuments: downloadAllReleasedDocuments,
        showFabricateModal: showFabricateModal,
        fabricate: fabricate,
        deleteRelease: deleteRelease,
        downloadReleaseOnClient: downloadReleaseOnClient
    };
};
cm.projectsDetails = (function() {
    
    // mainViewModel
    var mainViewModel;
    var similarProjects;

    // team
    var team = new ProjectTeamConstructor();

    // releases
    var releases;

    // init
    var init = function (projectModel, encodedDescription, iniScrollSpy, isLoadComment) {
        // mainViewModel
        mainViewModel = new mainViewModelConstructor(projectModel.Guid);
        mainViewModel.isReady(false);
        mainViewModel.iniScrollSpy = iniScrollSpy;
        mainViewModel.isLoadComment = isLoadComment;

        // Releases
        releases = new ProjectReleasesConstructor(mainViewModel);

        if (mainViewModel.iniScrollSpy) {
            // iniScrollSpy
            initScrollSpy();
        } else {
            // initInternalBrowser
            initInternalBrowser();
        }

        //// init View Model
        //initViewModel();

        // initBreadcrumbs
        initBreadcrumbs();

        // applyBindings
        ko.applyBindings(mainViewModel, document.getElementById('project-caption'));
        ko.applyBindings(mainViewModel, document.getElementById('pleaseWait'));
        ko.applyBindings(mainViewModel, document.getElementById('project-details-content'));
        ko.applyBindings(mainViewModel, document.getElementById('project-details-sidebar'));
        ko.applyBindings(mainViewModel, document.getElementById('project-details-comments'));

        // load project
        initViewModel(projectModel, encodedDescription);
        mainViewModel.isReady(true);
    }

    // initBreadcrumbs
    var initBreadcrumbs = function() {
        var storedProjectsParams = cm.pageParams.getControllerParam('findProjectsParams');

        if (storedProjectsParams == null) {
            cm.breadcrumbsViewModel.addLink($("body").data("actionUrls").projectsAction, 'Projects');
        } else {
            if (storedProjectsParams.OwnerType == 0) {
                cm.breadcrumbsViewModel.addLink($("body").data("actionUrls").projectsAction, 'Projects');
            }

            if (storedProjectsParams.OwnerType == 1) {
                cm.breadcrumbsViewModel.addLink($("body").data("actionUrls").myProjectsAction, 'Projects');
            }

            if (storedProjectsParams.OwnerType == 2) {
                cm.breadcrumbsViewModel.addLink($("body").data("actionUrls").teamProjectsAction, 'Projects');
            }
        }

        // cm.breadcrumbsViewModel.addLink($("body").data("actionUrls").projectDetails, mainViewModel.Hrid());
        cm.breadcrumbsViewModel.addWait();
        cm.breadcrumbsViewModel.htmlBind();
    }

    // MainViewModel
    var mainViewModelConstructor = function (projectGuid) {
        var self = this;

        // General
        this.isReady = ko.observable(false);
        this.isError = ko.observable(false);
        this.errorMessage = ko.observable('');

        this.followViewModel = ko.observable();

        // Permissions & Options
        this.IsUserAuthor = ko.observable(false);
        this.CanRate = ko.observable(false);
        this.Follow = ko.observable(false);
        this.CanEdit = ko.observable(false);
        this.CanRemove = ko.observable(false);
        this.CanFork = ko.observable(false);
        this.CanWipeOut = ko.observable(false);

        // General
        this.Guid = ko.observable('');
        this.Hrid = ko.observable('&nbsp;');
        this.MainImageUrl = ko.observable();
        this.Description = ko.observable('');
        this.DescriptionFormatted = ko.observable('');
        this.AccessType = ko.observable('Sandbox');
        this.CreatedDateTime = ko.observable('');
        this.CreatedByUrl = ko.observable('');
        this.CanFollowByCreator = ko.observable(false);
        this.FollowByCreator = ko.observable(false);
        this.CreatedGuid = ko.observable('');
        this.CreatedByName = ko.observable('');
        this.CreatedProfilePictureUrl = ko.observable('');
        this.IsFork = ko.observable(false);
      /*  this.Summary = ko.observable('');*/
        this.SourceProjectHrid = ko.observable('');
        this.SourceProjectUrl = ko.observable('');
        this.sandBoxImageUrl = ko.observable('/Content/Images/Projects/personal_project.png');
        this.isSandBoxProject = ko.computed(function () {
            return self.AccessType() == 'Sandbox';
        });

        // Urls
        this.EditUrl = ko.observable('');
        this.ForksUrl = ko.observable('');
        this.FollowersUrl = ko.observable('');
        this.CommentsUrl = ko.observable('');
        this.VotesUrl = ko.observable('');
        
        //gallery for right side bar
        this.projectImageGallery = ko.observable(new projectImageGallery(undefined, projectGuid, function () { }, undefined));

        // Design Files
        this.designFiles = ko.observableArray([]);
        this.designFilesCollapsible = ko.observableArray([]);
        this.designFilesAfterRender = function(elements, data) {
            var li = $.grep(elements, function(arrayItem, index) {
                return arrayItem.nodeName == 'LI';
            })[0];

            var dxpCommandModalOptions = {
                elementId: li.id,
                cookieName : 'dxp-command-open-design-file',
                title : 'Open Design File',
                content: 'You need CircuitMaker application installed to open design files.',
                dxpCommand: 'DXP://WorkspaceManager:PreviewDocument_URL?ProjectGUID=' + mainViewModel.Guid() + '|RevisionId=' + data.RevisionId + '|DocumentPath=' + data.FilePath + '|SessionID=' + cm.sessionId()
            };

            cm.DxpCommandModal(dxpCommandModalOptions);
        }

        // Tags
        this.tags = ko.observableArray([]);

        // External Links
        this.ExternalLinksViewModel = ko.observable(new Object);
        this.ExternalLinksViewModel().Items = ko.observableArray();

        // Attachment
        this.AttachmentsViewModel = ko.observable(new Object);
        this.AttachmentsViewModel().Items = ko.observableArray();

        // Parent Project Details
        this.sourceProjectUrl = ko.observable(null);
        this.sourceProjectName = ko.observable(null);
        this.sourceProjectAuthorUrl = ko.observable(null);
        this.sourceProjectAuthorName = ko.observable(null);
        this.sourceProjectMainImageUrl = ko.observable(null);
        this.sourceProjectCreatedAt = ko.observable(null);

        // License
        this.License = ko.observable(new Object);
        this.License().ImageUrl = ko.observable('');
        this.License().Title = ko.observable('');
        this.License().Abbreviation = ko.observable('');
        this.License().LicenseInfoUrl = ko.observable('');

        // Start: Metrics
        this.FollowsCount = ko.observable(0);
        this.CommentsCount = ko.observable(0);
        this.ViewsCount = ko.observable(0);
        this.ForksCount = ko.observable(0);
        this.VotesCount = ko.observable(0);

        // Big Numbers
        this.FollowsHRCount = ko.computed(function () {
            return cm.formatBigNumber(self.FollowsCount());
        });

        this.CommentsHRCount = ko.computed(function () {
            return cm.formatBigNumber(self.CommentsCount());
        });

        this.ViewsHRCount = ko.computed(function () {
            return cm.formatBigNumber(self.ViewsCount());
        });

        this.ForksHRCount = ko.computed(function () {
            return cm.formatBigNumber(self.ForksCount());
        });

        this.VotesHRCount = ko.computed(function () {
            return cm.formatBigNumber(self.VotesCount());
        });

        // Clickable Metrics
        this.FollowsClickable = ko.computed(function() {
            return self.FollowsCount() > 0;
        });

        this.CommentsClickable = ko.computed(function () {
            return self.CommentsCount() > 0;
        });

        this.ForksClickable = ko.computed(function () {
            return self.ForksCount() > 0;
        });

        this.VotesClickable = ko.computed(function () {
            return self.VotesCount() > 0;
        });

        // Metrics Pages
        this.OpenFollowersPage = function () {
            if (self.FollowsCount() < 1) return;
            if (self.FollowersUrl() == null || self.FollowersUrl() == '') return;

            window.location = self.FollowersUrl();
        };

        this.OpenCommentsPage = function () {
            if (self.CommentsCount() < 1) return;
            if (self.CommentsUrl() == null || self.CommentsUrl() == '') return;

            window.location = self.CommentsUrl();
        };

        this.OpenForksPage = function () {
            if (self.ForksCount() < 1) return;
            if (self.ForksUrl() == null || self.ForksUrl() == '') return;

            window.location = self.ForksUrl();
        };

        this.OpenVotesPage = function () {
            if (self.VotesCount() < 1) return;
            if (self.VotesUrl() == null || self.VotesUrl() == '') return;

            window.location = self.VotesUrl();
        };
        // End: Metrics

        // Forks
        this.forks = {};
        this.forks.isReady = ko.observable(false);
        this.forks.items = ko.observableArray([]);
        this.forks.totalRecords = ko.observable(0);

        // Components
        this.ProjectComponents = ko.observableArray([]);

        // Releases
        this.isReleasesReady = ko.observable(false);
        this.ProjectReleases = ko.observableArray([]);

        // Comments
        cm.comments = new CmComments();
        cm.comments.init(projectGuid, cm.consts.projectEventSourceId);
    };

    // initViewModel
    var initViewModel = function (viewModel, encodedDescription) {
        var mappedModel = ko.mapping.fromJS(viewModel);
        viewModel.Description = decodeURIComponent(encodedDescription);
        // comments
        cm.comments.loadComments();

        // mainViewModel
        // Permissions & Options
        mainViewModel.AccessType(viewModel.AccessType);
        mainViewModel.Follow(viewModel.Follow);
        mainViewModel.CanRate(viewModel.CanRate);
        mainViewModel.CanEdit(viewModel.CanEdit);
        mainViewModel.CanRemove(viewModel.CanRemove);
        mainViewModel.CanFork(viewModel.CanFork);
        mainViewModel.CanWipeOut(viewModel.CanWipeOut);
        // 
        mainViewModel.Guid(viewModel.Guid);
        mainViewModel.Hrid(viewModel.Hrid);
        mainViewModel.Description(viewModel.Description);
        mainViewModel.DescriptionFormatted(viewModel.Description.replace(/\n/g, '<br />'));
        mainViewModel.MainImageUrl(viewModel.MainImageUrl);
        mainViewModel.IsFork(viewModel.IsFork);
     /*   mainViewModel.Summary(viewModel.Summary);*/
        mainViewModel.SourceProjectHrid(viewModel.SourceProjectHrid);
        mainViewModel.SourceProjectUrl(viewModel.SourceProjectUrl);
        mainViewModel.CreatedGuid(viewModel.CreatedGuid);
        mainViewModel.CreatedByName(viewModel.CreatedByName);
        mainViewModel.CreatedByUrl(viewModel.CreatedByUrl);
        mainViewModel.CreatedProfilePictureUrl(viewModel.CreatedProfilePictureUrl);
        mainViewModel.CanFollowByCreator(viewModel.CanFollowByCreator);
        mainViewModel.FollowByCreator(viewModel.FollowByCreator);
        mainViewModel.CreatedDateTime(cm.getTimeAgoFromMilisecond(viewModel.CreatedDateTime));
        mainViewModel.IsUserAuthor(viewModel.IsUserAuthor);

        var tags = mappedModel.Tags();
        for (var tagIndex = 0; tagIndex <= tags.length - 1; tagIndex++) {
            var loopTag = tags[tagIndex];
            loopTag.Hrid(decodeURIComponent(loopTag.Hrid()));
        }
        mainViewModel.tags(tags);

        viewModel.ExternalLinksViewModel.Items.forEach(function (item) { item.Title = decodeURIComponent(item.Title); });
        mainViewModel.ExternalLinksViewModel(ko.mapping.fromJS(viewModel.ExternalLinksViewModel));
        mainViewModel.AttachmentsViewModel(ko.mapping.fromJS(viewModel.AttachmentsViewModel));
        mainViewModel.projectImageGallery().imageList(viewModel.ImageIdList);

        // URLs
        mainViewModel.EditUrl(viewModel.EditUrl);
        mainViewModel.ForksUrl(viewModel.ForksUrl);
        mainViewModel.FollowersUrl(viewModel.FollowersUrl);
        mainViewModel.CommentsUrl(viewModel.CommentsUrl);
        mainViewModel.VotesUrl(viewModel.VotesUrl);

        //Parent project
        mainViewModel.sourceProjectUrl(viewModel.SourceProjectUrl);
        mainViewModel.sourceProjectName(viewModel.SourceProjectName);
        mainViewModel.sourceProjectAuthorUrl(viewModel.SourceProjectAuthorUrl);
        mainViewModel.sourceProjectAuthorName(viewModel.SourceProjectAuthorName);
        mainViewModel.sourceProjectMainImageUrl(viewModel.SourceProjectMainImageUrl);
        mainViewModel.sourceProjectCreatedAt(cm.getTimeAgoFromMilisecond(viewModel.SourceProjectCreatedAt));

        // License
        if (viewModel.License) {
            mainViewModel.License().ImageUrl(viewModel.License.ImageUrl);
            mainViewModel.License().Title(viewModel.License.Title);
            mainViewModel.License().Abbreviation(viewModel.License.Abbreviation);
            mainViewModel.License().LicenseInfoUrl(viewModel.License.LicenseInfoUrl);
        }

        // Metrics
        mainViewModel.FollowsCount(viewModel.FollowsCount);
        mainViewModel.CommentsCount(viewModel.CommentsCount);
        mainViewModel.ViewsCount(viewModel.ViewsCount);
        mainViewModel.VotesCount(viewModel.VotesCount);
        mainViewModel.ForksCount(viewModel.ForksCount);

        // Components
        for (var componentIndex = 0; componentIndex <= viewModel.Components.length - 1; componentIndex++) {
            var loopComponent = viewModel.Components[componentIndex];
            loopComponent.UsageCountText = loopComponent.UsageCount == 0 ? '' : '(' + loopComponent.UsageCount + ')';
            loopComponent.Name = decodeURIComponent(loopComponent.Name);
        }
        mainViewModel.ProjectComponents(viewModel.Components);

        // Releases
        viewModel.Releases.forEach(function (item) { item.FilesHtml = ko.observable(); item.ComponentsHtml = ko.observable(); });
        mainViewModel.ProjectReleases(viewModel.Releases);
        mainViewModel.isReleasesReady(true);

        // Open Project Button
        $('.open-design').unbind('click').click(function () {          
          window.open(viewModel.A365ViewUrl, '_blank' );          
        });
      
        // Delete Button
        if (viewModel.CanRemove) {
            $('#button-project-delete').bind('click').click(function () {
                cm.projects.deleteItem(viewModel.Hrid);
            });

            $('#project-delete').bind('click').click(function () {
                cm.projects.deleteItemConfirmed(viewModel.Guid, viewModel.Hrid);
            });
        }

        // WipeOut project Button
        if (viewModel.CanWipeOut) {
          $('#button-project-wipeOut').bind('click').click(function () {
            cm.projects.wipeOutItem(viewModel.Hrid);
          });

          $('#project-wipeOut').bind('click').click(function () {
            cm.projects.wipeOutConfirmed(viewModel.Guid, viewModel.Hrid);
          });
        }

        // meta tags
        $("meta[property='og:title']").attr("content", viewModel.MetaTagTitle);
        $("meta[property='og:image']").attr("content", viewModel.EmbededMainImageUrl);

        $("meta[name='twitter:title']").attr("content", viewModel.MetaTagTitle);
        $("meta[name='twitter:description']").attr("content", viewModel.MetaTagDescription);
        $("meta[name='twitter:image']").attr("content", viewModel.EmbededMainImageUrl);

        // Share buttons
        if (!cm.variables.isRunFromDesktopApp) {
            cm.shareManager.init({
                entityId: viewModel.Guid,
                title: viewModel.Hrid,
                description: viewModel.Description,
                entityTypeName: "project",
                url: $("body").data("actionUrls").shareProjectByEmail
            });
        }

        // getDesignFiles
        getDesignFiles(viewModel.DesignFiles);

        // team
        team.init(mainViewModel);

        // load similar Projects
        var tags = new Array;
        for (var index = 0; index < viewModel.Tags.length; ++index) {
            tags.push(viewModel.Tags[index].Guid);
        }

        // similar projects
        similarProjects = new CmSimilarProjects(mainViewModel.Guid());
        similarProjects.loadSimilarProjects(tags);

        // init pagination for gallery
        $('ul#image-gallery-list').easyPaginate({
            step: 4,
            nextprev: false,
            controls: 'design-files-pagination',
            className: 'easy-pagination'
        });

        // hubs
        mainViewModel.hubs = {};
        mainViewModel.hubs.items = ko.observableArray(viewModel.Hubs);
        mainViewModel.hubs.items().forEach(function (hub) { hub.Follows = ko.observable(hub.Follows); });
        mainViewModel.hubs.followUnfollowHub = followUnfollowHub;
        ko.applyBindings(mainViewModel.hubs, document.getElementById('section-hubs'));

        // votes
        cm.votes.init(mainViewModel.Guid(), cm.consts.projectEventSourceId);
        cm.votes.setObservableHandlers(mainViewModel.VotesCount);
        
        // loadForks
        loadForks();

        // breadcrumbs
        cm.breadcrumbsViewModel.removeWait();
        cm.breadcrumbsViewModel.addLink($("body").data("actionUrls").projectDetails, mainViewModel.Hrid());

        mainViewModel.isReady(true);

        // Internal Browser
        if (!mainViewModel.iniScrollSpy) {
            showSelectedTab(1);
        }
    };

    // Start: Design Files
    // getDesignFiles
    var getDesignFiles = function (designFilesList) {
        var exceptPcb = [];
        var onlyPcb = [];

        for (var i = 0; i < designFilesList.length; i++) {
            designFilesList[i].FilePath = designFilesList[i].FilePath.replace('/Preview', '').replace('.big.png', '').replace('.small.png', '');

            if (designFilesList[i].FilePath.charAt(0) == '/') {
                designFilesList[i].FilePath = designFilesList[i].FilePath.substring(1, designFilesList[i].FilePath.length);
            }

            designFilesList[i].IconUrl = "/Content/Images/Projects/".concat((designFilesList[i].FilePath.toUpperCase().indexOf('.SCHDOC', designFilesList[i].FilePath.length - 7) !== -1) ? "SCH-CM_32x32.png" : "PCB-CM_32x32.png");
        }

        for (i = 0; i < designFilesList.length; i++) {
            if (designFilesList[i].FilePath.toUpperCase().indexOf('PCBDOC') == -1) {
                exceptPcb.push(designFilesList[i]);
            } else {
                onlyPcb.push(designFilesList[i]);
            }
        }

        var allDesignFiles = exceptPcb.concat(onlyPcb);

        // designFiles && designFilesCollapsible
        var designFiles = [];
        var designFilesCollapsible = [];
        if (!mainViewModel.iniScrollSpy || allDesignFiles.length <= 2) {
            designFiles = allDesignFiles;
        } else {
            designFiles.push(allDesignFiles[0]);
            designFiles.push(allDesignFiles[1]);

            for (var fileIndex = 2; fileIndex <= allDesignFiles.length - 1; fileIndex++) {
                designFilesCollapsible.push(allDesignFiles[fileIndex]);
            }
        }

        mainViewModel.designFiles(designFiles);
        mainViewModel.designFilesCollapsible(designFilesCollapsible);

        // pagination
        /*$('ul#design-files-list').easyPaginate({
            step: 2,
            nextprev: false,
            controls: 'design-files-pagination',
            className: 'easy-pagination'
        });*/
    };
    // Start: End Files

    // giveProps
    var giveProps = function() {
        cm.votes.add(function(success) {
            mainViewModel.CanRate(!success);
        });
    }

    /* Start: Follow/Unfollow project */

    // followProject
    var followUnfollowProject = function () {
        if (mainViewModel.Follow() == 0) {
            cm.notifications.addFollowData(cm.consts.projectObjectKindId, mainViewModel.Guid());
            getFollowStatus();
        } else {
            cm.notifications.removeFollowData(cm.consts.projectObjectKindId, mainViewModel.Guid());
            getFollowStatus();
        }
    }

    // getFollowStatus
    function getFollowStatus() {
        cm.notifications.getFollowStatus(cm.consts.projectObjectKindId, mainViewModel.Guid(), function (data) {
            mainViewModel.Follow(data.Follow);
            getFollowersCount();
        });
    }

    // getFollowersCount
    function getFollowersCount() {
        var url = $("body").data("actionUrls").getFollowersCount;
        $.ajax(url, {
            type: "POST",
            data: { projectId: mainViewModel.Guid() },
            beforeSend: function () {
            },
            success: function (response) {
                if (response.status) {
                    mainViewModel.FollowsCount(response.FollowersCount);
                }
                else {
                    cm.alert(response.errorMessage);
                }
            },
            complete: function () {
            }
        });
    }

    /* End: Follow/Unfollow project */

    // Start: Forks

    // forkProject
    var forkProject = function() {
        cm.projects.fork(mainViewModel.Guid(), mainViewModel.Hrid());
    }

    // loadForks
    var loadForks = function()
    {   
        var url = $("body").data("actionUrls").loadForksAction;
        $.ajax(url, {
            type: "POST",
            data: {
                AccessType: -1,
                OwnerType: 0,
                OrderByAsc: false,
                ProjectSortOrder: 5,
                SourceProjectGuid: mainViewModel.Guid(),
                CountPerPage: 4,
                NumberOfPage: 0
            },
            beforeSend: function () {
                mainViewModel.forks.isReady(false);
            },
            success: function (response) {
                if (!response.success) {
                    cm.alert(response.message);
                    return;
                }

                var model = response.viewModel;

                function processTeamProjects(items) {
                    items.forEach(function (item) {
                        item.CreatedAt = cm.getTimeAgoFromMilisecond(item.CreatedAt);
                    });
                }

                processTeamProjects(model.Items);

                mainViewModel.forks.items(model.Items);
                mainViewModel.forks.totalRecords(model.TotalRecords);
                mainViewModel.forks.ViewAllUrl = mainViewModel.ForksUrl();

                ko.applyBindings(mainViewModel.forks, document.getElementById('section-project-forks'));
            },
            complete: function () {
                mainViewModel.forks.isReady(true);
            }
        });
    }

    // End: Forks

    // Start: Internal Browser

    // initInternalBrowser
    var initInternalBrowser = function () {
        // Overview
        $('#page-top-menu-ul li[tabindex="1"]').click(function () {
            showSelectedTab(1);
        });

        // Design Files
        $('#page-top-menu-ul li[tabindex="2"]').click(function () {
            showSelectedTab(2);
        });

        // Team
        $('#page-top-menu-ul li[tabindex="3"]').click(function () {
            showSelectedTab(3);
        });

        // Component & Releases
        $('#page-top-menu-ul li[tabindex="4"]').click(function () {
            showSelectedTab(4);
        });

        // Attachments
        $('#page-top-menu-ul li[tabindex="5"]').click(function () {
            showSelectedTab(5);
        });
    }

    // showSelectedTab
    var showSelectedTab = function (tabIndex) {
        resetAllTabs();

        switch (tabIndex) {
            case 1:
                $('#sectionOverview').css('display', 'block'); // active
                $('#page-top-menu-ul li[tabindex="1"]').addClass('active');
                break;;
            case 2:
                $('#sectionDesignFiles').css('display', 'block');
                $('#page-top-menu-ul li[tabindex="2"]').addClass('active');
                break;;
            case 3:
                $('#sectionTeam').css('display', 'block');
                $('#page-top-menu-ul li[tabindex="3"]').addClass('active');
                break;;
            case 4:
                $('#sectionComponentReleases').css('display', 'block');
                $('#page-top-menu-ul li[tabindex="4"]').addClass('active');
                break;;
            case 5:
                $('#sectionAttachments').css('display', 'block');
                $('#page-top-menu-ul li[tabindex="5"]').addClass('active');
                break;;
            default:
                return;
        }
    }

    // hideAllTabs
    var resetAllTabs = function () {
        // removing active class
        $('#page-top-menu-ul li[tabindex="1"]').removeClass('active');
        $('#page-top-menu-ul li[tabindex="2"]').removeClass('active');
        $('#page-top-menu-ul li[tabindex="3"]').removeClass('active');
        $('#page-top-menu-ul li[tabindex="4"]').removeClass('active');
        $('#page-top-menu-ul li[tabindex="5"]').removeClass('active');

        // hiding tabs' content
        $('#sectionOverview').css('display', 'none');
        $('#sectionDesignFiles').css('display', 'none');
        $('#sectionTeam').css('display', 'none');
        $('#sectionComponentReleases').css('display', 'none');
        $('#sectionAttachments').css('display', 'none');
    }

    // End: Internal Browser

    // initScrollSpy
    var initScrollSpy = function () {
        var offsetHeight = 60;

        $("body").scrollspy({
            target: "#page-top-menu-ul",
            offset: offsetHeight
        });

        $("#page-top-menu-ul .navbar li a").click(function (event) {
            var scrollPos = $("body > .container").find($(this).attr("href")).offset().top - (offsetHeight - 1);
            $("body,html").animate({
                scrollTop: scrollPos
            }, 500, function () {
                if ($("div.navbar-collapse").hasClass("in")) {
                    $(".navbar-toggle").click();
                } else {

                }
            });
            return false;
        });
    }

    // Follow/Unfollow
    function followUnfollowHub(hub) {
        if (hub.Follows() === false) {
            cm.notifications.addFollowData(cm.consts.hubObjectKindId, hub.HubGuid, function () { updateFollowingStatus(hub); });
        } else {
            cm.notifications.removeFollowData(cm.consts.hubObjectKindId, hub.HubGuid, function () { updateFollowingStatus(hub); });
        }
    }

    function updateFollowingStatus(hub)
    {
        cm.notifications.getFollowStatus(cm.consts.hubObjectKindId, hub.HubGuid, function (data) {
            hub.Follows(data.Follow);
        });
    }

    // return
    return {
        init: init,
        giveProps: giveProps,
        followUnfollowProject: followUnfollowProject,
        forkProject: forkProject,
        team: team,
        mainViewModel: function () { return mainViewModel; },
        releases: function() { return releases; },
        // Internal Browser
        showSelectedTab: showSelectedTab
    }

}());;
function projectSummary(projectId, summary, editButton, saveButton, cancelButton, editor, editorWrapper, editable) {

    var self = this;

    this.canEdit = true;
    this.editing = ko.observable(false);
    this.buttonedit = editButton;
    this.buttonsave = saveButton;
    this.buttoncancel = cancelButton
    this.editor = editor;
    this.editorWrapper = editorWrapper;
    this.initialSummaryValue = '';
    this.summary = ko.observable(summary);
    this.projectId = projectId;
    this.editable = ko.observable(editable);


    this.buttonsave.bind('click', function () { self.save(); });
    this.buttoncancel.bind('click', function () { self.cancel(); });

    this.disableEditing(this.editable());
    this.eventTriggers = {};
};

projectSummary.prototype.on = function (event, callback) {
    if (!this.eventTriggers[event])
        this.eventTriggers[event] = [];
    this.eventTriggers[event].push(callback);
}

projectSummary.prototype.triggerEvent = function (event, params) {
    if (this.eventTriggers[event]) {
        for (i in this.eventTriggers[event])
            this.eventTriggers[event][i](params);
    }
}

projectSummary.prototype.disableEditing = function (isEditButtonEnabled) {
    var self = this;

    if (!isEditButtonEnabled) {
        this.buttonedit.css("visibility", "hidden");
        this.editorWrapper.addClass('no-rights');
    } else {
        this.buttonedit.css("visibility", "visible");
        this.editorWrapper.removeClass('no-rights');

        this.buttonedit.bind('click', function () { self.edit(); });
    }

};

projectSummary.prototype.edit = function () {
    var self = this;

    this.initialSummaryValue = this.editor.val();
    this.editing(true);
    this.editor.focus();

    this.editorWrapper.toggleClass('readonly');

    this.buttonedit.css('display', 'none');
    this.buttonsave.css('display', 'block');
    this.buttoncancel.css('display', 'block');
    this.editor.css('display', 'block');


    CKEDITOR.replace(this.editor.get(0), {
        filebrowserImageBrowseUrl: $('body').data('actionUrls').browseGalleryImagesAction + '?projectId=' + self.projectId,
        filebrowserImageUploadUrl: $('body').data('actionUrls').addImageToProjectGalleryAction + '?projectId=' + self.projectId,
        filebrowserImageWindowWidth: '640',
        filebrowserImageWindowHeight: '480',
        dialog_noConfirmCancel: true,
        extraPlugins: 'projectImageGalleryDialog,filebrowser',
        simpleuploads_acceptedExtensions: '7z|avi|csv|doc|docx|flv|gif|gz|gzip|jpeg|jpg|mov|mp3|mp4|mpc|mpeg|mpg|ods|odt|pdf|png|ppt|pxd|rar|rtf|tar|tgz|txt|vsd|wav|wma|wmv|xls|xml|zip',
        extraAllowedContent: "h3 blockquote ul li",
        toolbar: [
            { name: 'basicstyles', groups: ['basicstyles', 'cleanup'], items: ['Bold', 'Italic', 'Strike', '-', 'RemoveFormat'] },
            { name: 'paragraph', groups: ['list', 'indent', 'blocks', 'align', 'bidi'], items: ['NumberedList', 'BulletedList', '-', 'Outdent', 'Indent', '-', 'Blockquote'] },
            { name: 'styles', items: ['Styles', 'Format'] },
            { name: 'links', items: ['Link', 'Unlink', 'Anchor'] },
            { name: 'insert', items: ['Image'] }
        ],
        customDialogFactory: function (url) {
            var dialog = CKEDITOR.instances['summary-editor'].openDialog('browseImageGallery');
            var uiElement = CKEDITOR.dialog.getCurrent().getContentElement('browseImageGalleryMainTab', 'browseDialogElement');

            uiElement.setup('<iframe style="border: 0px; width: 100%; height: 400px;"  src="' + url + '" ></iframe>');
        }
    });

    CKEDITOR.on('dialogDefinition', function (ev) {
        ev.data.definition.removeContents('Link');
    });
}

projectSummary.prototype.cancel = function () {

    this.editorWrapper.toggleClass('readonly');
    this.buttonedit.css('display', '');
    this.buttonsave.css('display', 'none');
    this.buttoncancel.css('display', 'none');

    CKEDITOR.instances[this.editor.get(0).id].destroy()

    this.editing(false);

    this.editor.val(this.initialSummaryValue);
}

projectSummary.prototype.save = function () {

    var self = this;
    this.editing(false);
    this.editorWrapper.toggleClass('readonly');
    this.buttonedit.css('display', '');
    this.buttonsave.css('display', 'none');
    this.buttoncancel.css('display', 'none');
    this.editing(false);
    this.summary(CKEDITOR.instances[this.editor.get(0).id].getData());

    this.saveSummary(this.projectId, this.summary(), function () {
        CKEDITOR.instances[self.editor.get(0).id].destroy();

        self.editor.css('display', 'none');

        self.triggerEvent('onSave');
    });
}

projectSummary.prototype.saveSummary = function(projectId, summary, successHandler) {
    $.ajax($('body').data('actionUrls').saveProjectSummary, {
        type: "POST",
        data: {
            id: projectId,
            summary: summary
        },
        beforeSend: function () {
            cm.pleaseWait.show();
        },
        success: function (data) {
            cm.pleaseWait.hide();

            successHandler();
        },
        complete: function (data) {
            cm.pleaseWait.hide();
        }
    });
};

cm.ProjectSummary = projectSummary;


;
cm.projectsDetails.history = (function () {
    var self = this;

    var projectGuid = '';

    var pagedGridViewModel = null;

    var getProjectHistory = function (pageIndex) {
        $.ajax({
            url: $("body").data("actionUrls").getProjectHistory,
            type: 'POST',
            cache: false,
            data: {
                id: self.projectGuid,
                pageSize: pagedGridViewModel.pagedList.paginationOptions.pageSize,
                pageIndex: pageIndex
            },
            beforeSend: function () {
                $('#history-loading').show();
            },
            success: function (data) {
                if (!data.status) {
                    self.isError(true);
                    self.errorMessage(data.message);
                    return;
                }

                var viewModel = JSON.parse(data.viewModel);

                function applyTimeAgo(items) {
                    items.forEach(function (item) {
                        item.historyTime = getHistoryTime(item.CreatedAt);
                    });
                }

                applyTimeAgo(viewModel.Items);

                pagedGridViewModel.setCollection(viewModel.Items);
                pagedGridViewModel.setParams(viewModel.PageIndex, viewModel.TotalRecords);

                cm.pageParams.addParam('projectsHistory_pageIndex', viewModel.PageIndex);
            },
            complete: function () {
                $('#history-loading').hide();
            }
        });
    };

    function parseDate(createdAt) {
        var date = new Date(createdAt);
        return date.getUTCDate() + ' ' + cm.monthNames[date.getMonth()] + ' ' + date.getFullYear();
    }

    var getDistinctDateFromHistory = function (inputArray) {
        var outputArray = [];

        for (var i = 0; i < inputArray().length; i++) {
            var parsedDate = parseDate(inputArray()[i].CreatedAt);
            if ((jQuery.inArray(parsedDate, outputArray)) == -1) {
                outputArray.push(parsedDate);
            }
        }

        return outputArray.sort(function (a, b) { return b - a; });
    };

    var getHistoryItemsForDate = function (inputArray, currentDate) {
        var outputArray = [];

        inputArray().forEach(function (item) {
            if (parseDate(item.CreatedAt) == currentDate) {
                outputArray.push(item);
            }
        });

        return outputArray.sort(function (a, b) { return b.CreatedAt - a.CreatedAt; });
    };

    var getHistoryTime = function (createdAt) {
        var date = new Date(createdAt);
        return date.toTimeString().substr(0, 5);
    };

    var historyFilesTooltip = function (arr) {
        return arr.join('\n');
    };

    var init = function (projectId) {
        projectGuid = projectId;

        var pageIndex = cm.pageParams.getParam('projectsHistory_pageIndex');
        if (pageIndex == null || pageIndex < 1) { pageIndex = 1; }

        var paginationOptions = new cm.PaginationOptions();
        paginationOptions.pageSize = 10;
        var pagedList = new cm.PagedList(paginationOptions, getProjectHistory);
        pagedList.currentIndex(pageIndex);
        pagedGridViewModel = new cm.PagedGridModel(pagedList, false);

        ko.applyBindings(pagedGridViewModel, document.getElementById('project-history'));

        getProjectHistory(pageIndex);
    };

    return {
        init: init,
        getProjectHistory: getProjectHistory,
        getDistinctDateFromHistory: getDistinctDateFromHistory,
        getHistoryItemsForDate: getHistoryItemsForDate,
        historyFilesTooltip: historyFilesTooltip
    };
})();;
function projectImageGallery(imageList, projectId, selectHandler, updateImageListUrl) {

    var self = this;

    this.imageList = ko.observableArray(imageList);
    this.projectId = projectId;
    this.editing = ko.observable(false);
    this.selectHandler = selectHandler;
    this.updateImageListUrl = updateImageListUrl;
    this.editable = ko.observable(false);
};

projectImageGallery.prototype.showLigthBoxGallery = function (currentItem) {

    var currentImageIndex = this.imageList().indexOf(currentItem);
    var gallery = blueimp.Gallery(this.imageList().map(function (item) { return item.Url; }), { index: currentImageIndex, toggleControlsOnReturn: false, emulateTouchEvents: false, stopTouchEventsPropagation: true });
}

projectImageGallery.prototype.showLigthBoxGalleryFromID = function (currentItemID) {

    var currentImage = $.grep(this.imageList(), function (i) { return i.Id == currentItemID }, false);
    if (currentImage.length > 0) {
        var currentImageIndex = this.imageList().indexOf(currentImage[0]);
        var gallery = blueimp.Gallery(this.imageList().map(function (item) { return item.Url; }), { index: currentImageIndex, toggleControlsOnReturn: false, emulateTouchEvents: false, stopTouchEventsPropagation: true });
    }
}

projectImageGallery.prototype.RemoveImage = function (url, imageId) {
    var self = this;    

    $("#imageDeleteDialogDiv").modal({ keyboard: false, backdrop: 'static' });

    $('#imageDeleteDialogDivOkButton').click(function () {
        $('#imageDeleteDialogDiv').modal('hide');

        $.ajax(url, {
            type: "POST",
            data: {
                projectId: self.projectId,
                imageId: imageId
            },
            beforeSend: function () {
                cm.pleaseWait.show();
            },
            success: function (data) {
                cm.pleaseWait.hide();

                self.imageList(self.imageList().filter(function (item) {
                    return item.Id !== imageId
                }));
            },
            complete: function (data) {
                cm.pleaseWait.hide();
            }
        });
    });
};

projectImageGallery.prototype.updateImageList = function () {
    var self = this;

    $.ajax(self.updateImageListUrl + '?projectId=' + self.projectId, {
        type: "GET",
        success: function (data) {

            var newImageList = data.map(function (item) {
                return { Id: item.Id, Url: item.OriginUrl, Thumbnail: item.Thumbnail };
            });


            self.imageList(newImageList);
        }
    });
}

projectImageGallery.prototype.showUploadImageForm = function () {

    var self = this;
    var url = $("body").data("actionUrls").getUploadImageForm;

    $.get(url + '?projectId=' + this.projectId + '&imageType=0', function (form) {

        $("#placeUploadImage").html(form);
        cm.preparePopupValidation("uploadImageForm");
        $("#placeUploadImage").modal({ keyboard: false, backdrop: 'static' });

        $("#placeUploadImage").on('hide.bs.modal', function () {
            self.updateImageList();
            $("#placeUploadImage").html("");
        });
    });
}

;
cm.projectEdit = (function() {
    
    // initialData
    var initialData = null;

    // viewModel
    var viewModel = null;
    
    // init
    var init = function () {
        // initViewModel
        initViewModel();

        //init main image
        viewModel.projectMainImage = new ProjectMainImage(viewModel.projectModel.Guid);
        viewModel.projectMainImage.editable(true);
        if (viewModel.projectModel.MainImageUrl) {
            viewModel.projectMainImage.imageUrl(viewModel.projectModel.MainImageUrl);
        }
        
        this.projectAttachments = new ProjectAttachments(viewModel.projectModel.Guid);

        //init gallery
        viewModel.projectImageGallery = ko.observable(new projectImageGallery(
            viewModel.projectModel.GalleryImageIdList,
            viewModel.projectModel.Guid,
            undefined,
            $("body").data("actionUrls").getGalleryImageUrlList
        ));
        viewModel.projectImageGallery().editable(true);

        //init Hubs
        viewModel.hubs = ko.observableArray([]);
        viewModel.relatedHubs = ko.observableArray(viewModel.projectModel.Hubs);
        viewModel.relatedHubs().forEach(function (item) { item.HubState = ko.observable(item.HubState); });
        viewModel.relatedHubsToShow = ko.computed(function () { return viewModel.relatedHubs().filter(function (hub) { return hub.HubState() !== 3; }); });
        viewModel.relatedHubsCount = ko.computed(function () { return viewModel.hubs().filter(function (hub) { return hub.selected() === true; }).length; });
        viewModel.addHub = addHub;
        viewModel.showAddHub = showAddHub;
        viewModel.removeHub = removeHub;

        // initTags
        initTags();

        // initSummaryEditor
        initSummaryEditor($("#text-project-summary"), viewModel.projectModel.Guid);

        // initExternalLinks
        initExternalLinks();

        // attachments
        initAttachments();

        // initLicenses
        initLicenses();
        
        // applyBindings
        ko.applyBindings(viewModel, document.getElementById('project-edit-content'));

        // initialData
        initialData = cm.pageParams.getParam('edit-project-data');
        if (initialData == null) initialData = getCurrentData();

        //add handler on change project AccessType
        var accessTypeEditControl = $("#editProjectAccessType");
        if ($('#AccessType_1', accessTypeEditControl).attr('checked') != 'checked') {
            $("input[name=AccessType]:radio", accessTypeEditControl).on("change", function () { cm.projects.onProjectAccessTypeChange(this, viewModel.projectModel.Guid, accessTypeEditControl, $("#edit-project-btn-save")); });
        }

        // generate UrlDisplayName (Name In URL) modal
        $('#project-generate-urldisplayname-generate').click(function () {
            $('#hidden-project-generate-urldisplayname').val('true');
            $('#hidden-project-generate-urldisplayname-chosen').val('true');

            submitForm();
        });

        $('#project-generate-urldisplayname-cancel').click(function() {
            $('#hidden-project-generate-urldisplayname-chosen').val('true');

            submitForm();
        });

        // page unload
        $(window).on('beforeunload', function (event) {
            var currentData = getCurrentData();
            if (currentData.Summary.length > 0) currentData.Summary = currentData.Summary.substr(0, currentData.Summary.length - 1);

            if (JSON.stringify(initialData) !== JSON.stringify(currentData)) {
                var message = "You have made changes to the project.";

                if (typeof event == "undefined") { event = window.event; }
                if (event) { event.returnValue = message; }

                return message;
            }
        });
    }

    // initViewModel
    var initViewModel = function () {
        viewModel = {}

        // projectModel
        viewModel.projectModel = JSON.parse($('#project-edit-model').val());
    }

    // getCurrentData
    var getCurrentData = function () {
        var projectData = {};

        projectData.Description = $('#text-project-description').val();
        
        // Access Type
        var publicCheckbox = $('#AccessType_0');
        var privateCheckbox = $('#AccessType_1');
        if (publicCheckbox.prop('checked')) {
            projectData.AccessType = publicCheckbox.val();
        } else {
            projectData.AccessType = privateCheckbox.val();
        }
        
        // Stage
        var conceptCheckbox = $('#Stage_0');
        var inDevelopmentCheckbox = $('#Stage_1');
        var prototypingCheckbox = $('#Stage_2');
        var reviewCheckbox = $('#Stage_3');
        var completedCheckbox = $('#Stage_4');
        if (conceptCheckbox.prop('checked')) {
            projectData.Stage = conceptCheckbox.val();
        }
        else if (inDevelopmentCheckbox.prop('checked')) {
            projectData.Stage = inDevelopmentCheckbox.val();
        }
        else if (prototypingCheckbox.prop('checked')) {
            projectData.Stage = prototypingCheckbox.val();
        }
        else if (reviewCheckbox.prop('checked')) {
            projectData.Stage = reviewCheckbox.val();
        }
        else if (completedCheckbox.prop('checked')) {
            projectData.Stage = completedCheckbox.val();
        }

        // Hubs
        projectData.Hubs = '';
        for (var index = 0; index <= viewModel.relatedHubs().length - 1; index++) {
            var loopHub = viewModel.relatedHubs()[index];
            if (loopHub.HubState() != cm.ObjectState.Deleted) projectData.Hubs += loopHub.Guid + ',';
        }

        // Tags
        projectData.Tags = '';
        for (index = 0; index <= viewModel.tags().length - 1; index++) {
            var loopTag = viewModel.tags()[index];
            projectData.Tags += loopTag.Hrid() + ',';
        }

        // Summary
        projectData.Summary = CKEDITOR.instances['text-project-summary'].getData();

        // External Links
        projectData.ExternalLinks = [];
        for (index = 0; index <= viewModel.externalLinks().length - 1; index++) {
            var loopLink = viewModel.externalLinks()[index];
            if (loopLink.State() != cm.ObjectState.Deleted) {
                projectData.ExternalLinks.push({ Title: loopLink.Title(), Value: loopLink.Value() });
            }
        }

        // Licenses
        projectData.SelectedLicense = '';
        for (index = 0; index <= viewModel.Licenses().length - 1; index++) {
            var loopLicense = viewModel.Licenses()[index];
            var licenseRadio = $('#project-license-' + index);
            if (licenseRadio.prop('checked')) {
                projectData.SelectedLicense = loopLicense.GUID;
                break;
            }
        }

        return projectData;
    }

    // Start: Tags

    // initTags
    var initTags = function ()
    {
        viewModel.tags = ko.observableArray([]);
        viewModel.TagError = ko.observable();
        viewModel.reservedTags = viewModel.projectModel.ReservedTags;

        viewModel.getTagPostName = function(index) {
            return 'Tags[' + index + ']';
        };

        var assignedTags = JSON.parse($('#text-project-tags-json').val());

        for (var tagIndex = 0; tagIndex <= assignedTags.length - 1; tagIndex++) {
            var loopTag = assignedTags[tagIndex];
            
            viewModel.tags.push({
                Hrid: ko.observable(loopTag.Hrid),
                isActive: ko.observable(false)
            });
        }

        $('#text-project-add-tag').autocomplete({
            source: getAutocompleteTokens
        });
    }

    // getAutocompleteTokens
    var getAutocompleteTokens = function (request, response) {
        $.ajax($('body').data('actionUrls').GetAvailableProjectTokens, {
            type: "GET",
            async: false,
            data: {
                tagNameStartsWith: request.term
            },
            success: function (data) {
                if (data.success) {
                    return response(data.tokens);
                }
                return response(null);
            }
        });
    }

    // tagInputKeypress
    var tagInputKeypress = function (data, event) {
        if (event.which == 13) {
            addTag();
        }

        return true;
    }

    // addTag
    var addTag = function () {
        $("#text-project-add-tag").autocomplete('close');

        var tagName = $('#text-project-add-tag').val().trim();

        var tagError = null;
        //validate tags
        if (viewModel.reservedTags.indexOf(tagName.toLowerCase()) > -1) {
            tagError = "Tag could not be added because of using reserved system word";
        } else if (tagName.length > 30) {
            tagError = "Tag name cannot contain more than 30 symbols!";
        } else if (viewModel.tags().length >= 15) {
            tagError = "Number of tags exceeded max number of 15!";
        }

        viewModel.TagError(tagError);

        if (!tagError && tagName != "") {
            var tagIndex;
            for (tagIndex = 0; tagIndex <= viewModel.tags().length - 1; tagIndex++) {
                viewModel.tags()[tagIndex].isActive(false);
            }

            for (tagIndex = 0; tagIndex <= viewModel.tags().length - 1; tagIndex++) {
                var loopTag = viewModel.tags()[tagIndex];
                if (loopTag.Hrid().toLowerCase() == tagName.toLowerCase()) {
                    loopTag.isActive(true);
                    return;
                }
            }

            viewModel.tags.push({
                Hrid: ko.observable(tagName),
                isActive: ko.observable(false)
            });

            $("#text-project-add-tag").val("");
        }
    }

    // removeTag
    var removeTag = function(tag) {
        for (var tagIndex = 0; tagIndex <= viewModel.tags().length - 1; tagIndex++) {
            var loopTag = viewModel.tags()[tagIndex];
            if (tag.Hrid().toLowerCase() == loopTag.Hrid().toLowerCase()) {
                viewModel.tags.splice(tagIndex, 1);
                break;
            }
        }
    }

    // End: Tags

    // initSummaryEditor
    var initSummaryEditor = function (editor, projectId) {
        CKEDITOR.replace(editor.get(0), {
            filebrowserImageBrowseUrl: $('body').data('actionUrls').browseGalleryImagesAction + '?projectId=' + projectId,
            filebrowserImageUploadUrl: $('body').data('actionUrls').addImageToProjectGalleryAction + '?projectId=' + projectId,
            filebrowserImageWindowWidth: '640',
            filebrowserImageWindowHeight: '480',
            dialog_noConfirmCancel: true,
            extraPlugins: 'projectImageGalleryDialog,filebrowser,youtubeCustom,justify,colorbutton,colordialog',
            resize_dir: 'vertical',
            simpleuploads_acceptedExtensions: '7z|avi|csv|doc|docx|flv|gif|gz|gzip|jpeg|jpg|mov|mp3|mp4|mpc|mpeg|mpg|ods|odt|pdf|png|ppt|pxd|rar|rtf|tar|tgz|txt|vsd|wav|wma|wmv|xls|xml|zip',
            extraAllowedContent: "h3 blockquote ul li",
            toolbar: [
                { name: 'document', items: ['Source'] },
                { name: 'basicstyles', items: ['Bold', 'Italic', 'Underline', 'Strike', '-', 'RemoveFormat'] },
                { name: 'paragraph', items: ['NumberedList', 'BulletedList', '-', 'Outdent', 'Indent', '-', 'Blockquote', '-', 'JustifyLeft', 'JustifyCenter', 'JustifyRight', 'JustifyBlock'] },
                { name: 'styles', items: ['Styles', 'Format'] },
                { name: 'colors', items: ['TextColor'] },
                //{ name: 'colors', groups: ['colors'] },
                { name: 'links', items: ['Link', 'Unlink'] },
                { name: 'insert', items: ['Image', 'Table', 'HorizontalRule', 'SpecialChar', 'Youtube'] }
            ],
            customDialogFactory: function (url) {
                var dialog = CKEDITOR.instances['text-project-summary'].openDialog('browseImageGallery');
                var uiElement = CKEDITOR.dialog.getCurrent().getContentElement('browseImageGalleryMainTab', 'browseDialogElement');

                uiElement.setup('<iframe style="border: 0px; width: 100%; height: 400px;"  src="' + url + '" ></iframe>');
            }
        });

        CKEDITOR.on('dialogDefinition', function (ev) {
            var editor = ev.editor;
            var dialogName = ev.data.name;
            var dialogDefinition = ev.data.definition;

            if (dialogName == 'image') {
                var infoTab = dialogDefinition.getContents('info');
            }

            dialogDefinition.removeContents('Link');
        });
    }

    // Start: External Links (References)

    // initExternalLinks
    var initExternalLinks = function () {
        viewModel.externalLinkIndex = 0;
        viewModel.editedExternalLink = ko.observable(null);
        viewModel.externalLinks = ko.observableArray([]);
        //viewModel.externalLinks.NotDeleted = ko.computed(function () {
        //    return viewModel.externalLinks().filter(function (item) {
        //        return item.DeleteAction() === false;
        //    });
        //});
        viewModel.getExternalLinkPostName = function (index) {
            return 'ExternalLinks.Items[' + index + ']';
        }

        $('#text-project-external-link-title').keyup(function () {
            var linkTitle = $('#text-project-external-link-title').val().trim();
            var linkValue = $('#text-project-external-link-value').val().trim();

            if (linkTitle == '' || linkValue == '') $('#project-external-link-add-update').attr('disabled', 'disabled');
            else $('#project-external-link-add-update').removeAttr('disabled');
        });
        
        $('#text-project-external-link-value').keyup(function () {
            var linkTitle = $('#text-project-external-link-title').val().trim();
            var linkValue = $('#text-project-external-link-value').val().trim();

            if (linkTitle == '' || linkValue == '') $('#project-external-link-add-update').attr('disabled', 'disabled');
            else $('#project-external-link-add-update').removeAttr('disabled');
        });

        $('#text-project-external-link-title').keypress(function (event) {
            externalLinkInputKeypress(event);
        });

        $('#text-project-external-link-value').keypress(function (event) {
            externalLinkInputKeypress(event);
        });

        $('#text-project-external-link-value').blur(function () {
            validateUrl(document.getElementById("text-project-external-link-value"));
        });

        // 
        var savedExternalLinks = JSON.parse($('#text-project-external-links-json').val());

        for (var arrayIndex = 0; arrayIndex <= savedExternalLinks.length - 1; arrayIndex++) {
            var loopExternalLink = savedExternalLinks[arrayIndex];

            viewModel.externalLinks.push({
                Index: viewModel.externalLinkIndex,
                Id: ko.observable(loopExternalLink.Id),
                Title: ko.observable(loopExternalLink.Title),
                Value: ko.observable(loopExternalLink.Value),
                State: ko.observable(loopExternalLink.State),
            });

            viewModel.externalLinkIndex++;
        }
    }

    // externalLinkInputKeypress
    var externalLinkInputKeypress = function (event) {
        if (event.which == 13) {
            validateUrl(document.getElementById("text-project-external-link-value"));
            addUpdateExternalLink();
        }

        return true;
    }

    // editExternalLink
    var editExternalLink = function (externalLinkToEdit) {
        viewModel.editedExternalLink(externalLinkToEdit);

        $('#text-project-external-link-title').val(externalLinkToEdit.Title());
        $('#text-project-external-link-value').val(externalLinkToEdit.Value());
    }

    // addUpdateExternalLink
    var addUpdateExternalLink = function () {
        var $linkTitle = $('#text-project-external-link-title');
        var $linkValue = $('#text-project-external-link-value');

        if (!$linkTitle.valid() || !$linkTitle.val() ||
            !$linkValue.valid() || !$linkValue.val() ||
            !!$linkValue.data("busy")) return;

        $('#text-project-external-link-value').data("busy", true);

        if (viewModel.editedExternalLink() == null) addExternalLink();
        else updateExternalLink();
    }

    // addExternalLink
    var addExternalLink = function() {
        var linkTitle = $('#text-project-external-link-title').val();
        var linkValue = $('#text-project-external-link-value').val();
        
        var newLink = {
            Index: viewModel.externalLinkIndex,
            Id: ko.observable(0),
            Title: ko.observable(linkTitle),
            Value: ko.observable(linkValue),
            State: ko.observable(1),
        };
        viewModel.externalLinks.push(newLink);

        viewModel.externalLinkIndex++;

        completeAddingExternalLink();
    }

    // updateExternalLink
    var updateExternalLink = function() {
        var linkTitle = $('#text-project-external-link-title').val();
        var linkValue = $('#text-project-external-link-value').val();

        viewModel.editedExternalLink().Title(linkTitle);
        viewModel.editedExternalLink().Value(linkValue);
        if (viewModel.editedExternalLink().State() == 0) {
            viewModel.editedExternalLink().State(2);
        }

        viewModel.editedExternalLink(null);

        completeAddingExternalLink();
    }

    var completeAddingExternalLink = function () {
        var $linkTitle = $('#text-project-external-link-title');
        var $linkValue = $('#text-project-external-link-value');

        $linkValue.data("busy", false);
        $linkTitle.val("");
        $linkValue.val("");

        viewModel.editedExternalLink(null);
    }

    // editLinkCancel
    var editExternalLinkCancel = function () {
        completeAddingExternalLink();
    }

    // removeExternalLink
    var removeExternalLink = function (externalLinkToRemove) {
        if (externalLinkToRemove.State() == 1)
            viewModel.externalLinks.remove(function(item) {
                return item.Index === externalLinkToRemove.Index;
            });
        else {
            externalLinkToRemove.State(3);
        }
    }

    // End: External Links (References)
    
    // attachments
    var initAttachments = function () {
        viewModel.attachmentIndex = 0;
        viewModel.editedAttachment = ko.observable(null);
        viewModel.attachments = ko.observableArray([]);
        viewModel.getAttachmentsPostName = function (index) {
            return 'Attachments.Items[' + index + ']';
        }
        
        $('#text-project-attachment-title').keyup(function () {
            var linkTitle = $('#text-project-attachment-title').val().trim();
            var linkValue = $('#text-project-attachment-value').val().trim();

            if (linkTitle == '' || linkValue == '') $('#project-attachment-add-update').attr('disabled', 'disabled');
            else $('#project-attachment-add-update').removeAttr('disabled');
        });
        
        $('#text-project-attachment-value').keyup(function () {
            var linkTitle = $('#text-project-attachment-title').val().trim();
            var linkValue = $('#text-project-attachment-value').val().trim();

            if (linkTitle == '' || linkValue == '') $('#project-attachment-add-update').attr('disabled', 'disabled');
            else $('#project-attachment-add-update').removeAttr('disabled');
        });
        
        // 
        var savedAttachments = JSON.parse($('#text-project-attachment-json').val());
        if (savedAttachments) {
            for (var arrayIndex = 0; arrayIndex <= savedAttachments.length - 1; arrayIndex++) {
                var loopAttachment = savedAttachments[arrayIndex];
                addAttachment(loopAttachment);
            }
        }
    }

    //// addUpdateAttachment
    //var addUpdateAttachment = function () {
    //    if (!$('#text-project-attachment-title').valid() ||
    //        !$('#text-project-attachment-value').valid()) return;

    //    if (viewModel.editedAttachment() == null) {
    //        return addAttachment();
    //    } else {
    //        return updateAttachment();
    //    }
    //}

    // addAttachment
    var addAttachment = function (attachment) {
        var newLink = {
            Index: viewModel.attachmentIndex,
            Id: ko.observable(attachment.Id),
            Title: ko.observable(attachment.Title),
            Value: ko.observable(attachment.Value),
            ImageUrl: ko.observable(attachment.ImageUrl),
            SizeStr: ko.observable(attachment.SizeStr),
            PostName: viewModel.getAttachmentsPostName(viewModel.attachmentIndex)
        };
        viewModel.attachments.push(newLink);
        viewModel.attachmentIndex++;
        return newLink;
    }

    // updateAttachment
    var updateAttachment = function () {
        var linkTitle = $('#text-project-attachment-title').val();
        var linkValue = $('#text-project-attachment-value').val();
        var linkSize = $('#text-project-attachment-size').val();

        viewModel.editedAttachment().Title(linkTitle);
        viewModel.editedAttachment().Value(linkValue);
        viewModel.editedAttachment().Value(linkSize);

        $('#text-project-attachment-title').val('');
        $('#text-project-attachment-value').val('');
        $('#text-project-attachment-size').val(0);

        viewModel.editedAttachment(null);
    }

    // editAttachments
    var editAttachment = function (attachmentToEdit) {
        this.projectAttachments.showUpploadAttahcmentForm(function() {
            attachmentToEdit.projectGuid = viewModel.projectModel.Guid;
            viewModel.editedAttachment(attachmentToEdit);
            $('#text-project-attachment-id').val(attachmentToEdit.Id());
            $('#text-project-attachment-size').val(attachmentToEdit.Size());
            $('#text-project-attachment-enity-guid').val(viewModel.projectModel.Guid);
            $('#text-project-attachment-title').val(attachmentToEdit.Title());
            $('#text-project-attachment-value').val(attachmentToEdit.Value());
            $('#fileUploadContainer').css("display","none");
            $("#btnAttachmentSave").prop("disabled", false);
        });
    }

    var uploadAttachment = function () {
        this.projectAttachments.uploadAttachment(addAttachment);
    }

    var deleteAttachment = function (attachmentToRemove) {
        var self = this;
        $("#deleteAttachmentDialog").modal({ keyboard: false, backdrop: 'static' });

        $('#deleteAttachmentOkButton').click(function () {
            $('#deleteAttachmentDialog').modal('hide');


            self.projectAttachments.deleteAttachment(attachmentToRemove.Id(), attachmentToRemove.Value(), function() {
                var attachments = viewModel.attachments();
                for (var arrayIndex = 0; arrayIndex <= attachments.length - 1; arrayIndex++) {
                    var loopExternalLink = attachments[arrayIndex];
                    if (loopExternalLink.Index == attachmentToRemove.Index) {
                        attachments.splice(arrayIndex, 1);
                        viewModel.attachments(attachments);
                        break;
                    }
                }

            });
        });
    }

    var validateUrl = function(urlInputElement) {
        var url = $(urlInputElement).val();
        if (!url) return;
        var pattern = /^(([Hh][Tt][Tt][Pp]|[Hh][Tt][Tt][Pp][Ss]|[Ff][Tt][Pp]):\/\/)/;
        if (!pattern.test(url)) {
            url = "http://" + url;
            $(urlInputElement).val(url);
        }
    }

    // End: Attachments

    // Start: Licenses

    // initLicenses
    var initLicenses = function () {
        viewModel.hasLicense = false;
        viewModel.Licenses = ko.observableArray([]);
        viewModel.getLicensesPostName = function (index) {
            return 'Licenses.Items[' + index + ']';
        }

        // Licenses JSON
        var projectLicenses = JSON.parse($('#text-project-licenses-json').val());

        for (var itemIndex = 0; itemIndex <= projectLicenses.Items.length - 1; itemIndex++) {
            var loopItem = projectLicenses.Items[itemIndex];

            if (loopItem.Selected) viewModel.hasLicense = true;

            viewModel.Licenses.push({
                GUID: loopItem.GUID,
                Type: loopItem.Type,
                Title: loopItem.Title,
                Abbreviation: loopItem.Abbreviation,
                Description: loopItem.Description,
                LicenseInfoUrlText: loopItem.LicenseInfoUrlText,
                LicenseInfoUrl: loopItem.LicenseInfoUrl,
                LegalCodeUrlText: loopItem.LegalCodeUrlText,
                LegalCodeUrl: loopItem.LegalCodeUrl,
                ImageUrl: loopItem.ImageUrl,
                Selected: loopItem.Selected,
                PostName: viewModel.getLicensesPostName(itemIndex)
            });
        }
    }

    // licenseClicked
    var licenseClicked = function (data, event) {
        if (viewModel.hasLicense) return;

        var licenseRadio = event.currentTarget;
        var licenseLabel = null;

        if (licenseRadio.tagName.toLowerCase() == 'label') {
            licenseLabel = $(event.currentTarget);

            var radioId = $(licenseRadio).attr('for');
            licenseRadio = document.getElementById(radioId);
        }

        licenseRadio = $(licenseRadio);

        if (licenseRadio.is(':checked')) {
            var uncheck = function () {
                setTimeout(function () { licenseRadio.removeAttr('checked'); }, 0);

                var inputElement = document.getElementById(data.PostName + '.Selected');
                inputElement.value = false;
            };
            var unbind = function () {
                if (licenseLabel == null) {
                    licenseRadio.unbind('mouseup', up);
                } else {
                    licenseLabel.unbind('mouseup', up);
                }
            };
            var up = function () {
                uncheck();
                unbind();
            };

            if (licenseLabel == null) {
                licenseRadio.bind('mouseup', up);
                licenseRadio.one('mouseout', unbind);
            } else {
                licenseLabel.bind('mouseup', up);
                licenseLabel.one('mouseout', unbind);
            }
        }
    }

    // licenseSelectionChanged
    var licenseSelectionChanged = function (data, event) {
        resetAllLicenses();

        var inputElement = document.getElementById(data.PostName + '.Selected');
        inputElement.value = event.currentTarget.checked;
    }

    // resetAllLicenses
    var resetAllLicenses = function() {
        for (var licenseIndex = 0; licenseIndex <= viewModel.Licenses().length - 1; licenseIndex++) {
            var loopLicense = viewModel.Licenses()[licenseIndex];
            document.getElementById(loopLicense.PostName + '.Selected').value = 'false';
        }
    }

    var getProjectGallery = function () { return viewModel }

    //Hubs
    var showAddHub = function () {
        $.ajax({
            url: '/Projects/GetAllHubs',
            type: 'POST',
            success: function (hubList) {

                //filter already related hubs
                var hubsToShow = hubList
                    .forEach(function (hub) {
                        hub.selected = ko.observable(viewModel.relatedHubs().some(function (relatedHub) {
                            return hub.Guid === relatedHub.Guid && relatedHub.HubState() !== 3;
                        }) === true);
                    });

                viewModel.hubs(hubList);

                $("#add-hub-modal").modal({ keyboard: false, backdrop: 'static' });
            },
            error: function (data) {
                data.responseText = '{"ErrorMessage":"An unexpected error has occurred. Please contact the system administrator."}';
            }
        });
    }

    var addHub = function () {
        var newHubsCollection = viewModel.hubs()
            .filter(function (hub) {
                return hub.selected() === true;
            });

        viewModel.relatedHubs().forEach(function (hub) { hub.HubState(cm.ObjectState.Deleted); });

        newHubsCollection.forEach(function (hub) {
                var existingHub = viewModel.relatedHubs().filter(function (relatedHub) {
                    return hub.Guid === relatedHub.Guid;
                })

                if (existingHub.length > 0) {
                    existingHub[0].HubState(cm.ObjectState.Unchanged);
                }
                else
                {
                    hub.HubState = ko.observable(cm.ObjectState.Added);
                    viewModel.relatedHubs.push(hub);
                }
            });

        updateSerializedHubList();
    }

    var updateSerializedHubList = function()
    {
        var serializedHubs = viewModel.relatedHubs().map(function (item) { return jQuery.extend({}, item) });

        serializedHubs.forEach(function (hub) { hub.HubState = hub.HubState() });

        $('#SerializedHubList').val(JSON.stringify(serializedHubs));
    }

    var removeHub = function (hub) {
        if (hub.HubState() === cm.ObjectState.Added) {
            viewModel.relatedHubs.remove(hub);

            return;
        }
        else
        {
            hub.HubState(cm.ObjectState.Deleted);
        }

        updateSerializedHubList();
    }
    
    // End : Licenses

    // submitForm
    var submitForm = function () {
        // Form validation
        if (!$('#form-project-edit').valid()) return;

        // Name validation for UrlDisplayName Geberation
        var nameOriginal = viewModel.projectModel.NameOriginal.replace(/ /g, '').toLowerCase();
        var newName = $('#text-project-name').val().replace(/ /g, '').toLowerCase();
        var generateUrlDisplayNameChoice = $('#hidden-project-generate-urldisplayname-chosen').val();

        if (nameOriginal != newName && generateUrlDisplayNameChoice != 'true') {
            $('#project-edit-generate-urldisplayname-modal').modal({ keyboard: false, backdrop: 'static' });
            return;
        }
        
        // beforeunload event
        $(window).unbind('beforeunload');

        // Submit
        cm.pleaseWait.show();
        document.getElementById('form-project-edit').submit();
    }

    // return
    return {
        init: init,
        // Tags
        addTag: addTag,
        removeTag: removeTag,
        tagInputKeypress: tagInputKeypress,
        // External Links
        addUpdateExternalLink: addUpdateExternalLink,
        editExternalLink: editExternalLink,
        removeExternalLink: removeExternalLink,
        externalLinkInputKeypress: externalLinkInputKeypress,
        editExternalLinkCancel: editExternalLinkCancel,
        // Attachments
        uploadAttachment: uploadAttachment,
        editAttachment: editAttachment,
        //saveEditedAttachment: saveEditedAttachment,
        deleteAttachment: deleteAttachment,
        // Licenses
        licenseClicked: licenseClicked,
        licenseSelectionChanged: licenseSelectionChanged,
        getProjectGallery: getProjectGallery,
        addHub: addHub,
        showAddHub: showAddHub,
        removeHub: removeHub,

        // submitForm
        submitForm: submitForm
};

})();;
function ProjectMainImage(projectId) {

    var self = this;

    this.imageUrl = ko.observable();
    this.projectId = projectId;
    this.editable = ko.observable(false);
};

ProjectMainImage.prototype.RemoveImage = function (url) {
    var self = this;    

    $("#mainImageDeleteDialogDiv").modal({ keyboard: false, backdrop: 'static' });

    $('#mainImageDeleteDialogDivOkButton').click(function () {
        $('#mainImageDeleteDialogDiv').modal('hide');

        $.ajax(url, {
            type: "POST",
            traditional : true,
            data: {
                projectId: self.projectId
            },
            beforeSend: function () {
                cm.pleaseWait.show();
            },
            success: function (data) {
                cm.pleaseWait.hide();

                self.imageUrl(undefined);
            },
            complete: function (data) {
                cm.pleaseWait.hide();
            }
        });
    });
};

ProjectMainImage.prototype.showUploadImageForm = function () {

    var self = this;
    var url = $("body").data("actionUrls").getUploadMainImageForm;

    $.get(url + '?projectId=' + this.projectId + '&imageType=1' + '&formContainerId=mainImageUploadImageDiv', function (form) {
        
        $("#mainImageUploadImageDiv").html(form);
        cm.preparePopupValidation("uploadImageForm");
        $("#mainImageUploadImageDiv").modal({ keyboard: false, backdrop: 'static' });

        $("#mainImageUploadImageDiv").on('hide.bs.modal', function (e) {
            var dialogResult = $('#uploadImageDialogDiv').data('data-uploadresult');

            if (dialogResult) {
                //Update image
                self.imageUrl(dialogResult);
            }

            $("#mainImageUploadImageDiv").html("");
        });
    });
}



;
function ProjectAttachments(projectId) {
    var self = this;
    self.projectId = projectId;

    self.uploadAttachment = function (callbackFunction) {
        if (!$('#uploadAttachmentForm').valid())
            return false;

        $('#uploadAttachmentForm').ajaxSubmit({
            beforeSend: function () {
                cm.pleaseWait.show();
            },
            //uploadProgress: function () {
            //},
            success: function (data) {

                if (data.status) {
                    $('#uploadAttachmentPopup').modal('hide');
                    if (callbackFunction && data.status) {
                        callbackFunction(data.attachment);
                    } 
                }
                else {
                    self.bindForm(data.view);
                }
            },
            complete: function () {
                cm.pleaseWait.hide();
            },
            error: function (jqXHR, textStatus, errorThrown) {
                $('#errorMessage').html('<p>' + errorThrown + '</p>').show();
            }
        });
    }

    self.deleteAttachment = function(id, attachmentValue, callback) {
        var url = $('body').data('actionUrls').deleteProjectAttachment;
        cm.pleaseWait.show();
        $.ajax(url, {
            type: 'POST',
            data: { id: id, projectGuid: self.projectId, attachmentValue: attachmentValue },
            success: function (data) {
                cm.pleaseWait.hide();
                if (data.status == true) {
                    if (callback) {
                        callback();
                    }
                    $('#uploadAttachmentPopup').modal('hide');

                } else {

                    if (data.errorMessage != '') {
                        $('#errorMessage').html('<p>' + data.errorMessage + '</p>').show();
                    } else {
                        console.write("internal server error for upload file. Unhadled error");
                    }
                }
            },
            error: function () {
                cm.pleaseWait.hide();
            }
        });

    };

    self.showUpploadAttahcmentForm = function () {

        var url = $("body").data("actionUrls").getUploadAttachmentForm;

        $.get(url + '?projectGuid=' + this.projectId, function (form) {
            self.bindForm(form);
            $("#uploadAttachmentPopup").modal({ keyboard: false, backdrop: 'static' });
        });
    }

    self.fileUploadChange = function() {
        $('#errorMessage').hide();
        var fileInput = $('#fileAttachmentUpload')[0];

        if (fileInput.files) {
            var errorMessage = '';
            var postedFile = fileInput.files[0];

            // Image size
            if (postedFile.size > 20971520) {
                errorMessage = 'Uploaded file should be less then 20 Mb.';
            }

            $('#attahcmentFilePath').val($("#fileAttachmentUpload").val());

            var fileName = '';
            var fileExt = '';
            var lastPosition = postedFile.name.lastIndexOf('.');
            if (lastPosition === -1) {
                fileName = postedFile.name;
            } else {
                fileName = postedFile.name.substr(0, lastPosition);
                fileExt = postedFile.name.substr(lastPosition + 1);
            }

            $('#text-project-attachment-title').val(fileName);
            $('#attachment-file-extention').val(fileExt);

            var disableButton = !$('#uploadAttachmentForm').valid() || errorMessage;
            $("#btnAttachmentSave").prop("disabled", disableButton);

            if (errorMessage) {
                $('#errorMessage').html('<p>' + errorMessage + '</p>').show();
                return false;
            }
        }

        return true;
    };

    self.bindForm = function (form) {
        $("#uploadAttachmentPopup").empty().append(form);
        cm.preparePopupValidation("uploadAttachmentForm");
        $("#fileAttachmentUpload").on('change', self.fileUploadChange);
        $("#text-project-attachment-title").on('input', function () {
            $("#btnAttachmentSave").prop("disabled", !$('#uploadAttachmentForm').valid());
        });
    }
};





;
function CmSimilarProjects(projectId, tagGuidsArray) {
    var self = this;
    var projectGuid = projectId;
    var tagGuid = tagGuidsArray;
    var viewModel = ko.observable({});
    viewModel().Items = ko.observableArray([]);

    var el = document.getElementById("similarProjectsId");
    if (el) {
        ko.applyBindings(viewModel, el);
    }
    self.loadSimilarProjects = function (tagGuidsArray, callback) {
        var tags = tagGuidsArray || tagGuid;
        var url = $('body').data('actionUrls').loadSimilarProjects;
            //cm.pleaseWait.show();
            $.ajax(url, {
                type: 'GET',
                dataType: "json",
                traditional: true,
                data: { tagGuids: tags, projectGuid : projectGuid },
                success: function (data) {
                    cm.pleaseWait.hide();
                    if (data.status == true) {
                        viewModel(ko.mapping.fromJS(data.SimilarProjects));
                        if (callback) {
                            callback();
                        }

                    } else {

                        if (data.errorMessage != '') {
                            $('#errorMessage').html('<p>' + data.errorMessage + '</p>').show();
                        } else {
                            console.write("internal server error for upload file. Unhadled error");
                        }
                    }
                },
                error: function (jqXHR, textStatus, errorThrown) {
                    //cm.pleaseWait.hide();
                }
            });

    };

    self.getImageUrl = function(item) {

    };

}
;
cm.projectForks = (function () {

    var forksViewModel = null;

    var forksSearchParams = null;

    // init
    var init = function () {
        // initViewModel
        initViewModel();

        // initBreadcrumbs
        initBreadcrumbs();

        // createProjectsParams
        forksSearchParams = createForksParams();

        // search
        /*cm.search.init(projectsSearchParams.Filter(), function (newSearchPhrase) {
            searchPhraseChanged(newSearchPhrase);
        });*/

        // findForks
        findForks();
    }

    // initViewModel
    var initViewModel = function () {
        var viewModel = JSON.parse($("#projectModel").val());
        var mappedModel = ko.mapping.fromJS(viewModel);

        forksViewModel = {};
        forksViewModel.projectModel = mappedModel;
        forksViewModel.projectModel.CereatedTimeAgo = cm.getTimeAgoFromMilisecond(forksViewModel.projectModel.CreatedDateTime());
        forksViewModel.projectModel.FollowsHRCount = ko.computed(function () {
            return cm.formatBigNumber(forksViewModel.projectModel.FollowsCount());
        });

        forksViewModel.projectModel.CommentsHRCount = ko.computed(function () {
            return cm.formatBigNumber(forksViewModel.projectModel.CommentsCount());
        });

        forksViewModel.projectModel.ViewsHRCount = ko.computed(function () {
            return cm.formatBigNumber(forksViewModel.projectModel.ViewsCount());
        });

        forksViewModel.projectModel.ForksHRCount = ko.computed(function () {
            return cm.formatBigNumber(forksViewModel.projectModel.ForksCount());
        });

        forksViewModel.projectModel.VotesHRCount = ko.computed(function () {
            return cm.formatBigNumber(forksViewModel.projectModel.VotesCount());
        });

        // Image URLS
        forksViewModel.projectModel.captionImageOnError = function () {
            $('.project-caption-image').attr('src', forksViewModel.projectModel.MainImageUrl());
        }

        // Clickable Metrics
        this.FollowsClickable = ko.computed(function () {
            return forksViewModel.projectModel.FollowsCount() > 0;
        });

        this.CommentsClickable = ko.computed(function () {
            return forksViewModel.projectModel.CommentsCount() > 0;
        });

        this.ForksClickable = ko.computed(function () {
            return false;
        });

        this.VotesClickable = ko.computed(function () {
            return forksViewModel.projectModel.VotesCount() > 0;
        });

        // Metrics Pages
        this.OpenFollowersPage = function () {
            if (forksViewModel.projectModel.FollowsCount() < 1) return;
            if (forksViewModel.projectModel.FollowersUrl() == null || forksViewModel.projectModel.FollowersUrl() == '') return;

            window.location = forksViewModel.projectModel.FollowersUrl();
        };

        this.OpenCommentsPage = function () {
            if (forksViewModel.projectModel.CommentsCount() < 1) return;
            if (forksViewModel.projectModel.CommentsUrl() == null || forksViewModel.projectModel.CommentsUrl() == '') return;

            window.location = forksViewModel.projectModel.CommentsUrl();
        };

        this.OpenForksPage = function () {
            return;
        };

        this.OpenVotesPage = function () {
            if (forksViewModel.projectModel.VotesCount() < 1) return;
            if (forksViewModel.projectModel.VotesUrl() == null || forksViewModel.projectModel.VotesUrl() == '') return;

            window.location = forksViewModel.projectModel.VotesUrl();
        };
        
        ko.applyBindings(forksViewModel.projectModel, document.getElementById('project-caption'));

        // init sort ViewModel
        //forksViewModel.SortViewModel = cm.createSortOrderViewModel();

        //forksViewModel.SortViewModel.addSortItem(0, 'Most Rated');
        //forksViewModel.SortViewModel.addSortItem(1, 'Most Popular');
        //forksViewModel.SortViewModel.addSortItem(2, 'Most Watchers');
        //forksViewModel.SortViewModel.addSortItem(3, 'Most Commented');
        //forksViewModel.SortViewModel.addSortItem(4, 'Most Forked');
        //forksViewModel.SortViewModel.addSortItem(5, 'Last Modified');

        //forksViewModel.SortViewModel.selectedSortValue(5);
        //forksViewModel.SortViewModel.selectedSortText('Last Modified');

        //subscribe on change sort mode
        //forksViewModel.SortViewModel.selectedSortValue.subscribe(function (val) {
        //    sortOptionChanged(val);
        //});

        /*ko.applyBindings(projectsViewModel.SortViewModel, document.getElementById('projects-sort-section'));*/

        // Tags
        forksViewModel.FilterTags = ko.observableArray();
        forksViewModel.TagGuids = ko.computed(function () {
            var arrayOfGuid = new Array();
            ko.utils.arrayForEach(forksViewModel.FilterTags(), function (tag) {
                arrayOfGuid.push(tag.Guid);
            });
            return arrayOfGuid;
        }, forksViewModel);

        ko.applyBindings(forksViewModel.FilterTags, document.getElementById('projectsj-tags-filter'));

        // Paged Grid
        forksViewModel.paginationOptions = new cm.PaginationOptions();
        forksViewModel.paginationOptions.pageSize = 9;
        forksViewModel.pagedList = new cm.PagedList(forksViewModel.paginationOptions, pageIndexChanged);
        forksViewModel.pagedList.currentIndex(1);
        forksViewModel.pagedGridViewModel = new cm.PagedGridModel(forksViewModel.pagedList, false, null);
        forksViewModel.pagedGridViewModel.isTeamProjectsWithoutFilter = ko.observable(false);
        ko.applyBindings(forksViewModel.pagedGridViewModel, document.getElementById('projects-content'));
    }

    // initBreadcrumbs
    var initBreadcrumbs = function () {
        var storedProjectsParams = cm.pageParams.getControllerParam('findProjectsParams');

        if (storedProjectsParams == null) {
            cm.breadcrumbsViewModel.addLink($("body").data("actionUrls").projectsAction, 'Projects');
        } else {
            if (storedProjectsParams.OwnerType == 0) {
                cm.breadcrumbsViewModel.addLink($("body").data("actionUrls").projectsAction, 'Projects');
            }

            if (storedProjectsParams.OwnerType == 1) {
                cm.breadcrumbsViewModel.addLink($("body").data("actionUrls").myProjectsAction, 'Projects');
            }

            if (storedProjectsParams.OwnerType == 2) {
                cm.breadcrumbsViewModel.addLink($("body").data("actionUrls").teamProjectsAction, 'Projects');
            }
        }

        cm.breadcrumbsViewModel.addLink(forksViewModel.projectModel.ViewUrl, forksViewModel.projectModel.Hrid());
        cm.breadcrumbsViewModel.addLink($("body").data("actionUrls").projectForksAction + '/' + forksViewModel.projectModel.Guid(), 'Known Forks');

        cm.breadcrumbsViewModel.htmlBind();
    }

    // createForksParams
    var createForksParams = function () {
        var searchParams = {
            Filter: '',
            //ProjectSortOrder: ko.observable(forksViewModel.SortViewModel.selectedSortValue()),
            ProjectSortOrder: '5',
            AccessType: -1,
            OwnerType: 0,
            CountPerPage: forksViewModel.paginationOptions.pageSize,
            NumberOfPage: forksViewModel.pagedList.currentIndex(),
            CategoryGuid: '',
            CategoryName: '',
            HasDocument: true,
            TagsOrder: '',
            FilterTags: [],
            AuthorGuid: '',
            SourceProjectGuid: forksViewModel.projectModel.Guid()
        }

        return searchParams;
    }

    // findProjects
    var findForks = function () {
        $.ajax({
            url: $("body").data("actionUrls").loadForksAction,
            type: 'POST',
            contentType: "application/json;",
            cache: true,
            traditional: false,
            data: JSON.stringify(forksSearchParams),
            beforeSend: function () {
                forksViewModel.pagedGridViewModel.setCollection([]);
                forksViewModel.pagedGridViewModel.setParams(0, 0);
                forksViewModel.pagedGridViewModel.isReady(false);
            },
            success: function (data) {
                processFindForksRequest(data);
            },
            complete: function () {
                forksViewModel.pagedGridViewModel.isReady(true);
            }
        });
    }

    // processFindUserRequest
    var processFindForksRequest = function (data) {
        if (!data.success) {
            alert(data.message);
            return;
        }

        var model = data.viewModel;

        function applyModelChanges(items) {
            items.forEach(function (item) {
                item.CreatedAt = cm.getTimeAgoFromMilisecond(item.CreatedAt);

                item.FollowsHRCount = ko.computed(function () {
                    return cm.formatBigNumber(item.FollowsCount);
                });

                item.CommentsHRCount = ko.computed(function () {
                    return cm.formatBigNumber(item.CommentsCount);
                });

                item.ViewsHRCount = ko.computed(function () {
                    return cm.formatBigNumber(item.ViewsCount);
                });

                item.ForksHRCount = ko.computed(function () {
                    return cm.formatBigNumber(item.ForksCount);
                });

                item.VotesHRCount = ko.computed(function () {
                    return cm.formatBigNumber(item.VotesCount);
                });

                //add computed property by filter active tag
                if (item.Tags && item.Tags.length > 0) {
                    item.Tags.forEach(function (tag) {
                        tag.filterTagsContainsIt = ko.computed(function () {

                            var filteredTags = forksSearchParams.FilterTags.filter(function (filterTag) {
                                return filterTag.Guid === tag.Guid;
                            });
                            return filteredTags.length > 0;
                        });
                    });
                }
            });
        }

        applyModelChanges(model.Items);

        forksViewModel.pagedGridViewModel.setCollection(model.Items);
        forksViewModel.pagedGridViewModel.setParams(model.PageIndex, model.TotalRecords);
    }

    // sortOptionChanged
    var sortOptionChanged = function (val) {
        forksViewModel.ProjectSortOrder = forksViewModel.SortViewModel.selectedSortValue();

        findForks();
    }

    // searchPhraseChanged
    var searchPhraseChanged = function (newSearchPhrase) {
        forksSearchParams.Filter = newSearchPhrase;

        findForks();
    }

    // pageIndexChanged
    var pageIndexChanged = function (newPageIndex) {
        forksSearchParams.NumberOfPage = newPageIndex;

        findForks();
    }

    // return
    return {
        init: init
    }

})();;
cm.projectUsers = (function () {

    var usersViewModel = null;

    // init
    var init = function () {
        // initViewModel
        initViewModel();

        // initBreadcrumbs
        initBreadcrumbs();

        // findUsers
        findUsers();
    }

    // initViewModel
    var initViewModel = function () {
        usersViewModel = {};
        usersViewModel.projectViewModel = ko.mapping.fromJSON($('#project-model').val());

        // CereatedTimeAgo
        usersViewModel.projectViewModel.CereatedTimeAgo = cm.getTimeAgoFromMilisecond(usersViewModel.projectViewModel.CreatedDateTime());

        // Metrics
        usersViewModel.projectViewModel.FollowsHRCount = ko.computed(function () {
            return cm.formatBigNumber(usersViewModel.projectViewModel.FollowsCount());
        });

        usersViewModel.projectViewModel.CommentsHRCount = ko.computed(function () {
            return cm.formatBigNumber(usersViewModel.projectViewModel.CommentsCount());
        });

        usersViewModel.projectViewModel.ViewsHRCount = ko.computed(function () {
            return cm.formatBigNumber(usersViewModel.projectViewModel.ViewsCount());
        });

        usersViewModel.projectViewModel.ForksHRCount = ko.computed(function () {
            return cm.formatBigNumber(usersViewModel.projectViewModel.ForksCount());
        });

        usersViewModel.projectViewModel.VotesHRCount = ko.computed(function () {
            return cm.formatBigNumber(usersViewModel.projectViewModel.VotesCount());
        });

        // Image URLS
        usersViewModel.projectViewModel.captionImageOnError = function () {
            $('.project-caption-image').attr('src', usersViewModel.projectViewModel.MainImageUrl());
        }

        // Clickable Metrics
        this.FollowsClickable = ko.computed(function () {
            return false;
        });

        this.CommentsClickable = ko.computed(function () {
            return usersViewModel.projectViewModel.CommentsCount() > 0;
        });

        this.ForksClickable = ko.computed(function () {
            return usersViewModel.projectViewModel.ForksCount() > 0;
        });

        this.VotesClickable = ko.computed(function () {
            return usersViewModel.projectViewModel.VotesCount() > 0;
        });

        // Metrics Pages
        this.OpenFollowersPage = function () {
            return;
        };

        this.OpenCommentsPage = function () {
            if (usersViewModel.projectViewModel.CommentsCount() < 1) return;
            if (usersViewModel.projectViewModel.CommentsUrl() == null || usersViewModel.projectViewModel.CommentsUrl() == '') return;

            window.location = usersViewModel.projectViewModel.CommentsUrl();
        };

        this.OpenForksPage = function () {
            if (usersViewModel.projectViewModel.ForksCount() < 1) return;
            if (usersViewModel.projectViewModel.ForksUrl() == null || usersViewModel.projectViewModel.ForksUrl() == '') return;

            window.location = usersViewModel.projectViewModel.ForksUrl();
        };

        this.OpenVotesPage = function () {
            if (usersViewModel.projectViewModel.VotesCount() < 1) return;
            if (usersViewModel.projectViewModel.VotesUrl() == null || usersViewModel.projectViewModel.VotesUrl() == '') return;

            window.location = usersViewModel.projectViewModel.VotesUrl();
        };

        // Paging
        usersViewModel.pageIndex = ko.observable(1);
        usersViewModel.pageSize = ko.observable(12);

        // Users Grid
        usersViewModel.paginationOptions = new cm.PaginationOptions();
        usersViewModel.paginationOptions.pageSize = 12;
        usersViewModel.pagedList = new cm.PagedList(usersViewModel.paginationOptions, pageIndexChanged);
        usersViewModel.pagedList.currentIndex(usersViewModel.pageIndex());
        usersViewModel.pagedGrid = new cm.PagedGridModel(usersViewModel.pagedList, false, null);
        
        // Bindings
        ko.applyBindings(usersViewModel.projectViewModel, document.getElementById('project-caption'));
        ko.applyBindings(usersViewModel, document.getElementById('members-container'));
        ko.applyBindings(usersViewModel.pagedGrid, document.getElementById('memebrs-list-container'));
    }

    // initBreadcrumbs
    // initBreadcrumbs
    var initBreadcrumbs = function () {
        var storedProjectsParams = cm.pageParams.getControllerParam('findProjectsParams');

        if (storedProjectsParams == null) {
            cm.breadcrumbsViewModel.addLink($("body").data("actionUrls").projectsAction, 'Projects');
        } else {
            if (storedProjectsParams.OwnerType == 0) {
                cm.breadcrumbsViewModel.addLink($("body").data("actionUrls").projectsAction, 'Projects');
            }

            if (storedProjectsParams.OwnerType == 1) {
                cm.breadcrumbsViewModel.addLink($("body").data("actionUrls").myProjectsAction, 'Projects');
            }

            if (storedProjectsParams.OwnerType == 2) {
                cm.breadcrumbsViewModel.addLink($("body").data("actionUrls").teamProjectsAction, 'Projects');
            }
        }

        cm.breadcrumbsViewModel.addLink(usersViewModel.projectViewModel.ViewUrl(), usersViewModel.projectViewModel.Hrid());
        cm.breadcrumbsViewModel.addLink($("body").data("actionUrls").projectForksAction + '/' + usersViewModel.projectViewModel.Guid(), 'Followers');

        cm.breadcrumbsViewModel.htmlBind();
    }

    // findUsers
    var findUsers = function () {
        // ajax
        $.ajax({
            url: $("body").data("actionUrls").findProjectFollowers,
            type: 'POST',
            cache: true,
            traditional: true,
            data: {
                ProjectGuids: [usersViewModel.projectViewModel.Guid()],
                PageIndex: usersViewModel.pageIndex(),
                ProjectsPerPage: usersViewModel.pageSize(),
                ProjectSortOrder: 7 // not used in this context
            },
            beforeSend: function () {
                usersViewModel.pagedGrid.setCollection([]);
                usersViewModel.pagedGrid.setParams(0, 0);
                usersViewModel.pagedGrid.isReady(false);
            },
            success: function (data) {
                processSearchResults(data);
            },
            complete: function () {
                usersViewModel.pagedGrid.isReady(true);
            }
        });
    }

    // processSearchResults
    var processSearchResults = function (data) {
        if (!data.success) {
            cm.alert(data.message);
        }

        usersViewModel.pagedGrid.setCollection(data.viewModel.Items);
        usersViewModel.pagedGrid.setParams(usersViewModel.pageIndex(), data.viewModel.TotalRecords);
    }

    // pageIndexChanged
    var pageIndexChanged = function (pageIndex) {
        usersViewModel.pageIndex(pageIndex);

        findUsers();
    }

    // return
    return {
        init: init
    }

})();;
cm.projectAccessDenied = (function() {

    // viewModel
    var viewModel;

    // init
    var init = function () {
        // initViewModel
        initViewModel();

        // initEventHandlers
        initEventHandlers();

        if (cm.variables.isAuth) {
            // loadLatestPendingTeamRequest
            loadLatestPendingTeamRequest();
        }
    }

    // initViewModel
    var initViewModel = function () {
        viewModel = {};

        // project model
        viewModel.projectModel = JSON.parse($("#projectModel").val());

        if (cm.variables.isAuth) {
            // addTeamRequest
            viewModel.addTeamRequest = new cm.AddTeamRequest();
            viewModel.addTeamRequest.init({
                projectGuid: viewModel.projectModel.Guid,
                modalFormCallbackUrl: $("body").data("actionUrls").addNewTeamRequest,
                modalFormId: 'project-add-team-request-form',
                modalFormAjaxSuccessCallback: 'cm.projectAccessDenied.modalFormAjaxSuccessCallback',
                teamRequestSuccessCallback: addTeamRequestSuccess
            });

            // latestPendingRequest
            viewModel.latestPendingRequest = {};
            viewModel.latestPendingRequest.item = ko.observable(null);
            viewModel.latestPendingRequest.isReady = ko.observable(false);

            ko.applyBindings(viewModel.latestPendingRequest, document.getElementById('pending-team-request'));
        }

        ko.applyBindings(viewModel, document.getElementById('project-access-denied-container'));
    }

    // initEventHandlers
    var initEventHandlers = function () {
        if (cm.variables.isAuth) {
            $('#add-team-request').click(function () {
                viewModel.addTeamRequest.showAddTeamRequestDialog();
            });
        }
    }

    // loadLatestPendingTeamRequest
    var loadLatestPendingTeamRequest = function() {
        $.ajax({
            url: $("body").data("actionUrls").getLatestPendingTeamRequest,
            type: 'POST',
            cache: false,
            data: {
                projectGuid: viewModel.projectModel.Guid
            },
            beforeSend: function () {
                viewModel.latestPendingRequest.isReady(false);
            },
            success: function (data) {
                if (!data.success) {
                    cm.alert(data.message);
                    return;
                }

                if (!data.teamRequest) {
                    return;
                }

                data.teamRequest.CreatedAt = JSON.parse(data.teamRequest.CreatedAt);
                data.teamRequest.LastModifiedAt = cm.getTimeAgo(Date.parse(JSON.parse(data.teamRequest.LastModifiedAt)));

                viewModel.latestPendingRequest.item(data.teamRequest);
            },
            complete: function () {
                viewModel.latestPendingRequest.isReady(true);
            }
        });
    }

    // modalFormAjaxSuccessCallback
    var modalFormAjaxSuccessCallback = function(data) {
        viewModel.addTeamRequest.addTeamRequestSuccess(data);
    }

    // addTeamRequestSuccess
    var addTeamRequestSuccess = function () {
        loadLatestPendingTeamRequest();

        cm.alert('Your team request was successfully saved.');
    }

    // return 
    return {
        init: init,
        modalFormAjaxSuccessCallback: modalFormAjaxSuccessCallback
    }

})();;
cm.components = (function () {

    var initialized = false;

    // sammyApp
    var sammyApp = null;

    var successDeleteObservers = new cm.Observers();

    // componentsViewModel
    var componentsViewModel = null;
    var sortSubscription;

    // search parameters
    var resetingSearchParams = false;

    // init
    var init = function () {
        // initBreadcrumbs
        initBreadcrumbs();

        // initViewModel
        initViewModel();

        // initSammy
        initSammy();

        // SortViewModel value changed handler
        activeteSortSubscription();

        // search
        cm.search.init(componentsViewModel.searchParams.FindValue, function (searchPhrase) {
            searchPhraseChanged(searchPhrase);
        });

        // initTabs
        initTabs();

        // showSelectedTab
        showSelectedTab();

        // findComponents
        findComponents();

        initialized = true;
    };

    // activeteSortSubscription
    var activeteSortSubscription = function () {
        sortSubscription = componentsViewModel.SortViewModel.selectedSortValue.subscribe(function (val) {
            sortOrderChanged(val);
        });

    }

    // disableSortSubscription
    var disableSortSubscription = function () {
        if (sortSubscription) {
            sortSubscription.dispose();
        }
    }

    // initBreadcrumbs
    var initBreadcrumbs = function() {
        cm.breadcrumbsViewModel.addLink($('body').data('actionUrls').components, 'Components');
        cm.breadcrumbsViewModel.htmlBind();
    }

    // initViewModel
    var initViewModel = function() {
        componentsViewModel = {};
        
        // Tabs
        componentsViewModel.selectedTabIndex = ko.observable(1);

        //var storedTabIndex = cm.pageParams.getControllerParam('componentsTabIndex');
        //if (storedTabIndex > 1) componentsViewModel.selectedTabIndex(storedTabIndex);

        if (!cm.variables.isAuth && componentsViewModel.selectedTabIndex() == 2) componentsViewModel.selectedTabIndex(1);

        // Search Params
        componentsViewModel.searchParams = {
            FindValue: '',
            PageIndex: 0,
            ItemsPerPage: 10,
            SortOption: 1,
            TagGuids: []
        };

        //var storedSearchParams = cm.pageParams.getControllerParam('componentsSearchParams');
        //if (storedSearchParams != null) componentsViewModel.searchParams = storedSearchParams;

        // Sorting
        componentsViewModel.SortViewModel = cm.createSortOrderViewModel();
        componentsViewModel.SortViewModel.addSortItem(0, "Most Relevant");
        componentsViewModel.SortViewModel.addSortItem(1, "Most Popular");
        componentsViewModel.SortViewModel.addSortItem(2, "Most Commented");
        componentsViewModel.SortViewModel.addSortItem(3, "Most Rated");
        //componentsViewModel.SortViewModel.addSortItem(4, "Most Manufactured"); will be added in future
        componentsViewModel.SortViewModel.setOderByValue(componentsViewModel.searchParams.SortOption);
        
        ko.applyBindings(componentsViewModel.SortViewModel, document.getElementById('sort-section'));

        // FilterTags
        componentsViewModel.FilterTags = ko.observableArray([]);
        componentsViewModel.FilterTagGuids = ko.computed(function() {
            var arrayOfGuid = new Array();
            ko.utils.arrayForEach(componentsViewModel.FilterTags(), function (tag) {
                arrayOfGuid.push(tag.Guid);
            });
            return arrayOfGuid;
        });

        // Grid
        componentsViewModel.paginationOptions = new cm.PaginationOptions();
        componentsViewModel.paginationOptions.pageSize = 10;
        componentsViewModel.pagedList = new cm.PagedList(componentsViewModel.paginationOptions, pageIndexChanged);
        componentsViewModel.pagedList.currentIndex(1);
        componentsViewModel.pagedGrid = new cm.PagedGridModel(componentsViewModel.pagedList, false);
        componentsViewModel.pagedGrid.isTeamProjectsWithoutFilter = ko.observable(false);

        ko.applyBindings(componentsViewModel.pagedGrid, document.getElementById('components-list-container'));
        
        // News
        componentsViewModel.news = {};
        componentsViewModel.news.items = ko.observableArray([]);
        componentsViewModel.news.totalRecords = ko.observable(0);
        componentsViewModel.news.isReady = ko.observable(false);

        // 
        ko.applyBindings(componentsViewModel, document.getElementById('components-container'));
    }

    // resetSearchParams
    var resetSearchParams = function () {
        resetingSearchParams = true;

        // Search Params
        componentsViewModel.searchParams = {
            FindValue: '',
            PageIndex: 0,
            ItemsPerPage: 10,
            SortOption: 1,
            TagGuids: []
        };

        // Search Controls
        $('#txtSearch').val('');
        componentsViewModel.SortViewModel.setOderByValue(1);
        componentsViewModel.pagedList.currentIndex(1);

        resetingSearchParams = false;
    }

    // initSammy
    var initSammy = function () {
        sammyApp = $.sammy(function () {
            this.get(/\#\/(.*)\/(.*)\/(.*)\/(.*)\/(.*)/, function (context) {
                var params = context.params['splat'];
                var tabIndex = params[0];
                var filter = params[1];
                var sortorder = params[2];
                var tags = params[3];
                var pageindex = params[4];

                // Tab Index
                if (tabIndex != null) {
                    componentsViewModel.selectedTabIndex(parseInt(tabIndex));

                    // showSelectedTab
                    showSelectedTab();
                }

                // Filter
                if (filter != null) {
                    componentsViewModel.searchParams.FindValue = filter;
                    cm.search.setValue(filter);
                }

                // Sort Order
                if (sortorder != null) {
                    disableSortSubscription();
                    componentsViewModel.searchParams.SortOption = parseInt(sortorder);
                    componentsViewModel.SortViewModel.setOderByValue(componentsViewModel.searchParams.SortOption);
                    activeteSortSubscription();
                }

                // Tags
                if (tags != null) {
                    componentsViewModel.FilterTags.removeAll();

                    var tagsArray = tags.split('|');
                    for (var index = 0; index <= tagsArray.length - 1; index++) {
                        var loopGuid = tagsArray[index];
                        if (loopGuid.replace(/ /g, '') == '') continue;
                        componentsViewModel.FilterTags.push({ Guid: loopGuid, Name: ko.observable('') });
                    }

                    componentsViewModel.searchParams.TagGuids = componentsViewModel.FilterTagGuids();

                    if (componentsViewModel.FilterTags().length > 0) loadSelectedTags();
                }

                // Page Index
                if (pageindex != null) {
                    componentsViewModel.searchParams.PageIndex = parseInt(pageindex);
                }

                // findComponents
                if (initialized) findComponents();
            });

            var patternUrlStartPage = this.getLocation();
            this.get(patternUrlStartPage, function () {
                startPage();
            });
        });

        // sammyApp
        sammyApp.run();
    }

    // startPage
    var startPage = function () {
        if (initialized) {
            
            componentsViewModel.FilterTags.removeAll();

            componentsViewModel.searchParams.FindValue = '';
            cm.search.setValue('');
            componentsViewModel.searchParams.PageIndex = 0;            
            componentsViewModel.pagedList.currentIndex(1);
            disableSortSubscription();
            componentsViewModel.SortViewModel.setOderByValue(1);
            activeteSortSubscription();
            componentsViewModel.selectedTabIndex(1);
            showSelectedTab();

            findComponents();
        }
    };

    // getSammyLocation
    var getSammyLocation = function() {
        var tabIndex = encodeURIComponent(componentsViewModel.selectedTabIndex());
        var filter = encodeURIComponent(componentsViewModel.searchParams.FindValue);
        var sortorder = encodeURIComponent(componentsViewModel.SortViewModel.selectedSortValue());
        var pageindex = encodeURIComponent(componentsViewModel.searchParams.PageIndex);

        // tags
        var tagsGuids = componentsViewModel.FilterTagGuids();

        var tags = '';
        for (var index = 0; index <= tagsGuids.length - 1; index++) {
            var loopGuid = tagsGuids[index];
            tags += loopGuid + '|';
        }
        if (tags.length > 0) tags = tags.substr(0, tags.length - 1);

        // locationUrl
        var locationUrl = '#/' + tabIndex + '/' + filter + '/' + sortorder + '/' + tags + '/' + pageindex;

        return locationUrl;
    }

    // setSammyLocation
    var setSammyLocation = function () {
        // locationUrl
        var locationUrl = getSammyLocation();

        // setLocation
        sammyApp.setLocation(locationUrl);
    }

    // loadSelectedTags
    var loadSelectedTags = function () {
        // params
        var tagParams = {
            TagGuids: []
        }

        for (var tagIndex = 0; tagIndex <= componentsViewModel.FilterTags().length - 1; tagIndex++) {
            var loopTag = componentsViewModel.FilterTags()[tagIndex];
            tagParams.TagGuids.push(loopTag.Guid);
        }

        // ajax
        $.ajax({
            url: $("body").data("actionUrls").getComponentTags,
            type: 'POST',
            cache: false,
            data: JSON.stringify(tagParams),
            contentType: "application/json;",
            dataType: 'json',
            success: function (data) {
                if (!data.success) {
                    alert(data.message);
                    return;
                }

                for (var itemIndex = 0; itemIndex <= data.tags.length - 1; itemIndex++) {
                    var loopItem = data.tags[itemIndex];

                    for (tagIndex = 0; tagIndex <= componentsViewModel.FilterTags().length - 1; tagIndex++) {
                        loopTag = componentsViewModel.FilterTags()[tagIndex];
                        if (loopTag.Guid == loopItem.Guid) {
                            loopTag.Name(loopItem.Name);
                            break;
                        }
                    }
                }
            }
        });
    }

    // Start: Tabs

    // initInternalBrowser
    var initTabs = function () {
        // All Components (Octopart)
        $('#page-top-menu-ul li[tabindex="1"]').click(function () {
            if (componentsViewModel.selectedTabIndex() == 1) return;

            // search params
            resetSearchParams();

            // tab
            componentsViewModel.selectedTabIndex(1);
            showSelectedTab();

            // search
            setSammyLocation();
        });

        // Favorites (Library)
        $('#page-top-menu-ul li[tabindex="2"]').click(function () {
            if (componentsViewModel.selectedTabIndex() == 2) return;

            // search params
            resetSearchParams();

            // tabs
            componentsViewModel.selectedTabIndex(2);
            showSelectedTab();

            // search
            setSammyLocation();
        });
    }

    // showSelectedTab
    var showSelectedTab = function () {
        // tabs
        resetAllTabs();
        
        switch (componentsViewModel.selectedTabIndex()) {
            case 1:
                $('#page-top-menu-ul li[tabindex="1"]').addClass('active');
                break;;
            case 2:
                $('#page-top-menu-ul li[tabindex="2"]').addClass('active');
                break;;
            default:
                return;
        }
    }

    // resetAllTabs
    var resetAllTabs = function () {
        // removing active class
        $('#page-top-menu-ul li[tabindex="1"]').removeClass('active');
        $('#page-top-menu-ul li[tabindex="2"]').removeClass('active');
    }

    // End: Tabs

    // findComponents
    var findComponents = function () {
        cm.pageParams.addControllerParam('componentsTabIndex', componentsViewModel.selectedTabIndex());
        cm.pageParams.addControllerParam('componentsSearchParams', componentsViewModel.searchParams);

        if (componentsViewModel.selectedTabIndex() == 1) {
            findOctopartComponents();
        } else {
            findFavoriteComponents();
        }
    }

    // findOctopartComponents
    var findOctopartComponents = function () {
        $.ajax({
            url: $("body").data("actionUrls").getComponentsFromOctopart,
            type: 'POST',
            cache: false,
            data: componentsViewModel.searchParams,
            traditional: false,
            beforeSend: function () {
                componentsViewModel.pagedGrid.setCollection([]);
                componentsViewModel.pagedGrid.setParams(0, 0);
                componentsViewModel.pagedGrid.isReady(false);
            },
            success: processSearchResults,
            complete: function () {
                componentsViewModel.pagedGrid.isReady(true);
            }
        });
    }

    // findFavoriteComponents
    var findFavoriteComponents = function () {
        $.ajax({
            url: $("body").data("actionUrls").getComponentsFromLibrary,
            type: 'POST',
            cache: false,
            data: componentsViewModel.searchParams,
            traditional: true,
            beforeSend: function () {
                componentsViewModel.pagedGrid.setCollection([]);
                componentsViewModel.pagedGrid.setParams(0, 0);
                componentsViewModel.pagedGrid.isReady(false);
            },
            success: processSearchResults,
            complete: function () {
                componentsViewModel.pagedGrid.isReady(true);
            }
        });
    }

    // processSearchResults
    var processSearchResults = function(data) {
        if (!data.status) {
            alert(data.message);
            return;
        }

        var model = data.viewModel;

        if (model.searchId == 'library' && componentsViewModel.selectedTabIndex() == 1) return;
        if (model.searchId == 'octopart' && componentsViewModel.selectedTabIndex() == 2) return;

        function applyModeModifications(items) {
            items.forEach(function (item) {
                item.CreatedAt = cm.formatDate(item.CreatedAt);
                if (componentsViewModel.selectedTabIndex() == 1) {
                    item.imageLoaded = ko.observable(true);
                    item.imageUrl = item.SupplierImageUrl;
                } else {
                    item.imageLoaded = ko.observable(false);
                    item.imageUrl = ko.computed(function () { return loadComponentImage(item); });
                }

                // Used In Projects Title
                var projectsTitle = 'Project';
                if (item.ProjectsCount == 0 || item.ProjectsCount > 1) projectsTitle += 's';
                projectsTitle = item.ProjectsCount + ' ' + projectsTitle;

                var releasesTitle = 'Release';
                if (item.ProjectReleasesCount == 0 || item.ProjectReleasesCount > 1) releasesTitle += 's';
                releasesTitle = item.ProjectReleasesCount + ' ' + releasesTitle;

                item.usedInProjectsTitle = projectsTitle + ' / ' + releasesTitle;

                // add computed property by filter active tag
                if (item.Tags && item.Tags.length > 0) {
                    item.Tags.forEach(function (tag) {
                        tag.Name = ko.observable(tag.Name);
                        tag.filterTagsContainsIt = ko.computed(function () {
                            var filteredTags = componentsViewModel.FilterTags().filter(function (filterTag) {
                                return filterTag.Guid === tag.Guid;
                            });
                            return filteredTags.length > 0;
                        });
                    });
                }
            });
        }

        applyModeModifications(model.Items);

        componentsViewModel.pagedGrid.setCollection(model.Items);
        componentsViewModel.pagedGrid.setParams(model.PageIndex + 1, model.TotalRecords);
    }

    // loadComponentImage
    var loadComponentImage = function (item) {
        var componentImageUrl = '';
        item.imageLoaded(false);
        var url = $("body").data("actionUrls").getComponentImage + '?supplierId=' + item.SupplierId + '&supplierType=' + item.SupplierType;
        $.ajax({
            url: url,
            type: 'GET',
            cache: false,
            success: function (data) {
                $('#Image_' + item.RevisionGUID).attr('src', data);
                item.imageLoaded(true);
            }
        });

        return componentImageUrl;
    }

    // pageIndexChanged
    var pageIndexChanged = function (newPageIndex) {
        if (resetingSearchParams) return;

        // storing new page index
        componentsViewModel.pagedList.currentIndex(newPageIndex);
        
        // searchParams
        componentsViewModel.searchParams.PageIndex = componentsViewModel.pagedList.currentIndex() - 1;

        // search
        setSammyLocation();
    }

    // sortOrderChanged
    var sortOrderChanged = function (val) {
        if (resetingSearchParams) return;

        // searchParams
        var oldFindValue = componentsViewModel.searchParams.FindValue.toLowerCase();
        var newFindValue = $('#txtSearch').val().replace(/ /g, '').toLowerCase();

        if (oldFindValue != newFindValue) {
            componentsViewModel.pagedList.currentIndex(1);
            componentsViewModel.searchParams.PageIndex = 0;
        }

        componentsViewModel.searchParams.SortOption = val;
        componentsViewModel.searchParams.FindValue = $('#txtSearch').val();
        
        // search
        setSammyLocation();
    }

    // searchPhraseChanged
    var searchPhraseChanged = function (searchPhrase) {
        if (resetingSearchParams) return;

        // reseting page index
        componentsViewModel.pagedList.currentIndex(1);
        componentsViewModel.searchParams.PageIndex = 0;
        componentsViewModel.searchParams.FindValue = searchPhrase;

        // searching users
        if (searchPhrase.replace(/ /g, '') != '' && componentsViewModel.SortViewModel.selectedSortValue() != 0) {
            componentsViewModel.SortViewModel.setOderByValue(0);
        } else {
            setSammyLocation();
        }
    }

    // addTagToFilter
    var addTagToFilter = function (tag) {
        componentsViewModel.FilterTags.push(tag);
        componentsViewModel.searchParams.TagGuids = componentsViewModel.FilterTagGuids();
        setSammyLocation();
    }

    // removeTagFromFilter
    var removeTagFromFilter = function (tag) {
        componentsViewModel.FilterTags.remove(function (itemTag) { return itemTag.Guid == tag.Guid; });
        componentsViewModel.searchParams.TagGuids = componentsViewModel.FilterTagGuids();
        setSammyLocation();
    }
    
    // return
    return {
        init: init,
        successDeleteObservers: successDeleteObservers,
        // Tags
        addTagToFilter: addTagToFilter,
        removeTagFromFilter: removeTagFromFilter,
        // Image
        loadComponentImage: loadComponentImage
    }
})();;
cm.stream = (function () {

    var streamViewModel = function (pageSize) {
        var self = this;

        this.items = ko.observableArray([]);
        this.isReady = ko.observable(false);
        this.hasMore = ko.observable(false);
        this.streamCount = ko.observable(0);
        this.isMarkAllAsReadVisible = ko.observable();
        this.pageSize = pageSize;

        // for standard sort model
        this.selectedSortValue = ko.observable();
        this.selectedSortText = ko.observable();
        this.sortOrderItems = ko.observableArray([]);

        this.onSortChanged = function (sortOrderItem) {
            self.selectedSortValue(sortOrderItem.value);
            self.selectedSortText(sortOrderItem.text);
        }

        this.showMore = function () {
            self.getStream();
        };

        this.fromId = -1;

        this.toggle = function (notification) {
            notification.Expanded(!notification.Expanded());
        };

        function reloadStream() {
            self.fromId = -1;
            self.items.removeAll();
            self.getStream();
        }

        this.markAsRead = function (item) {
            var ids = [item.Id()];

            var innerNotifications = ko.toJS(item.InnerNotifications);

            if (innerNotifications.length > 0) {
                for (var i = 0; i < innerNotifications.length; i++) {
                    ids.push(innerNotifications[i].Id);
                }
            }

            $.ajax({
                url: $("body").data("actionUrls").markNotifAsReedAction,
                type: "POST",
                data: {
                    ids: ids.join(",")
                },
                cache: false,
                beforeSend: function () {
                    $("." + item.id).text("Please wait...");
                },
                success: function (data) {
                    if (data.status) {
                        item.IconPath(item.IconReadPath());
                        item.ReadFlag(1);
                        if (self.selectedSortValue() == cm.consts.cmUnreadNotificationsEventSourceId) {
                            var match = ko.utils.arrayFirst(self.items(), function (elem) {
                                return item.Id === elem.Id;
                            });
                            self.items.remove(match);
                            self.getStreamCount();
                        }
                    }
                    else {
                        alert(data.message);
                    }
                    cm.notifications.refreshUnreadNotificationCount();
                }
            });
        }

        this.checkMarkAllAsReadVisible = function (data) {
            self.isMarkAllAsReadVisible(data > 0);
        };

        this.markAllAsRead = function() {
            $.ajax({
                url: $("body").data("actionUrls").markAllNotifAsReed,
                type: "POST",
                data: {
                
                },
                cache: false,
                beforeSend: function() {
                    cm.pleaseWait.show();
                },
                success: function(data) {
                    if (data.status) {
                        reloadStream();
                    } else {
                        alert(data.message);
                    }
                    cm.notifications.refreshUnreadNotificationCount();
                },
                complete: function() {
                    cm.pleaseWait.hide();
                }
            });
        };

        this.getSelectedEventSourceName = function() {
            var match = ko.utils.arrayFirst(self.eventSourceValues, function(item) {
                return self.selectedEventSource() === item.id;
            });

            if (match) {
                return match.name;
            }
        };

        this.getStream = function () {
            self.getStreamCount();

            if (self.selectedSortValue() == cm.consts.cmUnreadNotificationsEventSourceId) {
                var notifCount = 0;

                self.items().forEach(function (item) {
                    notifCount++;
                    if (item.InnerNotifications().length > 0) {
                        notifCount += item.InnerNotifications().length;
                    }
                });

                self.fromId = notifCount;
            }

            $.ajax({
                url: $("body").data("actionUrls").getGroupedUserNotificationsAction,
                type: "POST",
                cache: false,
                traditional: true,
                data: {
                    pageSize: self.pageSize,
                    fromId: self.fromId,
                    eventSourceType: self.selectedSortValue()
                },
                beforeSend: function () {
                    self.isReady(false);
                },
                success: function (data) {
                    if (!data.status) {
                        alert(data.message);
                        return;
                    }

                    var model = data.viewModel;

                    self.items.pushAll(self.processNotifications(model.Notifications));
                    self.hasMore(model.FlagMore);
                    self.fromId = model.FromId;
                },
                complete: function () {
                    self.isReady(true);
                }
            });
        };

        this.getStreamCount = function () {
            $.ajax({
                url: $("body").data("actionUrls").getGroupedUserNotificationsCountAction,
                type: "POST",
                cache: false,
                data: {
                    eventSourceType: self.selectedSortValue()
                },
                success: function (data) {
                    if (!data.status) {
                        alert(data.message);
                        return;
                    }
                    var model = data.viewModel;
                    self.streamCount(model);
                }
            });
        };

        this.applayTimeAgo = function (notifications) {
            notifications.forEach(function (notification) {
                notification.EventTimeAgo = cm.getTimeAgoFromMilisecond(notification.EventTime());
                if (notification.InnerNotifications() != null) {
                    self.applayTimeAgo(notification.InnerNotifications());
                }
            });
        };

        this.EventTimeFormatted = function (notifications) {
            notifications.forEach(function (notification) {
                notification.EventTimeFormatted = ko.computed(function () {
                    return cm.formatDateFull(notification.EventTime());
                }, this);

                if (notification.InnerNotifications() != null) {
                    self.EventTimeFormatted(notification.InnerNotifications());
                }
            });
        };

        this.processNotifications = function (notifications) {
            var koNotifications = jQuery.map(notifications, function (notification) {
                notification = ko.mapping.fromJS(notification);
                notification.Expanded = ko.observable(false);
                notification.InnerNotificationsText = ko.computed(function () {
                    return notification.Expanded() ? "Hide" : "Show More";
                });
                return notification;
            });

            self.applayTimeAgo(koNotifications);
            self.EventTimeFormatted(koNotifications);

            return koNotifications;
        };

        this.fillEventSources = function () {
            self.sortOrderItems.push({ value: null, text: "All" });
            self.sortOrderItems.push({ value: cm.consts.cmUnreadNotificationsEventSourceId, text: "Unread Notifications" });
            self.sortOrderItems.push({ value: cm.consts.projectEventSourceId, text: "Projects" });
            self.sortOrderItems.push({ value: cm.consts.componentEventSourceId, text: "Components" });
            self.sortOrderItems.push({ value: cm.consts.forumEventSourceId, text: "Forum" });
        };

        this.setSelectedEventSource = function (evenSourceId) {
            self.selectedSortValue(evenSourceId);
            var match = ko.utils.arrayFirst(self.sortOrderItems(), function (item) {
                return item.value === evenSourceId;
            });

            match = match || self.sortOrderItems()[0];
            self.selectedSortText(match.text);
        };

        this.selectedSortValue.subscribe(reloadStream);

        this.fillEventSources();
    };

    var init = function (evenSourceId, elementsToBind, pageSize) {
        var viewModel = new streamViewModel(pageSize);
        cm.notifications.changeUnreadNotifCountObservers.add(viewModel.checkMarkAllAsReadVisible);
        viewModel.setSelectedEventSource(evenSourceId);

        elementsToBind.forEach(function (element) { ko.applyBindings(viewModel, element); });
    };

    return {
        init: init
    }
})();;
cm.monitoring = (function () {
    var viewModel = function () {
        var self = this;

        self.mappings = ko.observableArray([]);
    }

    var vm = null;

    // init
    function init() {
        var self = this;

        vm = new viewModel();
        // findHubs
        getMappingsData(vm);

        // setup bindings
        ko.applyBindings(vm, document.getElementById('monitoring-content'));

        // start auto-update
        window.setInterval(function () {
            self.update();
        }, 60 * 1000); // 1 minute
    }

    function update() {
        var self = this;
        getMappingsData(vm);
    }

    function showDetails(mapping, allowed)
    {
        if (!allowed)
            return;
        mapping.DetailsVisible(!mapping.DetailsVisible())
    }

    var getMappingsData = function (viewModel) {
        $.ajax({
            url: $("body").data("actionUrls").getMappingsData,
            type: 'POST',
            contentType: "application/json;",
            cache: false,
           // data: jsonData,
            beforeSend: function () {
               // viewModel.mappings([]);
            },
            success: function (data) {
                var oldMappings = viewModel.mappings();

                if (!data.status) {
                    if (oldMappings == null || oldMappings.length == 0)
                    {
                        alert(data.message);
                    }
                    return;
                }

                data.viewModel.forEach(function (item) {
                    var oldMapping = $.grep(oldMappings, function (m) { return m.Name == item.Name }, false);
                    if (oldMapping.length > 0) {
                        item.DetailsVisible = ko.observable(oldMapping[0].DetailsVisible());
                    }
                    else {
                        item.DetailsVisible = ko.observable(false);
                    }
                });

                viewModel.mappings(data.viewModel);
            },
            complete: function () {

            }
        });
    }

    // return
    return {
        init: init,
        showDetails: showDetails,
        update: update
    };
})();;
cm.signUp = (function () {

    var options = null;
    
    // init
    var init = function (signUpOptions) {
        options = signUpOptions;

        // initRegistrationForm
        initRegistrationForm();
    };

    // initRegistrationForm
    var initRegistrationForm = function () {
        var regCaptcha;

        MktoForms2.whenReady(function (form) {
            regCaptcha = registerCaptcha();
        });

        MktoForms2.loadForm("//app-sjf.marketo.com", "817-SFW-071", options.marketoFormId, function (form) {
            form.getFormElem()[0].style.cssText = null;
            form.getFormElem()[0].className = 'mktoForm';

            $('.mktoButtonRow button').text('Sign Up');
            $(".mktoFormRow:has(input#Opt_In__c)").css('cssText', 'display: none !important');
            $('.mktoButtonRow').before('<div class="mktoFormRow"><div id="termsContainer" style="margin-bottom: 7px;"><div id="controlAgree" class="cm-chk-back-style" tabindex="0"><input id="Agree" name="Agree" type="checkbox" style="display: none" value="false">' + 
                '<img id="Agree_inner" src="/Content/Images/checked-orange.png" style="display:none;"></div>' +
                $('.mktoFormRow label[for=Opt_In__c]').html() +
                '</div><div id="Agree_error" style="display: none !important" class="mktoErrorMsg">You must accept terms and conditions first</div></div>');
            if (useGoogleCaptcha()) {
                $('.mktoButtonRow').before('<div id="captchaContainer" class="mktoFormRow"><div id="captcha" style="transform:scale(1.15);transform-origin:0 0"></div></div>');
            }

            if (options.signInLink) {
                $('.mktoButtonRow button').after('<button id="btnLogin" class="mktoButton" type="button" onclick="window.location.href=\'' + options.signInLink + '\'">Sign In</button>');
            }

            // Aggrement modal
            $('#controlAgree').click(function () {
                $("#agreementConditions").modal({ keyboard: false, backdrop: 'static' });
            });

            $('#controlAgree').keyup(function (event) {
                if (event.keyCode == 32 || event.keyCode == 13) {
                    $("#agreementConditions").modal({ keyboard: false, backdrop: 'static' });
                }
            });

            $('#terms').click(function () {
                $("#agreementConditions").modal({ keyboard: false, backdrop: 'static' });
            });

            $('#modal-agreement-close').click(function () {
                $("#agreementConditions").modal('hide');
            });

            // Successfull registration modal
            $('#modal-registration-close').click(function () {
                $("#firstRegistrationStepResult").modal('hide');
            });

            $('#modal-registration-ok').click(function() {
                $("#firstRegistrationStepResult").modal('hide');
            });

            // Marketo form
			var firstname = form.getFormElem().find("#FirstName");
            var lastname = form.getFormElem().find("#LastName");
            var email = form.getFormElem().find("#Email");
            options.firstName && firstname.val(options.firstName);
            options.lastName && lastname.val(options.lastName);
            if (options.email) {
                email.val(options.email);
                email.attr('readonly', 'true');
                email.addClass('input-disabled');
            }

            form.onValidate(function (valid) {
                form.submitable(false);

                var agree = form.getFormElem().find("#Agree");
                var termsContainer = form.getFormElem().find("#termsContainer");
                var captchaContainer = form.getFormElem().find("#captchaContainer");
                
                if (firstname.hasClass("mktoValid") && lastname.hasClass("mktoValid") && email.hasClass("mktoValid")) {
                    if (agree.is(':checked')) {
                        // captcha
                        var captcha = '';
                        if (useGoogleCaptcha()) {
                            captcha = grecaptcha.getResponse(regCaptcha);
                            if (captcha == '') {
                                form.showErrorMessage("Please verify that you are not a robot", captchaContainer);
                                return;
                            }
                        }

                        $('.mktoButtonRow button').prop('disabled', true);
                  /*      $('.mktoButtonRow button').text('Please wait');*/

                        $.ajax({
                            url: $("body").data("actionUrls").registrateUser,
                            type: "POST",
                            traditional: true,
                            async: false,
                            data: {
                                UserName: email.val(),
                                FirstName: firstname.val(),
                                LastName: lastname.val(),
                                Email: email.val(),
                                Captcha: captcha,
                                CaptchaInputText: $("#reserveCaptcha #CaptchaInputText").val(),
                                CaptchaDeText: $("#reserveCaptcha #CaptchaDeText").val()
                            },
                            cache: false,
                            success: function (data) {
                                if (!data.success) {
                                    form.showErrorMessage(data.message, termsContainer);
                                    if (useGoogleCaptcha()) {
                                        grecaptcha.reset(regCaptcha);
                                    }
                                    else {
                                        $.ajax({
                                            cache: false,
                                            url: $("body").data("actionUrls").reserveCaptcha,
                                            type: "get"
                                        }).done(function (data) {
                                            $("#reserveCaptcha").html(data);
                                            $("#reserveCaptcha").show();
                                        });
                                    }
                                } else {
                                    form.vals({ "circuitMakerActivationGUID": data.userId });
                                    form.vals({ "circuitMakerActivationEmailRequired": data.activationRequired });

                                    form.submitable(true);
                                }

                                $('.mktoButtonRow button').removeProp('disabled');
                                $('.mktoButtonRow button').text('Sign Up');
                                $('.mktoButtonRow #btnLogin').text('Sign In');
                            }
                        });
                    } else {
                        form.getFormElem().find("#Agree_error").css('cssText', 'inline-block!important');                        
                        //form.showErrorMessage("You must accept terms and conditions first", termsContainer);
                    }
                }
            });

            form.onSuccess(function (values, followUpUrl) {
                //Show message form
                $("#firstRegistrationStepResult").modal({ keyboard: false, backdrop: 'static' });

                $('#mktoForm_' + options.marketoFormId).resetForm();

                // Calling custom onSuccess handler
                if (options.onSuccess != null) {
                    options.onSuccess();
                }

                return false;
            });
        });
    }

    var useGoogleCaptcha = function () {
        return ("undefined" !== typeof grecaptcha) && (window.location.search.indexOf("forceAlternateCaptcha=1") == -1);
    }

    // registerCaptcha
    var registerCaptcha = function () {
        if (!useGoogleCaptcha())
        {
            $('.mktoButtonRow').before($("#reserveCaptcha"));
            $.ajax({
                url: $("body").data("actionUrls").reserveCaptcha,
                type: "get"
            }).done(function (data) {
                $("#reserveCaptcha").html(data);
                $("#reserveCaptcha").show();
            });
            
            return null;
        }
        else
        {
            var captcha = grecaptcha.render('captcha', {
                'sitekey': cm.consts.reCaptchaSiteKey,
                'size': 'normal',
            });

            $('#signup-content').height($('#captchaContainer').height() + $('#signup-content').height());
            return captcha;
        }
    };

    // checkTerm
    var checkTerm = function () {
        $("#agreementConditions").modal('hide');

        $('#Agree').prop('value', 'true');
        $('#Agree').prop("checked", true);
        $('#Agree_inner').css('display', 'block');
        $('.mktoFormRow input#Opt_In__c').prop("checked", true);
        $("#Agree_error").css('cssText', 'display: none !important');
    }

    // uncheckTerm
    var uncheckTerm = function () {
        $("#agreementConditions").modal('hide');

        $('#Agree').prop('value', 'false');
        $('#Agree').prop("checked", false);
        $('#Agree_inner').css('display', 'none');
        $('.mktoFormRow input#Opt_In__c').prop("checked", false);
    }
    
    // return
    return {
        init: init,
        checkTerm: checkTerm,
        uncheckTerm: uncheckTerm
    };

})();
;
cm.account = (function () {

    // forgotPasswordInit
    var forgotPasswordInit = function () {
        $('#ForgotPassword').on('click', function () {
            var txtUserName = $('#UserName');
            var validator = $("#formLogin").validate();
            if (validator == undefined) return false;
            if (validator.element(txtUserName)) {
                $.ajax({
                    url: $("body").data("actionUrls").forgotPasswordAction,
                    data: { UserName: txtUserName.val() },
                    type: 'POST',
                    cache: false,
                    beforeSend: function () {
                        cm.pleaseWait.show();
                    },
                    success: function (data) {
                        cm.pleaseWait.hide();
                        cm.alert(data.message);
                    },
                    complete: function (data, textStatus) {
                        if (textStatus != 'success') {
                            cm.pleaseWait.hide();
                        }
                    }
                });
            }
            return false;
        });
    };

    // onBeginResetPassword
    var onBeginResetPassword = function () {
        $('.alert').hide();
        cm.pleaseWait.show();
    };

    // onSuccessResetPassword
    var onSuccessResetPassword = function (data) {
        cm.pleaseWait.hide();
        if (data.success == true) {
            cm.alert('Your password has been reset successfully.', function () { window.location.href = data.redirectUrl; });
        } else {
            $("#ResetPassword").html(data.view);
            $.validator.unobtrusive.parse("form");
            $('.alert').html('<p>' + data.message + '</p>').show();
        }
    };

    // onFailureResetPassword
    var onFailureResetPassword = function (data) {
        cm.pleaseWait.hide();
        console.log(data.message);
        $('.alert').html('<p>' + data.message + '</p>').show();
    };

    // onBeginLogin
    var onBeginLogin = function () {
        $("#Login_imgBusy").css('visibility', 'visible');
    };

    // onCompleteLogin
    var onCompleteLogin = function () {
        forgotPasswordInit();
        $("#Login_imgBusy").css('visibility', 'hidden');
    };

    // onSuccessLogin
    var onSuccessLogin = function (data) {
        // Form HTML
        $("#login-content").html(data.view);
        
        if (data.status == true) {
            if (data.isRunFromDesktopApp && false) {
                window.location.href =
                    'DXP://WorkspaceManager:Login_URL?SessionID=' + data.sessionId;

                setTimeout(function () {
                    window.location.href = data.returnUrl;
                }, 500);
            }
            else {
                window.location.href = data.returnUrl;
            }
        } else {
            // Validation
            cm.preparePopupValidation("formLogin");

            // Error message
            var errorMessage = data.errorMessage;
            if (!errorMessage) { errorMessage = "Unknown server error."; }

            // HTML changes related to error message
            $('.alert').html('<p>' + errorMessage + '</p>').show();
            $("#formLogin").addClass("login-error");
        }
    };

    // onFailureLogin
    var onFailureLogin = function (data) {
        $("#Login_imgBusy").css('visibility', 'hidden');
        $('.alert').html('<p>' + data.responseText + '</p>').show();
        $("#formLogin").addClass("login-error");
    };

    // onBeginRegister
    var onBeginRegister = function () {
        cm.pleaseWait.show();
    };

    // onSuccessRegister
    var onSuccessRegister = function (data) {
        if (data.status == true) {
            $('.alert').hide();
            window.location.href = data.returnUrl;
        } else {
            cm.pleaseWait.hide();
            $('.alert').html('<p>' + data.message + '</p>').show();
        }
    };

    // onFailureRegister
    var onFailureRegister = function (data) {
        cm.pleaseWait.hide();
        $('.alert').html('<p>' + data.responseText + '</p>').show();
    };

    return {
        // Login
        onBeginLogin: onBeginLogin,
        onCompleteLogin: onCompleteLogin,
        onSuccessLogin: onSuccessLogin,
        onFailureLogin: onFailureLogin,
        forgotPasswordInit: forgotPasswordInit,

        // Reset Password
        onBeginResetPassword: onBeginResetPassword,
        onSuccessResetPassword: onSuccessResetPassword,
        onFailureResetPassword: onFailureResetPassword,

        // Register
        onBeginRegister: onBeginRegister,
        onSuccessRegister: onSuccessRegister,
        onFailureRegister: onFailureRegister
    };
})();
;
cm.accountEdit = (function () {

    // initialData
    var initialData;

    // viewModel
    var viewModel;

    // init
    var init = function (displayName) {
        // initViewModel
        initViewModel();

        cm.breadcrumbsViewModel.addLink($('body').data('actionUrls').editAccount + '/' + viewModel.userModel.UserId, displayName);
        cm.breadcrumbsViewModel.htmlBind();
        
        // Upload Avatar
        $(document).on('click', '#btn-upload-photo', function () {
            showUploadAvatarForm();
            return false;
        });

        // Change Password
        $(document).on('click', '#link-change-password', function () {
            showChangePasswordForm();
            return false;
        });

        // Cancel Buttons
        $(document).on('click', '#btn-cancel-top', function () {
            window.location = viewModel.userModel.ViewUrl;
            return false;
        });

        $(document).on('click', '#btn-cancel-bottom', function () {
            window.location = viewModel.userModel.ViewUrl;
            return false;
        });

        // page unload
        $(window).on('beforeunload', function (event) {
            var currentData = getCurrentData();

            if (JSON.stringify(initialData) !== JSON.stringify(currentData)) {
                var message = "You have made changes to your profile.";

                if (typeof event == "undefined") { event = window.event; }
                if (event) { event.returnValue = message; }

                return message;
            }
        });

        processModalClose();

        // initialData
        initialData = cm.pageParams.getParam('edit-user-data');
        if (initialData == null) initialData = getCurrentData();
    };

    // Keep bootstrap css class "modal-open" on body element (it is responsible for correct scroll behaviour)
    // if there is any other modal visible after the second modal is closed (e.g. waiting modal)
    function processModalClose() {
        var $body = $("body");
        $body.on("hidden.bs.modal", ".modal", function () {
            var hasOpenedModals = $(".modal:visible", $body).length;
            if (hasOpenedModals) {
                $body.addClass("modal-open");
            }
        });
    }

    // initViewModel
    var initViewModel = function () {
        viewModel = {};

        // user model
        viewModel.userModel = JSON.parse($('#user-model').val());

        // links
        //viewModel.links = new cm.links();
        //viewModel.links.init({
        //    links: viewModel.userModel.ParsedLinksToExamples.Items,
        //    postName: 'ParsedLinksToExamples.Items[index]'
        //});
    }

    // getCurrentData
    var getCurrentData = function () {
        var userData = {};

        userData.FirstName = $('#FirstName').val();
        userData.LastName = $('#LastName').val();
        userData.DisplayName = $('#DisplayName').val();
        userData.Website = $('#Website').val();
        userData.Email = $('#Email').val();
        userData.HideEmail = $('#HideEmail').prop('checked');
        userData.Phone = $('#Phone').val();
        userData.TimeZone = $('#TimeZone').val();
        userData.Fax = $('#Fax').val();
        userData.Country = $('#Country').val();
        userData.CurrentPosition = $('#CurrentPosition').val();
        userData.Experience = $('#Experience').val();
        userData.Specialties = $('#Specialties').val();
        userData.LinkToExample = $('#LinkToExample').val();
        userData.ProfilePicture = $('#ProfilePicture').val();

        userData.Metadata = {};
        userData.Metadata.Description = $('#Metadata_Description').val();
        userData.Metadata.FacebookUrl = $('#Metadata_FacebookUrl').val();
        userData.Metadata.TwitterUrl = $('#Metadata_TwitterUrl').val();
        userData.Metadata.LinkedInUrl = $('#Metadata_LinkedInUrl').val();
        userData.Metadata.GooglePlusUrl = $('#Metadata_GooglePlusUrl').val();

        return userData;
    }

    // showUploadAvatarForm
    function showUploadAvatarForm() {
        $('#modal-edit-account').on('hidden.bs.modal', function (data) {
            var cropProfilePictureId = $('#CropProfilePictureId').val();
            if (cropProfilePictureId != '') {
                $('#profileImg').attr('src', $('#modal-edit-account #ImageHandler').val() + cropProfilePictureId);
            }
        });

        var url = $("body").data("actionUrls").getUploadAvatarForm;

        cm.pleaseWait.show();

        $.get(url, function (form) {
            cm.pleaseWait.hide();
            $("#modal-edit-account").html(form);
            cm.preparePopupValidation("modal-edit-account");
            $("#modal-edit-account").modal({ keyboard: false, backdrop: 'static' });
        });
    }

    // showChangePasswordForm
    function showChangePasswordForm() {
        $.ajax({
            url: $("body").data("actionUrls").getChangeResultView,
            type: 'POST',
            cache: false,
            beforeSend: function () {
                cm.pleaseWait.show();
            },
            success: function (data) {
                if (data.success) {
                    $("#modal-edit-account").html(data.Html);
                    cm.preparePopupValidation("modal-edit-account");
                    $("#modal-edit-account").modal({ keyboard: false, backdrop: 'static' });
                } else {
                    cm.alert(data.Message);
                }
            },
            complete: function () {
                cm.pleaseWait.hide();
            }
        });
    }

    // onBeginChangePassword
    var onBeginChangePassword = function () {
        $('.alert').hide();
        cm.pleaseWait.show();
    };

    // onSuccessChangePassword
    var onSuccessChangePassword = function (data) {
        cm.pleaseWait.hide();

        if (data.status == true) {
            $('.alert').hide();
            $("#modal-edit-account").modal('hide');
            cm.alert("Password was changed successfully.");
        } else {
            $('.alert').html('<p>' + data.message + '</p>').show();
        }
    };

    // onFailureChangePassword
    var onFailureChangePassword = function (data) {
        cm.pleaseWait.hide();
        $('.alert').html('<p>' + data.responseText + '</p>').show();
    };

    // saveProfile
    var saveProfile = function () {
        if (!$('#form-account-edit').valid()) return;

        $(window).unbind('beforeunload');

        cm.pleaseWait.show();
        document.getElementById('form-account-edit').submit();
    }

    var unlinkExternalAccount = function (providerName, externalId) {
        var confirmMessage = "Are you sure you want to unlink your " + providerName + " account from CircuitMaker?";

        cm.confirm(confirmMessage, function (isConfirmed) {
            if (isConfirmed) {
                $.ajax({
                    url: $("body").data("actionUrls").unlinkExternalAccount,
                    type: 'POST',
                    cache: false,
                    data: {
                        provider: providerName,
                        externalId: externalId
                    },
                    beforeSend: function () {
                        cm.pleaseWait.show();
                    },
                    success: function (data) {
                        if (!data.status) {
                            alert(data.message);
                        }
                        else
                            location.reload();
                    },
                    complete: function () {
                        cm.pleaseWait.hide();
                    }
                });
            }
        });
    }

    return {
        // Change Password
        onBeginChangePassword: onBeginChangePassword,
        onSuccessChangePassword: onSuccessChangePassword,
        onFailureChangePassword: onFailureChangePassword,
        
        init: init,
        saveProfile: saveProfile,
        unlinkExternalAccount: unlinkExternalAccount
    };
})();
;
cm.user = (function () {
    
    var userViewModel = null;

    // init
    var init = function () {
        // initViewModel
        initViewModel();

        cm.breadcrumbsViewModel.addLink($('body').data('actionUrls').members, 'Makers');
        cm.breadcrumbsViewModel.addLink($('body').data('actionUrls').userProfileAction + '/' + userViewModel.userModel.UserId, userViewModel.userModel.RenderName);
        cm.breadcrumbsViewModel.htmlBind();

        // initFollowUnfollow
        initFollowUnfollow();

        // loadProfileData
        loadProfileData();

        initForumBan(userViewModel.userModel.UserId);

        // Edit My Profile
        $(document).on('click', '#btn-edit-profile', function () {
            window.location = $('body').data('actionUrls').editAccount;
            return false;
        });

        // Deactivate My Profile
        $(document).on('click', '#btn-deactivate-profile', function () {
            cm.alert("Are you sure you want to deactivate this user?", function() {
                deactivateUser();
            });

            return false;
        });

        // Add Project
        $("#btn-add-project").bind("click", function () {
            cm.projects.addItem();
        });

        cm.projects.successCreateObservers.add(function (data) {
            cm.projects.editItem(data.projectGuid);
        });
    };

    // initViewModel
    var initViewModel = function () {
        userViewModel = {};
        userViewModel.follow = false;
        userViewModel.isProfileDataReady = ko.observable(false);

        // userModel
        userViewModel.userModel = JSON.parse($("#user-model").val());
        ko.applyBindings(userViewModel.userModel, document.getElementById('view-account-main-container'));
        
        // Projects
        userViewModel.projects = {};
        userViewModel.projects.totalRecords = ko.observable(0);
        userViewModel.projects.items = ko.observableArray([]);
        userViewModel.projects.isReady = ko.computed(function() {
            return userViewModel.isProfileDataReady();
        });

        // Team Projects
        userViewModel.teamProjects = {};
        userViewModel.teamProjects.totalRecords = ko.observable(0);
        userViewModel.teamProjects.items = ko.observableArray([]);
        userViewModel.teamProjects.isReady = ko.computed(function () {
            return userViewModel.isProfileDataReady();
        });

        // Components
        userViewModel.components = {};
        userViewModel.components.totalRecords = ko.observable(0);
        userViewModel.components.items = ko.observableArray([]);
        userViewModel.components.isReady = ko.computed(function () {
            return userViewModel.isProfileDataReady();
        });

        // Rated Projects
        userViewModel.followedProjects = {};
        userViewModel.followedProjects.totalRecords = ko.observable(0);
        userViewModel.followedProjects.items = ko.observableArray([]);
        userViewModel.followedProjects.isReady = ko.computed(function () {
            return userViewModel.isProfileDataReady();
        });

        // Hubs
        userViewModel.hubs = {};
        userViewModel.hubs.items = ko.observableArray([]);
        userViewModel.hubs.totalRecords = ko.observable(0);
        userViewModel.hubs.isReady = ko.computed(function () {
            return userViewModel.isProfileDataReady();
        });

        // News
        userViewModel.news = {};
        userViewModel.news.items = ko.observableArray([]);
        userViewModel.news.totalRecords = ko.observable(0);
        userViewModel.news.isReady = ko.computed(function () {
            return userViewModel.isProfileDataReady();
        });

        // Rated Projects
        userViewModel.ratedProjects = {};
        userViewModel.ratedProjects.totalRecords = ko.observable(0);
        userViewModel.ratedProjects.items = ko.observableArray([]);
        userViewModel.ratedProjects.isReady = ko.computed(function () {
            return userViewModel.isProfileDataReady();
        });

        // User Followers
        userViewModel.userFollowers = {};
        userViewModel.userFollowers.totalRecords = ko.observable(0);
        userViewModel.userFollowers.items = ko.observableArray([]);
        userViewModel.userFollowers.isReady = ko.computed(function () {
            return userViewModel.isProfileDataReady();
        });

        // Followed Users
        userViewModel.followedUsers = {};
        userViewModel.followedUsers.totalRecords = ko.observable(0);
        userViewModel.followedUsers.items = ko.observableArray([]);
        userViewModel.followedUsers.isReady = ko.computed(function () {
            return userViewModel.isProfileDataReady();
        });
    }

    // initFollowUnfollow
    var initFollowUnfollow = function() {
        var button = $('#button-follow-unfollow');
        if (button.length) {
            if (button.html().toLowerCase() == 'follow') {
                userViewModel.follow = true;
            }

            button.click(function () {
                followUnfollowUser();
            });
        }
    }

    // followUnfollowUser
    var followUnfollowUser = function() {
        if (userViewModel.follow) {
            cm.notifications.addFollowData(cm.consts.userObjectKind, userViewModel.userModel.UserId, function () {
                userViewModel.follow = false;

                var button = $('#button-follow-unfollow');
                button.html('Unfollow');
                
            });
        } else {
            cm.notifications.removeFollowData(cm.consts.userObjectKind, userViewModel.userModel.UserId, function () {
                userViewModel.follow = true;

                var button = $('#button-follow-unfollow');
                button.html('Follow');
            });
        }
    }

    // loadProfileData
    var loadProfileData = function() {
        $.ajax({
            url: $("body").data("actionUrls").getProfileData,
            type: 'POST',
            cache: false,
            data: { userGuid: userViewModel.userModel.UserId },
            beforeSend: function () {
                userViewModel.isProfileDataReady(false);
            },
            success: function (data) {
                if (data.success) {
                    // PROJECTS
                    userViewModel.projects.items(data.viewModel.Projects);
                    userViewModel.projects.totalRecords(data.viewModel.ProjectsTotalCount);
                    
                    function processProjects(items) {
                        items.forEach(function (item) {
                            item.CreatedAt = cm.getTimeAgoFromMilisecond(item.CreatedAt);

                            item.FollowsHRCount = ko.computed(function () {
                                return cm.formatBigNumber(item.FollowsCount);
                            });

                            item.CommentsHRCount = ko.computed(function () {
                                return cm.formatBigNumber(item.CommentsCount);
                            });

                            item.ViewsHRCount = ko.computed(function () {
                                return cm.formatBigNumber(item.ViewsCount);
                            });

                            item.ForksHRCount = ko.computed(function () {
                                return cm.formatBigNumber(item.ForksCount);
                            });

                            item.VotesHRCount = ko.computed(function () {
                                return cm.formatBigNumber(item.VotesCount);
                            });

                            // Clickable Metrics
                            item.FollowsClickable = ko.computed(function () {
                                return item.FollowsCount > 0;
                            });

                            item.CommentsClickable = ko.computed(function () {
                                return item.CommentsCount > 0;
                            });

                            item.ForksClickable = ko.computed(function () {
                                return item.ForksCount > 0;
                            });

                            item.VotesClickable = ko.computed(function () {
                                return item.VotesCount > 0;
                            });

                            // Metrics Pages
                            item.OpenFollowersPage = function () {
                                if (item.FollowsCount < 1) return;
                                if (item.FollowersUrl == null || item.FollowersUrl == '') return;

                                window.location = item.FollowersUrl;
                            };

                            item.OpenCommentsPage = function () {
                                if (item.CommentsCount < 1) return;
                                if (item.CommentsUrl == null || item.CommentsUrl == '') return;

                                window.location = self.CommentsUrl;
                            };

                            item.OpenForksPage = function () {
                                if (item.ForksCount < 1) return;
                                if (item.ForksUrl == null || item.ForksUrl == '') return;

                                window.location = item.ForksUrl;
                            };

                            item.OpenVotesPage = function () {
                                if (item.VotesCount < 1) return;
                                if (item.VotesUrl == null || item.VotesUrl == '') return;

                                window.location = item.VotesUrl;
                            };

                            // tags
                            if (item.Tags && item.Tags.length > 0) {
                                item.Tags.forEach(function (tag) {
                                    tag.filterTagsContainsIt = ko.observable(false);
                                });
                            }
                        });
                    }

                    processProjects(userViewModel.projects.items());

                    // applyBindings
                    ko.applyBindings(userViewModel.projects, document.getElementById('section-projects'));

                    // TEAM PROJECTS
                    userViewModel.teamProjects.items(data.viewModel.TeamProjects);
                    userViewModel.teamProjects.totalRecords(data.viewModel.TeamProjectsTotalCount);
                    
                    function processTeamProjects(items) {
                        items.forEach(function (item) {
                            item.CreatedAt = cm.getTimeAgoFromMilisecond(item.CreatedAt);

                            item.FollowsHRCount = ko.computed(function () {
                                return cm.formatBigNumber(item.FollowsCount);
                            });

                            item.CommentsHRCount = ko.computed(function () {
                                return cm.formatBigNumber(item.CommentsCount);
                            });

                            item.ViewsHRCount = ko.computed(function () {
                                return cm.formatBigNumber(item.ViewsCount);
                            });

                            item.ForksHRCount = ko.computed(function () {
                                return cm.formatBigNumber(item.ForksCount);
                            });

                            item.VotesHRCount = ko.computed(function () {
                                return cm.formatBigNumber(item.VotesCount);
                            });

                            item.MoreTagsBtnVisible = ko.computed(function () {
                                var width = 0;
                                if (item.Tags && item.Tags.length > 0) {
                                    item.Tags.forEach(function (tag) {
                                        // width of text + padding + margin right
                                        width += cm.calculateTextSize(tag.Hrid).width + 20 + 5;
                                    });
                                }
                                return width > 255;
                            });
                        });
                    }

                    processTeamProjects(userViewModel.teamProjects.items());

                    // applyBindings
                    ko.applyBindings(userViewModel.teamProjects, document.getElementById('section-team-projects'));

                    // FOLLOWED PROJECTS
                    userViewModel.followedProjects.items(data.viewModel.FollowedProjects);
                    userViewModel.followedProjects.totalRecords(data.viewModel.FollowedProjectsTotalCount);
                    
                    function processFollowedProjects(items) {
                        items.forEach(function (item) {
                            item.CreatedAt = cm.getTimeAgoFromMilisecond(item.CreatedAt);
                        });
                    }

                    processFollowedProjects(userViewModel.followedProjects.items());
                    
                    ko.applyBindings(userViewModel.followedProjects, document.getElementById("section-followed-projects"));

                    // RATED PROJECTS
                    userViewModel.ratedProjects.items(data.viewModel.RatedProject);
                    userViewModel.ratedProjects.totalRecords(data.viewModel.RatedProjectTotalCount);

                    ko.applyBindings(userViewModel.ratedProjects, document.getElementById("section-rated-projects"));

                    // FOLLOWERS
                    userViewModel.userFollowers.items(data.viewModel.Followers);
                    userViewModel.userFollowers.totalRecords(data.viewModel.FollowersTotalCount);
                    
                    ko.applyBindings(userViewModel.userFollowers, document.getElementById("section-user-followers"));

                    // FOLLOWED USERS
                    userViewModel.followedUsers.items(data.viewModel.FollowedUsers);
                    userViewModel.followedUsers.totalRecords(data.viewModel.FollowedTotalCount);
                    
                    ko.applyBindings(userViewModel.followedUsers, document.getElementById("section-followed-users"));

                    // COMPONENTS
                    userViewModel.components.totalRecords(data.viewModel.ComponentsTotalCount);
                    userViewModel.components.items(data.viewModel.Components);

                    function processComponents(items) {
                        items.forEach(function (item) {
                            item.imageLoaded = ko.observable(false);
                            item.imageUrl = ko.computed(function () { return cm.components.loadComponentImage(item); });

                            // Used In Projects Title
                            var projectsTitle = 'Project';
                            if (item.ProjectsCount == 0 || item.ProjectsCount > 1) projectsTitle += 's';
                            projectsTitle = item.ProjectsCount + ' ' + projectsTitle;

                            var releasesTitle = 'Release';
                            if (item.ProjectReleasesCount == 0 || item.ProjectReleasesCount > 1) releasesTitle += 's';
                            releasesTitle = item.ProjectReleasesCount + ' ' + releasesTitle;

                            item.usedInProjectsTitle = projectsTitle + ' / ' + releasesTitle;
                        });
                    }

                    processComponents(userViewModel.components.items());

                    // applyBindings
                    ko.applyBindings(userViewModel.components, document.getElementById('section-components'));

                    //// NEWS
                    //userViewModel.news.items(data.viewModel.Blogs);
                    //userViewModel.news.totalRecords(data.viewModel.BlogsTotalCount);
                    
                    //if (userViewModel.news.items() != null) {
                    //    userViewModel.news.items().forEach(function (blogItem) {
                    //        blogItem.PostTimeAgo = cm.getTimeAgoFromMilisecond(blogItem.SubmitDate);
                    //    });
                    //}
                    
                    //ko.applyBindings(userViewModel.news, document.getElementById("section-latest-news"));

                    // HUBS
                    userViewModel.hubs.items(data.viewModel.Hubs);
                    userViewModel.hubs.totalRecords(data.viewModel.HubsTotalCount);

                    ko.applyBindings(userViewModel.hubs, document.getElementById("section-hubs"));
                } else {
                    cm.alert(data.message);
                }
            },
            complete: function () {
                userViewModel.isProfileDataReady(true);
            }
        });
    }

    var deactivateUser = function () {
        $.ajax({
            url: $("body").data("actionUrls").userProfileDeactiveAction,
            type: 'POST',
            cache: false,
            data: {
                id: userViewModel.userModel.UserId
            },
            beforeSend: function () {
                cm.pleaseWait.show();
            },
            success: function (data) {
                if (!data.status) {
                    cm.alert(data.message);
                    return;
                }

                cm.alert("User was successfully deactivated.", function() {
                    window.location = $("body").data("actionUrls").members;
                });
            },
            complete: function () {
                cm.pleaseWait.hide();
            }
        });
    };

    var initForumBan = function (userId) {        
        if ($("#section-warnings").length == 0)
            return;

        $("#suspendedTo-datepicker").datepicker({
            minDate: +1,
            autoSize: true,
            defaultDate: +3
        });
        $("#suspendedTo-datepicker").datepicker("setDate", "+3d");

        $(document).on('click', '#radio_user_ban_permanently', function () {
            $("#suspendedTo-datepicker").datepicker("option", { disabled: true });
        });
        $(document).on('click', '#radio_user_ban_until', function () {
            $("#suspendedTo-datepicker").datepicker("option", { disabled: false });
        });
        $(document).on('click', '#userforumban-submit', function () {
            var reason = $('textarea#textarea_user_ban_reason').val();
            if (!!reason == false) {
                cm.alert("Reason cannot be empty.", function () { });
                return;
            }
            var suspendTo = $("#suspendedTo-datepicker").datepicker("getDate"); 
            restoreOrBanUser(userId, true, $('#radio_user_ban_permanently').is(':checked') ? null : new Date(Date.UTC(suspendTo.getFullYear(), suspendTo.getMonth(), suspendTo.getDate())), reason);
        });

        $.ajax({
            url: $("body").data("actionUrls").userGetSuspendStatus,
            type: 'POST',
            cache: false,
            data: {
                id: userViewModel.userModel.UserId
            },
            success: function (data) {
                if (data.Suspended) {
                    $("#warning-text").html(data.WarningText);
                    $("#section-warnings").show();
                }

                if ($("#btn-ban-on-forum").length)
                {
                    if (data.Suspended) {
                        $("#btn-ban-on-forum").text("Restore Forum Activity");
                        $(document).on('click', '#btn-ban-on-forum', function () {
                            cm.alert("Are you sure you want to restore this user on CircuitMaker Forums?", function () {
                                restoreOrBanUser(userId, false, null, null);
                            });
                        });
                    }
                    else {
                        $("#btn-ban-on-forum").text("Suspend Forum Activity");
                        $(document).on('click', '#btn-ban-on-forum', function () {
                            $('#user-forum-ban-modal').modal({ keyboard: false, backdrop: 'static' });
                        });

                    }
                    $("#btn-ban-on-forum").show();
                }
            }
        });
    };

    var restoreOrBanUser = function (userId, suspend, suspendTo, reasonText) {
        $.ajax({
            url: $("body").data("actionUrls").userForumBanRestore,
            type: 'POST',
            cache: false,
            data: {
                id: userViewModel.userModel.UserId,
                suspended: suspend,
                suspendedTo: !!suspendTo ? suspendTo.toISOString() : null,
                reason: reasonText
            },
            beforeSend: function () {
                cm.pleaseWait.show();
            },
            success: function (data) {
                if (!data.status) {
                    cm.alert(data.message);
                    return;
                }

                cm.alert("User was successfully " + (suspend? "suspended" : "restored") + " on CircuitMaker Forums.", function () {
                    location.reload();
                });
            },
            complete: function () {
                cm.pleaseWait.hide();
            }
        });
    };

    return {
        init: init
    }

})();
;
cm.userProjects = (function() {

    var initialized = false;

    // sammyApp
    var sammyApp = null;

    var projectsViewModel = null;

    var projectsSearchParams = null;

    // init
    var init = function (userGuid, displayName, viewUrl, projectType) {
        // initViewModel
        initViewModel(userGuid, displayName, viewUrl, projectType);

        // initBreadcrumbs
        initBreadcrumbs();

        // createProjectsParams
        projectsSearchParams = createProjectsParams();

        // initSammy
        initSammy();

        // search
        /*cm.search.init(projectsSearchParams.Filter(), function (newSearchPhrase) {
            searchPhraseChanged(newSearchPhrase);
        });*/

        // findProjects
        findProjects();

        initialized = true;
    }

    // initViewModel
    var initViewModel = function (userGuid, displayName, viewUrl, projectType) {
        projectsViewModel = {};

        projectsViewModel.userGuid = userGuid;
        projectsViewModel.displayName = displayName;
        projectsViewModel.viewUrl = viewUrl;
        projectsViewModel.projectType = projectType;

        // init sort ViewModel
        projectsViewModel.SortViewModel = cm.createSortOrderViewModel();

        projectsViewModel.SortViewModel.addSortItem(0, 'Most Popular');
        projectsViewModel.SortViewModel.addSortItem(1, 'Most Viewed');
        projectsViewModel.SortViewModel.addSortItem(2, 'Most Followed');
        projectsViewModel.SortViewModel.addSortItem(3, 'Most Commented');
        projectsViewModel.SortViewModel.addSortItem(4, 'Most Forked');
        projectsViewModel.SortViewModel.addSortItem(5, 'Last Modified');

        if (projectsViewModel.projectType == 1 || projectsViewModel.projectType == 2) {
            projectsViewModel.SortViewModel.setOderByValue(0);
        } else {
            projectsViewModel.SortViewModel.setOderByValue(5);
        }

        //subscribe on change sort mode
        projectsViewModel.SortViewModel.selectedSortValue.subscribe(function (val) {
            sortOptionChanged(val);
        });

        /*ko.applyBindings(projectsViewModel.SortViewModel, document.getElementById('projects-sort-section'));*/

        // Tags
        projectsViewModel.FilterTags = ko.observableArray();
        projectsViewModel.TagGuids = ko.computed(function() {
            var arrayOfGuid = new Array();
            ko.utils.arrayForEach(projectsViewModel.FilterTags(), function(tag) {
                arrayOfGuid.push(tag.Guid);
            });
            return arrayOfGuid;
        }, projectsViewModel);

        ko.applyBindings(projectsViewModel.FilterTags, document.getElementById('projectsj-tags-filter'));

        // Paged Grid
        projectsViewModel.paginationOptions = new cm.PaginationOptions();
        projectsViewModel.paginationOptions.pageSize = 12;
        projectsViewModel.pagedList = new cm.PagedList(projectsViewModel.paginationOptions, pageIndexChanged);
        projectsViewModel.pagedList.currentIndex(1);
        projectsViewModel.pagedGridViewModel = new cm.PagedGridModel(projectsViewModel.pagedList, false, null);
        projectsViewModel.pagedGridViewModel.isTeamProjectsWithoutFilter = ko.observable(false);

        ko.applyBindings(projectsViewModel.pagedGridViewModel, document.getElementById('projects-content'));
    }

    // initSammy
    var initSammy = function () {
        sammyApp = $.sammy(function () {
            this.get(/\#\/(.*)/, function (context) {
                var params = this.params['splat'];
                var pageindex = params[0];

                // Page Index
                if (pageindex != null) {
                    projectsSearchParams.NumberOfPage(pageindex);
                }

                // findProjects
                if (initialized) findProjects();
            });
            
            // Default path
            var patternUrlStartPage = this.getLocation();
            var hashIndex = patternUrlStartPage.indexOf('#');
            if (hashIndex != -1) {
                patternUrlStartPage = patternUrlStartPage.substr(0, hashIndex);
            }

            this.get(patternUrlStartPage, function () {
                startPage();
            });
        });

        // sammyApp
        sammyApp.run();
    }

    // startPage
    var startPage = function () {
        projectsSearchParams.NumberOfPage(1);
        if (initialized) findProjects();
    };

    // setSammyLocation
    var setSammyLocation = function () {
        var pageindex = encodeURIComponent(projectsSearchParams.NumberOfPage());

        // locationUrl
        var locationUrl = '#/' + pageindex;

        // setLocation
        sammyApp.setLocation(locationUrl);
    }

    // initBreadcrumbs
    var initBreadcrumbs = function () {
        cm.breadcrumbsViewModel.addLink($('body').data('actionUrls').members, 'Makers');
        cm.breadcrumbsViewModel.addLink(projectsViewModel.viewUrl, projectsViewModel.displayName);

        if (projectsViewModel.projectType == 1) {
            cm.breadcrumbsViewModel.addLink($('body').data('actionUrls').userProjectsAction + '/' + projectsViewModel.userGuid, 'Projects');
        }
        else if (projectsViewModel.projectType == 2) {
            cm.breadcrumbsViewModel.addLink($('body').data('actionUrls').userTeamProjectsAction + '/' + projectsViewModel.userGuid, 'Team Projects');
        }
        else if (projectsViewModel.projectType == 3) {
            cm.breadcrumbsViewModel.addLink($('body').data('actionUrls').userFollowedProjectsAction + '/' + projectsViewModel.userGuid, 'Followed Projects');
        }
        else if (projectsViewModel.projectType == 4) {
            cm.breadcrumbsViewModel.addLink($('body').data('actionUrls').userRatedProjectsAction + '/' + projectsViewModel.userGuid, 'Rated Projects');
        }

        cm.breadcrumbsViewModel.htmlBind();
    }

    // createProjectsParams
    var createProjectsParams = function () {
        var searchParams = {
            Filter: ko.observable(''),
            ProjectSortOrder: ko.observable(projectsViewModel.SortViewModel.selectedSortValue()),
            AccessType: ko.observable(0),
            OwnerType: ko.observable(0),
            CountPerPage: ko.observable(projectsViewModel.paginationOptions.pageSize),
            NumberOfPage: ko.observable(projectsViewModel.pagedList.currentIndex()),
            CategoryGuid: ko.observable(''),
            CategoryName: ko.observable(''),
            HasDocument: ko.observable(true),
            TagsOrder: ko.observable(''),
            FilterTags: ko.observableArray(),
            AuthorGuid: ko.observable(projectsViewModel.userGuid)
        }

        // Projects
        if (projectsViewModel.projectType == 1) {
            searchParams.AccessType(-1);
            searchParams.OwnerType(1);
        }
        // Contributed Projects
        else if (projectsViewModel.projectType == 2) {
            searchParams.AccessType(-1);
            searchParams.OwnerType(2);
        }
        // Followed Projects
        /*else if (projectsViewModel.projectType == 3) {

        }
        // Rated Projects
        else if (projectsViewModel.projectType == 4) {

        }*/

        return searchParams;
    }

    // findProjects
    var findProjects = function () {
        if (projectsViewModel.projectType == 1 || projectsViewModel.projectType == 2) {
            findUserProjects();
        } else if (projectsViewModel.projectType == 3) {
            findUserFollowedProjects();
        } else if (projectsViewModel.projectType == 4) {
            findUserRatedProjects();
        }
    }

    // findUserProjects
    var findUserProjects = function() {
        var jsonFiler = ko.toJSON(projectsSearchParams);

        $.ajax({
            url: $("body").data("actionUrls").findUserProjects,
            type: 'POST',
            contentType: "application/json;",
            cache: true,
            traditional: false,
            data: jsonFiler,
            beforeSend: function() {
                projectsViewModel.pagedGridViewModel.setCollection([]);
                projectsViewModel.pagedGridViewModel.setParams(0, 0);
                projectsViewModel.pagedGridViewModel.isReady(false);
            },
            success: function (data) {
                processFindUserRequest(data);
            },
            complete: function() {
                projectsViewModel.pagedGridViewModel.isReady(true);
            }
        });
    }

    // findUserProjects
    var findUserFollowedProjects = function () {
        var jsonFiler = ko.toJSON(projectsSearchParams);

        $.ajax({
            url: $("body").data("actionUrls").findFollowedProjects,
            type: 'POST',
            contentType: "application/json;",
            cache: true,
            traditional: false,
            data: jsonFiler,
            beforeSend: function () {
                projectsViewModel.pagedGridViewModel.setCollection([]);
                projectsViewModel.pagedGridViewModel.setParams(0, 0);
                projectsViewModel.pagedGridViewModel.isReady(false);
            },
            success: function (data) {
                processFindUserRequest(data);
            },
            complete: function () {
                projectsViewModel.pagedGridViewModel.isReady(true);
            }
        });
    }

    // findUserRatedProjects
    var findUserRatedProjects = function () {
        var jsonFiler = ko.toJSON(projectsSearchParams);

        $.ajax({
            url: $("body").data("actionUrls").findRatedProjects,
            type: 'POST',
            contentType: "application/json;",
            cache: true,
            traditional: false,
            data: jsonFiler,
            beforeSend: function () {
                projectsViewModel.pagedGridViewModel.setCollection([]);
                projectsViewModel.pagedGridViewModel.setParams(0, 0);
                projectsViewModel.pagedGridViewModel.isReady(false);
            },
            success: function (data) {
                processFindUserRequest(data);
            },
            complete: function () {
                projectsViewModel.pagedGridViewModel.isReady(true);
            }
        });
    }

    // processFindUserRequest
    var processFindUserRequest = function (data) {
        if (!data.success) {
            alert(data.message);
            return;
        }

        var model = data.viewModel;

        function applyModelChanges(items) {
            items.forEach(function (item) {
                item.CreatedAt = cm.getTimeAgoFromMilisecond(item.CreatedAt);

                item.FollowsHRCount = ko.computed(function () {
                    return cm.formatBigNumber(item.FollowsCount);
                });

                item.CommentsHRCount = ko.computed(function () {
                    return cm.formatBigNumber(item.CommentsCount);
                });

                item.ViewsHRCount = ko.computed(function () {
                    return cm.formatBigNumber(item.ViewsCount);
                });

                item.ForksHRCount = ko.computed(function () {
                    return cm.formatBigNumber(item.ForksCount);
                });

                item.VotesHRCount = ko.computed(function () {
                    return cm.formatBigNumber(item.VotesCount);
                });

                // Clickable Metrics
                item.FollowsClickable = ko.computed(function () {
                    return item.FollowsCount > 0;
                });

                item.CommentsClickable = ko.computed(function () {
                    return item.CommentsCount > 0;
                });

                item.ForksClickable = ko.computed(function () {
                    return item.ForksCount > 0;
                });

                item.VotesClickable = ko.computed(function () {
                    return item.VotesCount > 0;
                });

                // Metrics Pages
                item.OpenFollowersPage = function () {
                    if (item.FollowsCount < 1) return;
                    if (item.FollowersUrl == null || item.FollowersUrl == '') return;

                    window.location = item.FollowersUrl;
                };

                item.OpenCommentsPage = function () {
                    if (item.CommentsCount < 1) return;
                    if (item.CommentsUrl == null || item.CommentsUrl == '') return;

                    window.location = self.CommentsUrl;
                };

                item.OpenForksPage = function () {
                    if (item.ForksCount < 1) return;
                    if (item.ForksUrl == null || item.ForksUrl == '') return;

                    window.location = item.ForksUrl;
                };

                item.OpenVotesPage = function () {
                    if (item.VotesCount < 1) return;
                    if (item.VotesUrl == null || item.VotesUrl == '') return;

                    window.location = item.VotesUrl;
                };

                //add computed property by filter active tag
                if (item.Tags && item.Tags.length > 0) {
                    item.Tags.forEach(function (tag) {
                        tag.filterTagsContainsIt = ko.computed(function () {

                            var filteredTags = projectsSearchParams.FilterTags().filter(function (filterTag) {
                                return filterTag.Guid === tag.Guid;
                            });
                            return filteredTags.length > 0;
                        });
                    });
                }
            });
        }

        applyModelChanges(model.Items);

        projectsViewModel.pagedGridViewModel.setCollection(model.Items);
        projectsViewModel.pagedGridViewModel.setParams(model.PageIndex, model.TotalRecords);
    }

    // sortOptionChanged
    var sortOptionChanged = function (val) {
        projectsSearchParams.ProjectSortOrder(projectsViewModel.SortViewModel.selectedSortValue());

        setSammyLocation();
    }

    // searchPhraseChanged
    var searchPhraseChanged = function(newSearchPhrase) {
        projectsSearchParams.Filter(newSearchPhrase);

        setSammyLocation();
    }

    // pageIndexChanged
    var pageIndexChanged = function (newPageIndex) {
        projectsSearchParams.NumberOfPage(newPageIndex);

        setSammyLocation();
    }

    // return
    return {
        init: init
    }

})();;
cm.userFollowers = (function() {

    var followersViewModel = null;

    // init
    var init = function (userGuid, displayName, viewUrl, followersType) {
        // initViewModel
        initViewModel(userGuid, displayName, viewUrl, followersType);

        // initBreadcrumbs
        initBreadcrumbs();

        // findUsers
        findUsers();
    }

    // initViewModel
    var initViewModel = function (userGuid, displayName, viewUrl, followersType) {
        followersViewModel = {};

        followersViewModel.userGuid = userGuid;
        followersViewModel.displayName = displayName;
        followersViewModel.viewUrl = viewUrl;
        followersViewModel.followersType = followersType;
        
        // Paging
        followersViewModel.pageIndex = ko.observable(1);
        followersViewModel.pageSize = ko.observable(12);

        // Users Grid
        followersViewModel.paginationOptions = new cm.PaginationOptions();
        followersViewModel.paginationOptions.pageSize = 12;
        followersViewModel.pagedList = new cm.PagedList(followersViewModel.paginationOptions, pageIndexChanged);
        followersViewModel.pagedList.currentIndex(followersViewModel.pageIndex());
        followersViewModel.pagedGrid = new cm.PagedGridModel(followersViewModel.pagedList, false, null);

        ko.applyBindings(followersViewModel, document.getElementById('members-container'));
        ko.applyBindings(followersViewModel.pagedGrid, document.getElementById('memebrs-list-container'));
    }

    // initBreadcrumbs
    var initBreadcrumbs = function () {
        cm.breadcrumbsViewModel.addLink($('body').data('actionUrls').members, 'Makers');
        cm.breadcrumbsViewModel.addLink(followersViewModel.viewUrl, followersViewModel.displayName);

        if (followersViewModel.followersType == 1) {
            cm.breadcrumbsViewModel.addLink($('body').data('actionUrls').userFollowersAction + '/' + followersViewModel.userGuid, 'Followers');
        }
        else if (followersViewModel.followersType == 2) {
            cm.breadcrumbsViewModel.addLink($('body').data('actionUrls').userFollowingAction + '/' + followersViewModel.userGuid, 'Following');
        }
        
        cm.breadcrumbsViewModel.htmlBind();
    }

    // findUsers
    var findUsers = function () {
        if (followersViewModel.followersType == 1) {
            findFollowers();
        }
        else if (followersViewModel.followersType == 2) {
            findFollowedUsers();
        }
    }

    // findFollowers
    var findFollowers = function () {
        // ajax
        $.ajax({
            url: $("body").data("actionUrls").findUserFollowers,
            type: 'POST',
            cache: true,
            traditional: true,
            data: {
                ListOfUserGuid: [ followersViewModel.userGuid ],
                PageIndex: followersViewModel.pageIndex(),
                UsersPerPage: followersViewModel.pageSize(),
                SortOption: 1 // not used in this context
            },
            beforeSend: function () {
                followersViewModel.pagedGrid.setCollection([]);
                followersViewModel.pagedGrid.setParams(0, 0);
                followersViewModel.pagedGrid.isReady(false);
            },
            success: function (data) {
                processSearchResults(data);
            },
            complete: function () {
                followersViewModel.pagedGrid.isReady(true);
            }
        });
    }

    // findFollowers
    var findFollowedUsers = function () {
        // ajax
        $.ajax({
            url: $("body").data("actionUrls").findFollowedUsers,
            type: 'POST',
            cache: true,
            traditional: true,
            data: {
                ListOfUserGuid: [ followersViewModel.userGuid ],
                PageIndex: followersViewModel.pageIndex(),
                UsersPerPage: followersViewModel.pageSize(),
                SortOption: 1 // not used in this context
            },
            beforeSend: function () {
                followersViewModel.pagedGrid.setCollection([]);
                followersViewModel.pagedGrid.setParams(0, 0);
                followersViewModel.pagedGrid.isReady(false);
            },
            success: function (data) {
                processSearchResults(data);
            },
            complete: function () {
                followersViewModel.pagedGrid.isReady(true);
            }
        });
    }

    // processSearchResults
    var processSearchResults = function(data) {
        if (!data.success) {
            cm.alert(data.message);
        }

        followersViewModel.pagedGrid.setCollection(data.viewModel.Items);
        followersViewModel.pagedGrid.setParams(followersViewModel.pageIndex(), data.viewModel.TotalRecords);
    }

    // pageIndexChanged
    var pageIndexChanged = function (pageIndex) {
        followersViewModel.pageIndex(pageIndex);

        findUsers();
    }

    // return
    return {
        init: init
    }

})();;
cm.userComponents = (function() {

    var componentsViewModel = null;

    // init
    var init = function (userGuid, displayName, viewUrl) {
        // initViewModel
        initViewModel(userGuid, displayName, viewUrl);

        // initBreadcrumbs
        initBreadcrumbs();

        // findComponents
        findComponents();
    }

    // initViewModel
    var initViewModel = function (userGuid, displayName, viewUrl) {
        componentsViewModel = {};

        componentsViewModel.userGuid = userGuid;
        componentsViewModel.displayName = displayName;
        componentsViewModel.viewUrl = viewUrl;

        // Grid
        componentsViewModel.paginationOptions = new cm.PaginationOptions();
        componentsViewModel.paginationOptions.pageSize = 12;
        componentsViewModel.pagedList = new cm.PagedList(componentsViewModel.paginationOptions, pageIndexChanged);
        componentsViewModel.pagedList.currentIndex(1);
        componentsViewModel.pagedGrid = new cm.PagedGridModel(componentsViewModel.pagedList, false);
        componentsViewModel.pagedGrid.isTeamProjectsWithoutFilter = ko.observable(false);

        ko.applyBindings(componentsViewModel.pagedGrid, document.getElementById('components-list-container'));

        ko.applyBindings(componentsViewModel, document.getElementById('components-container'));
    }

    // initBreadcrumbs
    var initBreadcrumbs = function () {
        cm.breadcrumbsViewModel.addLink($('body').data('actionUrls').members, 'Makers');
        cm.breadcrumbsViewModel.addLink(componentsViewModel.viewUrl, componentsViewModel.displayName);
        cm.breadcrumbsViewModel.addLink($('body').data('actionUrls').userComponentsAction + '/' + componentsViewModel.userGuid, 'Components');
        cm.breadcrumbsViewModel.htmlBind();
    }

    // findComponents
    var findComponents = function () {
        var searchParams = {
            FindValue: '',
            PageIndex: componentsViewModel.pagedList.currentIndex() - 1,
            ItemsPerPage: componentsViewModel.paginationOptions.pageSize,
            SortOption: 1,
            TagGuids: [],
            AuthorGuid: componentsViewModel.userGuid
        };

        $.ajax({
            url: $("body").data("actionUrls").getComponentsForUser,
            type: 'POST',
            cache: false,
            data: searchParams,
            traditional: true,
            beforeSend: function () {
                componentsViewModel.pagedGrid.setCollection([]);
                componentsViewModel.pagedGrid.setParams(0, 0);
                componentsViewModel.pagedGrid.isReady(false);
            },
            success: function(data) {
                if (!data.status) {
                    alert(data.message);
                    return;
                }

                var model = data.viewModel;

                function applyModeModifications(items) {
                    items.forEach(function (item) {
                        item.CreatedAt = cm.formatDate(item.CreatedAt);
                        item.imageLoaded = ko.observable(false);
                        item.imageUrl = ko.computed(function () { return cm.components.loadComponentImage(item); });

                        // Used In Projects Title
                        var projectsTitle = 'Project';
                        if (item.ProjectsCount == 0 || item.ProjectsCount > 1) projectsTitle += 's';
                        projectsTitle = item.ProjectsCount + ' ' + projectsTitle;

                        var releasesTitle = 'Release';
                        if (item.ProjectReleasesCount == 0 || item.ProjectReleasesCount > 1) releasesTitle += 's';
                        releasesTitle = item.ProjectReleasesCount + ' ' + releasesTitle;

                        item.usedInProjectsTitle = projectsTitle + ' / ' + releasesTitle;

                        //add computed property by filter active tag
                        if (item.Tags && item.Tags.length > 0) {
                            item.Tags.forEach(function (tag) {
                                tag.filterTagsContainsIt = ko.observable(false);
                            });
                        }
                    });
                }

                applyModeModifications(model.Items);

                componentsViewModel.pagedGrid.setCollection(model.Items);
                componentsViewModel.pagedGrid.setParams(model.PageIndex + 1, model.TotalRecords);
            },
            complete: function () {
                componentsViewModel.pagedGrid.isReady(true);
            }
        });
    }

    // pageIndexChanged
    var pageIndexChanged = function (newPageIndex) {
        // storing new page index
        componentsViewModel.pagedList.currentIndex(newPageIndex);

        // search
        findComponents();
    }

    // return
    return {
        init: init
    }

})();;
cm.members = (function() {

    var initialized = false;

    // sammyApp
    var sammyApp = null;

    // membersViewModel
    var membersViewModel = null;
    var sortSubscription;
    // init
    var init = function () {
        cm.breadcrumbsViewModel.addLink($('body').data('actionUrls').members, 'Makers');
        cm.breadcrumbsViewModel.htmlBind();

        // initViewModel
        initViewModel();

        // initSortViewModel
        initSortViewModel();

        // initSammy
        initSammy();

        // Sort Order Changed
        activeteSortSubscription();

        // search
        cm.search.init(membersViewModel.searchParams.SearchString, function (searchPhrase) {
            searchPhraseChanged(searchPhrase);
        });

        // findUsers
        findUsers();

        initialized = true;
    }

    var activeteSortSubscription = function () {
        sortSubscription = membersViewModel.SortViewModel.selectedSortValue.subscribe(function (val) {
            sortOrderChanged(val);
        });

    }

    var disableSortSubscription = function () {
        if (sortSubscription) {
            sortSubscription.dispose();
        }
    }

    // initViewModel
    var initViewModel = function() {
        membersViewModel = {};

        // Search Params
        membersViewModel.searchParams = {
            SearchString: '',
            SortOption: 3,
            PageIndex: 1,
            UsersPerPage: 12
        };

        //var storedSearchParams = cm.pageParams.getControllerParam('membersSearchParams');
        //if (storedSearchParams != null) membersViewModel.searchParams = storedSearchParams;

        // Sorting
        membersViewModel.SortViewModel = cm.createSortOrderViewModel();
        
        // Paging
        membersViewModel.pageIndex = ko.observable(1);
        membersViewModel.pageSize = ko.observable(12);

        // Users Grid
        membersViewModel.paginationOptions = new cm.PaginationOptions();
        membersViewModel.paginationOptions.pageSize = 12;
        membersViewModel.pagedList = new cm.PagedList(membersViewModel.paginationOptions, pageIndexChanged);
        membersViewModel.pagedList.currentIndex(membersViewModel.pageIndex());
        membersViewModel.pagedGrid = new cm.PagedGridModel(membersViewModel.pagedList, false, null);
        membersViewModel.pagedGrid.isTeamProjectsWithoutFilter = ko.observable(false);

        ko.applyBindings(membersViewModel.pagedGrid, document.getElementById('memebrs-list-container'));
        
        ko.applyBindings(membersViewModel, document.getElementById('members-container'));
    }

    // initSortViewModel
    var initSortViewModel = function () {
        var sortOptions = $("#members-container").data("sort-options");

        if (sortOptions && sortOptions.length) {
            $.each(sortOptions, function (index, sortOption) {
                membersViewModel.SortViewModel.addSortItem(parseInt(sortOption.Value), sortOption.Text);
            });

            membersViewModel.SortViewModel.setOderByValue(membersViewModel.searchParams.SortOption);
            ko.applyBindings(membersViewModel.SortViewModel, document.getElementById('sort-section'));
        }
    }

    // initSammy
    var initSammy = function () {
        sammyApp = $.sammy(function () {
            this.get(/\#\/(.*)\/(.*)\/(.*)/, function (context) {
                var params = context.params['splat'];
                var filter = params[0];
                var sortorder = params[1];
                var pageindex = params[2];

                // Filter
                if (filter != null) {
                    membersViewModel.searchParams.SearchString = filter;
                    cm.search.setValue(filter);
                }

                // Sort Order
                if (sortorder != null) {
                    disableSortSubscription();
                    membersViewModel.SortViewModel.setOderByValue(parseInt(sortorder));
                    activeteSortSubscription();
                    if (!initialized) membersViewModel.searchParams.SortOption = sortorder;
                }

                // Page Index
                if (pageindex != null) {
                    membersViewModel.searchParams.PageIndex = parseInt(pageindex);
                }

                // findUsers
                if (initialized) findUsers();
            });

            var patternUrlStartPage = this.getLocation();
            this.get(patternUrlStartPage, function () {
                startPage();
            });
        });

        // sammyApp
        sammyApp.run();
    }

    var startPage = function () {
        if (initialized) {

            cm.search.setValue('');
            membersViewModel.searchParams.SearchString = '';
            membersViewModel.searchParams.PageIndex = 1;
            disableSortSubscription();
            membersViewModel.SortViewModel.setOderByValue(parseInt(3));
            membersViewModel.searchParams.SortOption = 3;
            activeteSortSubscription();

            findUsers();
        }
    };

    // getSammyLocation
    var getSammyLocation = function() {
        var filter = encodeURIComponent(membersViewModel.searchParams.SearchString);
        var sortorder = encodeURIComponent(membersViewModel.SortViewModel.selectedSortValue());
        var pageindex = encodeURIComponent(membersViewModel.searchParams.PageIndex);

        // locationUrl
        var locationUrl = '#/' + filter + '/' + sortorder + '/' + pageindex;

        return locationUrl;
    }

    // setSammyLocation
    var setSammyLocation = function () {
        // locationUrl
        var locationUrl = getSammyLocation();

        // setLocation
        sammyApp.setLocation(locationUrl);
    }

    // findUsers
    var findUsers = function () {
        //cm.pageParams.addControllerParam('membersSearchParams', membersViewModel.searchParams);

        // ajax
        $.ajax({
            url: $("body").data("actionUrls").findUsers,
            type: 'POST',
            cache: true,
            traditional: false,
            data: membersViewModel.searchParams,
            beforeSend: function () {
                membersViewModel.pagedGrid.setCollection([]);
                membersViewModel.pagedGrid.setParams(0, 0);
                membersViewModel.pagedGrid.isReady(false);
            },
            success: function (data) {
                if (!data.success) {
                    cm.alert(data.message);
                }

                membersViewModel.pagedGrid.setCollection(data.viewModel.Items);
                membersViewModel.pagedGrid.setParams(membersViewModel.searchParams.PageIndex, data.viewModel.TotalRecords);
            },
            complete: function () {
                membersViewModel.pagedGrid.isReady(true);
            }
        });
    }

    // pageIndexChanged
    var pageIndexChanged = function (pageIndex) {
        // searchParams
        membersViewModel.searchParams.PageIndex = pageIndex;
          
        // findUsers
        setSammyLocation();
    }

    // sortOrderChanged
    var sortOrderChanged = function (val) {
        // searchParams
        var oldFindValue = membersViewModel.searchParams.SearchString.toLowerCase();
        var newFindValue = $('#txtSearch').val().replace(/ /g, '').toLowerCase();

        if (oldFindValue != newFindValue) {
            membersViewModel.searchParams.PageIndex = 0;
        }

        membersViewModel.searchParams.SortOption = val;
        membersViewModel.searchParams.SearchString = $('#txtSearch').val();
        
        // findUsers
        setSammyLocation();
    }

    // searchPhraseChanged
    var searchPhraseChanged = function (searchPhrase) {
        // searchParams
        membersViewModel.searchParams.PageIndex = 1;
        membersViewModel.searchParams.SearchString = searchPhrase;

        // searching users
        setSammyLocation();
    }

    // return
    return {
        init: init
    }

})();;
cm.votes = (function () {
    var self = this;
    var entityId, eventSouceId;
    var viewModelComments = new Object();
    viewModelComments.votesViewModel = new Object();
    viewModelComments.isFeedbackReady = ko.observable(false);
    viewModelComments.votesViewModel = ko.observable();
    var successAddEditObservers = new cm.Observers();
    var page;

    // Start: Comments Scrolling
    var scrollCommentsToFillPage = ko.observable(false);

    
    self.votesCount = ko.observable();

    var setObservableHandlers = function(votesCount) {
        self.votesCount = votesCount;
    }

    var scrollToComments = function ()
    {
        var commentsSize = $('#comments_loop_container').innerHeight();
        if (commentsSize == 0) {
            setTimeout(function () { scrollToComments(); }, 100);
            return;
        }

        var commentsPanel = $('#project_comments');
        window.scrollTo(window.scrollX, commentsPanel.offset().top);
        scrollCommentsToFillPage(false);
    }
    // Start: Comments Scrolling

    var init = function(entId, evtSouceId) {
        page = cm.pageParams.getParam('comments_pageIndex');
        if (page == null || page < 0) {
            page = 0;
        }

        entityId = entId;
        eventSouceId = evtSouceId;

        $('#comments_loop_container').resize(function() {
            commentsSize($('#comments_loop_container').innerHeight());
        });
    };

    var onBeginAddEditVote = function() {
        cm.pleaseWait.show();
    };

    var onSuccessAddEditVote = function(data) {
        if (!data.status) {
            cm.alert(data.message);
            return;
        }

        successAddEditObservers.notify(data);
    };



    var onFailureAddEditVote = function() {
        cm.alert('error');
    };

    var onCompleteAddEditVote = function() {
        cm.pleaseWait.hide();
    };


    var add = function (callback) {
        $.ajax({
            url: $("body").data("actionUrls").AddVote,
            type: 'POST',
            cache: false,
            data: {
                EntityId: entityId,
                EventSouceId: eventSouceId,
                VoteLevel: "Like"
            },
            beforeSend: function () {
                cm.pleaseWait.show();
            },
            success: function (data) {
                if (!data.status) {
                    cm.alert(data.message);
                    callback(false);
                    return;
                }

                self.votesCount(data.votesCount);
                cm.pleaseWait.hide();
                callback(true);
            },
            complete: function () {
                cm.pleaseWait.hide();
            }
        });
    };

    return {
        init: init,
        successAddEditObservers: successAddEditObservers,
        onBeginAddEditVote: onBeginAddEditVote,
        onSuccessAddEditVote: onSuccessAddEditVote,
        onFailureAddEditVote: onFailureAddEditVote,
        onCompleteAddEditVote: onCompleteAddEditVote,
        add: add,
        votesCount: votesCount,
        setObservableHandlers: setObservableHandlers
    };
})();;
function CmComments() {
    var self = this;

    self.entityId = 0;
    var countUpdateHandler;

    // init
    self.init = function (entId, evtSouceId, customCountUpdateHandler) {
        self.entityId = entId;
        self.eventSouceId = evtSouceId;

        if (customCountUpdateHandler && typeof customCountUpdateHandler == "function") {
            countUpdateHandler = customCountUpdateHandler;
        }

        // storedIndex
        var storedIndex = cm.pageParams.getParam('comments_pageIndex');
        if (!storedIndex) storedIndex = 1;

        // viewModelComments
        self.viewModelComments = new Object();
        self.viewModelComments.isReady = ko.observable(false);
        self.viewModelComments.commentsCount = ko.observable(0);
        self.viewModelComments.scrollCommentsToFillPage = ko.observable(false);
        // currentDate
        self.viewModelComments.currentDate = cm.formatDate(new Date());
        // pagination
        self.viewModelComments.paginationOptions = new cm.PaginationOptions();
        self.viewModelComments.paginationOptions.pageSize = 10;
        self.viewModelComments.pagedList = new cm.PagedList(self.viewModelComments.paginationOptions, self.pageChanged);
        self.viewModelComments.pagedList.currentIndex(storedIndex);
        self.viewModelComments.gridModel = new cm.PagedGridModel(self.viewModelComments.pagedList, false);
        self.viewModelComments.gridModel.isLoaded = ko.observable(false);

        // commentsSize
        $('#comments_loop_container').resize(function () {
            self.commentsSize($('#comments_loop_container').innerHeight());
        });

        self.viewModelComments.commentsCount.subscribe(function (newValue) {
            if (countUpdateHandler && typeof countUpdateHandler == "function") {
                countUpdateHandler(newValue);
            }
        });

        // applyBindings
        ko.applyBindings(self.viewModelComments, document.getElementById('commentBlock'));

        if ($('#add-comments-content').length) {
            ko.applyBindings(self.viewModelComments, document.getElementById('add-comments-content'));
        }
    };

    // setObservableHandlers
    self.setObservableHandlers = function (commentsCount) {
        self.viewModelComments.commentsCount(commentsCount);
    }

    // loadComments
    self.loadComments = function () {
        $.ajax({
            url: $("body").data("actionUrls").getVotes,
            type: 'POST',
            cache: false,
            data: {
                id: self.entityId,
                page: self.viewModelComments.pagedList.currentIndex() - 1
            },
            beforeSend: function() {
                self.viewModelComments.isReady(false);
            },
            success: function(data) {
                if (!data.status) {
                    cm.alert(data.message);
                    return;
                }
                
                data.viewModel.Items.forEach(function(item) {
                    item.CreatedAtView = cm.formatDate(item.CreatedAt);
                });

                self.viewModelComments.commentsCount(data.viewModel.Total);

                self.viewModelComments.gridModel.setCollection(data.viewModel.Items);
                self.viewModelComments.gridModel.setParams(self.viewModelComments.pagedList.currentIndex(), data.viewModel.Total);
            },
            complete: function () {
                self.viewModelComments.isReady(true);
            }
        });
    }

    // pageChanged
    self.pageChanged = function (newPageIndex) {
        self.viewModelComments.pagedList.currentIndex(newPageIndex);
        self.loadComments();

        cm.pageParams.addParam('comments_pageIndex', newPageIndex);
    };

    // clearComentEditor
    self.clearComentEditor = function() {
        CKEDITOR.instances['comentEditor'].updateElement();
        CKEDITOR.instances['comentEditor'].setData('');
    };

    // addComment
    self.addComment = function () {
        var message = CKEDITOR.instances['comentEditor'].getData();
        var plainText = '';
        if (CKEDITOR.instances['comentEditor'].document.$.body.innerText) {
            plainText = CKEDITOR.instances['comentEditor'].document.$.body.innerText;
        } else {
            plainText = CKEDITOR.instances['comentEditor'].document.$.body.textContent;
        }

        if (plainText.replace(/ /g, '').replace(/\u00A0/g, '').replace(/\u000A/g, '') == '')
            return;
        $('#commentSubmit').prop("disabled", true);

        var url = $("body").data("actionUrls").addComment;

        var comment = {
            entityId: self.entityId,
            eventSouceId: self.eventSouceId,
            comment: message
        };

        $.ajax(url, {
            type: "POST",
            data: comment,
            complete: function () {
                $('#commentSubmit').prop("disabled", false);
            },
            success: function () {
                self.clearComentEditor();
                self.viewModelComments.pagedList.currentIndex(1);
                self.loadComments();
            },
            error: function () {
                $('#commentSubmit').prop("disabled", false);
            }
        });
    };

    // deleteComment
    self.deleteComment = function (voteId) {
        $.ajax("/votes/delete/", {
            type: "DELETE",
            data: {commentId: voteId},
            success: function () {
                self.viewModelComments.pagedList.currentIndex(1);
                self.loadComments();
            }
        });
    };
};





;
cm.subscription = (function () {

    var shoppingCartCookieName = "_shpCh";

    var purchaseCallback;

    var init = function () {
        $("button[id^=btnPurchase_]").click(function () {
            var productId = $(this).attr("productId");
            var ratePlanId = $("input[id^=IsSubscribe_" + productId + "]:checked:enabled").attr("ratePlanId");
            previewOrder(productId, ratePlanId);
        });

        setBehaviorSelectedSubscription();
        setBehaviorSelectedBillingPeriod();
        setDraggableProperties();
    };

    function setDraggableProperties(newActiveItem)
    {
        $("label.slide-item > .slide-mark").each(function () {
            $(this).draggable({
                axis: "x", containment: $(this).parent().parent().parent(), scroll: false, grid: [124, 0], helper: "clone", /*revert: 'invalid', revertDuration: 0,*/
                disabled: !(($(this).parent().hasClass("active")) || (this == newActiveItem)),
                stop: function (event, ui) {
                    var sliderItems = $(this).parent().parent().children(".slide-item");
                    var pointerX = ui.offset.left + (ui.helper.width() / 2);
                    for (var i = 0; i < sliderItems.length; i++) {
                        if ((pointerX >= $(sliderItems[i]).offset().left) && (pointerX <= $(sliderItems[i]).offset().left + $(sliderItems[i]).width())) {
                            $(sliderItems[i]).children(".plan").click();
                            break;
                        }
                    }
                }
            });
        });
    }

    function setBehaviorSelectedSubscription() {
        $("input[id^=IsSubscribe_]").on('change', function () {

            var productId = $(this).attr("productId");
            var billingPeriod = $(this).attr("billingPeriod");

            var hdnOldValueId = '#hdnOldValue_' + productId;
            var btnPurchaseId = '#btnPurchase_' + productId;
            var isDiffBillingPeriod = $('#hdnIsDiffBillingPeriod_' + productId).val().toLowerCase();

            $(btnPurchaseId).html('Buy');

            if ($(hdnOldValueId).val() == $(this).val() && isDiffBillingPeriod == "false") {
                $(btnPurchaseId).attr("disabled", "disabled");
                getHdnSyncFladCalculate(productId).val(new Date());
                $("#totalPayment_" + productId).html("$0.00").removeClass("subTotalCalculation").addClass("subTotalSum");
            } else {

                if (isDiffBillingPeriod == "true") {
                    var filter = "input[id^=BillingPeriod_][productid=" + productId + "]";
                    var allInputsPeriod = $(filter);
                    if (!allInputsPeriod.is(":checked")) {
                        filter = "input[productid=" + productId + "][value=" + billingPeriod + "]";
                        var inputPeriod = $(filter);
                        inputPeriod.prop("checked", true);
                        inputPeriod.parent().addClass("active");
                    }
                }

                $(btnPurchaseId).removeAttr("disabled");
                var ratePlanId = $(this).attr("ratePlanId");
                $(btnPurchaseId).html('Process');
                calculateSubTotal(productId, ratePlanId);
            }
            setDraggableProperties($(this).parent().children(".slide-mark")[0]);
        });
    }

    function setBehaviorSelectedBillingPeriod() {
        $("input[id^=BillingPeriod_]").on('change', function () {

            var productId = $(this).attr("productId");
            var billingPeriod = $(this).val();
            var css = '.plan' + productId + '.billingPeriod';
            $(css).hide();
            css = css + '.billingPeriod';
            $(css + 0).show();
            $(css + $(this).val()).show();
            rechacked(productId, billingPeriod);
        });
    }

    function rechacked(productId, billingPeriod) {
        var filter = "input[id^=IsSubscribe_" + productId + "]:checked:enabled";
        var planName;
        var el = $(filter);
        if (el.length > 0) {
           planName = el.attr("planName");
        } else {
            planName = $("#hdnCurrentPlanName_" + productId).val();
        }

        filter = "input[productId=" + productId + "][planName=" + planName + "][billingperiod=" + billingPeriod + "]";
        $(filter).click();

    }

    function getHdnSyncFladCalculate(productId) {
        return $('#hdnSyncFladCalculate_' + productId);
    }

    function previewOrder(productId, ratePlanId, callback) {
        if (purchaseCallback != null) {
            $("#dialogOrderPreview").off('hidden.bs.modal', purchaseCallback);
        }

        purchaseCallback = callback;
        
        $('.alert').hide();
        var selectedSubcribtions = new Array();
        selectedSubcribtions.push(ratePlanId);
        var url = $("body").data("actionUrls").subscriptionPreviewOrderAction;
        var data = JSON.stringify({ productRatePlanIds: selectedSubcribtions });

        $.ajax({
            url: url,
            type: "POST",
            data: data,
            contentType: 'application/json',
            beforeSend: function () {
                cm.pleaseWait.show();
            },
            success: function (html) {
                cm.pleaseWait.hide();

                $("#dialogOrderPreview").html(html);
                $("#dialogOrderPreview").modal({ keyboard: false, backdrop: "static" });
                if (purchaseCallback != null) {
                    $("#dialogOrderPreview").on('hidden.bs.modal', purchaseCallback);
                }
            },
            error: function (XMLHttpRequest, textStatus, errorThrown) {
                cm.pleaseWait.hide();

                $('.alert p:first-child').html('<p> textStatus=' + textStatus + ' errorThrown=' + errorThrown + '</p>').show();
            },
            complete: function (data, textStatus) {
                if (textStatus != 'success') {
                    cm.pleaseWait.hide();
                }
            }
        });
    }

    function removeShoppingCartCookie() {
        cm.setCookiesValue(shoppingCartCookieName, null, -1);
    }

    function calculateSubTotal(productId, ratePlanId) {
        var flag = new Date();
        var currentProductId = productId;
        getHdnSyncFladCalculate(productId).val(new Date());

        $("#totalPayment_" + productId).removeClass("subTotalSum").addClass("subTotalCalculation").text("calculation...");
        var url = $("body").data("actionUrls").subscriptionCalculateAction;
        var data = JSON.stringify({ productId: productId, ratePlanId: ratePlanId });
        $.ajax({
            url: url,
            type: "POST",
            data: data,
            contentType: 'application/json',
            success: function (result) {
                if (result.state) {
                    if (flag == getHdnSyncFladCalculate(result.productId).val()) {
                        $("#totalPayment_" + result.productId).html(result.totalSum).removeClass("subTotalCalculation").addClass("subTotalSum");

                        var btnPurchaseId = '#btnPurchase_' + productId;
                        if (result.cleanSum < 0) {
                            $(btnPurchaseId).html('Credit');
                        } else {
                            $(btnPurchaseId).html('Buy');
                        }
                    }
                } else {
                    $("#totalPayment_" + result.productId).text(result.message);
                    console.log('server returned error=' + result.message);
                }
            },
            error: function (XMLHttpRequest, textStatus, errorThrown) {
                $("#totalPayment_" + currentProductId).text("error");
                console.log('textStatus=' + textStatus + ' errorThrown=' + errorThrown);
            },
        });
    }

    function close() {
        $("#dialogOrderPreview").modal('hide');
        $("#dialogOrderPreview").html('');
        
        removeShoppingCartCookie();
    }

    var purchase = function () {
        $('#purchaseResultInfo').hide();
        var url = $("body").data("actionUrls").subscriptionPurchaseAction;
        var data = JSON.stringify({
            CreditCardId: $("#CreditCardId").val(),
            ProductRatePlanIds: $("#ProductRatePlanIds").val()
        });
        $.ajax({
            url: url,
            type: "POST",
            data: data,
            contentType: 'application/json',
            beforeSend: function () {
                cm.pleaseWait.show();
            },
            success: function (result) {
                if (result.status) {
                    close();

                    if (purchaseCallback == null) {
                        location.reload(true);
                    }
                } else {
                    $('#purchaseResultInfo').addClass("alert-danger");

                    $("#purchaseResultInfo").html('<p>' + result.message + '</p>');
                    $('#purchaseResultInfo').show();

                    $("#btnPay").hide();
                    $("#btnPayCancel").text("Close").click(function () { close(); });
                }
            },
            error: function (XMLHttpRequest, textStatus, errorThrown) {
                $('#purchaseResultInfo').html('<p> textStatus=' + textStatus + ' errorThrown=' + errorThrown + '</p>');
                $('#purchaseResultInfo').addClass("alert-danger").show();
            },
            complete: function () {
                cm.pleaseWait.hide();
            }
        });
    };

    return {
        init: init,
        purchase: purchase,
        previewOrder: previewOrder
    };
})();
;
var foolproof=function(){};foolproof.is=function(a,h,b,f){if(f){var e=function(a){return a==null||a==undefined||a==""},c=e(a),d=e(b);if(c&&!d||d&&!c)return true}var g=function(a){return a-0==a&&a.length>0},j=function(b){var a=new RegExp(/(?=\d)^(?:(?!(?:10\D(?:0?[5-9]|1[0-4])\D(?:1582))|(?:0?9\D(?:0?[3-9]|1[0-3])\D(?:1752)))((?:0?[13578]|1[02])|(?:0?[469]|11)(?!\/31)(?!-31)(?!\.31)|(?:0?2(?=.?(?:(?:29.(?!000[04]|(?:(?:1[^0-6]|[2468][^048]|[3579][^26])00))(?:(?:(?:\d\d)(?:[02468][048]|[13579][26])(?!\x20BC))|(?:00(?:42|3[0369]|2[147]|1[258]|09)\x20BC))))))|(?:0?2(?=.(?:(?:\d\D)|(?:[01]\d)|(?:2[0-8])))))([-.\/])(0?[1-9]|[12]\d|3[01])\2(?!0000)((?=(?:00(?:4[0-5]|[0-3]?\d)\x20BC)|(?:\d{4}(?!\x20BC)))\d{4}(?:\x20BC)?)(?:$|(?=\x20\d)\x20))?((?:(?:0?[1-9]|1[012])(?::[0-5]\d){0,2}(?:\x20[aApP][mM]))|(?:[01]\d|2[0-3])(?::[0-5]\d){1,2})?$/);return a.test(b)},i=function(a){return a===true||a===false||a==="true"||a==="false"};if(j(a)){a=Date.parse(a);b=Date.parse(b)}else if(i(a)){if(a=="false")a=false;if(b=="false")b=false;a=!!a;b=!!b}else if(g(a)){a=parseFloat(a);b=parseFloat(b)}switch(h){case"EqualTo":if(a==b)return true;break;case"NotEqualTo":if(a!=b)return true;break;case"GreaterThan":if(a>b)return true;break;case"LessThan":if(a<b)return true;break;case"GreaterThanOrEqualTo":if(a>=b)return true;break;case"LessThanOrEqualTo":if(a<=b)return true;break;case"RegExMatch":return(new RegExp(b)).test(a);break;case"NotRegExMatch":return!(new RegExp(b)).test(a)}return false};foolproof.getId=function(a,b){var c=a.id.lastIndexOf("_")+1;return a.id.substr(0,c)+b.replace(/\./g,"_")};foolproof.getName=function(a,b){var c=a.name.lastIndexOf(".")+1;return a.name.substr(0,c)+b};(function(){jQuery.validator.addMethod("is",function(g,f,a){var b=foolproof.getId(f,a.dependentproperty),e=a.operator,d=a.passonnull,c=document.getElementById(b).value;return foolproof.is(g,e,c,d)?true:false});jQuery.validator.addMethod("requiredif",function(e,j,c){var h=foolproof.getName(j,c.dependentproperty),g=c.dependentvalue,i=c.operator,f=c.pattern,a=document.getElementsByName(h),b=null;if(a.length>1){for(var d=0;d!=a.length;d++)if(a[d].checked){b=a[d].value;break}if(b==null)b=false}else b=a[0].value;if(foolproof.is(b,i,g))if(f==null){if(e!=null&&e.toString().replace(/^\s\s*/,"").replace(/\s\s*$/,"")!="")return true}else return(new RegExp(f)).test(e);else return true;return false});jQuery.validator.addMethod("requiredifempty",function(b,d,e){var c=foolproof.getId(d,e.dependentproperty),a=document.getElementById(c).value;if(a==null||a.toString().replace(/^\s\s*/,"").replace(/\s\s*$/,"")==""){if(b!=null&&b.toString().replace(/^\s\s*/,"").replace(/\s\s*$/,"")!="")return true}else return true;return false});jQuery.validator.addMethod("requiredifnotempty",function(b,d,e){var c=foolproof.getId(d,e.dependentproperty),a=document.getElementById(c).value;if(a!=null&&a.toString().replace(/^\s\s*/,"").replace(/\s\s*$/,"")!=""){if(b!=null&&b.toString().replace(/^\s\s*/,"").replace(/\s\s*$/,"")!="")return true}else return true;return false});var a=function(a,b,c){a.rules[b]=c;if(a.message)a.messages[b]=a.message},b=$.validator.unobtrusive;b.adapters.add("requiredif",["dependentproperty","dependentvalue","operator","pattern"],function(b){var c={dependentproperty:b.params.dependentproperty,dependentvalue:b.params.dependentvalue,operator:b.params.operator,pattern:b.params.pattern};a(b,"requiredif",c)});b.adapters.add("is",["dependentproperty","operator","passonnull"],function(b){a(b,"is",{dependentproperty:b.params.dependentproperty,operator:b.params.operator,passonnull:b.params.passonnull})});b.adapters.add("requiredifempty",["dependentproperty"],function(b){a(b,"requiredifempty",{dependentproperty:b.params.dependentproperty})});b.adapters.add("requiredifnotempty",["dependentproperty"],function(b){a(b,"requiredifnotempty",{dependentproperty:b.params.dependentproperty})})})();;
var foolproof=function(){};foolproof.is=function(a,h,b,f){if(f){var e=function(a){return a==null||a==undefined||a==""},c=e(a),d=e(b);if(c&&!d||d&&!c)return true}var g=function(a){return a-0==a&&a.length>0},j=function(b){var a=new RegExp(/(?=\d)^(?:(?!(?:10\D(?:0?[5-9]|1[0-4])\D(?:1582))|(?:0?9\D(?:0?[3-9]|1[0-3])\D(?:1752)))((?:0?[13578]|1[02])|(?:0?[469]|11)(?!\/31)(?!-31)(?!\.31)|(?:0?2(?=.?(?:(?:29.(?!000[04]|(?:(?:1[^0-6]|[2468][^048]|[3579][^26])00))(?:(?:(?:\d\d)(?:[02468][048]|[13579][26])(?!\x20BC))|(?:00(?:42|3[0369]|2[147]|1[258]|09)\x20BC))))))|(?:0?2(?=.(?:(?:\d\D)|(?:[01]\d)|(?:2[0-8])))))([-.\/])(0?[1-9]|[12]\d|3[01])\2(?!0000)((?=(?:00(?:4[0-5]|[0-3]?\d)\x20BC)|(?:\d{4}(?!\x20BC)))\d{4}(?:\x20BC)?)(?:$|(?=\x20\d)\x20))?((?:(?:0?[1-9]|1[012])(?::[0-5]\d){0,2}(?:\x20[aApP][mM]))|(?:[01]\d|2[0-3])(?::[0-5]\d){1,2})?$/);return a.test(b)},i=function(a){return a===true||a===false||a==="true"||a==="false"};if(j(a)){a=Date.parse(a);b=Date.parse(b)}else if(i(a)){if(a=="false")a=false;if(b=="false")b=false;a=!!a;b=!!b}else if(g(a)){a=parseFloat(a);b=parseFloat(b)}switch(h){case"EqualTo":if(a==b)return true;break;case"NotEqualTo":if(a!=b)return true;break;case"GreaterThan":if(a>b)return true;break;case"LessThan":if(a<b)return true;break;case"GreaterThanOrEqualTo":if(a>=b)return true;break;case"LessThanOrEqualTo":if(a<=b)return true;break;case"RegExMatch":return(new RegExp(b)).test(a);break;case"NotRegExMatch":return!(new RegExp(b)).test(a)}return false};foolproof.getId=function(a,b){var c=a.id.lastIndexOf("_")+1;return a.id.substr(0,c)+b.replace(/\./g,"_")};foolproof.getName=function(a,b){var c=a.name.lastIndexOf(".")+1;return a.name.substr(0,c)+b};function __MVC_ApplyValidator_RequiredIf(){}__MVC_ApplyValidator_Unknown=function(b,c,a){b[c]=a};jQuery.validator.addMethod("is",function(g,f,a){var b=foolproof.getId(f,a.dependentproperty),e=a.operator,d=a.passonnull,c=document.getElementById(b).value;return foolproof.is(g,e,c,d)?true:false});jQuery.validator.addMethod("requiredif",function(e,j,c){var h=foolproof.getName(j,c.dependentproperty),g=c.dependentvalue,i=c.operator,f=c.pattern,a=document.getElementsByName(h),b=null;if(a.length>1){for(var d=0;d!=a.length;d++)if(a[d].checked){b=a[d].value;break}if(b==null)b=false}else b=a[0].value;if(foolproof.is(b,i,g))if(f==null){if(e!=null&&e.toString().replace(/^\s\s*/,"").replace(/\s\s*$/,"")!="")return true}else return(new RegExp(f)).test(e);else return true;return false});jQuery.validator.addMethod("requiredifempty",function(b,d,e){var c=foolproof.getId(d,e.dependentproperty),a=document.getElementById(c).value;if(a==null||a.toString().replace(/^\s\s*/,"").replace(/\s\s*$/,"")==""){if(b!=null&&b.toString().replace(/^\s\s*/,"").replace(/\s\s*$/,"")!="")return true}else return true;return false});jQuery.validator.addMethod("requiredifnotempty",function(b,d,e){var c=foolproof.getId(d,e.dependentproperty),a=document.getElementById(c).value;if(a!=null&&a.toString().replace(/^\s\s*/,"").replace(/\s\s*$/,"")!=""){if(b!=null&&b.toString().replace(/^\s\s*/,"").replace(/\s\s*$/,"")!="")return true}else return true;return false});;
cm.homeAnonymous = (function () {

    // init
    var init = function (projectList, projectListElement) {
        projectList.Items.forEach(function (projectItem) {
            projectItem.DescriptionFormatted = projectItem.Description.replace(/\n/g, '<br />');

            projectItem.FollowsHRCount = ko.computed(function () {
                return cm.formatBigNumber(projectItem.FollowsCount);
            });

            projectItem.CommentsHRCount = ko.computed(function () {
                return cm.formatBigNumber(projectItem.CommentsCount);
            });

            projectItem.ViewsHRCount = ko.computed(function () {
                return cm.formatBigNumber(projectItem.ViewsCount);
            });

            projectItem.ForksHRCount = ko.computed(function () {
                return cm.formatBigNumber(projectItem.ForksCount);
            });

            projectItem.VotesHRCount = ko.computed(function () {
                return cm.formatBigNumber(projectItem.VotesCount);
            });

            // Clickable Metrics
            projectItem.FollowsClickable = ko.computed(function () {
                return projectItem.FollowsCount > 0;
            });

            projectItem.CommentsClickable = ko.computed(function () {
                return projectItem.CommentsCount > 0;
            });

            projectItem.ForksClickable = ko.computed(function () {
                return projectItem.ForksCount > 0;
            });

            projectItem.VotesClickable = ko.computed(function () {
                return projectItem.VotesCount > 0;
            });

            // Metrics Pages
            projectItem.OpenFollowersPage = function () {
                if (projectItem.FollowsCount < 1) return;
                if (projectItem.FollowersUrl == null || projectItem.FollowersUrl == '') return;

                window.location = projectItem.FollowersUrl;
            };

            projectItem.OpenCommentsPage = function () {
                if (projectItem.CommentsCount < 1) return;
                if (projectItem.CommentsUrl == null || projectItem.CommentsUrl == '') return;

                window.location = self.CommentsUrl;
            };

            projectItem.OpenForksPage = function () {
                if (projectItem.ForksCount < 1) return;
                if (projectItem.ForksUrl == null || projectItem.ForksUrl == '') return;

                window.location = projectItem.ForksUrl;
            };

            projectItem.OpenVotesPage = function () {
                if (projectItem.VotesCount < 1) return;
                if (projectItem.VotesUrl == null || projectItem.VotesUrl == '') return;

                window.location = projectItem.VotesUrl;
            };


            projectItem.MoreTagsBtnVisible = ko.computed(function () {
                return false;
            });
        });

        ko.applyBindings(projectList, projectListElement[0]);

        // init fullPage.js plagin
        var $body = $('body.home-anonymous-body');
        var $btn = $body.find('.btn-control');

        $body.find('> .container').fullpage({
            //anchors: ['slide-1', 'slide-2'],
            navigation: false,
            navigationPosition: 'right',
            sectionSelector: '.section-item',
            slideSelector: '.slide-item-inner',
            scrollOverflow: true,
            onLeave: function (anchorLink, index, slideIndex, direction, nextSlideIndex) {
                if (index > 1 && !$body.hasClass('header-animated')) {
                    $body.addClass('header-animated');
                } else if (index === 1 && $body.hasClass('header-animated')) {
                    $('.slimScrollBar').animate({
                        top: 0
                    }, 700);
                    $('.slimScrollDiv .fp-scrollable').animate({
                        scrollTop: 0
                    }, 700);
                    $body.removeClass('header-animated');
                }

                //if (index === 4 && !$body.hasClass('footer-animated')) {
                    //$body.addClass('footer-animated');
                //} else if (index !== 4 && $body.hasClass('footer-animated')) {
                    //$body.removeClass('footer-animated');
                //}
            }
        });

        $('html').css('overflow-x', 'auto');

        $btn.on('click touch', function(e) {
            e.preventDefault();
            var index = $(this).data('slide-index');
            $.fn.fullpage.moveTo(index);
        });
    };

    // goToSlide
    var goToSlide = function(index) {
        $.fn.fullpage.moveTo(index);
    }

    return {
        init: init,
        goToSlide: goToSlide,        
    };

})();;
cm.search = function () {

    // callback
    var callback;

    // init
    var init = function (initialValue, searchCallback) {
        callback = searchCallback;
        $("#btnSearch").bind("click", function () {
            searchCallback($("#txtSearch").val());
        });

        $("#txtSearch").val(initialValue);

        $("#txtSearch").keypress(function (event) {
            if (event.which == 13) {
                searchCallback($("#txtSearch").val());
            }
        });
    };

    // setValue
    var setValue = function(value) {
        $("#txtSearch").val(value);
    }

    // fireEvent
    var fireEvent = function() {
        callback($("#txtSearch").val());
    }

    return {        
        init: init,
        setValue: setValue,
        fireEvent: fireEvent
    };
}();;
cm.projectsTags = (function () {

    // defaultProjectUrl
    var defaultProjectUrl = '';

    // viewModel
    var viewModel = {};
    
    // init
    var init = function (url) {
        // defaultProjectUrl
        defaultProjectUrl = url;

        // initViewModel
        initViewModel();

        // initSortViewModel
        initSortViewModel();

        // loadParams
        loadParams();

        // search
        cm.search.init(viewModel.findProjectsParams.Filter, searchTags);

        // loadTags
        loadTags();
    }

    // initViewModel
    var initViewModel = function () {
        // isReady
        viewModel.isReady = ko.observable(false);

        // findProjectsParams
        viewModel.findProjectsParams = ko.toJS(cm.projects.createFindProjectsParams());
        viewModel.findProjectsParams.Filter = '';
        viewModel.findProjectsParams.NumberOfPage = 1;
        viewModel.findProjectsParams.CountPerPage = 32;
        viewModel.findProjectsParams.TagsOrder = 'Popularity';

        // Sorting
        viewModel.SortViewModel = cm.createSortOrderViewModel();

        viewModel.SortViewModel.selectedSortValue.subscribe(function (val) {
            sortOrderChanged(val);
        });

        // Paged Grid
        viewModel.paginationOptions = new cm.PaginationOptions();
        viewModel.paginationOptions.pageSize = 32;
        viewModel.pagedList = new cm.PagedList(viewModel.paginationOptions, pageIndexChanged);
        viewModel.pagedList.currentIndex(1);
        viewModel.pagedGridViewModel = new cm.PagedGridModel(viewModel.pagedList, false);
        viewModel.pagedGridViewModel.isTeamProjectsWithoutFilter = ko.observable(false);
        // applyBindings
        ko.applyBindings(viewModel.pagedGridViewModel, document.getElementById('tags-list-panel'));
        ko.applyBindings(viewModel, document.getElementById('project-tags-list-main-container'));
    }

    // initSortViewModel
    var initSortViewModel = function () {
        viewModel.SortViewModel.addSortItem('Popularity', 'Most Popular');
        viewModel.SortViewModel.addSortItem('Alphabetically', 'By Alphabet');
        
        viewModel.SortViewModel.selectedSortValue('Popularity');
        viewModel.SortViewModel.selectedSortText('Most Popular');

        ko.applyBindings(viewModel.SortViewModel, document.getElementById('tags-order-selector'));
    }

    // loadParams
    var loadParams = function () {
        cm.pageParams.addControllerParam('findProjectsParams', null);

        // findProjectsParams
        var savedFindProjectsParams = cm.pageParams.getParam('findProjectsParams');
        if (savedFindProjectsParams != null) {
            viewModel.findProjectsParams = savedFindProjectsParams;
        }
    }

    // storeProjectsParams
    var storeProjectsParams = function () {
        cm.pageParams.addParam('findProjectsParams', viewModel.findProjectsParams);
    }

    // loadTags
    var loadTags = function () {
        // ajax
        $.ajax({
            url: $("body").data("actionUrls").loadProjectTags,
            type: 'POST',
            cache: false,
            data: JSON.stringify(viewModel.findProjectsParams),
            contentType: "application/json;",
            dataType: 'json',
            beforeSend: function () {
                viewModel.pagedGridViewModel.setCollection([]);
                viewModel.pagedGridViewModel.isReady(false);
            },
            success: function (data) {
                if (!data.status) {
                    alert(data.message);
                    return;
                }

                for (var itemIndex = 0; itemIndex <= data.viewModel.Items.length - 1; itemIndex++) {
                    var loopItem = data.viewModel.Items[itemIndex];

                    loopItem.EventTime = cm.formatDate(loopItem.CreatedAt);
                    loopItem.isActive = ko.observable(false);
                }

                viewModel.pagedGridViewModel.setCollection(data.viewModel.Items);
                viewModel.pagedGridViewModel.setParams(data.viewModel.PageIndex, data.viewModel.TotalRecords);

            },
            complete: function () {
                viewModel.pagedGridViewModel.isReady(true);
            }
        });
    }

    // sortOrderChanged
    var sortOrderChanged = function (val) {
        // findProjectsParams
        var oldFindValue = viewModel.findProjectsParams.Filter.toLowerCase();
        var newFindValue = $('#txtSearch').val().replace(/ /g, '').toLowerCase();

        if (oldFindValue != newFindValue) {
            viewModel.findProjectsParams.NumberOfPage = 1;
        }
        
        viewModel.findProjectsParams.TagsOrder = val;
        viewModel.findProjectsParams.Filter = $('#txtSearch').val();

        // storeParams
        storeProjectsParams();

        // loadTags
        loadTags();
    }

    // pageIndexChanged
    var pageIndexChanged = function (pageIndex) {
        // findProjectsParams
        $('#txtSearch').val(viewModel.findProjectsParams.Filter);
        viewModel.findProjectsParams.NumberOfPage = pageIndex;

        // storeParams
        storeProjectsParams();

        // loadTags
        loadTags();
    }

    // searchTags
    this.searchTags = function (filter) {
        // findProjectsParams
        viewModel.findProjectsParams.Filter = filter;
        viewModel.findProjectsParams.NumberOfPage = 1;

        // storeParams
        storeProjectsParams();

        // loadTags
        loadTags();
    }

    // searchProjectsByTags
    var searchProjectsByTags = function (selectedTag) {
        viewModel.findProjectsParams.FilterTags[0] = {
            Guid: selectedTag.TagGuid,
            Hrid: selectedTag.TagName
        }
        viewModel.findProjectsParams.NumberOfPage = 1;
        viewModel.findProjectsParams.AccessType = -1;

        // findProjectsParams
        cm.pageParams.addControllerParam('findProjectsParams', viewModel.findProjectsParams);

        // window.location
        window.location = defaultProjectUrl;
    }

    // return
    return {
        init: init,
        searchProjectsByTags: searchProjectsByTags
    }

})();;
cm.metrics = (function () {
    var viewModel;
    var model = {
        isRunning: true,
        isReadyContent: false,
        error: '',
        metrics:new Array(),
    };
    var init=function() {
        viewModel = ko.mapping.fromJS(model);
        ko.applyBindings(viewModel, document.getElementById('metrics'));
        calcMetrincs();
    }

    var calcMetrincs = function () {
        $.ajax({
            url: $("body").data("actionUrls").getMetricsAction,
            type: 'GET',
            cache: false,
            success: function (data) {
                viewModel.isRunning(false);
                if (data.status) {
                    var rowNumber = 1;
                    data.metrics.forEach(function (metric) {
                        
                        viewModel.metrics.push({
                            rowNumber: ko.observable(rowNumber),
                            displayName: ko.observable(metric.DisplayName),
                            Value: ko.observable(metric.Value),
                        });
                        rowNumber++;
                    });
                    viewModel.isReadyContent(true);
                } else {
                    viewModel.error(data.error);
                }
            },
            error: function (x, status, error) {
                viewModel.isRunning(false);
                viewModel.error(error);
            }
        });
    }

    return { init:init }
})();;
cm.hubs = (function () {
    var pagedGridViewModel = null;
    var findHubsParams = null;

    // init
    function init(pageSize) {
        // creating parameters used in search
        findHubsParams = createFindHubsParams(pageSize);

        // load stored params
        loadSearchParameters(findHubsParams);

        // subscribe on change sort mode
        findHubsParams.SortViewModel.selectedSortValue.subscribe(function () {
            findHubs(1);
        });

        // initTabs
        initTabs();
        
        // Search
        cm.search.init(findHubsParams.Filter(), function (filterProjName) {
            findHubsParams.Filter(filterProjName);
            findHubs(1);
        });

        // Grid
        var paginationOptions = new cm.PaginationOptions();
        paginationOptions.pageSize = pageSize;
        var pagedList = new cm.PagedList(paginationOptions, pageIndexChanges);
        pagedList.currentIndex(findHubsParams.NumberOfPage());
        pagedGridViewModel = new cm.PagedGridModel(pagedList, false, 'template-tile');
        pagedGridViewModel.templateName('template-tile');
        pagedGridViewModel.isTeamProjectsWithoutFilter = ko.observable(false);
        // add virtual item for new hub creation
        pagedGridViewModel.virtualCreateHubItem = ko.observable(createVirtualCreateHubItem());
        pagedGridViewModel.followUnfollowHub = followUnfollowHub;

        // findHubs
        findHubs();

        // setup bindings
        ko.applyBindings(findHubsParams.SortViewModel, document.getElementById('hub-sort-section'));
        ko.applyBindings(pagedGridViewModel, document.getElementById('hubs-content'));
    }

    // initTabs
    var initTabs = function () {
        $('#page-top-menu-ul li[tabindex="1"]').removeClass('active');
        $('#page-top-menu-ul li[tabindex="2"]').removeClass('active');

        if (findHubsParams.HubType() == 1) {
            $('#page-top-menu-ul li[tabindex="1"]').addClass('active');
        }
        else {
            $('#page-top-menu-ul li[tabindex="2"]').addClass('active');
        }

        // Community
        $('#page-top-menu-ul li[tabindex="1"]').click(function () {
            if (findHubsParams.HubType() != 1) {
                $('#page-top-menu-ul li[tabindex="1"]').addClass('active');
                $('#page-top-menu-ul li[tabindex="2"]').removeClass('active');

                findHubsParams.NumberOfPage(1);
                findHubsParams.HubType(1);
                findHubs(1);
            }
        });

        // Commercial
        $('#page-top-menu-ul li[tabindex="2"]').click(function () {
            if (findHubsParams.HubType() != 0) {
                $('#page-top-menu-ul li[tabindex="1"]').removeClass('active');
                $('#page-top-menu-ul li[tabindex="2"]').addClass('active');

                findHubsParams.NumberOfPage(1);
                findHubsParams.HubType(0);
                findHubs(1);
            }
        });
    }

    // createFindHubsParams
    var createFindHubsParams = function (pageSize) {
        var filter = new Object();
        filter.Filter = ko.observable('');
        filter.OrderByField = ko.observable('ProjectCount');
        filter.AccessType = ko.observable(0);
        filter.OwnerType = ko.observable(0);
        filter.CountPerPage = ko.observable(pageSize);
        filter.NumberOfPage = ko.observable(1);
        filter.HubType = ko.observable(1);

        // init sort ViewModel
        filter.SortViewModel = cm.createSortOrderViewModel();
        filter.SortViewModel.addSortItem(0, "Contains Most Projects");
        filter.SortViewModel.addSortItem(1, "Most Followed");

        filter.SortViewModel.setOderByValue(0);

        filter.HubSortOrder = ko.computed(function () {
            return filter.SortViewModel.selectedSortValue();
        });

        return filter;
    };

    // storeSearchParameters
    var storeSearchParameters = function () {
        if (!findHubsParams) {
            findHubsParams = createFindHubsParams();
        }

        var storedHubsParams = new Object;

        storedHubsParams.Filter = findHubsParams.Filter();
        storedHubsParams.OrderByField = findHubsParams.OrderByField();
        storedHubsParams.AccessType = findHubsParams.AccessType();
        storedHubsParams.OwnerType = findHubsParams.OwnerType();
        storedHubsParams.NumberOfPage = findHubsParams.NumberOfPage();
        storedHubsParams.HubType = findHubsParams.HubType();
        storedHubsParams.HubSortOrder = findHubsParams.HubSortOrder();

        cm.pageParams.addControllerParam('findHubsParams', storedHubsParams);
    }

    // loadSearchParameters
    var loadSearchParameters = function () {
        var storedHubsParams = cm.pageParams.getControllerParam('findHubsParams');
        
        if (storedHubsParams) {
            findHubsParams.Filter(storedHubsParams.Filter);
            findHubsParams.OrderByField(storedHubsParams.OrderByField);
            findHubsParams.AccessType(storedHubsParams.AccessType);
            findHubsParams.OwnerType(storedHubsParams.OwnerType);
            findHubsParams.NumberOfPage(storedHubsParams.NumberOfPage);
            findHubsParams.HubType(storedHubsParams.HubType);
            
            findHubsParams.SortViewModel.setOderByValue(storedHubsParams.HubSortOrder);
        }
    }

    // findHubs
    var findHubs = function () {
        storeSearchParameters();

        var jsonFiler = ko.toJSON(findHubsParams);
        
        $.ajax({
            url: $("body").data("actionUrls").findHubsAction,
            type: 'POST',
            contentType: "application/json;",
            cache: true,
            traditional: false,
            data: jsonFiler,
            beforeSend: function () {
                pagedGridViewModel.setCollection([]);
                pagedGridViewModel.setParams(0, 0);
                pagedGridViewModel.isReady(false);
            },
            success: function (data) {
                if (!data.status) {
                    alert(data.message);
                    return;
                }

                var model = data.viewModel;

                model.Items.forEach(function (item) {
                    item.Follows = ko.observable(item.Follows);
                    item.FollowersCount = ko.observable(item.FollowersCount);
                });

                pagedGridViewModel.setCollection(model.Items);
                pagedGridViewModel.setParams(model.PageIndex, model.TotalRecords);

                // tooltips
                $('[data-toggle="tooltip"]').tooltip();
            },
            complete: function () {
                pagedGridViewModel.isReady(true);
            }
        });
    }

    // pageIndexChanges
    var pageIndexChanges = function(newPageIndex) {
        findHubsParams.NumberOfPage(newPageIndex);

        findHubs();
    }

    // createVirtualCreateHubItem
    function createVirtualCreateHubItem()
    {
        return {
            Description: '',
            Guid: '00000000-0000-0000-0000-000000000000',
            ImageUrl: '/Content/Images/Hubs/add-hub.png',
            Name: '',
            ProjectGuids: Array[0],
            ViewUrl: '',
            Virtual: true
        };
    }

    // followUnfollowHub
    function followUnfollowHub(hub) {
        if (hub.Follows() === false) {
            hub.FollowersCount(hub.FollowersCount() + 1);
            cm.notifications.addFollowData(cm.consts.hubObjectKindId, hub.Guid, function () { updateFollowingStatus(hub); });
        } else {
            hub.FollowersCount(hub.FollowersCount() - 1);
            cm.notifications.removeFollowData(cm.consts.hubObjectKindId, hub.Guid, function () { updateFollowingStatus(hub); });
        }
    }

    // updateFollowingStatus
    function updateFollowingStatus(hub)
    {
        cm.notifications.getFollowStatus(cm.consts.hubObjectKindId, hub.Guid, function (data) {
            hub.Follows(data.Follow);
        });
    }

    // return
    return {
        init: init
    };
})();;
cm.hubManager = (function () {
    var viewModel = {};

    function init(bindingElement, hubGuid, mainImageUrl, imageDialogDiv) {

        var projectMainImage = new HubMainImage(hubGuid, imageDialogDiv);
        projectMainImage.editable(true);
        projectMainImage.imageUrl(mainImageUrl);

        viewModel.projectMainImage = projectMainImage;

        //setup bindings
        ko.applyBindings(viewModel, bindingElement);
    }


    return {
        init: init
    };
})();;
cm.hubDetailsManager = (function () {
    var viewModel = {};

    // init
    function init(hub) {
        viewModel.Follows = ko.observable(hub.Follows);
        viewModel.FollowersCount = ko.observable(hub.FollowersCount);
        viewModel.ProjectsCount = ko.observable(hub.ProjectsCount);
        viewModel.followUnfollowHub = followUnfollowHub;
        viewModel.hubGuid = hub.Guid;

        //setup bindings
        ko.applyBindings(viewModel, document.getElementById('hub-caption'));
        ko.applyBindings(viewModel, document.getElementById('hub-page-toolbar'));
    }

    // followUnfollowHub
    function followUnfollowHub() {
        if (viewModel.Follows() === false) {
            cm.notifications.addFollowData(cm.consts.hubObjectKindId, viewModel.hubGuid, function () { updateFollowingStatus(); });
        } else {
            cm.notifications.removeFollowData(cm.consts.hubObjectKindId, viewModel.hubGuid, function () { updateFollowingStatus(); });
        }
    }

    // updateFollowingStatus
    function updateFollowingStatus() {
        cm.notifications.getFollowStatus(cm.consts.hubObjectKindId, viewModel.hubGuid, function (data) {
            viewModel.Follows(data.Follow);

            if (data.Follow) {
                viewModel.FollowersCount(viewModel.FollowersCount() + 1);
            } else {
                viewModel.FollowersCount(viewModel.FollowersCount() - 1);
            }
        });
    }

    // return
    return {
        init: init
    };
})();;
function HubMainImage(hubId, uploadDiv, removeDiv, imageUrl) {

    var self = this;

    this.imageUrl = ko.observable(imageUrl);
    this.hubId = hubId;
    this.editable = ko.observable(false);
    this.errorMessage = ko.observable();
    this.uploadDiv = uploadDiv;
    this.removeDiv = removeDiv;
};

HubMainImage.prototype.showUploadImageForm = function () {

    var self = this;
    var url = $("body").data("actionUrls").getUploadHubMainImageForm;

    $.ajax({
        url: url + '?hubId=' + this.hubId + '&formContainerId=' + self.uploadDiv[0].id,
        type: 'GET',
        success: function (form) {
            self.uploadDiv.html(form);

            cm.preparePopupValidation("uploadImageForm");
            self.uploadDiv.modal({ keyboard: false, backdrop: 'static' });

            self.uploadDiv.on('hide.bs.modal', function (e) {
                var dialogResult = self.uploadDiv.data('data-uploadresult');

                if (dialogResult) {
                    var result = JSON.parse(dialogResult);
                    //Update image
                    self.imageUrl(result.Url);
                    $('#MainImageId').val(result.Id); 
                    $('#MainImageUrl').val(result.Url);
                }

                self.uploadDiv.html("");
            });
        },
        error: function (data) {
            data.responseText = '{"ErrorMessage":"An unexpected error has occurred. Please contact the system administrator."}';
        }
    });
}

HubMainImage.prototype.RemoveImage = function (url) {
    var self = this;
    $('#errorMessageDeleteDialog').css('display', 'none');

    $("#mainImageDeleteDialogDiv").modal({ keyboard: false, backdrop: 'static' });

    $('#mainImageDeleteDialogDivOkButton').click(function () {


        $.ajax({
            url: url,
            suppressErrors: true,
            type: "POST",
            traditional: true,
            data: {
                hubId: self.hubId
            },
            beforeSend: function () {
                cm.pleaseWait.show();
            },
            success: function (data) {
                cm.pleaseWait.hide();

                $('#mainImageDeleteDialogDiv').modal('hide');
                self.imageUrl(undefined);
                $('#MainImageId').val(undefined);
                $('#MainImageUrl').val(undefined);
            },
            complete: function (data) {
                cm.pleaseWait.hide();
            },
            error: function (jqXhr) {

                $('#errorMessageDeleteDialog').text('An unexpected error has occurred. Please contact the system administrator.');
                $('#errorMessageDeleteDialog').css('display', 'block');

                jqXhr.suppressErrors = true;
            }
        });
    });
};



;
cm.componentDetailsManager = (function () {
    var viewModel = {};

    var constants = {
        componentContentId: "component-details-content",
        confirmToggleScrappedStateModalSelector: "#changeStateComponentDialogDiv",
        tagsAutocompleteInputSelector: "#component-add-tag",
        componentDetailsCommentsId: "component-details-comments"
    };

    /*** Server request calls functions ***/

    function loadRelatedData() {
        $.ajax({
            url: $("body").data("actionUrls").getRelatedData,
            type: "POST",
            cache: false,
            traditional: true,
            data: {
                id: viewModel.RevisionGUID(),
                itemGuid: viewModel.ItemGuid()
            },
            beforeSend: function () {
                viewModel.isReadyRelatedData(false);
            },
            success: function (data) {
                if (!data.status) {
                    alert(data.errorMessage);
                    return;
                }

                var projects = data.viewModel.Projects;
                projects.forEach(function (item) {
                    item.LastModifDateFormatted = cm.getTimeAgoFromMilisecond(item.LastModifDate);
                });

                var revisions = data.viewModel.Revisions;
                revisions.forEach(function (item) {
                    item.LastModifiedAtFormatted = cm.getTimeAgoFromMilisecond(item.LastModifiedAt);
                });

                /*cm.formatDateFullForArray(projects, "LastModifDate");
                cm.formatDateFullForArray(revisions, "LastModifiedAt");*/

                viewModel.projects = ko.mapping.fromJS(projects);
                viewModel.revisions = ko.mapping.fromJS(revisions);

                viewModel.modelImages(data.viewModel.SmallImageUrls);
            },
            complete: function () {
                ko.applyBindings(viewModel, document.getElementById("componentDetailsRightBar"));
                viewModel.isReadyRelatedData(true);
            }
        });
    }

    /*** end of Server request calls functions ***/

    /*** Managing Following status ***/

    function updateFollowingStatus() {
        cm.notifications.getFollowStatus(cm.consts.componentObjectKindId, viewModel.Guid(), function (data) {
            viewModel.isFollowed(data.Follow);
        });
    }

    function toggleFollow() {
        if (viewModel.isFollowed()) {
            cm.notifications.removeFollowData(cm.consts.componentObjectKindId, viewModel.Guid(), updateFollowingStatus);
        } else {
            cm.notifications.addFollowData(cm.consts.componentObjectKindId, viewModel.Guid(), updateFollowingStatus);
        }
    }

    function toggleVote(currentModel) {
        if (currentModel.CanRate()) {
            cm.votes.add(function(success) {
                if (success) {
                    currentModel.CanRate(false);
                }
            });
        }
    }

    /*** end of Managing Following status ***/

    /*** Managing Favourite status ***/

    function toggleFavourites() {
        var confirmMessage = "Are you sure you want to " + (viewModel.CanDelete() ? "remove" : "add") + " this component " +
            (viewModel.CanDelete() ? "from" : "to") + " Favorites Library?";

        cm.confirm(confirmMessage, function (isConfirmed) {
            if (isConfirmed) {
                $.ajax({
                    url: $("body").data("actionUrls").toggleFavoriteComponent,
                    type: 'POST',
                    cache: false,
                    data: {
                        revisionGuid: viewModel.Guid(),
                        addToLibrary: !viewModel.CanDelete()
                    },
                    beforeSend: function () {
                        cm.pleaseWait.show();
                    },
                    success: function (data) {
                        if (!data.status) {
                            alert(data.message);
                        }

                        if (cm.variables.isRunFromDesktopApp) {
                            if (viewModel.CanDelete()) {
                                window.location.href = 'DXP://IntegratedLibrary:RemoveComponentFromFavoritesLibrary_URL?RevisionGUID=' + viewModel.Guid() + '|IsRemoveFromWeb=True';
                            } else {
                                window.location.href = 'DXP://IntegratedLibrary:AddComponentToFavoritesLibrary_URL?RevisionGUID=' + viewModel.Guid() + '|IsAddFromWeb=True';;
                            }
                        } else {
                            window.location.href =$('body').data('actionUrls').detailsComponent;
                        }
                        
                    },
                    complete: function () {
                        cm.pleaseWait.hide();
                    }
                });
            }


        });
    }

    /*** end of Managing Following status ***/

    /*** Managing Share component ***/

    function shareComponent() {
        cm.shareManager.openModal();
    }

    /*** end of Managing Following status ***/

    /*** Managing Scrapped state ***/

    function toggleScrapped() {
        $.ajax({
            url: $("body").data("actionUrls").changeStateRevision,
            type: "POST",
            cache: false,
            data: {
                revisionGuid: viewModel.Guid(),
                itemGuid: viewModel.ItemGuid(),
                scrap: !viewModel.Scrapped(),

            },
            beforeSend: function () {
                cm.pleaseWait.show();
            },
            success: function (data) {
                if (!data.status) {
                    cm.alert(data.message);
                    return;
                }
                viewModel.Scrapped(data.scrapped);

                viewModel.revisions().forEach(function (revision) {
                    if (revision.RevisionId() == viewModel.RevisionId()) {
                        revision.Scrapped(data.scrapped);
                    }
                });
            },
            complete: function () {
                cm.pleaseWait.hide();
                $(constants.confirmToggleScrappedStateModalSelector).modal("hide");
            }
        });
    }

    /*** end of Managing Scrapped state ***/

    /*** Managing tags ***/

    function processTagsEnterPressed(e) {
        var $tagsinput = $(constants.tagsAutocompleteInputSelector);
        if (e.keyCode == 13) {
            addComponentTag();
        } else {
            $tagsinput.data("newGuid", null);
        }
    }

    function updateTags() {
        var serverTags = ko.toJS(viewModel.tags);

        $.ajax($("body").data("actionUrls").SaveComponentTags, {
            type: "POST",
            data: {
                revisionGuid: viewModel.Guid,
                tagsJson: JSON.stringify(serverTags)
            },
            beforeSend: function () {
                cm.pleaseWait.show();
            },
            success: function (data) {
                if (!data.success) {
                    cm.alert(data.message);
                }

                viewModel.tags.removeAll();

                data.tokens.forEach(function(item) {
                    viewModel.tags.push({
                        Guid: ko.observable(item.Guid),
                        Name: ko.observable(item.Name),
                        IsActive: ko.observable(true),
                        IsHighlited: ko.observable(false)
                    });
                });
            },
            complete: function () {
                cm.pleaseWait.hide();
                // dxp command to update tags in CM app
                if (cm.variables.isRunFromDesktopApp) {
                    var url = "dxp://IntegratedLibrary:ChangeTags_URL?Action=Refresh|ComponentRevisionGUID=" + viewModel.Guid();
                    document.location.href = url;
                }
            }
        });
    }

    function addComponentTag() {
        $("#component-add-tag").autocomplete('close');

        // Reseting Highlited Tags
        for (var tagIndex = 0; tagIndex <= viewModel.tags().length - 1; tagIndex++) {
            var loopTag = viewModel.tags()[tagIndex];
            loopTag.IsHighlited(false);
        }

        var $tagsinput = $(constants.tagsAutocompleteInputSelector);
        $tagsinput.autocomplete("close");
        var newTagName = $tagsinput.val().trim();

        // Limitations
        var tagError = null;
        if (newTagName.length > 30) {
            tagError = "Tag name cannot contain more than 30 symbols!";
        } else if (viewModel.tags().length >= 15) {
            tagError = "Number of tags exceeded max number of 15!";
        }

        viewModel.TagError(tagError);

        if (!tagError) {
            // Checking Duplicates and Highlighting one
            for (tagIndex = 0; tagIndex <= viewModel.tags().length - 1; tagIndex++) {
                loopTag = viewModel.tags()[tagIndex];
                if (loopTag.Name().toLowerCase() == newTagName.toLowerCase()) {
                    loopTag.IsHighlited(true);
                    return;
                }
            }

            // Adding new Tag
            if (newTagName) {
                viewModel.tags.push({
                    Guid: ko.observable(''),
                    Name: ko.observable(newTagName),
                    IsActive: ko.observable(true),
                    IsHighlited: ko.observable(false)
                });

                updateTags();
            }

            $tagsinput.val("");
        }
    }

    function tagsAutocomplete(request, response) {
        $.ajax($("body").data("actionUrls").GetAvailableTokens, {
            type: "GET",
            async: false,
            data: {
                term: $(constants.tagsAutocompleteInputSelector).val()
            },
            success: function (data) {
                response(data.tokens);
            }
        });
    }

    /*** end of Managing tags ***/

    /*** Managing price info ***/

    function getComputedPriceByColumn(offer, colNumber) {
        return ko.computed(function () {
            var currency = offer.currency;
            if (currency != undefined) {
              var pricesByCurrency = offer.prices.filter(p => p.currency() === currency);
                for (var i = 0; i < pricesByCurrency.length; i++) {
                    var price = pricesByCurrency[i];

                    var fromQ = price.quantity();
                    var toQ = Number.MAX_VALUE;
                    if (i < pricesByCurrency.length - 1)
                      toQ = pricesByCurrency[i + 1].quantity();

                    if (colNumber >= fromQ && colNumber < toQ) {
                      return parseFloat(pricesByCurrency[i].price());
                    }
                }
                return "...";
            } else {
                return "...";
            }
        });
    }

    function processCiivaInfo() {
        viewModel.componentInfo.authorizedOffers = ko.computed(function () {
            return new Array();
        });

        viewModel.componentInfo.noAuthorizedOffers = ko.computed(function () {
            return new Array();
        });

        //var ciivaComponentInfo = JSON.parse(viewModel.ExternalComponentInfo());
        viewModel.componentInfo.isViewData = true;
        var priceInfo = [];
        viewModel.componentInfo.offers = prepareCiivaOffers(priceInfo);

        viewModel.componentInfo.authorizedOffers = ko.computed(function () {
            return viewModel.componentInfo.offers.filter(function (item) {
                return item.isAutorized === true;
            });
        });

        viewModel.componentInfo.noAuthorizedOffers = ko.computed(function () {
            return viewModel.componentInfo.offers.filter(function (item) {
                return item.isAutorized === false;
            });
        });
    };

    function prepareCiivaOffers(priceInfo) {
        var result = new Array();
        priceInfo.forEach(function (supplierItem) {

            var offer = {
                supplierName: supplierItem.Supplier.SupplierName,
                isAutorized: supplierItem.Supplier.IsAuthorised,
                stock: null,
                supplierSku: supplierItem.Supplier.SupplierPartNumber,
                supplierUrl: supplierItem.Supplier.DetailUrl,
                currency: new Array(),
                price_1: new Array(),
                price_10: new Array(),
                price_50: new Array(),
                price_100: new Array(),
                price_1000: new Array(),
                price_10000: new Array(),
            };
            if (supplierItem.Stocks.length > 0) {
                offer.stock = getCiivaLastStockInfo(supplierItem.Stocks[0]);
            }
            setPriceColumns(offer, supplierItem.Price);
            result.push(offer);
        });
        return result;

        function setPriceColumns(offer, price) {
            var emptyValue = "-";

            if (offer.stock != null) {
                for (var i = 0; i < offer.stock.length; i++) {
                    if (price != null) {
                        var priceBreaksByRegion = price.PriceBreaks.filter(function (priceBreak) {
                            return priceBreak.LocationName == offer.stock[i].LocationName;
                        });
                        if (priceBreaksByRegion.length > 0) {
                            var currency = priceBreaksByRegion[0].CurrencyName;
                            offer.currency.push(currency);
                            offer.price_1.push(getPriceByColumnNumber(priceBreaksByRegion, 1));
                            offer.price_10.push(getPriceByColumnNumber(priceBreaksByRegion, 10));
                            offer.price_50.push(getPriceByColumnNumber(priceBreaksByRegion, 50));
                            offer.price_100.push(getPriceByColumnNumber(priceBreaksByRegion, 100));
                            offer.price_1000.push(getPriceByColumnNumber(priceBreaksByRegion, 1000));
                            offer.price_10000.push(getPriceByColumnNumber(priceBreaksByRegion, 10000));
                        } else {
                            addEmptyRowOfPrice();
                        }
                    } else {
                        addEmptyRowOfPrice();
                    }
                }

            } else {
                addEmptyRowOfPrice();
            }

            function addEmptyRowOfPrice() {
                offer.currency.push(emptyValue);
                offer.price_1.push(emptyValue);
                offer.price_10.push(emptyValue);
                offer.price_50.push(emptyValue);
                offer.price_100.push(emptyValue);
                offer.price_1000.push(emptyValue);
                offer.price_10000.push(emptyValue);
            }
            function getPriceByColumnNumber(priceBreaks, columnNumber) {
                var prices = priceBreaks.filter(function (priceBreak) {
                    return priceBreak.MinQuantity == columnNumber;
                });
                if (prices.length > 0) {
                    return prices[0].UnitPrice;
                }
                return emptyValue;
            }
        }

        function getCiivaLastStockInfo(stock) {
            var stockInfos = new Array();
            for (var i = 0; i < stock.StockItems.length; i++) {
                var stockDisplayItem = {
                    LocationName: stock.StockItems[i].LocationName,
                    DisplayName: stock.StockItems[i].LocationName + ": " + stock.StockItems[i].Quantity
                };
                stockInfos.push(stockDisplayItem);
            };
            return stockInfos;
        }
  }

    function convertNexarSellerToOctopartOffer(part) {
      var result = [];
      for (var i = 0; i <= part.sellers().length - 1; i++) {
        var seller = part.sellers()[i];
        for (var j = 0; j <= seller.offers().length - 1; j++) {
          var offer = seller.offers()[j];
          var newOffer = {
            in_stock_quantity: offer.inventoryLevel(),
            prices: offer.prices(),
            is_authorized: seller.isAuthorized(),
            name: seller.company.name(),
            sku: offer.sku(),
            product_url: offer.clickUrl(),
            currency: offer.prices().length > 0 ? offer.prices()[0].currency() : ""
          };
          result.push(newOffer);
        }
      }

      return result;
    }

    function convertNexarToOctopart(part) {
      return {
        offers: convertNexarSellerToOctopartOffer(part),
        datasheets: [
          {
            mimetype: part.bestDatasheet.mimeType(),
            url: part.bestDatasheet.url(),
          }
        ],
      };
    }

    function processOctapartInfo() {
      if (viewModel.ExternalComponentInfo == null) {
            return;
        }

        viewModel.componentInfo = convertNexarToOctopart(viewModel.ExternalComponentInfo);

        if (viewModel.componentInfo.offers.length > 0) {

            viewModel.componentInfo.offers.forEach(function (offer) {

                offer.stock = ko.computed(function () {
                    if (offer.in_stock_quantity == -1) {
                        return "Non-stocked";
                    }
                    if (offer.in_stock_quantity == -2) {
                        return "Yes";
                    }
                    if (offer.in_stock_quantity == -3) {
                        return "Unknown";
                    }
                    if (offer.in_stock_quantity == -4) {
                        return "RFQ";
                    }
                    return cm.formatNumber(offer.in_stock_quantity);
                });

                offer.supplierName = ko.computed(function () {
                    return offer.name;
                });
                offer.supplierSku = ko.computed(function () {
                    return offer.sku;
                });
                offer.supplierUrl = ko.computed(function () {
                    return offer.product_url;
                });

                offer.price_1 = getComputedPriceByColumn(offer, 1);
                offer.price_10 = getComputedPriceByColumn(offer, 10);
                offer.price_50 = getComputedPriceByColumn(offer, 50);
                offer.price_100 = getComputedPriceByColumn(offer, 100);
                offer.price_1000 = getComputedPriceByColumn(offer, 1000);
                offer.price_10000 = getComputedPriceByColumn(offer, 10000);
            });

            viewModel.componentInfo.authorizedOffers = ko.computed(function () {
                return viewModel.componentInfo.offers.filter(function (item) {
                    return item.is_authorized === true;
                });
            });

            viewModel.componentInfo.noAuthorizedOffers = ko.computed(function () {
                return viewModel.componentInfo.offers.filter(function (item) {
                    return item.is_authorized === false;
                });
            });

            viewModel.componentInfo.isViewData = true;
        } else {
            viewModel.componentInfo.isViewDataEmpty = true;
        }

        viewModel.componentInfo.datasheets.forEach(function (sheet) {
            var fileType = sheet.mimetype.replace("application/", "");
            var sheetFileTypeImageSrc = "defaultSheet.png";
            if (fileType == "pdf" || fileType == "doc" || fileType == "zip") {
                sheetFileTypeImageSrc = fileType + "Sheet.png";
            }

            sheet.imageSrc = ko.computed(function() {
                return "/Content/Images/Component/" + sheetFileTypeImageSrc;
            });

            if (cm.variables.isRunFromDesktopApp) {
                sheet.url = cm.getNewTabDxpUrl(sheet.url);
            }
        });
    }

    function processPriceInfo() {
        viewModel.componentInfo = {
            offers: [],
            authorizedOffers: [],
            noAuthorizedOffers: [],
            datasheets: [],
            isViewData: false,
            isViewDataEmpty: true
        };

        if (viewModel.isOctopart()) {
            processOctapartInfo();
        } else if (viewModel.isCiiva()) {
            processCiivaInfo();
        }

        $("#page-top-menu-nav").toggleClass("hide", !viewModel.isOctopart());
    };

    /*** end of Managing price info ***/

    /*** Initialization functions ***/

    function openModal($modal) {
        if ($modal.length) {
            $modal.modal({ keyboard: false, backdrop: "static" });
            $modal.modal("show");
        }
    }

    function initComments(id) {
        cm.comments = new CmComments();
        cm.comments.init(id, cm.consts.componentEventSourceId, function(newCount) {
            viewModel.CommentsCount(newCount);
        });
        cm.comments.loadComments();

        cm.votes.init(id, cm.consts.componentEventSourceId);
    }

    function initShare() {
        cm.shareManager.init({
            entityId: viewModel.RevisionGUID(),
            title: viewModel.Comment(),
            description: viewModel.Description(),
            entityTypeName: "component",
            url: $("body").data("actionUrls").shareComponentByEmail
        });
    }

    function initTagsSection() {
        viewModel.addComponentTag = function () {
            addComponentTag();
        };

        viewModel.addComponentTagKeyPress = function (data, event) {
            processTagsEnterPressed(event);
            return true;
        };

        viewModel.removeComponentTag = function (currentTag) {
            viewModel.tags.remove(currentTag);
            updateTags();
        };

        $(constants.tagsAutocompleteInputSelector).autocomplete({
            source: tagsAutocomplete
        });
    }

    function init(componentData) {
        viewModel = ko.mapping.fromJS(componentData);

        viewModel.isReady = ko.observable(false);
        viewModel.isReadyRelatedData = ko.observable(false);
        viewModel.isFollowed = ko.observable(false);
        viewModel.showAllImages = ko.observable(false);
        viewModel.showAllSheets = ko.observable(false);
        viewModel.displayMode = ko.observable();

        viewModel.projects = ko.observableArray([]);
        viewModel.revisions = ko.observableArray([]);
        viewModel.modelImages = ko.observableArray([]);

        // Used In Projects Title
        var projectsTitle = 'Project';
        if (viewModel.ProjectsCount() == 0 || viewModel.ProjectsCount() > 1) projectsTitle += 's';
        projectsTitle = viewModel.ProjectsCount() + ' ' + projectsTitle;

        var releasesTitle = 'Release';
        if (viewModel.ProjectReleasesCount() == 0 || viewModel.ProjectReleasesCount() > 1) releasesTitle += 's';
        releasesTitle = viewModel.ProjectReleasesCount() + ' ' + releasesTitle;

        viewModel.usedInProjectsTitle = projectsTitle + ' / ' + releasesTitle;

        // Parameters
        viewModel.parameters = ko.observableArray(viewModel.Parameters());
        viewModel.parametersMiddleIndex = Math.floor(viewModel.parameters().length / 2);
        if (viewModel.parameters().length % 2 != 0) viewModel.parametersMiddleIndex += 1; 

        // Tags
        viewModel.tags = ko.observableArray(viewModel.Tags());

        for (var tagIndex = 0; tagIndex <= viewModel.tags().length - 1; tagIndex++) {
            var loopTag = viewModel.tags()[tagIndex];
            loopTag.IsHighlited = ko.observable(false);
        }

        viewModel.TagError = ko.observable();

        //
        viewModel.isOctopart = ko.observable(viewModel.ComponentSupplierType() == "0");
        viewModel.isCiiva = ko.observable(viewModel.ComponentSupplierType() == "1");
        viewModel.isCustom = ko.observable(viewModel.ComponentSupplierType() == "2");

        viewModel.CreatedDateFormatted = ko.computed(function () {
            var createdAtDate = new Date(viewModel.CreatedAt());
            return cm.formatDateFull(createdAtDate);
        }, this);
        viewModel.IsVisibleAddRemoveFavorite = ko.computed(function () {

            return !viewModel.Scrapped() || viewModel.CanDelete();
        }, this);

        viewModel.edit = function () {
            window.location.href = 'DXP://UnifiedComponent:CreateNewComponent_URL?ComponentID=' + viewModel.SupplierComponentId() + '&ParentRevisionGUID=' + viewModel.RevisionGUID() + '&SessionID=' + cm.sessionId() + '&SupplierName=' + viewModel.SupplierName() + '&ItemGuid=' + viewModel.ItemGuid();
        }

        viewModel.shareComponent = function () {
            shareComponent();
        }

        viewModel.toggleFollow = function () {
            toggleFollow();
        }

        viewModel.processVote = function (currentModel) {
            toggleVote(currentModel);
        }

        viewModel.toggleScrapped = function () {
            toggleScrapped();
        }

        viewModel.openScrapModal = function () {
            $(constants.confirmToggleScrappedStateModalSelector).modal({ keyboard: false, backdrop: "static" });
        }

        viewModel.toggleFavourites = function () {
            toggleFavourites();
        }

        viewModel.showRevisionsModal = function () {
            openModal($("#revisionsModal"));
        }

        viewModel.showProjectsModal = function () {
            openModal($("#projectsModal"));
        }

        cm.notifications.getFollowStatus(cm.consts.componentObjectKindId, viewModel.Guid(), function (data) {
            viewModel.isFollowed(data.Follow);
        });

        initComments(viewModel.RevisionGUID());
        initShare();
        initTagsSection();
        processPriceInfo();

        //setup bindings
        ko.applyBindings(viewModel, document.getElementById(constants.componentContentId));
        ko.applyBindings(viewModel, document.getElementById(constants.componentDetailsCommentsId));
        viewModel.isReady(true);

        loadRelatedData();
    }

    /*** end of Initialization functions ***/

    return {
        init: init
    };
})();;
cm.shareManager = function () {

    // IE Workaround
    if (/MSIE|Trident/.test(window.navigator.userAgent)) {
        (function ($) {
            var proto = $.fn.modal.Constructor.prototype;
            proto.enforceFocus = function () {
                $(document)
                  .off('focusin.bs.modal')  /* Guard against infinite focus loop */
                  .on('focusin.bs.modal', $.proxy(function (e) {
                      if (this.$element[0] !== e.target &&
                         !this.$element.has(e.target).length &&
                          /* Adding this final condition check is the only real change */
                         !$(e.target).closest('.global-zeroclipboard-container').length
                      ) {
                          this.$element.focus();
                      }
                  }, this));
            };
        })(window.jQuery);
    }

    var $modal;
    var $modalShareByEmail;
    var $modalEmbedded;
    var $embeddedCopyLink;
    var viewModel;

    function openModal() {
        if ($modal.length) {
            $modal.modal({ keyboard: false, backdrop: "static" });
            $modal.modal("show");
        }
    }

    function toggleEmailError(isInitialization, error) {
        var hasError = !!error;
        var $form = $(".project-share-by-email");
        var $errorLabel = $(".js-project-share-by-email-error");
        $form.toggleClass("hide", !isInitialization && !hasError);
        $(".js-project-share-by-email-success").toggleClass("hide", isInitialization || hasError);
        $errorLabel.toggleClass("hide", !hasError);
        $("label", $errorLabel).text(error);
    }

    function openEmailForm(e) {
        e.preventDefault();
        if ($modalShareByEmail.length) {
            var $form = $(".project-share-by-email");
            $form.validate().resetForm();
            toggleEmailError(true);
            var fields = $("input:not([type='hidden']), textarea", $form);
            $.each(fields, function(index, field) {
                var $field = $(field);
                var initValue = $field.data("init-value");
                $field.val(initValue);
            });
            $modalShareByEmail.modal({ keyboard: false, backdrop: "static" });
            $modalShareByEmail.modal("show");
        }
    }

    function openSharePopup(e) {
        e.preventDefault();
        var $this = $(this);
        var href = $this.attr("href");
        var $parent = $this.closest(".project-share-btns");
        var entityTitle = $parent.attr("entity-name");
        var entityTypeName = $parent.attr("entity-type-name");
        href = href + "Check out this " + entityTitle + " " + entityTypeName + " at @CircuitMaker";


        window.open(href, "share", "height=436, width=626, top=" + ($(window).height() / 2 - 218) + ", left=" + ($(window).width() / 2 - 313));
    }

    // openEmbeddedModal
    var openEmbeddedModal = function() {
        $modalEmbedded.modal({ keyboard: false, backdrop: "static" });
        document.getElementById('embedded-modal-copy-message').style.visibility = 'hidden';
    }

    function sendEmail(e) {
        e.preventDefault();
        var url = viewModel.url();
        var $form = $(this).closest("form");
        if ($form.valid()) {
            $.ajax(url, {
                type: "POST",
                data: $form.serializeArray(),
                success: function (response) {
                    if (response && response.status) {
                        toggleEmailError(false);
                    } else {
                        toggleEmailError(false, response ? response.errorMessage : "Unknown Server error");
                    }
                },
                error: function(response, status, error) {
                    toggleEmailError(false, error || "Unknown Server error");
                }
            });
        }
    }

    function initCopyToClipboard() {
        // ZeroClipboard config
        ZeroClipboard.config({
            swfPath: self.location.protocol + "//" + self.location.host + "/Scripts/ZeroClipboard/ZeroClipboard.swf",
            trustedDomains: ["*"]
        });

        // Share Modal
        var $copyBtn = $(".js-share-project-copy-btn");
        var clip = new ZeroClipboard($copyBtn);

        // Embedded Modal
        var embeddedZeroClipboard = new ZeroClipboard($embeddedCopyLink);
    }

    function init(shareModel) {
        // exit if sharing is not rendered (in Desktop mode)
        if (document.getElementById("shareModal") == null)
            return;

        viewModel = ko.mapping.fromJS(shareModel);
        viewModel.subject = ko.observable("Circuit Maker - Share " + viewModel.title() + " " + viewModel.entityTypeName());
        viewModel.isProject = ko.computed(function () {
            return viewModel.entityTypeName() == "project";
        }, this);

        // Modals
        $modal = $("#projectShareModal");
        $modalShareByEmail = $("#projectShareByEmailModal");
        $modalEmbedded = $('#embedded-modal-container');
        $embeddedCopyLink = $("#embedded-modal-copy-link");

        // Events
        $modal.on("click", ".js-share-btn", openSharePopup);
        $modal.on("click", "#js-share-btn-embedded", openEmbeddedModal);
        $modalShareByEmail.on("click", ".js-share-btn-send-email", sendEmail);
        if (cm.variables.isAuth) {            
            $modal.on("click", ".js-share-btn-email", openEmailForm);
        }
        else
        {
            $modal.on("click", ".js-share-btn-email", function () { cm.signInUpDialog.dialogSlideIn(); });
        }

        // Clipboard
        initCopyToClipboard();

        // Email form validation
        $('.project-share-by-email').validate({
            rules: {
                toEmail: {
                    required: true,
                    email: true,
                    maxlength: 50
                },
                fromName: {
                    required: true,
                    maxlength: 100
                },
                subject: {
                    required: true,
                    maxlength: 100
                },
                body: {
                    maxlength: 500
                }
            }
        });

        // binding
        ko.applyBindings(viewModel, document.getElementById("shareModal"));
    }

    return {
        init: init,
        openModal: openModal
    };
}();;
cm.rightColumn = (function() {

    var rightColumnViewModel = null;

    // init
    var init = function(options) {
        // initViewModel
        initViewModel(options);

        // loadData
        loadData();
    }

    // initViewModel
    var initViewModel = function(options) {
        rightColumnViewModel = {};

        // Latest Activities
        rightColumnViewModel.latestActivities = {};
        rightColumnViewModel.latestActivities.show = ko.observable(options.LatestActivities);
        rightColumnViewModel.latestActivities.header = ko.observable('Latest Activities');
        rightColumnViewModel.latestActivities.eventSource = ko.observable('');
        rightColumnViewModel.latestActivities.items = ko.observableArray([]);
        rightColumnViewModel.latestActivities.haveMore = ko.observable(false);
        rightColumnViewModel.latestActivities.isReady = ko.observable(false);

        if (options.LatestActivitiesHeader != undefined) rightColumnViewModel.latestActivities.header(options.LatestActivitiesHeader);
        if (options.LatestActivitiesEventSource != undefined) rightColumnViewModel.latestActivities.eventSource(options.LatestActivitiesEventSource);
        // News
        rightColumnViewModel.news = {};
        rightColumnViewModel.news.show = ko.observable(options.Blog);
        rightColumnViewModel.news.items = ko.observableArray([]);
        rightColumnViewModel.news.totalRecords = ko.observable(0);
        rightColumnViewModel.news.isReady = ko.observable(false);

        // Popular Categories
        rightColumnViewModel.popularCategories = {};
        rightColumnViewModel.popularCategories.show = ko.observable(options.PopularCategories);
        rightColumnViewModel.popularCategories.items = ko.observableArray([]);
        rightColumnViewModel.popularCategories.totalRecords = ko.observable(0);
        rightColumnViewModel.popularCategories.isReady = ko.observable(false);

        // Popular Users
        rightColumnViewModel.popularUsers = {}; // PopularUsersViewAll: false,
        rightColumnViewModel.popularUsers.show = ko.observable(options.PopularUsers);
        rightColumnViewModel.popularUsers.viewAll = ko.observable(true);
        rightColumnViewModel.popularUsers.items = ko.observableArray([]);
        rightColumnViewModel.popularUsers.totalRecords = ko.observable(0);
        rightColumnViewModel.popularUsers.isReady = ko.observable(false);

        if (options.PopularUsersViewAll != undefined) rightColumnViewModel.popularUsers.viewAll(options.PopularUsersViewAll);

        // New Users
        rightColumnViewModel.newUsers = {};
        rightColumnViewModel.newUsers.show = ko.observable(options.NewUsers);
        rightColumnViewModel.newUsers.items = ko.observableArray([]);
        rightColumnViewModel.newUsers.totalRecords = ko.observable(0);
        rightColumnViewModel.newUsers.isReady = ko.observable(false);

        // Popular Projects
        rightColumnViewModel.popularProjects = {};
        rightColumnViewModel.popularProjects.show = ko.observable(options.PopularProjects);
        rightColumnViewModel.popularProjects.items = ko.observableArray([]);
        rightColumnViewModel.popularProjects.totalRecords = ko.observable(0);
        rightColumnViewModel.popularProjects.isReady = ko.observable(false);

        // Popular Components
        rightColumnViewModel.popularComponents = {};
        rightColumnViewModel.popularComponents.show = ko.observable(options.PopularComponents);
        rightColumnViewModel.popularComponents.items = ko.observableArray([]);
        rightColumnViewModel.popularComponents.totalRecords = ko.observable(0);
        rightColumnViewModel.popularComponents.isReady = ko.observable(false);
        rightColumnViewModel.popularComponents.sortOption = options.PopularComponentsSortOptions;

        // Forum Activity
        rightColumnViewModel.forumActivity = {};
        rightColumnViewModel.forumActivity.show = ko.observable(options.ForumActivity);
        rightColumnViewModel.forumActivity.items = ko.observableArray([]);
        rightColumnViewModel.forumActivity.totalRecords = ko.observable(0);
        rightColumnViewModel.forumActivity.isReady = ko.observable(false);

        ko.applyBindings(rightColumnViewModel, document.getElementById('right-column'));
    }

    // loadData
    var loadData = function () {
        var option = dataOptions();

        $.ajax({
            url: $("body").data("actionUrls").rightColumnGetData,
            type: "POST",
            cache: false,
            traditional: true,
            data: option,
            beforeSend: function() {
                getDataBeforeSend();
            },
            success: function(data) {
                if (!data.success) {
                    console.log(data.message);
                    return;
                }

                var model = data.viewModel;

                // Last Activities
                if (rightColumnViewModel.latestActivities.show()) {
                    model.Notifications.forEach(function (notification) {
                        notification.EventTimeFormatted = ko.computed(function () {
                            return cm.getTimeAgoFromMilisecond(notification.EventTime);
                        }, this);
                    });

                    rightColumnViewModel.latestActivities.items(model.Notifications);
                    rightColumnViewModel.latestActivities.haveMore(model.NotificationsHaveMore);

                    ko.applyBindings(rightColumnViewModel.latestActivities, document.getElementById('section-latest-activities'));
                }

                //// Blog
                //if (rightColumnViewModel.news.show()) {
                //    model.Blogs.forEach(function (blogItem) {
                //        blogItem.PostTimeAgo = cm.getTimeAgoFromMilisecond(blogItem.SubmitDate);
                //    });

                //    rightColumnViewModel.news.items(model.Blogs);
                //    rightColumnViewModel.news.totalRecords(model.BlogsTotalCount);

                //    ko.applyBindings(rightColumnViewModel.news, document.getElementById('section-latest-news'));
                //}

                // Popular Categories
                if (rightColumnViewModel.popularCategories.show()) {
                    rightColumnViewModel.popularCategories.items(model.PopularCategories);
                    rightColumnViewModel.popularCategories.totalRecords(model.PopularCategoriesTotalCount);

                    ko.applyBindings(rightColumnViewModel.popularCategories, document.getElementById('section-popular-categories'));
                }

                // Popular Users
                if (rightColumnViewModel.popularUsers.show()) {
                    rightColumnViewModel.popularUsers.items(model.PopularUsers);
                    rightColumnViewModel.popularUsers.totalRecords(model.PopularUsersTotalCount);

                    ko.applyBindings(rightColumnViewModel.popularUsers, document.getElementById('section-popular-users'));
                }

                // New Users
                if (rightColumnViewModel.newUsers.show()) {
                    model.NewUsers.forEach(function (item) {
                        item.CreatedAt = cm.getTimeAgoFromMilisecond(item.CreatedAt);
                    });

                    rightColumnViewModel.newUsers.items(model.NewUsers);
                    rightColumnViewModel.newUsers.totalRecords(model.NewUsersTotalCount);

                    ko.applyBindings(rightColumnViewModel.newUsers, document.getElementById('section-new-users'));
                }

                // Popular Projects
                if (rightColumnViewModel.popularProjects.show()) {
                    rightColumnViewModel.popularProjects.items(model.PopularProjects);
                    rightColumnViewModel.popularProjects.totalRecords(model.PopularProjectsTotalCount);

                    ko.applyBindings(rightColumnViewModel.popularProjects, document.getElementById('section-popular-projects'));
                }

                // Popular Components
                if (rightColumnViewModel.popularComponents.show()) {
                    model.PopularComponents.forEach(function (item) {
                        item.CreatedAt = cm.getTimeAgoFromMilisecond(item.CreatedAt);
                    });

                    rightColumnViewModel.popularComponents.items(model.PopularComponents);
                    rightColumnViewModel.popularComponents.totalRecords(model.PopularComponentsTotalCount);

                    ko.applyBindings(rightColumnViewModel.popularComponents, document.getElementById('section-popular-components'));
                }

                // Forum Activity
                if (rightColumnViewModel.forumActivity.show()) {
                    model.ForumItems.forEach(function (item) {
                        item.PostTimeAgo = cm.getTimeAgoFromMilisecond(item.PostDateTime);
                    });
                    
                    rightColumnViewModel.forumActivity.items(model.ForumItems);
                    rightColumnViewModel.forumActivity.totalRecords(model.ForumItemsTotalCount);

                    ko.applyBindings(rightColumnViewModel.forumActivity, document.getElementById('section-forum-activity'));
                }
            },
            complete: function() {
                getDataComplete();
            }
        });
    }

    // dataOptions
    var dataOptions = function() {
        return {
            LatestActivities: rightColumnViewModel.latestActivities.show(),
            LatestActivitiesEventSource: rightColumnViewModel.latestActivities.eventSource(),
            Blog: rightColumnViewModel.news.show(),
            PopularCategories: rightColumnViewModel.popularCategories.show(),
            PopularUsers: rightColumnViewModel.popularUsers.show(),
            NewUsers: rightColumnViewModel.newUsers.show(),
            PopularProjects: rightColumnViewModel.popularProjects.show(),
            PopularComponents: rightColumnViewModel.popularComponents.show(),
            PopularComponentsSortOptions: rightColumnViewModel.popularComponents.sortOption,
            ForumActivity: rightColumnViewModel.forumActivity.show()
        }
    }

    // beforeGetData
    var getDataBeforeSend = function() {
        rightColumnViewModel.latestActivities.isReady(false);
        rightColumnViewModel.news.isReady(false);
        rightColumnViewModel.popularCategories.isReady(false);
        rightColumnViewModel.popularUsers.isReady(false);
        rightColumnViewModel.newUsers.isReady(false);
        rightColumnViewModel.popularProjects.isReady(false);
        rightColumnViewModel.popularComponents.isReady(false);
    }

    // getDataComplete
    var getDataComplete = function() {
        rightColumnViewModel.latestActivities.isReady(rightColumnViewModel.latestActivities.show());
        rightColumnViewModel.news.isReady(rightColumnViewModel.news.show());
        rightColumnViewModel.popularCategories.isReady(rightColumnViewModel.popularCategories.show());
        rightColumnViewModel.popularUsers.isReady(rightColumnViewModel.popularUsers.show());
        rightColumnViewModel.newUsers.isReady(rightColumnViewModel.newUsers.show());
        rightColumnViewModel.popularProjects.isReady(rightColumnViewModel.popularProjects.show());
        rightColumnViewModel.popularComponents.isReady(rightColumnViewModel.popularComponents.show());
        rightColumnViewModel.forumActivity.isReady(rightColumnViewModel.forumActivity.show());
    }

    // return
    return {
        init: init
    }

})();;
cm.links = function() {

    // viewModel
    var viewModel;

    // init
    var init = function (options) {
        // initViewModel
        initViewModel(options);

        // initEvents
        initEvents();
    }

    // initViewModel
    var initViewModel = function (options) {
        viewModel = {}
        viewModel.options = options;
        viewModel.linkIndex = 0;
        viewModel.editedLink = ko.observable(null);

        // links
        viewModel.links = ko.observableArray([]);
        for (var arrayIndex = 0; arrayIndex <= options.links.length - 1; arrayIndex++) {
            var loopLink = options.links[arrayIndex];

            viewModel.links.push({
                Index: viewModel.externalLinkIndex,
                Guid: ko.observable(loopLink.Guid),
                Title: ko.observable(loopLink.Title),
                Url: ko.observable(loopLink.Url),
                State: ko.observable(loopLink.State)
            });

            viewModel.externalLinkIndex++;
        }

        // event handlers
        viewModel.editLink = editLink;
        viewModel.removeLink = removeLink;
        viewModel.addUpdateLink = addUpdatelLink;
        viewModel.editLinkCancel = editLinkCancel;

        // functions
        viewModel.getLinkPostName = function (index) {
            return options.postName.replace('index', index);
        }

        // applyBindings
        ko.applyBindings(viewModel, document.getElementById('edit-links-content'));
    }

    // initEvents
    var initEvents = function() {
        $('#text-link-title').keyup(function (event) {
            if (viewModel.options.linkInputKeyup != null) {
                viewModel.options.linkInputKeyup(event);
            } else {
                linkInputKeyup(event);
            }
        });

        $('#text-link-url').keyup(function (event) {
            if (viewModel.options.linkInputKeyup != null) {
                viewModel.options.linkInputKeyup(event);
            } else {
                linkInputKeyup(event);
            }
        });

        $('#text-link-title').keypress(function (event) {
            if (viewModel.options.linkInputKeypress != null) {
                viewModel.options.linkInputKeypress(event);
            } else {
                linkInputKeypress(event);
            }
        });

        $('#text-link-url').keypress(function (event) {
            if (viewModel.options.linkInputKeypress != null) {
                viewModel.options.linkInputKeypress(event);
            } else {
                linkInputKeypress(event);
            }
        });

        $('#text-link-url').blur(function (event) {
            if (viewModel.options.validateUrl != null) {
                viewModel.options.validateUrl(event);
            } else {
                validateUrl(event);
            }
        });
    }

    // linkInputKeyup
    var linkInputKeyup = function (event) {
        var linkTitle = $('#text-link-title').val().trim();
        var linkUrl = $('#text-link-url').val().trim();

        if (linkTitle == '' || linkUrl == '') $('#link-add-update').attr('disabled', 'disabled');
        else $('#link-add-update').removeAttr('disabled');
    }

    // linkInputKeypress
    var linkInputKeypress = function (event) {
        if (event.which == 13) {
            validateUrl(document.getElementById("text-link-url"));
            addUpdateExternalLink();
        }

        return true;
    }

    // validateUrl
    var validateUrl = function () {
        var $linkUrl = $('#text-link-url');

        var url = $linkUrl.val();
        if (!url) return;
        var pattern = /^(([Hh][Tt][Tt][Pp]|[Hh][Tt][Tt][Pp][Ss]|[Ff][Tt][Pp]):\/\/)/;
        if (!pattern.test(url)) {
            url = "http://" + url;
            $linkUrl.val(url);
        }
    }

    // editLink
    var editLink = function (linkToEdit) {
        viewModel.editedLink(linkToEdit);

        $('#text-link-title').val(linkToEdit.Title());
        $('#text-link-url').val(linkToEdit.Url());
    }

    // addUpdatelLink
    var addUpdatelLink = function () {
        var $linkTitle = $('#text-link-title');
        var $linkUrl = $('#text-link-url');

        if (!$linkTitle.valid() || !$linkTitle.val() ||
            !$linkUrl.valid() || !$linkUrl.val() ||
            !!$linkUrl.data("busy")) return;

        $('#text-link-url').data("busy", true);

        if (viewModel.editedLink() == null) addLink();
        else updateLink();
    }

    // addLink
    var addLink = function () {
        var linkTitle = $('#text-link-title').val();
        var linkUrl = $('#text-link-url').val();

        var newLink = {
            Index: viewModel.linkIndex,
            Guid: ko.observable(''),
            Title: ko.observable(linkTitle),
            Url: ko.observable(linkUrl),
            State: ko.observable(1),
        };
        viewModel.links.push(newLink);

        viewModel.linkIndex++;

        completeAddingLink();
    }

    // updateLink
    var updateLink = function () {
        var linkTitle = $('#text-link-title').val();
        var linkUrl = $('#text-link-url').val();

        viewModel.editedLink().Title(linkTitle);
        viewModel.editedLink().Url(linkUrl);
        if (viewModel.editedLink().State() == 0) {
            viewModel.editedLink().State(cm.ObjectState.Updated);
        }

        viewModel.editedLink(null);

        completeAddingLink();
    }

    // completeAddingLink
    var completeAddingLink = function () {
        var $linkTitle = $('#text-link-title');
        var $linkValue = $('#text-link-url');

        $linkValue.data("busy", false);
        $linkTitle.val("");
        $linkValue.val("");

        viewModel.editedLink(null);
    }

    // editLinkCancel
    var editLinkCancel = function () {
        completeAddingLink();
    }

    // removeLink
    var removeLink = function (linkToRemove) {
        if (linkToRemove.State() == 1)
            viewModel.externalLinks.remove(function (item) {
                return item.Index === linkToRemove.Index;
            });
        else {
            linkToRemove.State(3);
        }
    }

    // return
    return {
        init: init
    }
};
cm.signInUpDialog = (function () {

    var activeTab = 1;
    var modalObject = null;

    // init
    var init = function (sliderOptions) {
        // Processing Options
        processOptions(sliderOptions);

        // General
        $('#sign-in-up-slider-button').click(function () {
            if ($('#sign-in-up-popup-content').width() > 0) {
                dialogSlideOut();
            } else {
                dialogSlideIn();
            }
        });

        // Modal
        modalObject = $('#sign-in-up-dialog').modal({ keyboard: false, backdrop: true, show: false });
        
        // Sign Up form
        cm.signUp.init({
            marketoFormId: cm.consts.marketoFormId,
            onSuccess: function () {
                $('#firstRegistrationStepResult').on('hidden.bs.modal', function () {
                    dialogSlideOut();
                });
            }
        });

        // Tabs initialization
        initTabs();

        // Showing active tabs
        showTab(activeTab);
    }

    // processOptions
    var processOptions = function (sliderOptions) {
        // Null check
        if (sliderOptions == null) return;
        
        // Active Tab
        if (sliderOptions.activeTab) {
            activeTab = sliderOptions.activeTab;
        }
    }

    // dialogSlideIn
    var dialogSlideIn = function (tabToShow) {
        // Show Tab by tabToShow index
        if (tabToShow) showTab(tabToShow);

        // Modal
        modalObject.modal('show');

        // Animation
        $('#sign-in-up-slider-button').html('Sign Up&nbsp;<img src="/Content/Images/open-group-wall.png">');
        $('#sign-in-up-popup-content').stop().animate({ width: 480 }, 500);
    }

    // dialogSlideOut
    var dialogSlideOut = function () {
        $('#sign-in-up-popup-content').stop().animate({ width: 0 }, 500, function () {
            $('#sign-in-up-slider-button').html('Sign Up');
            modalObject.modal('hide');
        });
    }

    // Start: Tabs

    // initTabs
    var initTabs = function () {
        $('#sign-in-up-dialog-tabs > ul > li[tabindex="1"]').click(function () {
            showTab(1);
        });

        $('#sign-in-up-dialog-tabs > ul > li[tabindex="2"]').click(function () {
            showTab(2);
        });
    }

    // resetTabs
    var resetTabs = function() {
        $('#tab-sign-in').css('display', 'none');
        $('#tab-sign-up').css('display', 'none');

        $('#sign-in-up-dialog-tabs > ul > li[tabindex="1"]').removeClass("active");
        $('#sign-in-up-dialog-tabs > ul > li[tabindex="2"]').removeClass("active");
    }

    // showTab
    var showTab = function (tabIndex) {
        if (tabIndex == activeTab) return;

        // Reseting tabs to default state
        resetTabs();

        // Showing required tab
        if (tabIndex == 2) {
            $('#sign-in-up-dialog-tabs > ul > li[tabindex="2"]').addClass("active");
            $('#tab-sign-in').css('display', 'block');
        } else {
            $('#sign-in-up-dialog-tabs > ul > li[tabindex="1"]').addClass("active");
            $('#tab-sign-up').css('display', 'block');
        }

        // Setting active tab index to requested tab index
        activeTab = tabIndex;
    }

    // End: Tabs

    // Start: Login

    // onSuccessLogin
    var onSuccessLogin = function (data) {
        // Form Html
        $("#login-content").html(data.view);
        
        if (data.status == true) {
            // Hiding Sign In/Up dialog
            dialogSlideOut();

            // Reloading current page
            location.reload(true);
        } else {
            // Validation
            cm.preparePopupValidation("formLogin");

            // Error message
            var errorMessage = data.errorMessage;
            if (!errorMessage) { errorMessage = "Unknown server error."; }

            // Html changes related to error message
            $('.alert').html('<p>' + errorMessage + '</p>').show();
            $("#formLogin").addClass("login-error");
        }
    };

    // End: Login

    // Start: Sign Up
    
    // End: Sign Up

    // return
    return {
        init: init,
        dialogSlideIn: dialogSlideIn,
        dialogSlideOut: dialogSlideOut,
        // Tabs
        showTab: showTab,
        // Login
        onSuccessLogin: onSuccessLogin,
    }
})();;
cm.DxpCommandModal = function(options) {

    // viewModel
    var viewModel = {};
    viewModel.elementId = options.elementId;
    viewModel.cookieName = options.cookieName;
    viewModel.title = options.title;
    viewModel.content = options.content;
    viewModel.dxpCommand = options.dxpCommand;

    // initialization
    $('#' + viewModel.elementId).on('click', function () {
        if (cm.variables.isRunFromDesktopApp) {
            okClicked();
            return;
        }

        // perform ok click if do not show was previously selected
        var doNotShow = cm.getCookiesValue(viewModel.cookieName);
        if (doNotShow) {
            okClicked();
            return;
        }

        showModal();
    });

    // Do not show check-box
    $('#dxp-command-modal-do-not-show-control').unbind("click");
    $('#dxp-command-modal-do-not-show-control').bind('click', function () {
        var checked = $('#dxp-command-modal-do-not-show-check-box').prop("checked");
        if (checked) {
            $('#dxp-command-modal-do-not-show-check-box').prop('value', 'false');
            $('#dxp-command-modal-do-not-show-check-box').prop("checked", false);
            $('#dxp-command-modal-do-not-show-checked-image').css('display', 'none');
        } else {
            $('#dxp-command-modal-do-not-show-check-box').prop('value', 'true');
            $('#dxp-command-modal-do-not-show-check-box').prop("checked", true);
            $('#dxp-command-modal-do-not-show-checked-image').css('display', 'block');
        }
    });

    // showModal
    var showModal = function () {
        // Header and Content
        $('#dxp-command-modal-header-content').html(viewModel.title);
        $('#dxp-command-modal-body-content').html(viewModel.content);

        // OK click handler
        $("#dxp-command-modal-ok").unbind("click");
        $("#dxp-command-modal-ok").bind("click", function () { okClicked(); });

        $('#dxp-command-modal-container').modal({ keyboard: false, backdrop: 'static' });
    }

    // okClicked
    var okClicked = function () {
        // setting do not show cookie
        var doNotShow = $('#dxp-command-modal-do-not-show-check-box').prop("checked");
        if (doNotShow) {
            cm.setCookiesValue(viewModel.cookieName, "true", 365);
        }

        // hiding modal
        $('#dxp-command-modal-container').modal('hide');

        // perform action
        if (!cm.variables.isAuth) {
            cm.signInUpDialog.dialogSlideIn();
            return;
        }

        window.location = viewModel.dxpCommand;
    }
};
