From 216f08b86676fac64827d0cfe77fee941839e898 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lucas=20Ple=C3=9F?= Date: Sun, 4 Sep 2022 13:10:03 +0200 Subject: [PATCH] removed database view and unused dependencies --- public/js/vendor/ink-all.min.js | 43 - public/js/vendor/ink-ui.min.js | 22 - public/js/vendor/ink.formvalidator.js | 715 ------ public/js/vendor/ink.min.js | 22 - public/js/vendor/notification.js | 52 - public/js/vendor/rickshaw.js | 3388 ------------------------- views/database.jade | 45 - views/layout.jade | 4 - 8 files changed, 4291 deletions(-) delete mode 100644 public/js/vendor/ink-all.min.js delete mode 100644 public/js/vendor/ink-ui.min.js delete mode 100644 public/js/vendor/ink.formvalidator.js delete mode 100644 public/js/vendor/ink.min.js delete mode 100644 public/js/vendor/notification.js delete mode 100644 public/js/vendor/rickshaw.js delete mode 100644 views/database.jade diff --git a/public/js/vendor/ink-all.min.js b/public/js/vendor/ink-all.min.js deleted file mode 100644 index 7f51605..0000000 --- a/public/js/vendor/ink-all.min.js +++ /dev/null @@ -1,43 +0,0 @@ - -(function(){"use strict";if(!("Ink"in window)){var e={Ink:"INK_PATH"in window?window.INK_PATH:window.location.protocol+"//js.ink.sapo.pt/Ink/"},n={},t=[],r={},i=[],o=function(e){if("object"!=typeof e)return!1;for(var n in e)if(e.hasOwnProperty(n))return!1;return!0};window.Ink={_checkPendingRequireModules:function(){var e,t,r,o,a,u,s=[];for(e=0,t=i.length;t>e;++e)if(r=i[e]){for(o in r.left)r.left.hasOwnProperty(o)&&(a=n[o],a&&(r.args[r.left[o]]=a,delete r.left[o],--r.remaining));if(r.remaining>0)s.push(r);else{if(u=r.cb,!u)continue;delete r.cb,u.apply(!1,r.args)}}i=s,i.length>0&&setTimeout(function(){Ink._checkPendingRequireModules()},0)},_modNameToUri:function(n){if(-1!==n.indexOf("/"))return n;var t=n.replace(/_/g,".").split("."),r=t.shift(),i=e[r];return i||(i="./"+r+"/"),[i,t.join("/"),"/lib.js"].join("")},getPath:function(n){return e[n||"Ink"]},setPath:function(n,t){e[n]=t},loadScript:function(e){var n=document.createElement("script");n.setAttribute("type","text/javascript"),n.setAttribute("src",this._modNameToUri(e));var t=document.getElementsByTagName("head");t.length>0&&t[0].appendChild(n)},namespace:function(e,n){if(!e||!e.length)return null;for(var t,r=e.split("."),i=window,o=0,a=r.length;a>o;++o)i[r[o]]=i[r[o]]||{},t=i,i=i[r[o]];return n?[t,r[o-1]]:i},getModule:function(e,t){var r=t?[e,"_",t].join(""):e;return n[r]},createModule:function(e,i,a,u){var s=function(){if("string"!=typeof e)throw Error("module name must be a string!");if(!("number"==typeof i||"string"==typeof i&&i.length>0))throw Error("version number missing!");var a=[e,"_",i].join("");if(!n[a]){delete r[a],delete r[e];var s=Array.prototype.slice.call(arguments),c=u.apply(window,s);t.push(a),"object"==typeof c?c._version=i:"function"==typeof c&&(c.prototype._version=i,c._version=i);var l,f=0===e.indexOf("Ink.");f&&(l=Ink.namespace(e,!0)),n[a]=c,f&&(l[0][l[1]+"_"+i]=c),n[e]=c,f&&o(l[0][l[1]])&&(l[0][l[1]]=c),this&&Ink._checkPendingRequireModules()}};this.requireModules(a,s)},requireModules:function(e,t){var o,a,u,s,c;if(a=e.length,u={args:Array(a),left:{},remaining:a,cb:t},"object"!=typeof e||void 0===e.length)throw Error("Dependency list should be an array!");if("function"!=typeof t)throw Error("Callback should be a function!");for(o=0;a>o;++o)s=e[o],c=n[s],c?(u.args[o]=c,--u.remaining):(r[s]||(r[s]=!0,Ink.loadScript(s)),u.left[s]=o);u.remaining>0?i.push(u):t.apply(!0,u.args)},getModulesLoadOrder:function(){return t.slice()},getModuleScripts:function(){var e=this.getModulesLoadOrder();return e.unshift("Ink_1"),e=e.map(function(e){var n=e.indexOf(".");-1===n&&(n=e.indexOf("_"));var t=e.substring(0,n);e=e.substring(n+1);var r=Ink.getPath(t);return[''].join("")}),e.join("\n")},bind:function(e,n){var t=Array.prototype.slice.call(arguments,2);return function(){var r=Array.prototype.slice.call(arguments),i=t.concat(r);return e.apply(n,i)}},bindMethod:function(e,n){return this.bind.apply(this,[e[n],e].concat([].slice.call(arguments,2)))},bindEvent:function(e,n){var t=Array.prototype.slice.call(arguments,2);return function(r){var i=t.slice();return i.unshift(r||window.event),e.apply(n,i)}},i:function(e){if(!e)throw Error("Ink.i => id or element must be passed");return"string"==typeof e?document.getElementById(e):e},s:function(e,n){if(Ink.Dom===void 0||Ink.Dom.Selector===void 0)throw Error("This method requires Ink.Dom.Selector");return Ink.Dom.Selector.select(e,n||document)[0]||null},ss:function(e,n){if(Ink.Dom===void 0||Ink.Dom.Selector===void 0)throw Error("This method requires Ink.Dom.Selector");return Ink.Dom.Selector.select(e,n||document)},extendObj:function(e,n){if(arguments.length>2&&(n=Ink.extendObj.apply(this,[].slice.call(arguments,1))),n)for(var t in n)Object.prototype.hasOwnProperty.call(n,t)&&(e[t]=n[t]);return e}}}})(); -Ink.createModule("Ink.Net.Ajax","1",[],function(){"use strict";var Ajax=function(t,e){this.init(t,e)};Ajax.globalOptions={parameters:{},requestHeaders:{}};var xMLHttpRequestWithCredentials="XMLHttpRequest"in window&&"withCredentials"in new XMLHttpRequest;return Ajax.prototype={init:function(t,e){if(!t)throw Error("WRONG_ARGUMENTS_ERR");var n=Ink.extendObj({asynchronous:!0,method:"POST",parameters:null,timeout:0,delay:0,postBody:"",contentType:"application/x-www-form-urlencoded",requestHeaders:null,onComplete:null,onSuccess:null,onFailure:null,onException:null,onHeaders:null,onCreate:null,onInit:null,onTimeout:null,sanitizeJSON:!1,evalJS:!0,xhrProxy:"",cors:!1,debug:!1,useCredentials:!1,signRequest:!1},Ajax.globalOptions);if(e&&"object"==typeof e){if(n=Ink.extendObj(n,e),"object"==typeof e.parameters)n.parameters=Ink.extendObj(Ink.extendObj({},Ajax.globalOptions.parameters),e.parameters);else if(null!==e.parameters){var s=this.paramsObjToStr(Ajax.globalOptions.parameters);s&&(n.parameters=e.parameters+"&"+s)}n.requestHeaders=Ink.extendObj({},Ajax.globalOptions.requestHeaders),n.requestHeaders=Ink.extendObj(n.requestHeaders,e.requestHeaders)}this.options=n,this.safeCall("onInit");var r=document.createElementNS?document.createElementNS("http://www.w3.org/1999/xhtml","a"):document.createElement("a");r.href=t,this.url=t,this.isHTTP=r.protocol.match(/^https?:$/i)&&!0,this.requestHasBody=0>n.method.search(/^get|head$/i),this.isCrossDomain=this.isHTTP&&"widget:"!==location.protocol&&"object"!=typeof window.widget?location.protocol!==r.protocol||location.host!==r.host:!1,this.options.cors&&(this.isCrossDomain=!1),this.transport=this.getTransport(),this.request()},getTransport:function(){if(!xMLHttpRequestWithCredentials&&this.options.cors&&"XDomainRequest"in window)return this.usingXDomainReq=!0,new XDomainRequest;if("undefined"!=typeof XMLHttpRequest)return new XMLHttpRequest;if("undefined"==typeof ActiveXObject)return null;try{return new ActiveXObject("Msxml2.XMLHTTP")}catch(t){return new ActiveXObject("Microsoft.XMLHTTP")}},setHeaders:function(){if(this.transport)try{var t={Accept:"text/javascript,text/xml,application/xml,application/xhtml+xml,text/html,application/json;q=0.9,text/plain;q=0.8,video/x-mng,image/png,image/jpeg,image/gif;q=0.2,*/*;q=0.1","Accept-Language":navigator.language,"X-Requested-With":"XMLHttpRequest","X-Ink-Version":"1"};if(this.options.cors&&(this.options.signRequest||delete t["X-Requested-With"],delete t["X-Ink-Version"]),this.options.requestHeaders&&"object"==typeof this.options.requestHeaders)for(var e in this.options.requestHeaders)this.options.requestHeaders.hasOwnProperty(e)&&(t[e]=this.options.requestHeaders[e]);this.transport.overrideMimeType&&2005>(navigator.userAgent.match(/Gecko\/(\d{4})/)||[0,2005])[1]&&(t.Connection="close");for(var n in t)t.hasOwnProperty(n)&&this.transport.setRequestHeader(n,t[n])}catch(s){}},paramsObjToStr:function(t){var e,n,s,r,i=[];if("object"!=typeof t)return t;for(s in t)if(t.hasOwnProperty(s))if(r=t[s],"[object Array]"!==Object.prototype.toString.call(r)||isNaN(r.length))i=i.concat([encodeURIComponent(s),"=",encodeURIComponent(r),"&"]);else for(e=0,n=r.length;n>e;e++)i=i.concat([encodeURIComponent(s),"[]","=",encodeURIComponent(r[e]),"&"]);return i.length>0&&i.pop(),i.join("")},setParams:function(){var t=null,e=this.options.parameters;t="object"==typeof e?this.paramsObjToStr(e):""+e,t&&(this.url=this.url.indexOf("?")>-1?this.url.split("#")[0]+"&"+t:this.url.split("#")[0]+"?"+t)},getHeader:function(t){if(this.usingXDomainReq&&"Content-Type"===t)return this.transport.contentType;try{return this.transport.getResponseHeader(t)}catch(e){return null}},getAllHeaders:function(){try{return this.transport.getAllResponseHeaders()}catch(t){return null}},getResponse:function(){var t=this.transport,e={headerJSON:null,responseJSON:null,getHeader:this.getHeader,getAllHeaders:this.getAllHeaders,request:this,transport:t,timeTaken:new Date-this.startTime,requestedUrl:this.url};e.readyState=t.readyState;try{e.responseText=t.responseText}catch(n){}try{e.responseXML=t.responseXML}catch(n){}try{e.status=t.status}catch(n){e.status=0}try{e.statusText=t.statusText}catch(n){e.statusText=""}return e},abort:function(){if(this.transport){clearTimeout(this.delayTimeout),clearTimeout(this.stoTimeout);try{this.transport.abort()}catch(t){}this.finish()}},runStateChange:function(){var t=this.transport.readyState;if(3===t)this.isHTTP&&this.safeCall("onHeaders");else if(4===t||this.usingXDomainReq){if(this.options.asynchronous&&this.options.delay&&this.startTime+this.options.delay>(new Date).getTime())return this.delayTimeout=setTimeout(Ink.bind(this.runStateChange,this),this.options.delay+this.startTime-(new Date).getTime()),void 0;var e,n=this.transport.responseText,s=this.getResponse(),r=this.transport.status;this.isHTTP&&!this.options.asynchronous&&this.safeCall("onHeaders"),clearTimeout(this.stoTimeout),0===r?this.isHTTP?this.safeCall("onException",this.makeError(18,"NETWORK_ERR")):r=n?200:404:304===r&&(r=200);var i=this.usingXDomainReq||r>=200&&300>r,o=this.getHeader("Content-Type")||"";if(this.options.evalJS&&(o.indexOf("application/json")>=0||"force"===this.options.evalJS))try{e=this.evalJSON(n,this.sanitizeJSON),e&&(n=s.responseJSON=e)}catch(a){i&&this.safeCall("onException",a)}if(this.usingXDomainReq&&-1!==o.indexOf("xml")&&"DOMParser"in window){var u;switch(o){case"application/xml":case"application/xhtml+xml":case"image/svg+xml":u=o;break;default:u="text/xml"}var l=(new DOMParser).parseFromString(this.transport.responseText,u);this.transport.responseXML=l,s.responseXML=l}null!==this.transport.responseXML&&null===s.responseJSON&&""!==this.transport.responseXML.xml&&(n=this.transport.responseXML),(r||this.usingXDomainReq)&&(i?this.safeCall("onSuccess",s,n):this.safeCall("onFailure",s,n),this.safeCall("on"+r,s,n)),this.finish(s,n)}},finish:function(t,e){if(t&&this.safeCall("onComplete",t,e),clearTimeout(this.stoTimeout),this.transport){try{this.transport.onreadystatechange=null}catch(n){}"function"==typeof this.transport.destroy&&this.transport.destroy(),this.transport=null}},safeCall:function(t,e){function n(t){setTimeout(function(){throw t.message&&(t.message+="\n"+(t.stacktrace||t.stack||"")),t},1)}if("function"==typeof this.options[t])try{this.options[t].apply(this,[].slice.call(arguments,1))}catch(s){n(s)}else e&&window.Error&&e instanceof Error&&n(e)},setRequestHeader:function(t,e){this.options.requestHeaders||(this.options.requestHeaders={}),this.options.requestHeaders[t]=e},request:function(){if(this.transport){var t=null;this.requestHasBody?(null!==this.options.postBody&&""!==this.options.postBody?(t=this.options.postBody,this.setParams()):null!==this.options.parameters&&""!==this.options.parameters&&(t=this.options.parameters),"object"!=typeof t||t.nodeType?"object"!=typeof t&&null!==t&&(t=""+t):t=this.paramsObjToStr(t),this.options.contentType&&this.setRequestHeader("Content-Type",this.options.contentType)):this.setParams();var e=this.url,n=this.options.method,s=this.isCrossDomain;s&&this.options.xhrProxy&&(this.setRequestHeader("X-Url",e),e=this.options.xhrProxy+encodeURIComponent(e),s=!1);try{this.transport.open(n,e,this.options.asynchronous)}catch(r){return this.safeCall("onException",r),this.finish(this.getResponse(),null)}this.setHeaders(),this.safeCall("onCreate"),this.options.timeout&&!isNaN(this.options.timeout)&&(this.stoTimeout=setTimeout(Ink.bind(function(){this.options.onTimeout&&(this.safeCall("onTimeout"),this.abort())},this),1e3*this.options.timeout)),this.options.useCredentials&&!this.usingXDomainReq&&(this.transport.withCredentials=!0),this.options.asynchronous&&!this.usingXDomainReq?this.transport.onreadystatechange=Ink.bind(this.runStateChange,this):this.usingXDomainReq&&(this.transport.onload=Ink.bind(this.runStateChange,this));try{if(s)throw this.makeError(18,"NETWORK_ERR");this.startTime=(new Date).getTime(),this.transport.send(t)}catch(r){return this.safeCall("onException",r),this.finish(this.getResponse(),null)}this.options.asynchronous||this.runStateChange()}},makeError:function(t,e){if("function"!=typeof Error)return{code:t,message:e};var n=Error(e);return n.code=t,n},isJSON:function(t){return"string"==typeof t&&t?(t=t.replace(/\\./g,"@").replace(/"[^"\\\n\r]*"/g,""),/^[,:{}\[\]0-9.\-+Eaeflnr-u \n\r\t]*$/.test(t)):!1},evalJSON:function(strJSON,sanitize){if(strJSON&&(!sanitize||this.isJSON(strJSON)))try{return"undefined"!=typeof JSON&&JSON.parse!==void 0?JSON.parse(strJSON):eval("("+strJSON+")")}catch(e){throw Error("ERROR: Bad JSON string...")}return null}},Ajax.load=function(t,e){return new Ajax(t,{method:"GET",onSuccess:function(t){e(t.responseText,t)}})},Ajax.ping=function(t,e){return new Ajax(t,{method:"HEAD",onSuccess:function(t){"function"==typeof e&&e(t)}})},Ajax}); -Ink.createModule("Ink.Net.JsonP","1",[],function(){"use strict";var t=function(t,e){this.init(t,e)};return t.prototype={init:function(t,e){if(this.options=Ink.extendObj({onSuccess:void 0,onFailure:void 0,failureObj:{},timeout:10,params:{},callbackParam:"jsoncallback",internalCallback:"_cb",randVar:!1},e||{}),this.randVar=this.options.randVar!==!1?this.options.randVar:parseInt(1e5*Math.random(),10),this.options.internalCallback+=this.randVar,this.uri=t,"function"==typeof this.options.onComplete&&(this.options.onSuccess=this.options.onComplete),"string"!=typeof this.uri)throw"Please define an URI";if("function"!=typeof this.options.onSuccess)throw"please define a callback function on option onSuccess!";Ink.Net.JsonP[this.options.internalCallback]=Ink.bind(function(){window.clearTimeout(this.timeout),delete window.Ink.Net.JsonP[this.options.internalCallback],this._removeScriptTag(),this.options.onSuccess(arguments[0])},this),this._addScriptTag()},_addParamsToGet:function(t,e){var n,s,i,o=-1!==t.indexOf("?"),r=[t];for(s in e)e.hasOwnProperty(s)&&(o?n="&":(n="?",o=!0),i=e[s],"number"==typeof i||i||(i=""),r=r.concat([n,s,"=",encodeURIComponent(i)]));return r.join("")},_getScriptContainer:function(){var t=document.getElementsByTagName("head");if(0===t.length){var e=document.getElementsByTagName("script");return e[0]}return t[0]},_addScriptTag:function(){this.options.params[this.options.callbackParam]="Ink.Net.JsonP."+this.options.internalCallback,this.options.params.rnd_seed=this.randVar,this.uri=this._addParamsToGet(this.uri,this.options.params);var t=document.createElement("script");t.type="text/javascript",t.src=this.uri;var e=this._getScriptContainer();e.appendChild(t),this.timeout=setTimeout(Ink.bind(this._requestFailed,this),1e3*this.options.timeout)},_requestFailed:function(){delete Ink.Net.JsonP[this.options.internalCallback],this._removeScriptTag(),"function"==typeof this.options.onFailure&&this.options.onFailure(this.options.failureObj)},_removeScriptTag:function(){for(var t,e,n=document.getElementsByTagName("script"),s=0,i=n.length;i>s;++s)if(t=n[s],e=t.getAttribute("src")||t.src,null!==e&&e===this.uri)return t.parentNode.removeChild(t),void 0}},t}); -Ink.createModule("Ink.Dom.Css",1,[],function(){"use strict";var t={addRemoveClassName:function(t,e,n){return n?this.addClassName(t,e):(this.removeClassName(t,e),void 0)},addClassName:function(t,e){t=Ink.i(t),t&&e&&(t.classList!==void 0?t.classList.add(e):this.hasClassName(t,e)||(t.className+=(t.className?" ":"")+e))},removeClassName:function(t,e){if(t=Ink.i(t),t&&e)if(t.classList!==void 0)t.classList.remove(e);else{if(t.className===void 0)return!1;var n=t.className,s=RegExp("(^|\\s+)"+e+"(\\s+|$)");n=n.replace(s," "),n=n.replace(/^\s+/,"").replace(/\s+$/,""),t.className=n}},setClassName:function(t,e,n){this.addRemoveClassName(t,e,n||!1)},hasClassName:function(t,e){if(t=Ink.i(t),t&&e){if(t.classList!==void 0)return t.classList.contains(e);if(t.className===void 0)return!1;var n=t.className;if(n.length===void 0)return!1;if(n.length>0){if(n===e)return!0;var s=RegExp("(^|\\s)"+e+"(\\s|$)");if(s.test(n))return!0}}return!1},blinkClass:function(t,e,n,s){t=Ink.i(t),this.addRemoveClassName(t,e,!s),setTimeout(Ink.bind(function(){this.addRemoveClassName(t,e,s)},this),Number(n)||100)},toggleClassName:function(t,e,n){return t&&e&&t.classList!==void 0?(t=Ink.i(t),null!==t&&t.classList.toggle(e),!0):(n!==void 0?n===!0?this.addClassName(t,e):n===!1&&this.removeClassName(t,e):this.hasClassName(t,e)?this.removeClassName(t,e):this.addClassName(t,e),void 0)},setOpacity:function(t,e){if(t=Ink.i(t),null!==t){var n=1;isNaN(Number(e))||(n=0>=e?0:1>=e?e:100>=e?e/100:1),t.style.opacity!==void 0?t.style.opacity=n:t.style.filter="alpha(opacity:"+(0|100*n)+")"}},_camelCase:function(t){return t?t.replace(/-(\w)/g,function(t,e){return e.toUpperCase()}):t},getStyle:function(t,e){if(t=Ink.i(t),null!==t){e="float"===e?"cssFloat":this._camelCase(e);var n=t.style[e];if(!window.getComputedStyle||n&&"auto"!==n)!n&&t.currentStyle&&(n=t.currentStyle[e],"auto"!==n||"width"!==e&&"height"!==e||(n=t["offset"+e.charAt(0).toUpperCase()+e.slice(1)]+"px"));else{var s=window.getComputedStyle(t,null);n=s?s[e]:null}if("opacity"===e)return n?parseFloat(n,10):1;if("borderTopWidth"===e||"borderBottomWidth"===e||"borderRightWidth"===e||"borderLeftWidth"===e){if("thin"===n)return"1px";if("medium"===n)return"3px";if("thick"===n)return"5px"}return"auto"===n?null:n}},setStyle:function(t,e){if(t=Ink.i(t),null!==t)if("string"==typeof e)t.style.cssText+="; "+e,-1!==e.indexOf("opacity")&&this.setOpacity(t,e.match(/opacity:\s*(\d?\.?\d*)/)[1]);else for(var n in e)e.hasOwnProperty(n)&&("opacity"===n?this.setOpacity(t,e[n]):"float"===n||"cssFloat"===n?t.style.styleFloat===void 0?t.style.cssFloat=e[n]:t.style.styleFloat=e[n]:t.style[n]=e[n])},show:function(t,e){t=Ink.i(t),null!==t&&(t.style.display=e?e:"")},hide:function(t){t=Ink.i(t),null!==t&&(t.style.display="none")},showHide:function(t,e){t=Ink.i(t),t&&(t.style.display=e?"":"none")},toggle:function(t,e){t=Ink.i(t),null!==t&&(e!==void 0?e===!0?this.show(t):this.hide(t):"none"===t.style.display?this.show(t):this.hide(t))},_getRefTag:function(t){if(t.firstElementChild)return t.firstElementChild;for(var e=t.firstChild;e;e=e.nextSibling)if(1===e.nodeType)return e;return null},appendStyleTag:function(t,e,n){n=Ink.extendObj({type:"text/css",force:!1},n||{});var s,i,r=document.getElementsByTagName("style"),o=!1,a=!0;for(s=0,i=r.length;i>s;s++)o=r[s].innerHTML,o.indexOf(t)>=0&&(a=!1);if(a){var l=document.createElement("style"),u=document.getElementsByTagName("head")[0],c=!1,h="";l.type=n.type,h+=t+" {",h+=e,h+="} ",l.styleSheet!==void 0?l.styleSheet.cssText=h:l.appendChild(document.createTextNode(h)),n.force?u.appendChild(l):(c=this._getRefTag(u),c&&u.insertBefore(l,c))}},appendStylesheet:function(t,e){e=Ink.extendObj({media:"screen",type:"text/css",force:!1},e||{});var n,s=document.createElement("link"),i=document.getElementsByTagName("head")[0];s.media=e.media,s.type=e.type,s.href=t,s.rel="Stylesheet",e.force?i.appendChild(s):(n=this._getRefTag(i),n&&i.insertBefore(s,n))},_loadingCSSFiles:{},_loadedCSSFiles:{},appendStylesheetCb:function(t,e){if(!t)return e(t);if(this._loadedCSSFiles[t])return e(t);var n=this._loadingCSSFiles[t];if(n)return n.push(e);this._loadingCSSFiles[t]=[e];var s=document.createElement("link");s.type="text/css",s.rel="stylesheet",s.href=t;var i=document.getElementsByTagName("head")[0];i.appendChild(s);var r=document.createElement("img");r.onerror=Ink.bindEvent(function(t,e){var n=e;this._loadedCSSFiles[n]=!0;for(var s=this._loadingCSSFiles[n],i=0,r=s.length;r>i;++i)s[i](n);delete this._loadingCSSFiles[n]},this,t),r.src=t},decToHex:function(t){var e=function(t){return 1===t.length&&(t="0"+t),t=t.toUpperCase()};if("object"==typeof t){var n=e(parseInt(t.r,10).toString(16)),s=e(parseInt(t.g,10).toString(16)),i=e(parseInt(t.b,10).toString(16));return n+s+i}t+="";var r=t.match(/\((\d+),\s?(\d+),\s?(\d+)\)/);return null!==r?e(parseInt(r[1],10).toString(16))+e(parseInt(r[2],10).toString(16))+e(parseInt(r[3],10).toString(16)):e(parseInt(t,10).toString(16))},hexToDec:function(t){return 0===t.indexOf("#")&&(t=t.substr(1)),6===t.length?{r:parseInt(t.substr(0,2),16),g:parseInt(t.substr(2,2),16),b:parseInt(t.substr(4,2),16)}:3===t.length?{r:parseInt(t.charAt(0)+t.charAt(0),16),g:parseInt(t.charAt(1)+t.charAt(1),16),b:parseInt(t.charAt(2)+t.charAt(2),16)}:2>=t.length?parseInt(t,16):void 0},getPropertyFromStylesheet:function(t,e){var n=this.getRuleFromStylesheet(t);return n?n.style[e]:null},getPropertyFromStylesheet2:function(t,e){for(var n,s=this.getRulesFromStylesheet(t),i=0,r=s.length;r>i;i++)if(n=s[i].style[e],null!==n&&void 0!==n)return n;return null},getRuleFromStylesheet:function(t){var e,n,s,i,r,o=document.styleSheets;if(!o)return null;for(var a=0,l=document.styleSheets.length;l>a;++a){if(e=document.styleSheets[a],n=e.rules?e.rules:e.cssRules,!n)return null;for(s=0,i=n.length;i>s;++s)if(r=n[s],r.selectorText&&r.selectorText===t)return r}return null},getRulesFromStylesheet:function(t){var e,n,s,i,r,o=[],a=document.styleSheets;if(!a)return o;for(var l=0,u=document.styleSheets.length;u>l;++l){if(e=document.styleSheets[l],n=e.rules?e.rules:e.cssRules,!n)return null;for(s=0,i=n.length;i>s;++s)r=n[s],r.selectorText&&r.selectorText===t&&o.push(r)}return o},getPropertiesFromRule:function(t){var e,n,s,i=this.getRuleFromStylesheet(t),r={};i=i.style.cssText;var o,a,l,u,c=i.split(";");for(n=0,s=c.length;s>n;++n)" "===c[n].charAt(0)&&(c[n]=c[n].substring(1)),o=c[n].split(":"),e=this._camelCase(o[0].toLowerCase()),a=o[1],a&&(a=a.substring(1),"padding"===e||"margin"===e||"borderWidth"===e?("borderWidth"===e?(l="border",u="Width"):(l=e,u=""),-1!==a.indexOf(" ")?(a=a.split(" "),r[l+"Top"+u]=a[0],r[l+"Bottom"+u]=a[0],r[l+"Left"+u]=a[1],r[l+"Right"+u]=a[1]):(r[l+"Top"+u]=a,r[l+"Bottom"+u]=a,r[l+"Left"+u]=a,r[l+"Right"+u]=a)):"borderRadius"===e?-1!==a.indexOf(" ")?(a=a.split(" "),r.borderTopLeftRadius=a[0],r.borderBottomRightRadius=a[0],r.borderTopRightRadius=a[1],r.borderBottomLeftRadius=a[1]):(r.borderTopLeftRadius=a,r.borderTopRightRadius=a,r.borderBottomLeftRadius=a,r.borderBottomRightRadius=a):r[e]=a);return r},changeFontSize:function(t,e,n,s,i){var r=this;Ink.requireModules(["Ink.Dom.Selector_1"],function(o){var a;if("string"!=typeof t?a="1st argument must be a CSS selector rule.":"number"!=typeof e?a="2nd argument must be a number.":void 0!==n&&"+"!==n&&"*"!==n?a='3rd argument must be one of "+", "*".':void 0!==s&&("number"!=typeof s||0>=s)?a="4th argument must be a positive number.":void 0!==i&&("number"!=typeof i||i>i)&&(a="5th argument must be a positive number greater than minValue."),a)throw new TypeError(a);var l,u,c=o.select(t);void 0===s&&(s=1),n="*"===n?function(t,e){return t*e}:function(t,e){return t+e};for(var h=0,p=c.length;p>h;++h)u=c[h],l=parseFloat(r.getStyle(u,"fontSize")),l=n(l,e),s>l||"number"==typeof i&&l>i||(u.style.fontSize=l+"px")})}};return t}); -Ink.createModule("Ink.Dom.Element",1,[],function(){"use strict";var e={get:function(e){return e!==void 0?"string"==typeof e?document.getElementById(e):e:null},create:function(e,t){var n=document.createElement(e);for(var i in t)t.hasOwnProperty(i)&&("className"===i&&(i="class"),n.setAttribute(i,t[i]));return n},remove:function(e){var t;e&&(t=e.parentNode)&&t.removeChild(e)},scrollTo:function(e){if(e=this.get(e)){if(e.scrollIntoView)return e.scrollIntoView();var t={},n=0,i=0;do n+=e.offsetTop||0,i+=e.offsetLeft||0,e=e.offsetParent;while(e);t={x:i,y:n},window.scrollTo(t.x,t.y)}},offsetTop:function(e){return this.offset(e)[1]},offsetLeft:function(e){return this.offset(e)[0]},positionedOffset:function(e){var t=0,n=0;e=this.get(e);do if(t+=e.offsetTop||0,n+=e.offsetLeft||0,e=e.offsetParent){if("body"===e.tagName.toLowerCase())break;var i=e.style.position;if(!i&&e.currentStyle&&(i=e.currentStyle.position),(!i||"auto"===i)&&"undefined"!=typeof getComputedStyle){var r=getComputedStyle(e,null);i=r?r.position:null}if("relative"===i||"absolute"===i)break}while(e);return[n,t]},offset:function(e){e=Ink.i(e);var t,n,i,r,o=["border-left-width","border-top-width"],s=[0,0],a=this._getPropPx,l=Ink.getModule("Ink.Dom.Browser",1);do r=window.getComputedStyle?window.getComputedStyle(e,null):e.currentStyle,t=[0|e.offsetLeft,0|e.offsetTop],n=[a(r,o[0]),a(r,o[1])],l.OPERA?(s[0]+=t[0],s[1]+=t[1]):(s[0]+=t[0]+n[0],s[1]+=t[1]+n[1]),i=e.offsetParent;while(e=i);return n=[a(r,o[0]),a(r,o[1])],l.GECKO?(s[0]+=n[0],s[1]+=n[1]):l.OPERA||(s[0]-=n[0],s[1]-=n[1]),s},scroll:function(e){return e=e?Ink.i(e):document.body,[window.pageXOffset?window.pageXOffset:e.scrollLeft,window.pageYOffset?window.pageYOffset:e.scrollTop]},_getPropPx:function(e,t){var n,i,r=e.getPropertyValue?e.getPropertyValue(t):e[t];return r?(i=r.indexOf("px"),n=-1===i?0:parseInt(r,10)):n=0,n},offset2:function(e){return this.offset(e)},hasAttribute:function(e,t){return e.hasAttribute?e.hasAttribute(t):!!e.getAttribute(t)},insertAfter:function(e,t){(t=this.get(t))&&t.parentNode.insertBefore(e,t.nextSibling)},insertTop:function(e,t){(t=this.get(t))&&t.insertBefore(e,t.firstChild)},textContent:function(e){e=Ink.i(e);var t,n,i,r;switch(e&&e.nodeType){case 9:return this.textContent(e.documentElement||e.body&&e.body.parentNode||e.body);case 1:if(t=e.innerText,t!==void 0)return t;case 11:if(t=e.textContent,t!==void 0)return t;if(e.firstChild===e.lastChild)return this.textContent(e.firstChild);for(t=[],i=e.childNodes,n=0,r=i.length;r>n;++n)t.push(this.textContent(i[n]));return t.join("");case 3:case 4:return e.nodeValue}return""},setTextContent:function(e,t){switch(e=Ink.i(e),e&&e.nodeType){case 1:if("innerText"in e){e.innerText=t;break}case 11:if("textContent"in e){e.textContent=t;break}case 9:for(;e.firstChild;)e.removeChild(e.firstChild);if(""!==t){var n=e.ownerDocument||e;e.appendChild(n.createTextNode(t))}break;case 3:case 4:e.nodeValue=t}},isLink:function(e){var t=e&&1===e.nodeType&&(/^a|area$/i.test(e.tagName)||e.hasAttributeNS&&e.hasAttributeNS("http://www.w3.org/1999/xlink","href"));return!!t},isAncestorOf:function(e,t){if(!t||!e)return!1;if(t.compareDocumentPosition)return 0!==(16&e.compareDocumentPosition(t));for(;t=t.parentNode;)if(t===e)return!0;return!1},descendantOf:function(e,t){return e!==t&&this.isAncestorOf(e,t)},firstElementChild:function(e){if(!e)return null;if("firstElementChild"in e)return e.firstElementChild;for(var t=e.firstChild;t&&1!==t.nodeType;)t=t.nextSibling;return t},lastElementChild:function(e){if(!e)return null;if("lastElementChild"in e)return e.lastElementChild;for(var t=e.lastChild;t&&1!==t.nodeType;)t=t.previousSibling;return t},nextElementSibling:function(e){var t=null;if(!e)return t;if("nextElementSibling"in e)return e.nextElementSibling;for(t=e.nextSibling;t&&1!==t.nodeType;)t=t.nextSibling;return t},previousElementSibling:function(e){var t=null;if(!e)return t;if("previousElementSibling"in e)return e.previousElementSibling;for(t=e.previousSibling;t&&1!==t.nodeType;)t=t.previousSibling;return t},elementWidth:function(e){return"string"==typeof e&&(e=document.getElementById(e)),e.offsetWidth},elementHeight:function(e){return"string"==typeof e&&(e=document.getElementById(e)),e.offsetHeight},elementLeft:function(e){return"string"==typeof e&&(e=document.getElementById(e)),e.offsetLeft},elementTop:function(e){return"string"==typeof e&&(e=document.getElementById(e)),e.offsetTop},elementDimensions:function(e){return e=Ink.i(e),[e.offsetWidth,e.offsetHeight]},outerDimensions:function(t){var n=e.elementDimensions(t),i=Ink.getModule("Ink.Dom.Css_1");return[n[0]+parseFloat(i.getStyle(t,"marginLeft")||0)+parseFloat(i.getStyle(t,"marginRight")||0),n[1]+parseFloat(i.getStyle(t,"marginTop")||0)+parseFloat(i.getStyle(t,"marginBottom")||0)]},inViewport:function(t,n){var i=Ink.i(t).getBoundingClientRect();return n?i.bottom>0&&i.left0:i.top>0&&i.right0},clonePosition:function(e,t){var n=this.offset(t);return e.style.left=n[0]+"px",e.style.top=n[1]+"px",e},ellipsizeText:function(e,t){if(e=Ink.i(e))for(;e&&e.scrollHeight>e.offsetHeight+8;)e.textContent=e.textContent.replace(/(\s+\S+)\s*$/,t||"…")},findUpwardsHaving:function(e,t){for(;e&&1===e.nodeType;){if(t(e))return e;e=e.parentNode}return!1},findUpwardsByClass:function(e,t){var n=RegExp("(^|\\s)"+t+"(\\s|$)"),i=function(e){var t=e.className;return t&&n.test(t)};return this.findUpwardsHaving(e,i)},findUpwardsByTag:function(e,t){t=t.toUpperCase();var n=function(e){return e.nodeName&&e.nodeName.toUpperCase()===t};return this.findUpwardsHaving(e,n)},findUpwardsById:function(e,t){var n=function(e){return e.id===t};return this.findUpwardsHaving(e,n)},findUpwardsBySelector:function(e,t){if(Ink.Dom===void 0||Ink.Dom.Selector===void 0)throw Error("This method requires Ink.Dom.Selector");var n=function(e){return Ink.Dom.Selector.matchesSelector(e,t)};return this.findUpwardsHaving(e,n)},getChildrenText:function(e,t){var n,i,r,o=e.childNodes,s=o.length,a="";if(!e)return a;for(i=0;s>i;++i)n=o[i],n&&3===n.nodeType&&(r=this._trimString(n.data+""),r.length>0?(a+=r,t&&e.removeChild(n)):e.removeChild(n));return a},_trimString:function(e){return String.prototype.trim?e.trim():e.replace(/^\s*/,"").replace(/\s*$/,"")},getSelectValues:function(e){for(var t=Ink.i(e),n=[],i=0;t.options.length>i;++i)n.push(t.options[i].value);return n},_normalizeData:function(e){for(var t,n=[],i=0,r=e.length;r>i;++i)t=e[i],t instanceof Array?1===t.length&&t.push(t[0]):t=[t,t],n.push(t);return n},fillSelect:function(e,t,n,i){var r=Ink.i(e);if(r){r.innerHTML="";var o,s;n||(s=document.createElement("option"),s.setAttribute("value",""),r.appendChild(s)),t=this._normalizeData(t);for(var a=0,l=t.length;l>a;++a)o=t[a],s=document.createElement("option"),s.setAttribute("value",o[0]),o.length>2&&s.setAttribute("extra",o[2]),s.appendChild(document.createTextNode(o[1])),o[0]===i&&s.setAttribute("selected","selected"),r.appendChild(s)}},fillSelect2:function(e,t){e=Ink.i(e),e.innerHTML="";var n={skipEmpty:!1,skipCreate:!1,emptyLabel:"none",createLabel:"create",optionsGroupLabel:"groups",emptyOptionsGroupLabel:"none exist",defaultValue:""};if(!t)throw"param opts is a requirement!";if(!t.data)throw"opts.data is a requirement!";t=Ink.extendObj(n,t);var i,r,o=document.createElement("optgroup");o.setAttribute("label",t.optionsGroupLabel),t.data=this._normalizeData(t.data),t.skipCreate||t.data.unshift(["$create$",t.createLabel]),t.skipEmpty||t.data.unshift(["",t.emptyLabel]);for(var s=0,a=t.data.length;a>s;++s)r=t.data[s],i=document.createElement("option"),i.setAttribute("value",r[0]),i.appendChild(document.createTextNode(r[1])),r[0]===t.defaultValue&&i.setAttribute("selected","selected"),""===r[0]||"$create$"===r[0]?e.appendChild(i):o.appendChild(i);var l=function(e){var t=e[e.length-1][0];return""===t||"$create$"===t};l(t.data)&&(i=document.createElement("option"),i.setAttribute("value","$dummy$"),i.setAttribute("disabled","disabled"),i.appendChild(document.createTextNode(t.emptyOptionsGroupLabel)),o.appendChild(i)),e.appendChild(o);var u=function(t,n){var i=e.options[e.options.length-1];i.getAttribute("disabled")&&i.parentNode.removeChild(i),i=document.createElement("option"),i.setAttribute("value",t),i.appendChild(document.createTextNode(n)),o.appendChild(i),e.options[e.options.length-1].setAttribute("selected",!0)};t.skipCreate||(e.onchange=function(){"$create$"===e.value&&"function"==typeof t.onCreate&&t.onCreate(e,u)})},fillRadios:function(e,t,n,i,r,o){var s=Ink.i(e);for(s=s.nextSibling;s&&1!==s.nodeType;)s=s.nextSibling;var a=document.createElement("span");s?s.parentNode.insertBefore(a,s):Ink.i(e).appendChild(a),n=this._normalizeData(n),"]"!==t.substring(t.length-1)&&(t+="[]");var l,u;i||(u=document.createElement("input"),u.setAttribute("type","radio"),u.setAttribute("name",t),u.setAttribute("value",""),a.appendChild(u),o&&a.appendChild(document.createElement(o)));for(var d=0;n.length>d;++d)l=n[d],u=document.createElement("input"),u.setAttribute("type","radio"),u.setAttribute("name",t),u.setAttribute("value",l[0]),a.appendChild(u),a.appendChild(document.createTextNode(l[1])),o&&a.appendChild(document.createElement(o)),l[0]===r&&(u.checked=!0);return a},fillChecks:function(e,t,n,i,r){var o=Ink.i(e);for(o=o.nextSibling;o&&1!==o.nodeType;)o=o.nextSibling;var s=document.createElement("span");o?o.parentNode.insertBefore(s,o):Ink.i(e).appendChild(s),n=this._normalizeData(n),"]"!==t.substring(t.length-1)&&(t+="[]");for(var a,l,u=0;n.length>u;++u)a=n[u],l=document.createElement("input"),l.setAttribute("type","checkbox"),l.setAttribute("name",t),l.setAttribute("value",a[0]),s.appendChild(l),s.appendChild(document.createTextNode(a[1])),r&&s.appendChild(document.createElement(r)),a[0]===i&&(l.checked=!0);return s},parentIndexOf:function(e,t){for(var n,i=0,r=0,o=e.childNodes.length;o>r;++r)if(n=e.childNodes[r],1===n.nodeType){if(n===t)return i;++i}return-1},nextSiblings:function(e){if("string"==typeof e&&(e=document.getElementById(e)),"object"==typeof e&&null!==e&&e.nodeType&&1===e.nodeType){for(var t=[],n=e.parentNode.children,i=this.parentIndexOf(e.parentNode,e),r=++i,o=n.length;o>r;r++)t.push(n[r]);return t}return[]},previousSiblings:function(e){if("string"==typeof e&&(e=document.getElementById(e)),"object"==typeof e&&null!==e&&e.nodeType&&1===e.nodeType){for(var t=[],n=e.parentNode.children,i=this.parentIndexOf(e.parentNode,e),r=0,o=i;o>r;r++)t.push(n[r]);return t}return[]},siblings:function(e){if("string"==typeof e&&(e=document.getElementById(e)),"object"==typeof e&&null!==e&&e.nodeType&&1===e.nodeType){for(var t=[],n=e.parentNode.children,i=0,r=n.length;r>i;i++)e!==n[i]&&t.push(n[i]);return t}return[]},childElementCount:function(e){return e=Ink.i(e),"childElementCount"in e?e.childElementCount:e?this.siblings(e).length+1:0},appendHTML:function(e,t){var n=document.createElement("div");n.innerHTML=t;for(var i=n.children,r=0;i.length>r;r++)e.appendChild(i[r])},prependHTML:function(e,t){var n=document.createElement("div");n.innerHTML=t;for(var i=e.firstChild,r=n.children,o=r.length-1;o>=0;o--)e.insertBefore(r[o],i),i=e.firstChild},removeTextNodeChildren:function(e){var t,n,i=e;for(e=e.firstChild;e;)n=3===e.nodeType,t=e,e=e.nextSibling,n&&i.removeChild(t)},htmlToFragment:function(e){return this.htmlToFragment="function"==typeof document.createRange&&"function"==typeof Range.prototype.createContextualFragment?function(e){var t;return"string"!=typeof e?document.createDocumentFragment():(t=document.createRange(),t.selectNode(document.body),t.createContextualFragment(e))}:function(e){var t,n,i=document.createDocumentFragment();if("string"!=typeof e)return i;for(t=document.createElement("div"),t.innerHTML=e;n=t.firstChild;)i.appendChild(n);return i},this.htmlToFragment.call(this,e)},_camelCase:function(e){return e?e.replace(/-(\w)/g,function(e,t){return t.toUpperCase()}):e},data:function(e){var t;if("object"!=typeof e&&"string"!=typeof e)throw"[Ink.Dom.Element.data] :: Invalid selector defined";if("object"==typeof e)t=e;else{var n=Ink.getModule("Ink.Dom.Selector",1);if(!n)throw"[Ink.Dom.Element.data] :: This method requires Ink.Dom.Selector - v1";if(t=n.select(e),0>=t.length)throw"[Ink.Dom.Element.data] :: Can't find any element with the specified selector";t=t[0]}var i,r,o,s={},a=t.attributes||[];if(a)for(var l=0,u=a.length;u>l;++l)i=a[l],r=i.name,o=i.value,r&&0===r.indexOf("data-")&&(s[this._camelCase(r.replace("data-",""))]=o);return s},moveCursorTo:function(e,t){if(e.setSelectionRange)e.setSelectionRange(t,t);else{var n=e.createTextRange();n.collapse(!0),n.moveEnd("character",t),n.moveStart("character",t),n.select()}},pageWidth:function(){var e;e=window.innerWidth&&window.scrollMaxX?window.innerWidth+window.scrollMaxX:document.body.scrollWidth>document.body.offsetWidth?document.body.scrollWidth:document.body.offsetWidth;var t;return window.self.innerWidth?t=document.documentElement.clientWidth?document.documentElement.clientWidth:window.self.innerWidth:document.documentElement&&document.documentElement.clientWidth?t=document.documentElement.clientWidth:document.body&&(t=document.body.clientWidth),t>e?e:t},pageHeight:function(){var e;e=window.innerHeight&&window.scrollMaxY?window.innerHeight+window.scrollMaxY:document.body.scrollHeight>document.body.offsetHeight?document.body.scrollHeight:document.body.offsetHeight;var t;return window.self.innerHeight?t=window.self.innerHeight:document.documentElement&&document.documentElement.clientHeight?t=document.documentElement.clientHeight:document.body&&(t=document.body.clientHeight),t>e?t:e},viewportWidth:function(){return window.innerWidth!==void 0?window.innerWidth:document.documentElement&&document.documentElement.offsetWidth!==void 0?document.documentElement.offsetWidth:void 0},viewportHeight:function(){return window.innerHeight!==void 0?window.innerHeight:document.documentElement&&document.documentElement.offsetHeight!==void 0?document.documentElement.offsetHeight:void 0},scrollWidth:function(){return window.self.pageXOffset!==void 0?window.self.pageXOffset:document.documentElement!==void 0&&document.documentElement.scrollLeft!==void 0?document.documentElement.scrollLeft:document.body.scrollLeft},scrollHeight:function(){return window.self.pageYOffset!==void 0?window.self.pageYOffset:document.documentElement!==void 0&&document.documentElement.scrollTop!==void 0?document.documentElement.scrollTop:document.body.scrollTop}};return e}); -Ink.createModule("Ink.Dom.Event",1,[],function(){"use strict";var e={KEY_BACKSPACE:8,KEY_TAB:9,KEY_RETURN:13,KEY_ESC:27,KEY_LEFT:37,KEY_UP:38,KEY_RIGHT:39,KEY_DOWN:40,KEY_DELETE:46,KEY_HOME:36,KEY_END:35,KEY_PAGEUP:33,KEY_PAGEDOWN:34,KEY_INSERT:45,throttle:function(e,t){t=t||0;var n,o=0,r=function(){var i=+new Date,s=i-o;if(s>=t)return o=i,e.apply(this,[].slice.call(arguments));var a=this,l=[].slice.call(arguments);clearTimeout(n),n=setTimeout(function(){return r.apply(a,l)})};return r},element:function(e){var t=e.target||"mouseout"===e.type&&e.fromElement||"mouseleave"===e.type&&e.fromElement||"mouseover"===e.type&&e.toElement||"mouseenter"===e.type&&e.toElement||e.srcElement||null;return!t||3!==t.nodeType&&4!==t.nodeType?t:t.parentNode},relatedTarget:function(e){var t=e.relatedTarget||"mouseout"===e.type&&e.toElement||"mouseleave"===e.type&&e.toElement||"mouseover"===e.type&&e.fromElement||"mouseenter"===e.type&&e.fromElement||null;return!t||3!==t.nodeType&&4!==t.nodeType?t:t.parentNode},findElement:function(e,t,n){for(var o=this.element(e);;){if(o.nodeName.toLowerCase()===t.toLowerCase())return o;if(o=o.parentNode,!o)return n?!1:document;if(!o.parentNode)return n?!1:document}},fire:function(e,t,n){e=Ink.i(e);var o,r;if(r=document.createEvent?{DOMActivate:!0,DOMFocusIn:!0,DOMFocusOut:!0,focus:!0,focusin:!0,focusout:!0,blur:!0,load:!0,unload:!0,abort:!0,error:!0,select:!0,change:!0,submit:!0,reset:!0,resize:!0,scroll:!0,click:!0,dblclick:!0,mousedown:!0,mouseenter:!0,mouseleave:!0,mousemove:!0,mouseover:!0,mouseout:!0,mouseup:!0,mousewheel:!0,wheel:!0,textInput:!0,keydown:!0,keypress:!0,keyup:!0,compositionstart:!0,compositionupdate:!0,compositionend:!0,DOMSubtreeModified:!0,DOMNodeInserted:!0,DOMNodeRemoved:!0,DOMNodeInsertedIntoDocument:!0,DOMNodeRemovedFromDocument:!0,DOMAttrModified:!0,DOMCharacterDataModified:!0,DOMAttributeNameChanged:!0,DOMElementNameChanged:!0,hashchange:!0}:{onabort:!0,onactivate:!0,onafterprint:!0,onafterupdate:!0,onbeforeactivate:!0,onbeforecopy:!0,onbeforecut:!0,onbeforedeactivate:!0,onbeforeeditfocus:!0,onbeforepaste:!0,onbeforeprint:!0,onbeforeunload:!0,onbeforeupdate:!0,onblur:!0,onbounce:!0,oncellchange:!0,onchange:!0,onclick:!0,oncontextmenu:!0,oncontrolselect:!0,oncopy:!0,oncut:!0,ondataavailable:!0,ondatasetchanged:!0,ondatasetcomplete:!0,ondblclick:!0,ondeactivate:!0,ondrag:!0,ondragend:!0,ondragenter:!0,ondragleave:!0,ondragover:!0,ondragstart:!0,ondrop:!0,onerror:!0,onerrorupdate:!0,onfilterchange:!0,onfinish:!0,onfocus:!0,onfocusin:!0,onfocusout:!0,onhashchange:!0,onhelp:!0,onkeydown:!0,onkeypress:!0,onkeyup:!0,onlayoutcomplete:!0,onload:!0,onlosecapture:!0,onmessage:!0,onmousedown:!0,onmouseenter:!0,onmouseleave:!0,onmousemove:!0,onmouseout:!0,onmouseover:!0,onmouseup:!0,onmousewheel:!0,onmove:!0,onmoveend:!0,onmovestart:!0,onoffline:!0,ononline:!0,onpage:!0,onpaste:!0,onprogress:!0,onpropertychange:!0,onreadystatechange:!0,onreset:!0,onresize:!0,onresizeend:!0,onresizestart:!0,onrowenter:!0,onrowexit:!0,onrowsdelete:!0,onrowsinserted:!0,onscroll:!0,onselect:!0,onselectionchange:!0,onselectstart:!0,onstart:!0,onstop:!0,onstorage:!0,onstoragecommit:!0,onsubmit:!0,ontimeout:!0,onunload:!0},null!==e&&void 0!==e){e===document&&document.createEvent&&!e.dispatchEvent&&(e=document.documentElement),document.createEvent?(o=document.createEvent("HTMLEvents"),r[t]===void 0?o.initEvent("dataavailable",!0,!0):o.initEvent(t,!0,!0)):(o=document.createEventObject(),o.eventType=r["on"+t]===void 0?"ondataavailable":"on"+t),o.eventName=t,o.memo=n||{};try{if(document.createEvent)e.dispatchEvent(o);else{if(!e.fireEvent)return;e.fireEvent(o.eventType,o)}}catch(i){}return o}},_callbackForCustomEvents:function(e,t,n){var o="hashchange"===t&&e.attachEvent&&!window.onhashchange,r=-1!==t.indexOf(":");if(o||r){var i=n;return Ink.bindEvent(function(e,t,n){e.eventName===t&&(window.addEventListener&&(window.event=e),n())},this,t,i)}return null},observe:function(e,t,n,o){if(e=Ink.i(e),null!==e&&void 0!==e){var r=this._callbackForCustomEvents(e,t,n);return r&&(n=r,t="dataavailable"),e.addEventListener?e.addEventListener(t,n,!!o):e.attachEvent("on"+t,n),n}},observeMulti:function(e,t,n,o){if("string"==typeof e?e=Ink.ss(e):e instanceof Element&&(e=[e]),!e[0])return!1;var r=this._callbackForCustomEvents(e[0],t,n);r&&(n=r,t="dataavailable");for(var i=0,s=e.length;s>i;i++)this.observe(e[i],t,n,o);return n},stopObserving:function(e,t,n,o){e=Ink.i(e),null!==e&&void 0!==e&&(e.removeEventListener?e.removeEventListener(t,n,!!o):e.detachEvent("on"+t,n))},stop:function(e){null!==e.cancelBubble&&(e.cancelBubble=!0),e.stopPropagation&&e.stopPropagation(),e.preventDefault&&e.preventDefault(),window.attachEvent&&(e.returnValue=!1),null!==e.cancel&&(e.cancel=!0)},stopPropagation:function(e){null!==e.cancelBubble&&(e.cancelBubble=!0),e.stopPropagation&&e.stopPropagation()},stopDefault:function(e){e.preventDefault&&e.preventDefault(),window.attachEvent&&(e.returnValue=!1),null!==e.cancel&&(e.cancel=!0)},pointer:function(e){return{x:e.pageX||e.clientX+(document.documentElement.scrollLeft||document.body.scrollLeft),y:e.pageY||e.clientY+(document.documentElement.scrollTop||document.body.scrollTop)}},pointerX:function(e){return e.pageX||e.clientX+(document.documentElement.scrollLeft||document.body.scrollLeft)},pointerY:function(e){return e.pageY||e.clientY+(document.documentElement.scrollTop||document.body.scrollTop)},isLeftClick:function(e){if(window.addEventListener){if(0===e.button)return!0;if("touch"===e.type.substring(0,5)&&null===e.button)return!0}else if(1===e.button)return!0;return!1},isRightClick:function(e){return 2===e.button},isMiddleClick:function(e){return window.addEventListener?1===e.button:4===e.button},getCharFromKeyboardEvent:function(e,t){var n=e.keyCode,o=String.fromCharCode(n),r=e.shiftKey;if(n>=65&&90>=n)return"boolean"==typeof t&&(r=t),r?o:o.toLowerCase();if(n>=96&&105>=n)return String.fromCharCode(48+(n-96));switch(n){case 109:case 189:return"-";case 107:case 187:return"+"}return o},debug:function(){}};return e}); -Ink.createModule("Ink.Dom.FormSerialize",1,[],function(){"use strict";var e={serialize:function(e){e=Ink.i(e);var t=this._getFieldNameInputsMap(e),n={};for(var o in t)if(t.hasOwnProperty(o))if(null!==o){var r=o.replace(/\[\]$/,"");n[r]=this._getValuesOfField(t[o])}else n[o]=this._getValuesOfField(t[o]);return delete n["null"],n},fillIn:function(e,t){e=Ink.i(e);var n=this._getFieldNameInputsMap(e);delete n["null"];for(var o in t)t.hasOwnProperty(o)&&this._setValuesOfField(n[o],t[o])},_getFieldNameInputsMap:function(e){for(var t,n,o,r={},i=0,s=e.elements.length;s>i;++i)o=e.elements[i],t=o.getAttribute("name"),n=o.nodeName.toLowerCase(),"fieldset"!==n&&(void 0===r[t]?r[t]=[o]:r[t].push(o));return r},_getValuesOfField:function(e){var t,n,o,r,i,s,a=e[0].nodeName.toLowerCase(),l=e[0].getAttribute("type"),u=e[0].value,c=[];switch(a){case"select":for(t=0,n=e.length;n>t;++t)for(c[t]=[],s=e[t].getAttribute("multiple"),o=0,r=e[t].options.length;r>o;++o)if(i=e[t].options[o],i.selected){if(!s){c[t]=i.value;break}c[t].push(i.value)}return e.length>0&&/\[[^\]]*\]$/.test(e[0].getAttribute("name"))?c:c[0];case"textarea":case"input":if("checkbox"===l||"radio"===l){for(t=0,n=e.length;n>t;++t)i=e[t],i.checked&&c.push(i.value);return"checkbox"===l?e.length>1?c:!!c.length:e.length>1?c[0]:!!c.length}if(e.length>0&&/\[[^\]]*\]$/.test(e[0].getAttribute("name"))){var d=[];for(t=0,n=e.length;n>t;++t)d.push(e[t].value);return d}return u;default:return void 0}},_valInArray:function(e,t){for(var n=0,o=t.length;o>n;++n)if(t[n]===e)return!0;return!1},_setValuesOfField:function(e,t){if(e){var n,o,r,i=e[0].nodeName.toLowerCase(),s=e[0].getAttribute("type");switch(i){case"select":if(e.length>1)throw"Got multiple select elements with same name!";for(n=0,o=e[0].options.length;o>n;++n)r=e[0].options[n],r.selected=t instanceof Array?this._valInArray(r.value,t):r.value===t;break;case"textarea":case"input":if("checkbox"===s||"radio"===s)for(n=0,o=e.length;o>n;++n)r=e[n],r.checked=t instanceof Array?this._valInArray(r.value,t):e.length>1?r.value===t:!!t;else{if(e.length>1)throw"Got multiple input elements with same name!";"file"!==s&&(e[0].value=t)}break;default:throw'Unsupported element: "'+i+'"!'}}}};return e}); -Ink.createModule("Ink.Dom.Loaded",1,[],function(){"use strict";var e={_contexts:[],run:function(e,t){t||(t=e,e=window);for(var n,o=0,r=this._contexts.length;r>o;o++)if(this._contexts[o][0]===e){n=this._contexts[o][1];break}n||(n={cbQueue:[],win:e,doc:e.document,root:e.document.documentElement,done:!1,top:!0},n.handlers={checkState:Ink.bindEvent(this._checkState,this,n),poll:Ink.bind(this._poll,this,n)},this._contexts.push([e,n]));var i=n.doc.addEventListener;n.add=i?"addEventListener":"attachEvent",n.rem=i?"removeEventListener":"detachEvent",n.pre=i?"":"on",n.det=i?"DOMContentLoaded":"onreadystatechange",n.wet=n.pre+"load";var s=n.handlers.checkState,a="complete"===n.doc.readyState&&"about:blank"!=""+n.win.location;if(a)setTimeout(Ink.bind(function(){t.call(n.win,"lazy")},this),0);else{n.cbQueue.push(t),n.doc[n.add](n.det,s),n.win[n.add](n.wet,s);var l=1;try{l=n.win.frameElement}catch(u){}if(!i&&n.root&&n.root.doScroll){try{n.top=!l}catch(u){}n.top&&this._poll(n)}}},_checkState:function(e,t){if(e&&("readystatechange"!==e.type||"complete"===t.doc.readyState)){var n="load"===e.type?t.win:t.doc;n[t.rem](t.pre+e.type,t.handlers.checkState,!1),this._ready(t)}},_poll:function(e){try{e.root.doScroll("left")}catch(t){return setTimeout(e.handlers.poll,50)}this._ready(e)},_ready:function(e){if(!e.done){e.done=!0;for(var t=0;e.cbQueue.length>t;++t)e.cbQueue[t].call(e.win);e.cbQueue=[]}}};return e}); -Ink.createModule("Ink.Dom.Selector",1,[],function(){"use strict";function e(e){return ht.test(e+"")}function t(){var e,t=[];return e=function(n,r){return t.push(n+=" ")>E.cacheLength&&delete e[t.shift()],e[n]=r}}function n(e){return e[P]=!0,e}function r(e){var t=A.createElement("div");try{return!!e(t)}catch(n){return!1}finally{t=null}}function o(e,t,n,r){var o,i,s,a,l,d,f,p,h,m;if((t?t.ownerDocument||t:B)!==A&&O(t),t=t||A,n=n||[],!e||"string"!=typeof e)return n;if(1!==(a=t.nodeType)&&9!==a)return[];if(R&&!r){if(o=mt.exec(e))if(s=o[1]){if(9===a){if(i=t.getElementById(s),!i||!i.parentNode)return n;if(i.id===s)return n.push(i),n}else if(t.ownerDocument&&(i=t.ownerDocument.getElementById(s))&&M(t,i)&&i.id===s)return n.push(i),n}else{if(o[2])return Q.apply(n,t.getElementsByTagName(e)),n;if((s=o[3])&&j.getElementsByClassName&&t.getElementsByClassName)return Q.apply(n,t.getElementsByClassName(s)),n}if(j.qsa&&!L.test(e)){if(f=!0,p=P,h=t,m=9===a&&e,1===a&&"object"!==t.nodeName.toLowerCase()){for(d=u(e),(f=t.getAttribute("id"))?p=f.replace(yt,"\\$&"):t.setAttribute("id",p),p="[id='"+p+"'] ",l=d.length;l--;)d[l]=p+c(d[l]);h=pt.test(e)&&t.parentNode||t,m=d.join(",")}if(m)try{return Q.apply(n,h.querySelectorAll(m)),n}catch(g){}finally{f||t.removeAttribute("id")}}}return y(e.replace(at,"$1"),t,n,r)}function i(e,t){var n=t&&e,r=n&&(~t.sourceIndex||Y)-(~e.sourceIndex||Y);if(r)return r;if(n)for(;n=n.nextSibling;)if(n===t)return-1;return e?1:-1}function s(e){return function(t){var n=t.nodeName.toLowerCase();return"input"===n&&t.type===e}}function a(e){return function(t){var n=t.nodeName.toLowerCase();return("input"===n||"button"===n)&&t.type===e}}function l(e){return n(function(t){return t=+t,n(function(n,r){for(var o,i=e([],n.length,t),s=i.length;s--;)n[o=i[s]]&&(n[o]=!(r[o]=n[o]))})})}function u(e,t){var n,r,i,s,a,l,u,c=W[e+" "];if(c)return t?0:c.slice(0);for(a=e,l=[],u=E.preFilter;a;){(!n||(r=lt.exec(a)))&&(r&&(a=a.slice(r[0].length)||a),l.push(i=[])),n=!1,(r=ut.exec(a))&&(n=r.shift(),i.push({value:n,type:r[0].replace(at," ")}),a=a.slice(n.length));for(s in E.filter)!(r=ft[s].exec(a))||u[s]&&!(r=u[s](r))||(n=r.shift(),i.push({value:n,type:s,matches:r}),a=a.slice(n.length));if(!n)break}return t?a.length:a?o.error(e):W(e,l).slice(0)}function c(e){for(var t=0,n=e.length,r="";n>t;t++)r+=e[t].value;return r}function d(e,t,n){var r=t.dir,o=n&&"parentNode"===r,i=F++;return t.first?function(t,n,i){for(;t=t[r];)if(1===t.nodeType||o)return e(t,n,i)}:function(t,n,s){var a,l,u,c=q+" "+i;if(s){for(;t=t[r];)if((1===t.nodeType||o)&&e(t,n,s))return!0}else for(;t=t[r];)if(1===t.nodeType||o)if(u=t[P]||(t[P]={}),(l=u[r])&&l[0]===c){if((a=l[1])===!0||a===C)return a===!0}else if(l=u[r]=[c],l[1]=e(t,n,s)||C,l[1]===!0)return!0}}function f(e){return e.length>1?function(t,n,r){for(var o=e.length;o--;)if(!e[o](t,n,r))return!1;return!0}:e[0]}function p(e,t,n,r,o){for(var i,s=[],a=0,l=e.length,u=null!=t;l>a;a++)(i=e[a])&&(!n||n(i,r,o))&&(s.push(i),u&&t.push(a));return s}function h(e,t,r,o,i,s){return o&&!o[P]&&(o=h(o)),i&&!i[P]&&(i=h(i,s)),n(function(n,s,a,l){var u,c,d,f=[],h=[],m=s.length,g=n||v(t||"*",a.nodeType?[a]:a,[]),y=!e||!n&&t?g:p(g,f,e,a,l),b=r?i||(n?e:m||o)?[]:s:y;if(r&&r(y,b,a,l),o)for(u=p(b,h),o(u,[],a,l),c=u.length;c--;)(d=u[c])&&(b[h[c]]=!(y[h[c]]=d));if(n){if(i||e){if(i){for(u=[],c=b.length;c--;)(d=b[c])&&u.push(y[c]=d);i(null,b=[],u,l)}for(c=b.length;c--;)(d=b[c])&&(u=i?et.call(n,d):f[c])>-1&&(n[u]=!(s[u]=d))}}else b=p(b===s?b.splice(m,b.length):b),i?i(null,s,b,l):Q.apply(s,b)})}function m(e){for(var t,n,r,o=e.length,i=E.relative[e[0].type],s=i||E.relative[" "],a=i?1:0,l=d(function(e){return e===t},s,!0),u=d(function(e){return et.call(t,e)>-1},s,!0),p=[function(e,n,r){return!i&&(r||n!==N)||((t=n).nodeType?l(e,n,r):u(e,n,r))}];o>a;a++)if(n=E.relative[e[a].type])p=[d(f(p),n)];else{if(n=E.filter[e[a].type].apply(null,e[a].matches),n[P]){for(r=++a;o>r&&!E.relative[e[r].type];r++);return h(a>1&&f(p),a>1&&c(e.slice(0,a-1)).replace(at,"$1"),n,r>a&&m(e.slice(a,r)),o>r&&m(e=e.slice(r)),o>r&&c(e))}p.push(n)}return f(p)}function g(e,t){var r=0,i=t.length>0,s=e.length>0,a=function(n,a,l,u,c){var d,f,h,m=[],g=0,v="0",y=n&&[],b=null!=c,w=N,T=n||s&&E.find.TAG("*",c&&a.parentNode||a),x=q+=null==w?1:Math.random()||.1;for(b&&(N=a!==A&&a,C=r);null!=(d=T[v]);v++){if(s&&d){for(f=0;h=e[f++];)if(h(d,a,l)){u.push(d);break}b&&(q=x,C=++r)}i&&((d=!h&&d)&&g--,n&&y.push(d))}if(g+=v,i&&v!==g){for(f=0;h=t[f++];)h(y,m,a,l);if(n){if(g>0)for(;v--;)y[v]||m[v]||(m[v]=K.call(u));m=p(m)}Q.apply(u,m),b&&!n&&m.length>0&&g+t.length>1&&o.uniqueSort(u)}return b&&(q=x,N=w),y};return i?n(a):a}function v(e,t,n){for(var r=0,i=t.length;i>r;r++)o(e,t[r],n);return n}function y(e,t,n,r){var o,i,s,a,l,d=u(e);if(!r&&1===d.length){if(i=d[0]=d[0].slice(0),i.length>2&&"ID"===(s=i[0]).type&&9===t.nodeType&&R&&E.relative[i[1].type]){if(t=(E.find.ID(s.matches[0].replace(wt,Ct),t)||[])[0],!t)return n;e=e.slice(i.shift().value.length)}for(o=ft.needsContext.test(e)?0:i.length;o--&&(s=i[o],!E.relative[a=s.type]);)if((l=E.find[a])&&(r=l(s.matches[0].replace(wt,Ct),pt.test(i[0].type)&&t.parentNode||t))){if(i.splice(o,1),e=r.length&&c(i),!e)return Q.apply(n,r),n;break}}return S(e,d)(r,t,!R,n,pt.test(e)),n}function b(){}var w,C,E,T,x,S,N,k,I,O,A,D,R,L,H,_,M,P="sizzle"+-new Date,B=window.document,j={},q=0,F=0,X=t(),W=t(),$=t(),U=!1,J=function(){return 0},V="undefined",Y=1<<31,z=[],K=z.pop,G=z.push,Q=z.push,Z=z.slice,et=z.indexOf||function(e){for(var t=0,n=this.length;n>t;t++)if(this[t]===e)return t;return-1},tt="[\\x20\\t\\r\\n\\f]",nt="(?:\\\\.|[\\w-]|[^\\x00-\\xa0])+",rt=nt.replace("w","w#"),ot="([*^$|!~]?=)",it="\\["+tt+"*("+nt+")"+tt+"*(?:"+ot+tt+"*(?:(['\"])((?:\\\\.|[^\\\\])*?)\\3|("+rt+")|)|)"+tt+"*\\]",st=":("+nt+")(?:\\(((['\"])((?:\\\\.|[^\\\\])*?)\\3|((?:\\\\.|[^\\\\()[\\]]|"+it.replace(3,8)+")*)|.*)\\)|)",at=RegExp("^"+tt+"+|((?:^|[^\\\\])(?:\\\\.)*)"+tt+"+$","g"),lt=RegExp("^"+tt+"*,"+tt+"*"),ut=RegExp("^"+tt+"*([\\x20\\t\\r\\n\\f>+~])"+tt+"*"),ct=RegExp(st),dt=RegExp("^"+rt+"$"),ft={ID:RegExp("^#("+nt+")"),CLASS:RegExp("^\\.("+nt+")"),NAME:RegExp("^\\[name=['\"]?("+nt+")['\"]?\\]"),TAG:RegExp("^("+nt.replace("w","w*")+")"),ATTR:RegExp("^"+it),PSEUDO:RegExp("^"+st),CHILD:RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+tt+"*(even|odd|(([+-]|)(\\d*)n|)"+tt+"*(?:([+-]|)"+tt+"*(\\d+)|))"+tt+"*\\)|)","i"),needsContext:RegExp("^"+tt+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+tt+"*((?:-\\d)?\\d*)"+tt+"*\\)|)(?=[^-]|$)","i")},pt=/[\x20\t\r\n\f]*[+~]/,ht=/^[^{]+\{\s*\[native code/,mt=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,gt=/^(?:input|select|textarea|button)$/i,vt=/^h\d$/i,yt=/'|\\/g,bt=/\=[\x20\t\r\n\f]*([^'"\]]*)[\x20\t\r\n\f]*\]/g,wt=/\\([\da-fA-F]{1,6}[\x20\t\r\n\f]?|.)/g,Ct=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.apply(z=Z.call(B.childNodes),B.childNodes),z[B.childNodes.length].nodeType}catch(Et){Q={apply:z.length?function(e,t){G.apply(e,Z.call(t))}:function(e,t){for(var n=e.length,r=0;e[n++]=t[r++];);e.length=n-1}}}x=o.isXML=function(e){var t=e&&(e.ownerDocument||e).documentElement;return t?"HTML"!==t.nodeName:!1},O=o.setDocument=function(t){var n=t?t.ownerDocument||t:B;return n!==A&&9===n.nodeType&&n.documentElement?(A=n,D=n.documentElement,R=!x(n),j.getElementsByTagName=r(function(e){return e.appendChild(n.createComment("")),!e.getElementsByTagName("*").length}),j.attributes=r(function(e){e.innerHTML="";var t=typeof e.lastChild.getAttribute("multiple");return"boolean"!==t&&"string"!==t}),j.getElementsByClassName=r(function(e){return e.innerHTML="",e.getElementsByClassName&&e.getElementsByClassName("e").length?(e.lastChild.className="e",2===e.getElementsByClassName("e").length):!1}),j.getByName=r(function(e){e.id=P+0,e.appendChild(A.createElement("a")).setAttribute("name",P),e.appendChild(A.createElement("i")).setAttribute("name",P),D.appendChild(e);var t=n.getElementsByName&&n.getElementsByName(P).length===2+n.getElementsByName(P+0).length;return D.removeChild(e),t}),j.sortDetached=r(function(e){return e.compareDocumentPosition&&1&e.compareDocumentPosition(A.createElement("div"))}),E.attrHandle=r(function(e){return e.innerHTML="",e.firstChild&&typeof e.firstChild.getAttribute!==V&&"#"===e.firstChild.getAttribute("href")})?{}:{href:function(e){return e.getAttribute("href",2)},type:function(e){return e.getAttribute("type")}},j.getByName?(E.find.ID=function(e,t){if(typeof t.getElementById!==V&&R){var n=t.getElementById(e);return n&&n.parentNode?[n]:[]}},E.filter.ID=function(e){var t=e.replace(wt,Ct);return function(e){return e.getAttribute("id")===t}}):(E.find.ID=function(e,t){if(typeof t.getElementById!==V&&R){var n=t.getElementById(e);return n?n.id===e||typeof n.getAttributeNode!==V&&n.getAttributeNode("id").value===e?[n]:void 0:[]}},E.filter.ID=function(e){var t=e.replace(wt,Ct);return function(e){var n=typeof e.getAttributeNode!==V&&e.getAttributeNode("id");return n&&n.value===t}}),E.find.TAG=j.getElementsByTagName?function(e,t){return typeof t.getElementsByTagName!==V?t.getElementsByTagName(e):void 0}:function(e,t){var n,r=[],o=0,i=t.getElementsByTagName(e);if("*"===e){for(;n=i[o++];)1===n.nodeType&&r.push(n);return r}return i},E.find.NAME=j.getByName&&function(e,t){return typeof t.getElementsByName!==V?t.getElementsByName(name):void 0},E.find.CLASS=j.getElementsByClassName&&function(e,t){return typeof t.getElementsByClassName!==V&&R?t.getElementsByClassName(e):void 0},H=[],L=[":focus"],(j.qsa=e(n.querySelectorAll))&&(r(function(e){e.innerHTML="",e.querySelectorAll("[selected]").length||L.push("\\["+tt+"*(?:checked|disabled|ismap|multiple|readonly|selected|value)"),e.querySelectorAll(":checked").length||L.push(":checked")}),r(function(e){e.innerHTML="",e.querySelectorAll("[i^='']").length&&L.push("[*^$]="+tt+"*(?:\"\"|'')"),e.querySelectorAll(":enabled").length||L.push(":enabled",":disabled"),e.querySelectorAll("*,:x"),L.push(",.*:")})),(j.matchesSelector=e(_=D.matchesSelector||D.mozMatchesSelector||D.webkitMatchesSelector||D.oMatchesSelector||D.msMatchesSelector))&&r(function(e){j.disconnectedMatch=_.call(e,"div"),_.call(e,"[s!='']:x"),H.push("!=",st)}),L=RegExp(L.join("|")),H=H.length&&RegExp(H.join("|")),M=e(D.contains)||D.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)for(;t=t.parentNode;)if(t===e)return!0;return!1},J=D.compareDocumentPosition?function(e,t){if(e===t)return U=!0,0;var r=t.compareDocumentPosition&&e.compareDocumentPosition&&e.compareDocumentPosition(t);return r?1&r||k&&t.compareDocumentPosition(e)===r?e===n||M(B,e)?-1:t===n||M(B,t)?1:I?et.call(I,e)-et.call(I,t):0:4&r?-1:1:e.compareDocumentPosition?-1:1}:function(e,t){var r,o=0,s=e.parentNode,a=t.parentNode,l=[e],u=[t];if(e===t)return U=!0,0;if(!s||!a)return e===n?-1:t===n?1:s?-1:a?1:0;if(s===a)return i(e,t);for(r=e;r=r.parentNode;)l.unshift(r);for(r=t;r=r.parentNode;)u.unshift(r);for(;l[o]===u[o];)o++;return o?i(l[o],u[o]):l[o]===B?-1:u[o]===B?1:0},A):A},o.matches=function(e,t){return o(e,null,null,t)},o.matchesSelector=function(e,t){if((e.ownerDocument||e)!==A&&O(e),t=t.replace(bt,"='$1']"),j.matchesSelector&&R&&(!H||!H.test(t))&&!L.test(t))try{var n=_.call(e,t);if(n||j.disconnectedMatch||e.document&&11!==e.document.nodeType)return n}catch(r){}return o(t,A,null,[e]).length>0},o.contains=function(e,t){return(e.ownerDocument||e)!==A&&O(e),M(e,t)},o.attr=function(e,t){var n;return(e.ownerDocument||e)!==A&&O(e),R&&(t=t.toLowerCase()),(n=E.attrHandle[t])?n(e):!R||j.attributes?e.getAttribute(t):((n=e.getAttributeNode(t))||e.getAttribute(t))&&e[t]===!0?t:n&&n.specified?n.value:null},o.error=function(e){throw Error("Syntax error, unrecognized expression: "+e)},o.uniqueSort=function(e){var t,n=[],r=0,o=0;if(U=!j.detectDuplicates,k=!j.sortDetached,I=!j.sortStable&&e.slice(0),e.sort(J),U){for(;t=e[o++];)t===e[o]&&(r=n.push(o));for(;r--;)e.splice(n[r],1)}return e},T=o.getText=function(e){var t,n="",r=0,o=e.nodeType;if(o){if(1===o||9===o||11===o){if("string"==typeof e.textContent)return e.textContent;for(e=e.firstChild;e;e=e.nextSibling)n+=T(e)}else if(3===o||4===o)return e.nodeValue}else for(;t=e[r];r++)n+=T(t);return n},E=o.selectors={cacheLength:50,createPseudo:n,match:ft,find:{},relative:{">":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace(wt,Ct),e[3]=(e[4]||e[5]||"").replace(wt,Ct),"~="===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]||o.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]&&o.error(e[0]),e},PSEUDO:function(e){var t,n=!e[5]&&e[2];return ft.CHILD.test(e[0])?null:(e[4]?e[2]=e[4]:n&&ct.test(n)&&(t=u(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(wt,Ct).toLowerCase(),function(t){return t.nodeName&&t.nodeName.toLowerCase()===e})},CLASS:function(e){var t=X[e+" "];return t||(t=RegExp("(^|"+tt+")"+e+"("+tt+"|$)"))&&X(e,function(e){return t.test(e.className||typeof e.getAttribute!==V&&e.getAttribute("class")||"")})},ATTR:function(e,t,n){return function(r){var i=o.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,o){var i="nth"!==e.slice(0,3),s="last"!==e.slice(-4),a="of-type"===t;return 1===r&&0===o?function(e){return!!e.parentNode}:function(t,n,l){var u,c,d,f,p,h,m=i!==s?"nextSibling":"previousSibling",g=t.parentNode,v=a&&t.nodeName.toLowerCase(),y=!l&&!a;if(g){if(i){for(;m;){for(d=t;d=d[m];)if(a?d.nodeName.toLowerCase()===v:1===d.nodeType)return!1;h=m="only"===e&&!h&&"nextSibling"}return!0}if(h=[s?g.firstChild:g.lastChild],s&&y){for(c=g[P]||(g[P]={}),u=c[e]||[],p=u[0]===q&&u[1],f=u[0]===q&&u[2],d=p&&g.childNodes[p];d=++p&&d&&d[m]||(f=p=0)||h.pop();)if(1===d.nodeType&&++f&&d===t){c[e]=[q,p,f];break}}else if(y&&(u=(t[P]||(t[P]={}))[e])&&u[0]===q)f=u[1];else for(;(d=++p&&d&&d[m]||(f=p=0)||h.pop())&&((a?d.nodeName.toLowerCase()!==v:1!==d.nodeType)||!++f||(y&&((d[P]||(d[P]={}))[e]=[q,f]),d!==t)););return f-=o,f===r||0===f%r&&f/r>=0}}},PSEUDO:function(e,t){var r,i=E.pseudos[e]||E.setFilters[e.toLowerCase()]||o.error("unsupported pseudo: "+e);return i[P]?i(t):i.length>1?(r=[e,e,"",t],E.setFilters.hasOwnProperty(e.toLowerCase())?n(function(e,n){for(var r,o=i(e,t),s=o.length;s--;)r=et.call(e,o[s]),e[r]=!(n[r]=o[s])}):function(e){return i(e,0,r)}):i}},pseudos:{not:n(function(e){var t=[],r=[],o=S(e.replace(at,"$1"));return o[P]?n(function(e,t,n,r){for(var i,s=o(e,null,r,[]),a=e.length;a--;)(i=s[a])&&(e[a]=!(t[a]=i))}):function(e,n,i){return t[0]=e,o(t,null,i,r),!r.pop()}}),has:n(function(e){return function(t){return o(e,t).length>0}}),contains:n(function(e){return function(t){return(t.textContent||t.innerText||T(t)).indexOf(e)>-1}}),lang:n(function(e){return dt.test(e||"")||o.error("unsupported lang: "+e),e=e.replace(wt,Ct).toLowerCase(),function(t){var n;do if(n=R?t.lang:t.getAttribute("xml:lang")||t.getAttribute("lang"))return n=n.toLowerCase(),n===e||0===n.indexOf(e+"-");while((t=t.parentNode)&&1===t.nodeType);return!1}}),target:function(e){var t=window.location&&window.location.hash;return t&&t.slice(1)===e.id},root:function(e){return e===D},focus:function(e){return e===A.activeElement&&(!A.hasFocus||A.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!E.pseudos.empty(e)},header:function(e){return vt.test(e.nodeName)},input:function(e){return gt.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:l(function(){return[0]}),last:l(function(e,t){return[t-1]}),eq:l(function(e,t,n){return[0>n?n+t:n]}),even:l(function(e,t){for(var n=0;t>n;n+=2)e.push(n);return e}),odd:l(function(e,t){for(var n=1;t>n;n+=2)e.push(n);return e}),lt:l(function(e,t,n){for(var r=0>n?n+t:n;--r>=0;)e.push(r);return e}),gt:l(function(e,t,n){for(var r=0>n?n+t:n;t>++r;)e.push(r);return e})}};for(w in{radio:!0,checkbox:!0,file:!0,password:!0,image:!0})E.pseudos[w]=s(w);for(w in{submit:!0,reset:!0})E.pseudos[w]=a(w);return S=o.compile=function(e,t){var n,r=[],o=[],i=$[e+" "];if(!i){for(t||(t=u(e)),n=t.length;n--;)i=m(t[n]),i[P]?r.push(i):o.push(i);i=$(e,g(o,r))}return i},E.pseudos.nth=E.pseudos.eq,b.prototype=E.filters=E.pseudos,E.setFilters=new b,j.sortStable=P.split("").sort(J).join("")===P,O(),[0,0].sort(J),j.detectDuplicates=U,{select:o,matches:o.matches,matchesSelector:o.matchesSelector}}); -Ink.createModule("Ink.Dom.Browser","1",[],function(){"use strict";var e={IE:!1,GECKO:!1,OPERA:!1,SAFARI:!1,KONQUEROR:!1,CHROME:!1,model:!1,version:!1,userAgent:!1,init:function(){this.detectBrowser(),this.setDimensions(),this.setReferrer()},setDimensions:function(){var e=0,t=0;"number"==typeof window.innerWidth?(e=window.innerWidth,t=window.innerHeight):document.documentElement&&(document.documentElement.clientWidth||document.documentElement.clientHeight)?(e=document.documentElement.clientWidth,t=document.documentElement.clientHeight):document.body&&(document.body.clientWidth||document.body.clientHeight)&&(e=document.body.clientWidth,t=document.body.clientHeight),this.windowWidth=e,this.windowHeight=t},setReferrer:function(){this.referrer=void 0!==document.referrer?document.referrer.length>0?window.escape(document.referrer):!1:!1},detectBrowser:function(){var e=navigator.userAgent;if(this.userAgent=e,e=e.toLowerCase(),RegExp("applewebkit/").test(e))RegExp("chrome/").test(e)?(this.CHROME=!0,this.model="chrome",this.version=e.replace(RegExp("(.*)chrome/([^\\s]+)(.*)"),"$2"),this.cssPrefix="-webkit-",this.domPrefix="Webkit"):(this.SAFARI=!0,this.model="safari",this.version=e.replace(RegExp("(.*)applewebkit/([^\\s]+)(.*)"),"$2"),this.cssPrefix="-webkit-",this.domPrefix="Webkit");else if(RegExp("opera").test(e))this.OPERA=!0,this.model="opera",this.version=e.replace(RegExp("(.*)opera.([^\\s$]+)(.*)"),"$2"),this.cssPrefix="-o-",this.domPrefix="O";else if(RegExp("konqueror").test(e))this.KONQUEROR=!0,this.model="konqueror",this.version=e.replace(RegExp("(.*)konqueror/([^;]+);(.*)"),"$2"),this.cssPrefix="-khtml-",this.domPrefix="Khtml";else if(RegExp("msie\\ ").test(e))this.IE=!0,this.model="ie",this.version=e.replace(RegExp("(.*)\\smsie\\s([^;]+);(.*)"),"$2"),this.cssPrefix="-ms-",this.domPrefix="ms";else if(RegExp("gecko").test(e)){this.GECKO=!0;var t=RegExp("(camino|chimera|epiphany|minefield|firefox|firebird|phoenix|galeon|iceweasel|k\\-meleon|seamonkey|netscape|songbird|sylera)");if(t.test(e))this.model=e.match(t)[1],this.version=e.replace(RegExp("(.*)"+this.model+"/([^;\\s$]+)(.*)"),"$2"),this.cssPrefix="-moz-",this.domPrefix="Moz";else{this.model="mozilla";var n=RegExp("(.*)rv:([^)]+)(.*)");n.test(e)&&(this.version=e.replace(n,"$2")),this.cssPrefix="-moz-",this.domPrefix="Moz"}}},debug:function(){var e="known browsers: (ie, gecko, opera, safari, konqueror) \n";e+=[this.IE,this.GECKO,this.OPERA,this.SAFARI,this.KONQUEROR]+"\n",e+="model -> "+this.model+"\n",e+="version -> "+this.version+"\n",e+="\n",e+="original UA -> "+this.userAgent,alert(e)}};return e.init(),e}); -Ink.createModule("Ink.Util.Url","1",[],function(){"use strict";var e={_keyStr:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=",getUrl:function(){return window.location.href},genQueryString:function(e,t){var n,r,o,i=-1!==e.indexOf("?"),s=[e];for(r in t)t.hasOwnProperty(r)&&(i?n="&":(n="?",i=!0),o=t[r],"number"==typeof o||o||(o=""),s=s.concat([n,encodeURIComponent(r),"=",encodeURIComponent(o)]));return s.join("")},getQueryString:function(e){var t;t=e&&e!==void 0?e:this.getUrl();var n={};if(t.match(/\?(.+)/i)){var r=t.replace(/^(.*)\?([^\#]+)(\#(.*))?/g,"$2");if(r.length>0)for(var o=r.split(/[;&]/),i=0;o.length>i;i++){var s=o[i].split("=");n[decodeURIComponent(s[0])]=s[1]!==void 0&&s[1]?decodeURIComponent(s[1]):!1}}return n},getAnchor:function(e){var t;t=e&&e!==void 0?e:this.getUrl();var n=!1;return t.match(/#(.+)/)&&(n=t.replace(/([^#]+)#(.*)/,"$2")),n},getAnchorString:function(e){var t;t=e&&e!==void 0?e:this.getUrl();var n={};if(t.match(/#(.+)/i)){var r=t.replace(/^([^#]+)#(.*)?/g,"$2");if(r.length>0)for(var o=r.split(/[;&]/),i=0;o.length>i;i++){var s=o[i].split("=");n[decodeURIComponent(s[0])]=s[1]!==void 0&&s[1]?decodeURIComponent(s[1]):!1}}return n},parseUrl:function(e){var t={};if(e&&e!==void 0&&"string"==typeof e){if(e.match(/^([^:]+):\/\//i)){var n=/^([^:]+):\/\/([^\/]*)\/?([^\?#]*)\??([^#]*)#?(.*)/i;e.match(n)&&(t.scheme=e.replace(n,"$1"),t.host=e.replace(n,"$2"),t.path="/"+e.replace(n,"$3"),t.query=e.replace(n,"$4")||!1,t.fragment=e.replace(n,"$5")||!1)}else{var r=RegExp("^([^\\?]+)\\?([^#]+)#(.*)","i"),o=RegExp("^([^\\?]+)\\?([^#]+)#?","i"),i=RegExp("^([^\\?]+)\\??","i");e.match(r)?(t.scheme=!1,t.host=!1,t.path=e.replace(r,"$1"),t.query=e.replace(r,"$2"),t.fragment=e.replace(r,"$3")):e.match(o)?(t.scheme=!1,t.host=!1,t.path=e.replace(o,"$1"),t.query=e.replace(o,"$2"),t.fragment=!1):e.match(i)&&(t.scheme=!1,t.host=!1,t.path=e.replace(i,"$1"),t.query=!1,t.fragment=!1)}if(t.host){var s=RegExp("^(.*)\\:(\\d+)$","i");if(t.host.match(s)){var a=t.host;t.host=a.replace(s,"$1"),t.port=a.replace(s,"$2")}else t.port=!1;if(t.host.match(/@/i)){var l=t.host;t.host=l.split("@")[1];var u=l.split("@")[0];u.match(/\:/)?(t.user=u.split(":")[0],t.pass=u.split(":")[1]):(t.user=u,t.pass=!1)}}}return t},currentScriptElement:function(e){var t=document.getElementsByTagName("script");if(e===void 0)return t.length>0?t[t.length-1]:!1;for(var n=!1,r=RegExp(""+e,"i"),o=0,i=t.length;i>o;o++)if(n=t[o],r.test(n.src))return n;return!1},_debug:function(){}};return e}); -Ink.createModule("Ink.Util.Swipe","1",["Ink.Dom.Event_1"],function(e){"use strict";var t=function(e,t){this._options=Ink.extendObj({callback:void 0,forceAxis:void 0,maxDist:void 0,maxDuration:void 0,minDist:void 0,minDuration:void 0,stopEvents:!0,storeGesture:!1},t||{}),this._handlers={down:Ink.bindEvent(this._onDown,this),move:Ink.bindEvent(this._onMove,this),up:Ink.bindEvent(this._onUp,this)},this._element=Ink.i(e),this._init()};return t._supported="ontouchstart"in document.documentElement,t.prototype={_init:function(){var t=document.body;e.observe(t,"touchstart",this._handlers.down),this._options.storeGesture&&e.observe(t,"touchmove",this._handlers.move),e.observe(t,"touchend",this._handlers.up),this._isOn=!1},_isMeOrParent:function(e,t){if(e){do{if(e===t)return!0;e=e.parentNode}while(e);return!1}},_onDown:function(t){1===event.changedTouches.length&&this._isMeOrParent(t.target,this._element)&&(this._options.stopEvents===!0&&e.stop(t),t=t.changedTouches[0],this._isOn=!0,this._target=t.target,this._t0=(new Date).valueOf(),this._p0=[t.pageX,t.pageY],this._options.storeGesture&&(this._gesture=[this._p0],this._time=[0]))},_onMove:function(t){if(this._isOn&&1===event.changedTouches.length){this._options.stopEvents===!0&&e.stop(t),t=t.changedTouches[0];var n=(new Date).valueOf(),r=.001*(n-this._t0);this._gesture.push([t.pageX,t.pageY]),this._time.push(r)}},_onUp:function(t){if(this._isOn&&1===event.changedTouches.length){this._options.stopEvents&&e.stop(t),t=t.changedTouches[0],this._isOn=!1;var n=(new Date).valueOf(),r=[t.pageX,t.pageY],o=.001*(n-this._t0),i=[r[0]-this._p0[0],r[1]-this._p0[1]],s=Math.sqrt(i[0]*i[0]+i[1]*i[1]),a=Math.abs(i[0])>Math.abs(i[1])?"x":"y",l=this._options;if(!(l.minDist&&l.minDist>s||l.maxDist&&s>l.maxDist||l.minDuration&&l.minDuration>o||l.maxDuration&&o>l.maxDuration||l.forceAxis&&a!==l.forceAxis)){var u={upEvent:t,elementId:this._element.id,duration:o,dr:i,dist:s,axis:a,target:this._target};this._options.storeGesture&&(u.gesture=this._gesture,u.time=this._time),this._options.callback(this,u)}}}},t}); -Ink.createModule("Ink.Util.String","1",[],function(){"use strict";var InkUtilString={_chars:["&","à","á","â","ã","ä","å","æ","ç","è","é","ê","ë","ì","í","î","ï","ð","ñ","ò","ó","ô","õ","ö","ø","ù","ú","û","ü","ý","þ","ÿ","À","Á","Â","Ã","Ä","Å","Æ","Ç","È","É","Ê","Ë","Ì","Í","Î","Ï","Ð","Ñ","Ò","Ó","Ô","Õ","Ö","Ø","Ù","Ú","Û","Ü","Ý","Þ","€",'"',"ß","<",">","¢","£","¤","¥","¦","§","¨","©","ª","«","¬","­","®","¯","°","±","²","³","´","µ","¶","·","¸","¹","º","»","¼","½","¾"],_entities:["amp","agrave","aacute","acirc","atilde","auml","aring","aelig","ccedil","egrave","eacute","ecirc","euml","igrave","iacute","icirc","iuml","eth","ntilde","ograve","oacute","ocirc","otilde","ouml","oslash","ugrave","uacute","ucirc","uuml","yacute","thorn","yuml","Agrave","Aacute","Acirc","Atilde","Auml","Aring","AElig","Ccedil","Egrave","Eacute","Ecirc","Euml","Igrave","Iacute","Icirc","Iuml","ETH","Ntilde","Ograve","Oacute","Ocirc","Otilde","Ouml","Oslash","Ugrave","Uacute","Ucirc","Uuml","Yacute","THORN","euro","quot","szlig","lt","gt","cent","pound","curren","yen","brvbar","sect","uml","copy","ordf","laquo","not","shy","reg","macr","deg","plusmn","sup2","sup3","acute","micro","para","middot","cedil","sup1","ordm","raquo","frac14","frac12","frac34"],_accentedChars:["à","á","â","ã","ä","å","è","é","ê","ë","ì","í","î","ï","ò","ó","ô","õ","ö","ù","ú","û","ü","ç","ñ","À","Á","Â","Ã","Ä","Å","È","É","Ê","Ë","Ì","Í","Î","Ï","Ò","Ó","Ô","Õ","Ö","Ù","Ú","Û","Ü","Ç","Ñ"],_accentedRemovedChars:["a","a","a","a","a","a","e","e","e","e","i","i","i","i","o","o","o","o","o","u","u","u","u","c","n","A","A","A","A","A","A","E","E","E","E","I","I","I","I","O","O","O","O","O","U","U","U","U","C","N"],_htmlUnsafeChars:{"<":"<",">":">","&":"&",'"':""","'":"'"},ucFirst:function(e,t){var n=t?/(^|\s)(\w)(\S{2,})/:/(^|\s)(\w)(\S{2,})/g;return e?(e+"").replace(n,function(e,t,n,r){return t+n.toUpperCase()+r.toLowerCase()}):e},trim:function(e){return"string"==typeof e?e.replace(/^\s+|\s+$|\n+$/g,""):e},stripTags:function(e,t){if(t&&"string"==typeof t){for(var n=InkUtilString.trim(t).split(","),r=[],o=!1,i=0;n.length>i;i++)""!==InkUtilString.trim(n[i])&&(o=InkUtilString.trim(n[i].replace(/(\<|\>)/g,"").replace(/\s/,"")),r.push("(<"+o+"\\s[^>]+>|<(\\s|\\/)?(\\s|\\/)?"+o+">)"));for(var s=r.join("|"),a=RegExp(s,"i"),l=e.match(RegExp("<[^>]*>","g")),u=0;l.length>u;u++)l[u].match(a)||(e=e.replace(RegExp(l[u],"gm"),""));return e}return e.replace(/\<[^\>]+\>/g,"")},htmlEntitiesEncode:function(e){if(e&&e.replace)for(var t=!1,n=0;InkUtilString._chars.length>n;n++)t=RegExp(InkUtilString._chars[n],"gm"),e=e.replace(t,"&"+InkUtilString._entities[n]+";");return e},htmlEntitiesDecode:function(e){if(e&&e.replace){for(var t=!1,n=0;InkUtilString._entities.length>n;n++)t=RegExp("&"+InkUtilString._entities[n]+";","gm"),e=e.replace(t,InkUtilString._chars[n]);e=e.replace(/&#[^;]+;?/g,function(e){return"x"===e.charAt(2)?String.fromCharCode(parseInt(e.substring(3),16)):String.fromCharCode(parseInt(e.substring(2),10))})}return e},utf8Encode:function(e){e=e.replace(/\r\n/g,"\n");for(var t="",n=0;e.length>n;n++){var r=e.charCodeAt(n);128>r?t+=String.fromCharCode(r):r>127&&2048>r?(t+=String.fromCharCode(192|r>>6),t+=String.fromCharCode(128|63&r)):(t+=String.fromCharCode(224|r>>12),t+=String.fromCharCode(128|63&r>>6),t+=String.fromCharCode(128|63&r))}return t},shortString:function(e,t){for(var n=e.split(" "),r="",o=0;n.length>o;o++){if((r+n[o]+" ").length>=t){r+="…";break}r+=n[o]+" "}return r},truncateString:function(e,t){return e.length-1>t?e.substr(0,t-1)+"…":e},utf8Decode:function(e){for(var t="",n=0,r=0,o=0,i=0;e.length>n;)r=e.charCodeAt(n),128>r?(t+=String.fromCharCode(r),n++):r>191&&224>r?(o=e.charCodeAt(n+1),t+=String.fromCharCode((31&r)<<6|63&o),n+=2):(o=e.charCodeAt(n+1),i=e.charCodeAt(n+2),t+=String.fromCharCode((15&r)<<12|(63&o)<<6|63&i),n+=3);return t},removeAccentedChars:function(e){for(var t=e,n=!1,r=0;InkUtilString._accentedChars.length>r;r++)n=RegExp(InkUtilString._accentedChars[r],"gm"),t=t.replace(n,""+InkUtilString._accentedRemovedChars[r]);return t},substrCount:function(e,t){return e?e.split(t).length-1:0},evalJSON:function(strJSON,sanitize){if(sanitize===void 0||null===sanitize||InkUtilString.isJSON(strJSON))try{return"undefined"!=typeof JSON&&JSON.parse!==void 0?JSON.parse(strJSON):eval("("+strJSON+")")}catch(e){throw Error("ERROR: Bad JSON string...")}},isJSON:function(e){return e=e.replace(/\\./g,"@").replace(/"[^"\\\n\r]*"/g,""),/^[,:{}\[\]0-9.\-+Eaeflnr-u \n\r\t]*$/.test(e)},htmlEscapeUnsafe:function(e){var t=InkUtilString._htmlUnsafeChars;return null!=e?(e+"").replace(/[<>&'"]/g,function(e){return t[e]}):e},normalizeWhitespace:function(e){return null!=e?InkUtilString.trim((e+"").replace(/\s+/g," ")):e},toUnicode:function(e){if("string"==typeof e){for(var t="",n=!1,r=!1,o=e.length,i=0;o>i;){if(n=e.charCodeAt(i),n>=32&&126>=n||8==n||9==n||10==n||12==n||13==n||32==n||34==n||47==n||58==n||92==n)r=8==n?"\\b":9==n?"\\t":10==n?"\\n":12==n?"\\f":13==n?"\\r":e.charAt(i);else{for(r=e.charCodeAt(i).toString(16)+"".toUpperCase();4>r.length;)r="0"+r;r="\\u"+r}t+=r,i++}return t}},escape:function(e){var t=e.charCodeAt(0).toString(16).split("");if(3>t.length){for(;2>t.length;)t.unshift("0");t.unshift("x")}else{for(;4>t.length;)t.unshift("0");t.unshift("u")}return t.unshift("\\"),t.join("")},unescape:function(e){var t=e.lastIndexOf("0");t=-1===t?2:Math.min(t,2);var n=e.substring(t),r=parseInt(n,16);return String.fromCharCode(r)},escapeText:function(e,t){void 0===t&&(t=["[","]","'",","]);for(var n,r,o=[],i=0,s=e.length;s>i;++i)n=e[i],r=n.charCodeAt(0),(32>r||r>126&&-1===t.indexOf(n))&&(n=InkUtilString.escape(n)),o.push(n);return o.join("")},escapedCharRegex:/(\\x[0-9a-fA-F]{2})|(\\u[0-9a-fA-F]{4})/g,unescapeText:function(e){for(var t;t=InkUtilString.escapedCharRegex.exec(e);)t=t[0],e=e.replace(t,InkUtilString.unescape(t)),InkUtilString.escapedCharRegex.lastIndex=0;return e},strcmp:function(e,t){return e===t?0:e>t?1:-1},packetize:function(e,t){for(var n,r=e.length,o=Array(Math.ceil(r/t)),i=e.split(""),s=0;r;)n=Math.min(t,r),o[s++]=i.splice(0,n).join(""),r-=n;return o}};return InkUtilString}); -Ink.createModule("Ink.Util.Json","1",[],function(){"use strict";function twoDigits(e){var t=""+e;return 1===t.length?"0"+t:t}var function_call=Function.prototype.call,cx=/[\u0000\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g,date_toISOString=Date.prototype.toISOString?Ink.bind(function_call,Date.prototype.toISOString):function(e){return e.getUTCFullYear()+"-"+twoDigits(e.getUTCMonth()+1)+"-"+twoDigits(e.getUTCDate())+"T"+twoDigits(e.getUTCHours())+":"+twoDigits(e.getUTCMinutes())+":"+twoDigits(e.getUTCSeconds())+"."+((e.getUTCMilliseconds()/1e3).toFixed(3)+"").slice(2,5)+"Z"},InkJson={_nativeJSON:window.JSON||null,_convertToUnicode:!1,_escape:function(e){var t={"\b":"\\b"," ":"\\t","\n":"\\n","\f":"\\f","\r":"\\r",'"':'\\"',"\\":"\\\\"};return/["\\\x00-\x1f]/.test(e)&&(e=e.replace(/([\x00-\x1f\\"])/g,function(e,n){var r=t[n];return r?r:(r=n.charCodeAt(),"\\u00"+Math.floor(r/16).toString(16)+(r%16).toString(16))})),e},_toUnicode:function(e){if(this._convertToUnicode){for(var t="",n=!1,r=!1,o=0,i=e.length;i>o;){if(n=e.charCodeAt(o),n>=32&&126>=n||8===n||9===n||10===n||12===n||13===n||32===n||34===n||47===n||58===n||92===n)r=34===n||92===n||47===n?"\\"+e.charAt(o):8===n?"\\b":9===n?"\\t":10===n?"\\n":12===n?"\\f":13===n?"\\r":e.charAt(o);else if(this._convertToUnicode){for(r=e.charCodeAt(o).toString(16)+"".toUpperCase();4>r.length;)r="0"+r;r="\\u"+r}else r=e.charAt(o);t+=r,o++}return t}return this._escape(e)},_stringifyValue:function(e){if("string"==typeof e)return'"'+this._toUnicode(e)+'"';if("number"!=typeof e||!isNaN(e)&&isFinite(e)){if(e===void 0||null===e)return"null";if("function"==typeof e.toJSON){var t=e.toJSON();return"string"==typeof t?'"'+this._escape(t)+'"':this._escape(""+t)}if("number"==typeof e||"boolean"==typeof e)return""+e;if("function"==typeof e)return"null";if(e.constructor===Date)throw"";if(e.constructor===Array){for(var n="",r=0,o=e.length;o>r;r++)r>0&&(n+=","),n+=this._stringifyValue(e[r]);return"["+n+"]"}var i="";for(var s in e)({}).hasOwnProperty.call(e,s)&&(""!==i&&(i+=","),i+='"'+this._escape(s)+'": '+this._stringifyValue(e[s]));return"{"+i+"}"}return"null"},stringify:function(e,t){return this._convertToUnicode=!!t,!this._convertToUnicode&&this._nativeJSON?this._nativeJSON.stringify(e):this._stringifyValue(e)},parse:function(text,reviver){function walk(e,t){var n,r,o=e[t];if(o&&"object"==typeof o)for(n in o)Object.prototype.hasOwnProperty.call(o,n)&&(r=walk(o,n),void 0!==r?o[n]=r:delete o[n]);return reviver.call(e,t,o)}var j;if(text+="",cx.lastIndex=0,cx.test(text)&&(text=text.replace(cx,function(e){return"\\u"+("0000"+e.charCodeAt(0).toString(16)).slice(-4)})),/^[\],:{}\s]*$/.test(text.replace(/\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g,"@").replace(/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g,"]").replace(/(?:^|:|,)(?:\s*\[)+/g,"")))return j=eval("("+text+")"),"function"==typeof reviver?walk({"":j},""):j;throw new SyntaxError("JSON.parse")}};return InkJson}); -Ink.createModule("Ink.Util.I18n","1",[],function(){"use strict";var e=/\{(?:(\{.*?})|(?:%s:)?(\d+)|(?:%s)?|([\w-]+))}/g,t=function(e,t){return"function"==typeof e?e.apply(this,t):void 0!==typeof e?e:""},n=function(e,t,r){return this instanceof n?(this.reset().lang(t).testMode(r).append(e||{},t),void 0):new n(e,t,r)};return n.prototype={reset:function(){return this._dicts=[],this._dict={},this._testMode=!1,this._lang=this._gLang,this},append:function(e){return this._dicts.push(e),this._dict=Ink.extendObj(this._dict,e[this._lang]),this},lang:function(e){if(!arguments.length)return this._lang;if(e&&this._lang!==e){this._lang=e,this._dict={};for(var t=0,n=this._dicts.length;n>t;t++)this._dict=Ink.extendObj(this._dict,this._dicts[t][e]||{})}return this},testMode:function(e){return arguments.length?(void 0!==e&&(this._testMode=!!e),this):!!this._testMode},getKey:function(e){var t,r=this._gLang,o=this._lang;return e in this._dict?t=this._dict[e]:(n.lang(o),t=this._gDict[e],n.lang(r)),t},text:function(n){if("string"==typeof n){var r=Array.prototype.slice.call(arguments,1),o=0,i="object"==typeof r[0],s=this.getKey(n);return void 0===s&&(s=this._testMode?"["+n+"]":n),"number"==typeof s&&(s+=""),"string"==typeof s?s=s.replace(e,function(e,n,s,a){var u=n?n:s?r[s-(i?0:1)]:a?r[0][a]||"":r[o++ +(i?1:0)];return t(u,[o].concat(r))}):"function"==typeof s?s.apply(this,r):s instanceof Array?t(s[r[0]],r):"object"==typeof s?t(s[r[0]],r):""}},ntext:function(e,t,n){var r,o=Array.prototype.slice.apply(arguments);if(2===o.length&&"number"==typeof t){if(r=this.getKey(e),!(r instanceof Array))return"";o.splice(0,1),r=r[1===t?0:1]}else o.splice(0,2),r=1===n?e:t;return this.text.apply(this,[r].concat(o))},ordinal:function(e){if(void 0===e)return"";var n=+(""+e).slice(-1),r=this.getKey("_ordinals");if(void 0===r)return"";if("string"==typeof r)return r;var o;return"function"==typeof r&&(o=r(e,n),"string"==typeof o)?o:"exceptions"in r&&(o="function"==typeof r.exceptions?r.exceptions(e,n):e in r.exceptions?t(r.exceptions[e],[e,n]):void 0,"string"==typeof o)?o:"byLastDigit"in r&&(o="function"==typeof r.byLastDigit?r.byLastDigit(n,e):n in r.byLastDigit?t(r.byLastDigit[n],[n,e]):void 0,"string"==typeof o)?o:"default"in r&&(o=t(r["default"],[e,n]),"string"==typeof o)?o:""},alias:function(){var e=Ink.bind(n.prototype.text,this);return e.ntext=Ink.bind(n.prototype.ntext,this),e.append=Ink.bind(n.prototype.append,this),e.ordinal=Ink.bind(n.prototype.ordinal,this),e.testMode=Ink.bind(n.prototype.testMode,this),e}},n.reset=function(){n.prototype._gDicts=[],n.prototype._gDict={},n.prototype._gLang="pt_PT"},n.reset(),n.append=function(e,t){if(t){if(!(t in e)){var r={};r[t]=e,e=r}t!==n.prototype._gLang&&n.lang(t)}n.prototype._gDicts.push(e),Ink.extendObj(n.prototype._gDict,e[n.prototype._gLang])},n.lang=function(e){if(!arguments.length)return n.prototype._gLang;if(e&&n.prototype._gLang!==e){n.prototype._gLang=e,n.prototype._gDict={};for(var t=0,r=n.prototype._gDicts.length;r>t;t++)Ink.extendObj(n.prototype._gDict,n.prototype._gDicts[t][e]||{})}},n}); -Ink.createModule("Ink.Util.Dumper","1",[],function(){"use strict";var e={_tab:"    ",_formatParam:function(e){var t="";switch(typeof e){case"string":t="(string) "+e;break;case"number":t="(number) "+e;break;case"boolean":t="(boolean) "+e;break;case"object":t=null!==e?e.constructor===Array?"Array \n{\n"+this._outputFormat(e,0)+"\n}":"Object \n{\n"+this._outputFormat(e,0)+"\n}":"null";break;default:t=!1}return t},_getTabs:function(e){for(var t="",n=0;e>n;n++)t+=this._tab;return t},_outputFormat:function(e,t){var n="",r=!1;for(var o in e)if(null!==e[o])if("object"!=typeof e[o]||e[o].constructor!==Array&&e[o].constructor!==Object){if(e[o].constructor===Function)continue;n=n+this._tab+this._getTabs(t)+"["+o+"] => "+e[o]+"\n"}else e[o].constructor===Array?r="Array":e[o].constructor===Object&&(r="Object"),n+=this._tab+this._getTabs(t)+"["+o+"] => "+r+"\n",n+=this._tab+this._getTabs(t)+"{\n",n+=this._outputFormat(e[o],t+1)+this._tab+this._getTabs(t)+"}\n";else n=n+this._tab+this._getTabs(t)+"["+o+"] => null \n";return n},printDump:function(e,t){if(t&&t!==void 0)if("string"==typeof t)document.getElementById(t).innerHTML="
"+this._formatParam(e)+"
";else{if("object"!=typeof t)throw"TARGET must be an element or an element ID";t.innerHTML="
"+this._formatParam(e)+"
"}else document.write("
"+this._formatParam(e)+"
")},returnDump:function(e){return this._formatParam(e)},alertDump:function(e){window.alert(this._formatParam(e).replace(/()(Array|Object)(<\/b>)/g,"$2"))},windowDump:function(e){var t="dumperwindow_"+1e4*Math.random(),n=window.open("",t,"width=400,height=300,left=50,top=50,status,menubar,scrollbars,resizable");n.document.open(),n.document.write("
"+this._formatParam(e)+"
"),n.document.close(),n.focus()}};return e}); -Ink.createModule("Ink.Util.Date","1",[],function(){"use strict";var e={_months:function(e){var t=["Janeiro","Fevereiro","Março","Abril","Maio","Junho","Julho","Agosto","Setembro","Outubro","Novembro","Dezembro"];return t[e]},_iMonth:function(e){return Number(e)?+e-1:{janeiro:0,jan:0,fevereiro:1,fev:1,"março":2,mar:2,abril:3,abr:3,maio:4,mai:4,junho:5,jun:5,julho:6,jul:6,agosto:7,ago:7,setembro:8,set:8,outubro:9,out:9,novembro:10,nov:10,dezembro:11,dez:11}[e.toLowerCase()]},_wDays:function(e){var t=["Domingo","Segunda","Terça","Quarta","Quinta","Sexta","Sábado"];return t[e]},_iWeek:function(e){return Number(e)?+e||7:{segunda:1,seg:1,"terça":2,ter:2,quarta:3,qua:3,quinta:4,qui:4,sexta:5,sex:5,"sábado":6,"sáb":6,domingo:7,dom:7}[e.toLowerCase()]},_daysInMonth:function(e,t){var n;return n=1===e||3===e||5===e||7===e||8===e||10===e||12===e?31:4===e||6===e||9===e||11===e?30:0===t%400||0===t%4&&0!==t%100?29:28},get:function(e,t){(e===void 0||""===e)&&(e="Y-m-d");var n,r=e.split(""),o=Array(r.length),i="\\";n=t===void 0?new Date:"number"==typeof t?new Date(1e3*t):new Date(t);for(var a,s,u,l=0;r.length>l;l++)switch(r[l]){case i:o[l]=r[l+1],l++;break;case"d":var c=n.getDate();o[l]=(c+"").length>1?c:"0"+c;break;case"D":o[l]=this._wDays(n.getDay()).substring(0,3);break;case"j":o[l]=n.getDate();break;case"l":o[l]=this._wDays(n.getDay());break;case"N":o[l]=n.getDay()||7;break;case"S":var d=n.getDate(),f=["st","nd","rd"],h="";o[l]=d>=11&&13>=d?"th":(h=f[(d+"").substr(-1)-1])?h:"th";break;case"w":o[l]=n.getDay();break;case"z":a=Date.UTC(n.getFullYear(),0,0),s=Date.UTC(n.getFullYear(),n.getMonth(),n.getDate()),o[l]=Math.floor((s-a)/864e5);break;case"W":var p=new Date(n.getFullYear(),0,1);a=p.getDay()||7;var m=Math.floor((n-p)/864e5+1);o[l]=Math.ceil((m-(8-a))/7)+1;break;case"F":o[l]=this._months(n.getMonth());break;case"m":var g=n.getMonth()+1+"";o[l]=g.length>1?g:"0"+g;break;case"M":o[l]=this._months(n.getMonth()).substring(0,3);break;case"n":o[l]=n.getMonth()+1;break;case"t":o[l]=this._daysInMonth(n.getMonth()+1,n.getYear());break;case"L":var v=n.getFullYear();o[l]=v%4?!1:v%100?!0:v%400?!1:!0;break;case"o":throw'"o" not implemented!';case"Y":o[l]=n.getFullYear();break;case"y":o[l]=(n.getFullYear()+"").substring(2);break;case"a":o[l]=12>n.getHours()?"am":"pm";break;case"A":o[l]=12>n.getHours?"AM":"PM";break;case"B":throw'"B" not implemented!';case"g":u=n.getHours(),o[l]=12>=u?u:u-12;break;case"G":o[l]=n.getHours()+"";break;case"h":u=n.getHours()+"",u=12>=u?u:u-12,o[l]=u.length>1?u:"0"+u;break;case"H":u=n.getHours()+"",o[l]=u.length>1?u:"0"+u;break;case"i":var y=n.getMinutes()+"";o[l]=y.length>1?y:"0"+y;break;case"s":var b=n.getSeconds()+"";o[l]=b.length>1?b:"0"+b;break;case"u":throw'"u" not implemented!';case"e":throw'"e" not implemented!';case"I":a=new Date(n.getFullYear(),0,1),o[l]=n.getTimezoneOffset()!==a.getTimezoneOffset()?1:0;break;case"O":var w=n.getTimezoneOffset(),k=w%60;u=-1*((w-k)/60)+"","-"!==u.charAt(0)&&(u="+"+u),u=3===u.length?u:u.replace(/([+\-])(\d)/,"$10$2"),o[l]=u+k+"0";break;case"P":throw'"P" not implemented!';case"T":throw'"T" not implemented!';case"Z":o[l]=60*n.getTimezoneOffset();break;case"c":throw'"c" not implemented!';case"r":var E=this._wDays(n.getDay()).substr(0,3),C=this._months(n.getMonth()).substr(0,3);o[l]=E+", "+n.getDate()+" "+C+this.get(" Y H:i:s O",n);break;case"U":o[l]=Math.floor(n.getTime()/1e3);break;default:o[l]=r[l]}return o.join("")},set:function(e,t){if(void 0!==t){(e===void 0||""===e)&&(e="Y-m-d");for(var n,r=e.split(""),o=Array(r.length),i="\\",a={year:void 0,month:void 0,day:void 0,dayY:void 0,dayW:void 0,week:void 0,hour:void 0,hourD:void 0,min:void 0,sec:void 0,msec:void 0,ampm:void 0,diffM:void 0,diffH:void 0,date:void 0},s=0,u=0;r.length>u;u++)switch(r[u]){case i:o[u]=r[u+1],u++;break;case"d":o[u]="(\\d{2})",a.day={original:u,match:s++};break;case"j":o[u]="(\\d{1,2})",a.day={original:u,match:s++};break;case"D":o[u]="([\\wá]{3})",a.dayW={original:u,match:s++};break;case"l":o[u]="([\\wá]{5,7})",a.dayW={original:u,match:s++};break;case"N":o[u]="(\\d)",a.dayW={original:u,match:s++};break;case"w":o[u]="(\\d)",a.dayW={original:u,match:s++};break;case"S":o[u]="\\w{2}";break;case"z":o[u]="(\\d{1,3})",a.dayY={original:u,match:s++};break;case"W":o[u]="(\\d{1,2})",a.week={original:u,match:s++};break;case"F":o[u]="([\\wç]{4,9})",a.month={original:u,match:s++};break;case"M":o[u]="(\\w{3})",a.month={original:u,match:s++};break;case"m":o[u]="(\\d{2})",a.month={original:u,match:s++};break;case"n":o[u]="(\\d{1,2})",a.month={original:u,match:s++};break;case"t":o[u]="\\d{2}";break;case"L":o[u]="\\w{4,5}";break;case"o":throw'"o" not implemented!';case"Y":o[u]="(\\d{4})",a.year={original:u,match:s++};break;case"y":o[u]="(\\d{2})",(a.year===void 0||"Y"!==r[a.year.original])&&(a.year={original:u,match:s++});break;case"a":o[u]="(am|pm)",a.ampm={original:u,match:s++};break;case"A":o[u]="(AM|PM)",a.ampm={original:u,match:s++};break;case"B":throw'"B" not implemented!';case"g":o[u]="(\\d{1,2})",a.hourD={original:u,match:s++};break;case"G":o[u]="(\\d{1,2})",a.hour={original:u,match:s++};break;case"h":o[u]="(\\d{2})",a.hourD={original:u,match:s++};break;case"H":o[u]="(\\d{2})",a.hour={original:u,match:s++};break;case"i":o[u]="(\\d{2})",a.min={original:u,match:s++};break;case"s":o[u]="(\\d{2})",a.sec={original:u,match:s++};break;case"u":throw'"u" not implemented!';case"e":throw'"e" not implemented!';case"I":o[u]="\\d";break;case"O":o[u]="([-+]\\d{4})",a.diffH={original:u,match:s++};break;case"P":throw'"P" not implemented!';case"T":throw'"T" not implemented!';case"Z":o[u]="(\\-?\\d{1,5})",a.diffM={original:u,match:s++};break;case"c":throw'"c" not implemented!';case"r":o[u]="([\\wá]{3}, \\d{1,2} \\w{3} \\d{4} \\d{2}:\\d{2}:\\d{2} [+\\-]\\d{4})",a.date={original:u,match:s++};break;case"U":o[u]="(\\d{1,13})",a.date={original:u,match:s++};break;default:o[u]=r[u]}var l=RegExp(o.join(""));try{if(n=t.match(l),!n)return}catch(c){return}var d,f,h=a.date!==void 0,p=a.year!==void 0,m=a.dayY!==void 0,g=a.day!==void 0,v=a.month!==void 0,y=v&&g,b=!v&&g,w=a.dayW!==void 0,k=a.week!==void 0,E=k&&w,C=!k&&w,x=m||y||!p&&b||E||!p&&C,S=!(p||m||g||v||w||k),T=a.hourD!==void 0&&a.ampm!==void 0,I=a.hour!==void 0,_=T||I,N=a.min!==void 0,O=a.sec!==void 0,D=a.msec!==void 0,A=!S||_,R=A||N,M=a.diffM!==void 0,L=a.diffH!==void 0;if(h){if("U"===r[a.date.original])return new Date(1e3*+n[a.date.match+1]);var H=n[a.date.match+1].match(/\w{3}, (\d{1,2}) (\w{3}) (\d{4}) (\d{2}):(\d{2}):(\d{2}) ([+\-]\d{4})/);return d=+H[4]+ +H[7].slice(0,3),f=+H[5]+60*((H[7].slice(0,1)+H[7].slice(3))/100),new Date(H[3],this._iMonth(H[2]),H[1],d,f,H[6])}var P,j,U,F,q,B,$,W=new Date;if(x||S){if(x){if(p){var J=W.getFullYear()-50+"";P=n[a.year.match+1],"y"===r[a.year.original]&&(P=+J.slice(0,2)+(P>=J.slice(2)?0:1)+P)}else P=W.getFullYear();if(m)j=0,U=n[a.dayY.match+1];else if(g)j=v?this._iMonth(n[a.month.match+1]):W.getMonth(),U=n[a.day.match+1];else{j=0;var Y;Y=k?n[a.week.match+1]:this.get("W",W),U=7*(Y-2)+(8-(new Date(P,0,1).getDay()||7))+this._iWeek(n[a.week.match+1])}if(0===j&&U>31){var X=new Date(P,j,U);j=X.getMonth(),U=X.getDate()}}else P=W.getFullYear(),j=W.getMonth(),U=W.getDate();return F=P+"-"+(j+1)+"-"+U+" ",d=T?+n[a.hourD.match+1]+("pm"===n[a.ampm.match+1]?12:0):I?n[a.hour.match+1]:S?W.getHours():"00",f=N?n[a.min.match+1]:A?"00":W.getMinutes(),q=O?n[a.sec.match+1]:R?"00":W.getSeconds(),B=D?n[a.msec.match+1]:"000",$=L?n[a.diffH.match+1]:M?(100*(-1*n[a.diffM.match+1]/60)+"").replace(/^(\d)/,"+$1").replace(/(^[\-+])(\d{3}$)/,"$10$2"):"+0000",new Date(F+d+":"+f+":"+q+"."+B+$)}}}};return e}); -Ink.createModule("Ink.Util.Cookie","1",[],function(){"use strict";var e={get:function(e){var t=document.cookie||!1,n={};if(t){t=t.replace(RegExp("; ","g"),";");var r=t.split(";"),o=[];if(r.length>0)for(var i=0;r.length>i;i++)o=r[i].split("="),2===o.length&&(n[o[0]]=decodeURIComponent(o[1])),o=[]}return e?n[e]!==void 0?n[e]:null:n},set:function(e,t,n,r,o,i){var a;if(!e||t===!1||void 0===e||void 0===t)return!1;a=e+"="+encodeURIComponent(t);var s=!1,u=!1,l=!1,c=!1;if(n&&n!==void 0&&!isNaN(n)){var d=new Date,f=parseInt(Number(d.valueOf()),10)+1e3*Number(parseInt(n,10)),h=new Date(f),p=h.toGMTString(),m=RegExp("([^\\s]+)(\\s\\d\\d)\\s(\\w\\w\\w)\\s(.*)");p=p.replace(m,"$1$2-$3-$4"),s="expires="+p}else s=void 0===n||isNaN(n)||0!==Number(parseInt(n,10))?"expires=Thu, 01-Jan-2037 00:00:01 GMT":"";if(u=r&&r!==void 0?"path="+r:"path=/",o&&o!==void 0)l="domain="+o;else{var g=RegExp(":(.*)");l="domain="+window.location.host,l=l.replace(g,"")}c=i&&i!==void 0?i:!1,document.cookie=a+"; "+s+"; "+u+"; "+l+"; "+c},remove:function(e,t,n){var r=!1,o=!1,i=-999999999;r=t&&t!==void 0?t:"/",o=n&&n!==void 0?n:window.location.host,this.set(e,"deleted",i,r,o)}};return e}); -Ink.createModule("Ink.Util.BinPack","1",[],function(){"use strict";var e=function(e,t){this.init(e,t)};e.prototype={init:function(e,t){this.root={x:0,y:0,w:e,h:t}},fit:function(e){var t,n,r;for(t=0;e.length>t;++t)r=e[t],(n=this.findNode(this.root,r.w,r.h))&&(r.fit=this.splitNode(n,r.w,r.h))},findNode:function(e,t,n){return e.used?this.findNode(e.right,t,n)||this.findNode(e.down,t,n):e.w>=t&&e.h>=n?e:null},splitNode:function(e,t,n){return e.used=!0,e.down={x:e.x,y:e.y+n,w:e.w,h:e.h-n},e.right={x:e.x+t,y:e.y,w:e.w-t,h:n},e}};var t=function(){};t.prototype={fit:function(e){var t,n,r,o=e.length,i=o>0?e[0].w:0,a=o>0?e[0].h:0;for(this.root={x:0,y:0,w:i,h:a},t=0;o>t;t++)r=e[t],r.fit=(n=this.findNode(this.root,r.w,r.h))?this.splitNode(n,r.w,r.h):this.growNode(r.w,r.h)},findNode:function(e,t,n){return e.used?this.findNode(e.right,t,n)||this.findNode(e.down,t,n):e.w>=t&&e.h>=n?e:null},splitNode:function(e,t,n){return e.used=!0,e.down={x:e.x,y:e.y+n,w:e.w,h:e.h-n},e.right={x:e.x+t,y:e.y,w:e.w-t,h:n},e},growNode:function(e,t){var n=this.root.w>=e,r=this.root.h>=t,o=r&&this.root.h>=this.root.w+e,i=n&&this.root.w>=this.root.h+t;return o?this.growRight(e,t):i?this.growDown(e,t):r?this.growRight(e,t):n?this.growDown(e,t):null},growRight:function(e,t){this.root={used:!0,x:0,y:0,w:this.root.w+e,h:this.root.h,down:this.root,right:{x:this.root.w,y:0,w:e,h:this.root.h}};var n;return(n=this.findNode(this.root,e,t))?this.splitNode(n,e,t):null},growDown:function(e,t){this.root={used:!0,x:0,y:0,w:this.root.w,h:this.root.h+t,down:{x:0,y:this.root.h,w:this.root.w,h:t},right:this.root};var n;return(n=this.findNode(this.root,e,t))?this.splitNode(n,e,t):null}};var n={random:function(){return Math.random()-.5},w:function(e,t){return t.w-e.w},h:function(e,t){return t.h-e.h},a:function(e,t){return t.area-e.area},max:function(e,t){return Math.max(t.w,t.h)-Math.max(e.w,e.h)},min:function(e,t){return Math.min(t.w,t.h)-Math.min(e.w,e.h)},height:function(e,t){return n.msort(e,t,["h","w"])},width:function(e,t){return n.msort(e,t,["w","h"])},area:function(e,t){return n.msort(e,t,["a","h","w"])},maxside:function(e,t){return n.msort(e,t,["max","min","h","w"])},msort:function(e,t,r){var o,i;for(i=0;r.length>i;++i)if(o=n[r[i]](e,t),0!==o)return o;return 0}},r=function(){return[this.w," x ",this.h].join("")},o={binPack:function(o){var i,a,s;for(i=0,a=o.blocks.length;a>i;++i)s=o.blocks[i],"area"in s||(s.area=s.w*s.h);var u=o.dimensions?new e(o.dimensions[0],o.dimensions[1]):new t;o.sorter||(o.sorter="maxside"),o.blocks.sort(n[o.sorter]),u.fit(o.blocks);var l=[u.root.w,u.root.h],c=[],d=[];for(i=0,a=o.blocks.length;a>i;++i)s=o.blocks[i],s.fit?c.push(s):(s.toString=r,d.push(s));var h=l[0]*l[1],f=0;for(i=0,a=c.length;a>i;++i)s=c[i],f+=s.area;return{dimensions:l,filled:f/h,blocks:o.blocks,fitted:c,unfitted:d}}};return o}); -Ink.createModule("Ink.Util.Array","1",[],function(){"use strict";var e=Array.prototype,t={inArray:function(e,t){if("object"==typeof t)for(var n=0,r=t.length;r>n;++n)if(t[n]===e)return!0;return!1},sortMulti:function(e,t){if(e===void 0||e.constructor!==Array)return!1;if("string"!=typeof t)return e.sort();if(e.length>0){if(e[0][t]===void 0)return!1;e.sort(function(e,n){var r=e[t],o=n[t];return o>r?-1:r>o?1:0})}return e},keyValue:function(e,t,n){if(e!==void 0&&"object"==typeof t&&this.inArray(e,t)){for(var r=[],o=0,i=t.length;i>o;++o)if(t[o]===e){if(n!==void 0&&n===!0)return o;r.push(o)}return r}return!1},shuffle:function(e){if(e!==void 0&&e.constructor!==Array)return!1;for(var t=e.length,n=!1,r=!1;t--;)r=Math.floor(Math.random()*(t+1)),n=e[t],e[t]=e[r],e[r]=n;return e},forEach:function(t,n,r){if(e.forEach)return e.forEach.call(t,n,r);for(var o=0,i=t.length>>>0;i>o;o++)n.call(r,t[o],o,t)},each:function(){t.forEach.apply(t,[].slice.call(arguments))},map:function(t,n,r){if(e.map)return e.map.call(t,n,r);for(var o=Array(a),i=0,a=t.length>>>0;a>i;i++)o[i]=n.call(r,t[i],i,t);return o},filter:function(t,n,r){if(e.filter)return e.filter.call(t,n,r);for(var o=[],i=null,a=0,s=t.length;s>a;a++)i=t[a],n.call(r,i,a,t)&&o.push(i);return o},some:function(e,t,n){if(null===e)throw new TypeError("First argument is invalid.");var r=Object(e),o=r.length>>>0;if("function"!=typeof t)throw new TypeError("Second argument must be a function.");for(var i=0;o>i;i++)if(i in r&&t.call(n,r[i],i,r))return!0;return!1},intersect:function(e,t){if(!e||!t||e instanceof Array==!1||t instanceof Array==!1)return[];for(var n=[],r=0,o=e.length;o>r;++r)for(var i=0,a=t.length;a>i;++i)e[r]===t[i]&&n.push(e[r]);return n},convert:function(t){return e.slice.call(t||[],0)},insert:function(e,t,n){e.splice(t,0,n)},remove:function(e,t,n){for(var r=[],o=0,i=e.length;i>o;o++)o>=t&&t+n>o||r.push(e[o]);return r}};return t}); -Ink.createModule("Ink.Util.Validator","1",[],function(){"use strict";var e={_countryCodes:["AO","CV","MZ","PT"],_internacionalPT:351,_indicativosPT:{21:"lisboa",22:"porto",231:"mealhada",232:"viseu",233:"figueira da foz",234:"aveiro",235:"arganil",236:"pombal",238:"seia",239:"coimbra",241:"abrantes",242:"ponte de sôr",243:"santarém",244:"leiria",245:"portalegre",249:"torres novas",251:"valença",252:"vila nova de famalicão",253:"braga",254:"peso da régua",255:"penafiel",256:"são joão da madeira",258:"viana do castelo",259:"vila real",261:"torres vedras",262:"caldas da raínha",263:"vila franca de xira",265:"setúbal",266:"évora",268:"estremoz",269:"santiago do cacém",271:"guarda",272:"castelo branco",273:"bragança",274:"proença-a-nova",275:"covilhã",276:"chaves",277:"idanha-a-nova",278:"mirandela",279:"moncorvo",281:"tavira",282:"portimão",283:"odemira",284:"beja",285:"moura",286:"castro verde",289:"faro",291:"funchal, porto santo",292:"corvo, faial, flores, horta, pico",295:"angra do heroísmo, graciosa, são jorge, terceira",296:"ponta delgada, são miguel, santa maria",91:"rede móvel 91 (Vodafone / Yorn)",93:"rede móvel 93 (Optimus)",96:"rede móvel 96 (TMN)",92:"rede móvel 92 (TODOS)",707:"número único",760:"número único",800:"número grátis",808:"chamada local",30:"voip"},_internacionalCV:238,_indicativosCV:{2:"fixo",91:"móvel 91",95:"móvel 95",97:"móvel 97",98:"móvel 98",99:"móvel 99"},_internacionalAO:244,_indicativosAO:{2:"fixo",91:"móvel 91",92:"móvel 92"},_internacionalMZ:258,_indicativosMZ:{2:"fixo",82:"móvel 82",84:"móvel 84"},_internacionalTL:670,_indicativosTL:{3:"fixo",7:"móvel 7"},_characterGroups:{numbers:["0-9"],asciiAlpha:["a-zA-Z"],latin1Alpha:["a-zA-Z","À-ÿ"],unicodeAlpha:["a-zA-Z","À-ÿ","Ā-῿","Ⰰ-퟿"],space:[" "],dash:["-"],underscore:["_"],nicknamePunctuation:["_.-"],singleLineWhitespace:[" "],newline:["\n"],whitespace:[" \n \f\r  "],asciiPunctuation:["!-/",":-@","[-`","{-~"],latin1Punctuation:["!-/",":-@","[-`","{-~","¡-¿","×","÷"],unicodePunctuation:["!-/",":-@","[-`","{-~","¡-¿","×","÷"," -","⸀-⹿"," -〿"]},createRegExp:function(t){var n="^[";for(var r in t)if(t.hasOwnProperty(r)){if(!(r in e._characterGroups))throw Error("group "+r+" is not a valid character group");t[r]&&(n+=e._characterGroups[r].join(""))}return RegExp(n+"]*?$")},checkCharacterGroups:function(t,n){return e.createRegExp(n).test(t)},unicode:function(t,n){return e.checkCharacterGroups(t,Ink.extendObj({unicodeAlpha:!0},n))},latin1:function(t,n){return e.checkCharacterGroups(t,Ink.extendObj({latin1Alpha:!0},n))},ascii:function(t,n){return e.checkCharacterGroups(t,Ink.extendObj({asciiAlpha:!0},n))},number:function(t,n){t+="";var r=Ink.extendObj({decimalSep:".",thousandSep:"",negative:!0,decimalPlaces:null,maxDigits:null,max:null,min:null,returnNumber:!1},n||{});if(r.thousandSep)return t=t.replace(RegExp("\\"+r.thousandSep,"g"),""),r.thousandSep="",e.number(t,r);if(r.negative===!1)return r.min=0,r.negative=!0,e.number(t,r);if("."!==r.decimalSep&&(t=t.replace(RegExp("\\"+r.decimalSep,"g"),".")),!/^(-)?(\d+)?(\.\d+)?$/.test(t)||""===t)return!1;var i;if(r.decimalSep&&-1!==t.indexOf(r.decimalSep)){if(i=t.split(r.decimalSep),null!==r.decimalPlaces&&i[1].length>r.decimalPlaces)return!1}else i=[""+t,""];if(null!==r.maxDigits&&i[0].replace(/-/g,"").length>r.maxDigits)return i;var o=parseFloat(t);return null!==r.maxExcl&&o>=r.maxExcl||null!==r.minExcl&&r.minExcl>=o?!1:null!==r.max&&o>r.max||null!==r.min&&r.min>o?!1:r.returnNumber?o:!0},_isLeapYear:function(e){var t=/^\d{4}$/;return t.test(e)?e%4?!1:e%100?!0:e%400?!1:!0:!1},_dateParsers:{"yyyy-mm-dd":{day:5,month:3,year:1,sep:"-",parser:/^(\d{4})(\-)(\d{1,2})(\-)(\d{1,2})$/},"yyyy/mm/dd":{day:5,month:3,year:1,sep:"/",parser:/^(\d{4})(\/)(\d{1,2})(\/)(\d{1,2})$/},"yy-mm-dd":{day:5,month:3,year:1,sep:"-",parser:/^(\d{2})(\-)(\d{1,2})(\-)(\d{1,2})$/},"yy/mm/dd":{day:5,month:3,year:1,sep:"/",parser:/^(\d{2})(\/)(\d{1,2})(\/)(\d{1,2})$/},"dd-mm-yyyy":{day:1,month:3,year:5,sep:"-",parser:/^(\d{1,2})(\-)(\d{1,2})(\-)(\d{4})$/},"dd/mm/yyyy":{day:1,month:3,year:5,sep:"/",parser:/^(\d{1,2})(\/)(\d{1,2})(\/)(\d{4})$/},"dd-mm-yy":{day:1,month:3,year:5,sep:"-",parser:/^(\d{1,2})(\-)(\d{1,2})(\-)(\d{2})$/},"dd/mm/yy":{day:1,month:3,year:5,sep:"/",parser:/^(\d{1,2})(\/)(\d{1,2})(\/)(\d{2})$/}},_daysInMonth:function(e,t){var n=0;return n=1===e||3===e||5===e||7===e||8===e||10===e||12===e?31:4===e||6===e||9===e||11===e?30:0===t%400||0===t%4&&0!==t%100?29:28},_isValidDate:function(e,t,n){var r=/^\d{4}$/,i=/^\d{1,2}$/;return r.test(e)&&i.test(t)&&i.test(n)&&t>=1&&12>=t&&n>=1&&this._daysInMonth(t,e)>=n?!0:!1},email:function(e){var t=RegExp("^[_a-z0-9-]+((\\.|\\+)[_a-z0-9-]+)*@([\\w]*-?[\\w]*\\.)+[a-z]{2,4}$","i");return t.test(e)?!0:!1},mail:function(t){return e.email(t)},url:function(e,t){if(t===void 0||t===!1){var n=RegExp("(^(http\\:\\/\\/|https\\:\\/\\/)(.+))","i");n.test(e)===!1&&(e="http://"+e)}var r=RegExp("^(http:\\/\\/|https:\\/\\/)([\\w]*(-?[\\w]*)*\\.)+[a-z]{2,4}","i");return r.test(e)===!1?!1:!0},isPTPhone:function(e){e=""+e;var t=[];for(var n in this._indicativosPT)"string"==typeof this._indicativosPT[n]&&t.push(n);var r=t.join("|"),i=/^(00351|\+351)/;i.test(e)&&(e=e.replace(i,""));var o=/(\s|\-|\.)+/g;e=e.replace(o,"");var a=/[\d]{9}/i;if(9===e.length&&a.test(e)){var s=RegExp("^("+r+")");if(s.test(e))return!0}return!1},isPortuguesePhone:function(e){return this.isPTPhone(e)},isCVPhone:function(e){e=""+e;var t=[];for(var n in this._indicativosCV)"string"==typeof this._indicativosCV[n]&&t.push(n);var r=t.join("|"),i=/^(00238|\+238)/;i.test(e)&&(e=e.replace(i,""));var o=/(\s|\-|\.)+/g;e=e.replace(o,"");var a=/[\d]{7}/i;if(7===e.length&&a.test(e)){var s=RegExp("^("+r+")");if(s.test(e))return!0}return!1},isAOPhone:function(e){e=""+e;var t=[];for(var n in this._indicativosAO)"string"==typeof this._indicativosAO[n]&&t.push(n);var r=t.join("|"),i=/^(00244|\+244)/;i.test(e)&&(e=e.replace(i,""));var o=/(\s|\-|\.)+/g;e=e.replace(o,"");var a=/[\d]{9}/i;if(9===e.length&&a.test(e)){var s=RegExp("^("+r+")");if(s.test(e))return!0}return!1},isMZPhone:function(e){e=""+e;var t=[];for(var n in this._indicativosMZ)"string"==typeof this._indicativosMZ[n]&&t.push(n);var r=t.join("|"),i=/^(00258|\+258)/;i.test(e)&&(e=e.replace(i,""));var o=/(\s|\-|\.)+/g;e=e.replace(o,"");var a=/[\d]{8,9}/i;if((9===e.length||8===e.length)&&a.test(e)){var s=RegExp("^("+r+")");if(s.test(e)){if(0===e.indexOf("2")&&8===e.length)return!0;if(0===e.indexOf("8")&&9===e.length)return!0}}return!1},isTLPhone:function(e){e=""+e;var t=[];for(var n in this._indicativosTL)"string"==typeof this._indicativosTL[n]&&t.push(n);var r=t.join("|"),i=/^(00670|\+670)/;i.test(e)&&(e=e.replace(i,""));var o=/(\s|\-|\.)+/g;e=e.replace(o,"");var a=/[\d]{7}/i;if(7===e.length&&a.test(e)){var s=RegExp("^("+r+")");if(s.test(e))return!0}return!1},isPhone:function(){var e;if(0===arguments.length)return!1;var t=arguments[0];if(arguments.length>1){if(arguments[1].constructor!==Array){if("function"==typeof this["is"+arguments[1].toUpperCase()+"Phone"])return this["is"+arguments[1].toUpperCase()+"Phone"](t);throw"Invalid Country Code!"}var n;for(e=0;arguments[1].length>e;e++){if("function"!=typeof(n=this["is"+arguments[1][e].toUpperCase()+"Phone"]))throw"Invalid Country Code!";if(n(t))return!0}}else for(e=0;this._countryCodes.length>e;e++)if(this["is"+this._countryCodes[e]+"Phone"](t))return!0;return!1},codPostal:function(e,t,n){var r=/^(\s*\-\s*|\s+)$/,i=/^\s+|\s+$/g,o=/^[1-9]\d{3}$/,a=/^\d{3}$/,s=/^(.{4})(.*)(.{3})$/;if(n=!!n,e=e.replace(i,""),t!==void 0){if(t=t.replace(i,""),o.test(e)&&a.test(t))return n===!0?[!0,!0]:!0}else{if(o.test(e))return n===!0?[!0,!1]:!0;var u=e.match(s);if(null!==u&&o.test(u[1])&&r.test(u[2])&&a.test(u[3]))return n===!0?[!0,!1]:!0}return n===!0?[!1,!1]:!1},isDate:function(e,t){if(this._dateParsers[e]===void 0)return!1;var n=this._dateParsers[e].year,r=this._dateParsers[e].month,i=this._dateParsers[e].day,o=this._dateParsers[e].parser,a=this._dateParsers[e].sep,s=t.match(o);if(null!==s&&s[2]===s[4]&&s[2]===a){var u=2===s[n].length?"20"+(""+s[n]):s[n];if(this._isValidDate(u,""+s[r],""+s[i]))return!0}return!1},isColor:function(e){var t,n=!1,r=/^[a-zA-Z]+$/,i=/^#([0-9a-fA-F]{3}|[0-9a-fA-F]{6})$/,o=/^rgb\(\s*([0-9]{1,3})(%)?\s*,\s*([0-9]{1,3})(%)?\s*,\s*([0-9]{1,3})(%)?\s*\)$/,a=/^rgba\(\s*([0-9]{1,3})(%)?\s*,\s*([0-9]{1,3})(%)?\s*,\s*([0-9]{1,3})(%)?\s*,\s*(1(\.0)?|0(\.[0-9])?)\s*\)$/,s=/^hsl\(\s*([0-9]{1,3})\s*,\s*([0-9]{1,3})(%)?\s*,\s*([0-9]{1,3})(%)?\s*\)$/,u=/^hsla\(\s*([0-9]{1,3})\s*,\s*([0-9]{1,3})(%)?\s*,\s*([0-9]{1,3})(%)?\s*,\s*(1(\.0)?|0(\.[0-9])?)\s*\)$/;if(r.test(e)||i.test(e))return!0;var l;if(null!==(t=o.exec(e))||null!==(t=a.exec(e)))for(l=t.length;l--;){if((2===l||4===l||6===l)&&t[l]!==void 0&&""!==t[l]){if(!(t[l-1]!==void 0&&t[l-1]>=0&&100>=t[l-1]))return!1;n=!0}if(1===l||3===l||5===l&&(t[l+1]===void 0||""===t[l+1])){if(!(t[l]!==void 0&&t[l]>=0&&255>=t[l]))return!1;n=!0}}if(null!==(t=s.exec(e))||null!==(t=u.exec(e)))for(l=t.length;l--;){if(3===l||5===l){if(!(t[l-1]!==void 0&&t[l]!==void 0&&""!==t[l]&&t[l-1]>=0&&100>=t[l-1]))return!1;n=!0}if(1===l){if(!(t[l]!==void 0&&t[l]>=0&&360>=t[l]))return!1;n=!0}}return n},isIP:function(e,t){if("string"!=typeof e)return!1;switch(t=(t||"ipv4").toLowerCase()){case"ipv4":return/^(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$/.test(e);case"ipv6":return/^\s*((([0-9A-Fa-f]{1,4}:){7}([0-9A-Fa-f]{1,4}|:))|(([0-9A-Fa-f]{1,4}:){6}(:[0-9A-Fa-f]{1,4}|((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3})|:))|(([0-9A-Fa-f]{1,4}:){5}(((:[0-9A-Fa-f]{1,4}){1,2})|:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3})|:))|(([0-9A-Fa-f]{1,4}:){4}(((:[0-9A-Fa-f]{1,4}){1,3})|((:[0-9A-Fa-f]{1,4})?:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){3}(((:[0-9A-Fa-f]{1,4}){1,4})|((:[0-9A-Fa-f]{1,4}){0,2}:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){2}(((:[0-9A-Fa-f]{1,4}){1,5})|((:[0-9A-Fa-f]{1,4}){0,3}:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){1}(((:[0-9A-Fa-f]{1,4}){1,6})|((:[0-9A-Fa-f]{1,4}){0,4}:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(:(((:[0-9A-Fa-f]{1,4}){1,7})|((:[0-9A-Fa-f]{1,4}){0,5}:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:)))(%.+)?\s*$/.test(e);default:return!1}},_creditCardSpecs:{"default":{length:"13,14,15,16,17,18,19",prefix:/^.+/,luhn:!0},"american express":{length:"15",prefix:/^3[47]/,luhn:!0},"diners club":{length:"14,16",prefix:/^36|55|30[0-5]/,luhn:!0},discover:{length:"16",prefix:/^6(?:5|011)/,luhn:!0},jcb:{length:"15,16",prefix:/^3|1800|2131/,luhn:!0},maestro:{length:"16,18",prefix:/^50(?:20|38)|6(?:304|759)/,luhn:!0},mastercard:{length:"16",prefix:/^5[1-5]/,luhn:!0},visa:{length:"13,16",prefix:/^4/,luhn:!0}},_luhn:function(e){if(e=parseInt(e,10),"number"!=typeof e&&0!==e%1)return!1;e+="";var t,n=e.length,r=0;for(t=n-1;t>=0;t-=2)r+=parseInt(e.substr(t,1),10);for(t=n-2;t>=0;t-=2){var i=parseInt(2*e.substr(t,1),10);r+=i>=10?i-9:i}return 0===r%10},isCreditCard:function(e,t){if(/\d+/.test(e)===!1)return!1;if(t===void 0)t="default";else if("array"==typeof t){var n,r=t.length;for(n=0;r>n;n++)if(this.isCreditCard(e,t[n]))return!0;return!1}if(t=t.toLowerCase(),this._creditCardSpecs[t]===void 0)return!1;var i=e.length+"";return-1===this._creditCardSpecs[t].length.split(",").indexOf(i)?!1:this._creditCardSpecs[t].prefix.test(e)?this._creditCardSpecs[t].luhn===!1?!0:this._luhn(e):!1}};return e}); -Ink.createModule("Ink.UI.Aux","1",["Ink.Net.Ajax_1","Ink.Dom.Css_1","Ink.Dom.Selector_1","Ink.Util.Url_1"],function(e,t,n,r){"use strict";var i={},o=0,a={Layouts:{SMALL:"small",MEDIUM:"medium",LARGE:"large"},isDOMElement:function(e){return"object"==typeof e&&"nodeType"in e&&1===e.nodeType},isInteger:function(e){return"number"==typeof e&&0===e%1},elOrSelector:function(e,t){if(!this.isDOMElement(e)){var r=n.select(e);if(0===r.length)throw new TypeError(t+" must either be a DOM Element or a selector expression!\nThe script element must also be after the DOM Element itself.");return r[0]}return e},clone:function(e){try{if("object"!=typeof e)throw Error("Given argument is not an object!");return JSON.parse(JSON.stringify(e))}catch(t){throw Error("Given object cannot have loops!")}},childIndex:function(e){if(a.isDOMElement(e))for(var t=n.select("> *",e.parentNode),r=0,i=t.length;i>r;++r)if(t[r]===e)return r;throw"not found!"},ajaxJSON:function(t,n,r){new e(t,{evalJS:"force",method:"POST",parameters:n,onSuccess:function(e){try{if(e=e.responseJSON,"ok"!==e.status)throw"server error: "+e.message;r(null,e)}catch(t){r(t)}},onFailure:function(){r("communication failure")}})},currentLayout:function(){var e,r,i,o,a,s=n.select("#ink-layout-detector")[0];if(!s){s=document.createElement("div"),s.id="ink-layout-detector";for(i in this.Layouts)this.Layouts.hasOwnProperty(i)&&(o=this.Layouts[i],a=document.createElement("div"),a.className="show-"+o+" hide-all",a.setAttribute("data-ink-layout",o),s.appendChild(a));document.body.appendChild(s)}for(e=0,r=s.childNodes.length;r>e;++e)if(a=s.childNodes[e],"hidden"!==t.getStyle(a,"visibility"))return a.getAttribute("data-ink-layout")},hashSet:function(e){if("object"!=typeof e)throw new TypeError("o should be an object!");var t=r.getAnchorString();t=Ink.extendObj(t,e),window.location.hash=r.genQueryString("",t).substring(1)},cleanChildren:function(e){if(!a.isDOMElement(e))throw"Please provide a valid DOMElement";for(var t,n=e.lastChild;n;)t=n.previousSibling,e.removeChild(n),n=t},storeIdAndClasses:function(e,t){if(!a.isDOMElement(e))throw"Please provide a valid DOMElement as first parameter";var n=e.id;n&&(t._id=n);var r=e.className;r&&(t._classes=r)},restoreIdAndClasses:function(e,t){if(!a.isDOMElement(e))throw"Please provide a valid DOMElement as first parameter";t._id&&e.id!==t._id&&(e.id=t._id),t._classes&&-1===e.className.indexOf(t._classes)&&(e.className?e.className+=" "+t._classes:e.className=t._classes),t._instanceId&&!e.getAttribute("data-instance")&&e.setAttribute("data-instance",t._instanceId)},registerInstance:function(e,t,n){if(!e._instanceId){if("object"!=typeof e)throw new TypeError("1st argument must be a JavaScript object!");if(!e._options||!e._options.skipRegister){if(!this.isDOMElement(t))throw new TypeError("2nd argument must be a DOM element!");if(void 0!==n&&"string"!=typeof n)throw new TypeError("3rd argument must be a string!");var r=(n||"instance")+ ++o;i[r]=e,e._instanceId=r;var a=t.getAttribute("data-instance");a=null!==a?[a,r].join(" "):r,t.setAttribute("data-instance",a)}}},unregisterInstance:function(e){delete i[e]},getInstance:function(e){var t;if(this.isDOMElement(e)){if(t=e.getAttribute("data-instance"),null===t)throw Error("argument is not a DOM instance element!")}else t=e;t=t.split(" ");var n,r,o,a=t.length,s=[];for(o=0;a>o;++o){if(r=t[o],!r)throw Error("Element is not a JS instance!");if(n=i[r],!n)throw Error('Instance "'+r+'" not found!');s.push(n)}return 1===a?s[0]:s},getInstanceFromSelector:function(e){var t=n.select(e)[0];if(!t)throw Error("Element not found!");return this.getInstance(t)},getInstanceIds:function(){var e=[];for(var t in i)i.hasOwnProperty(t)&&e.push(t);return e},getInstances:function(){var e=[];for(var t in i)i.hasOwnProperty(t)&&e.push(i[t]);return e},destroyComponent:function(){Ink.Util.Aux.unregisterInstance(this._instanceId),this._element.parentNode.removeChild(this._element)}};return a}); -Ink.createModule("Ink.UI.Pagination","1",["Ink.UI.Aux_1","Ink.Dom.Event_1","Ink.Dom.Css_1","Ink.Dom.Element_1","Ink.Dom.Selector_1"],function(e,t,n,r,i){"use strict";var o=function(e,t){var n=document.createElement("a");return n.setAttribute("href","#"),void 0!==t&&n.setAttribute("data-index",t),n.innerHTML=e,n},a=function(t,i){if(this._element=e.elOrSelector(t,"1st argument"),this._options=Ink.extendObj({size:void 0,start:1,firstLabel:"First",lastLabel:"Last",previousLabel:"Previous",nextLabel:"Next",onChange:void 0,setHash:!1,hashParameter:"page",numberFormatter:function(e){return e+1}},i||{},r.data(this._element)),this._options.previousPageLabel||(this._options.previousPageLabel="Previous "+this._options.maxSize),this._options.nextPageLabel||(this._options.nextPageLabel="Next "+this._options.maxSize),this._handlers={click:Ink.bindEvent(this._onClick,this)},!e.isInteger(this._options.size))throw new TypeError("size option is a required integer!");if(!e.isInteger(this._options.start)&&this._options.start>0&&this._options.start<=this._options.size)throw new TypeError("start option is a required integer between 1 and size!");if(this._options.maxSize&&!e.isInteger(this._options.maxSize)&&this._options.maxSize>0)throw new TypeError("maxSize option is a positive integer!");if(0>this._options.size)throw new RangeError("size option must be equal or more than 0!");if(void 0!==this._options.onChange&&"function"!=typeof this._options.onChange)throw new TypeError("onChange option must be a function!");n.hasClassName(Ink.s("ul",this._element),"dotted")&&(this._options.numberFormatter=function(){return''}),this._current=this._options.start-1,this._itemLiEls=[],this._init()};return a.prototype={_init:function(){this._generateMarkup(this._element),this._updateItems(),this._observe(),e.registerInstance(this,this._element,"pagination")},_observe:function(){t.observe(this._element,"click",this._handlers.click)},_updateItems:function(){var e,t,r,i=this._itemLiEls,a=this._options.size===i.length;if(a)for(e=0,t=this._options.size;t>e;++e)n.setClassName(i[e],"active",e===this._current);else{for(e=i.length-1;e>=0;--e)this._ulEl.removeChild(i[e]);for(i=[],e=0,t=this._options.size;t>e;++e)r=document.createElement("li"),r.appendChild(o(this._options.numberFormatter(e),e)),n.setClassName(r,"active",e===this._current),this._ulEl.insertBefore(r,this._nextEl),i.push(r);this._itemLiEls=i}if(this._options.maxSize){var s=Math.floor(this._current/this._options.maxSize),u=this._options.maxSize*s,l=u+this._options.maxSize-1;for(e=0,t=this._options.size;t>e;++e)r=i[e],n.setClassName(r,"hide-all",u>e||e>l);this._pageStart=u,this._pageEnd=l,this._page=s,n.setClassName(this._prevPageEl,"disabled",!this.hasPreviousPage()),n.setClassName(this._nextPageEl,"disabled",!this.hasNextPage()),n.setClassName(this._firstEl,"disabled",this.isFirst()),n.setClassName(this._lastEl,"disabled",this.isLast())}n.setClassName(this._prevEl,"disabled",!this.hasPrevious()),n.setClassName(this._nextEl,"disabled",!this.hasNext())},_generateMarkup:function(e){n.addClassName(e,"ink-navigation");var t,r,a=!1;1>(t=i.select("ul.pagination",e)).length?(t=document.createElement("ul"),n.addClassName(t,"pagination")):(a=!0,t=t[0]),this._options.maxSize&&(r=document.createElement("li"),r.appendChild(o(this._options.firstLabel)),this._firstEl=r,n.addClassName(r,"first"),t.appendChild(r),r=document.createElement("li"),r.appendChild(o(this._options.previousPageLabel)),this._prevPageEl=r,n.addClassName(r,"previousPage"),t.appendChild(r)),r=document.createElement("li"),r.appendChild(o(this._options.previousLabel)),this._prevEl=r,n.addClassName(r,"previous"),t.appendChild(r),r=document.createElement("li"),r.appendChild(o(this._options.nextLabel)),this._nextEl=r,n.addClassName(r,"next"),t.appendChild(r),this._options.maxSize&&(r=document.createElement("li"),r.appendChild(o(this._options.nextPageLabel)),this._nextPageEl=r,n.addClassName(r,"nextPage"),t.appendChild(r),r=document.createElement("li"),r.appendChild(o(this._options.lastLabel)),this._lastEl=r,n.addClassName(r,"last"),t.appendChild(r)),a||e.appendChild(t),this._ulEl=t},_onClick:function(e){t.stop(e);var r=t.element(e);if("a"!==r.nodeName.toLowerCase()){do r=r.parentNode;while("a"!==r.nodeName.toLowerCase()&&r!==this._element);if(r===this._element)return}var i=r.parentNode;if("li"===i.nodeName.toLowerCase()&&!n.hasClassName(i,"active")&&!n.hasClassName(i,"disabled")){var o=n.hasClassName(i,"previous"),a=n.hasClassName(i,"next"),s=n.hasClassName(i,"previousPage"),u=n.hasClassName(i,"nextPage"),l=n.hasClassName(i,"first"),c=n.hasClassName(i,"last");if(l)this.setCurrent(0);else if(c)this.setCurrent(this._options.size-1);else if(s||u)this.setCurrent((s?-1:1)*this._options.maxSize,!0);else if(o||a)this.setCurrent(o?-1:1,!0);else{var d=parseInt(r.getAttribute("data-index"),10);this.setCurrent(d)}}},setSize:function(t){if(!e.isInteger(t))throw new TypeError("1st argument must be an integer number!");this._options.size=t,this._updateItems(),this._current=0},setCurrent:function(t,n){if(!e.isInteger(t))throw new TypeError("1st argument must be an integer number!");n&&(t+=this._current),0>t?t=0:t>this._options.size-1&&(t=this._options.size-1),this._current=t,this._updateItems(),this._options.onChange&&this._options.onChange(this)},getSize:function(){return this._options.size},getCurrent:function(){return this._current},isFirst:function(){return 0===this._current},isLast:function(){return this._current===this._options.size-1},hasPrevious:function(){return this._current>0},hasNext:function(){return this._currentthis._options.maxSize-1},hasNextPage:function(){return this._options.maxSize&&this._options.size-this._current>=this._options.maxSize+1},destroy:e.destroyComponent},a}); -Ink.createModule("Ink.UI.SortableList","1",["Ink.UI.Aux_1","Ink.Dom.Event_1","Ink.Dom.Css_1","Ink.Dom.Element_1","Ink.Dom.Selector_1","Ink.Util.Array_1"],function(e,t,n,r,i,o){"use strict";var s=function(t,n){if(this._element=e.elOrSelector(t,"1st argument"),!e.isDOMElement(t)&&"string"!=typeof t)throw"[Ink.UI.SortableList] :: Invalid selector";if("string"==typeof t){if(this._element=Ink.Dom.Selector.select(t),1>this._element.length)throw"[Ink.UI.SortableList] :: Selector has returned no elements";this._element=this._element[0]}else this._element=t;if(this._options=Ink.extendObj({dragObject:"li"},Ink.Dom.Element.data(this._element)),this._options=Ink.extendObj(this._options,n||{}),this._handlers={down:Ink.bindEvent(this._onDown,this),move:Ink.bindEvent(this._onMove,this),up:Ink.bindEvent(this._onUp,this)},this._model=[],this._index=void 0,this._isMoving=!1,this._options.model instanceof Array)this._model=this._options.model,this._createdFrom="JSON";else{if("ul"!==this._element.nodeName.toLowerCase())throw new TypeError("You must pass a selector expression/DOM element as 1st option or provide a model on 2nd argument!");this._createdFrom="DOM"}if(this._dragTriggers=i.select(this._options.dragObject,this._element),!this._dragTriggers)throw"[Ink.UI.SortableList] :: Drag object not found";this._init()};return s.prototype={_init:function(){"DOM"===this._createdFrom&&(this._extractModelFromDOM(),this._createdFrom="JSON");var n="ontouchstart"in document.documentElement;this._down=n?"touchstart":"mousedown",this._move=n?"touchmove":"mousemove",this._up=n?"touchend":"mouseup";var r=document.body;t.observe(r,this._move,this._handlers.move),t.observe(r,this._up,this._handlers.up),this._observe(),e.registerInstance(this,this._element,"sortableList")},_observe:function(){t.observe(this._element,this._down,this._handlers.down)},_extractModelFromDOM:function(){this._model=[];var e=this,t=i.select("> li",this._element);o.each(t,function(t){var n=t.innerHTML;e._model.push(n)})},_generateMarkup:function(){var e=document.createElement("ul");e.className="unstyled ink-sortable-list";var t=this;return o.each(this._model,function(n,r){var i=document.createElement("li");r===t._index&&(i.className="drag"),i.innerHTML=[n].join(""),e.appendChild(i)}),e},_getY:function(e){return 0===e.type.indexOf("touch")?e.changedTouches[0].pageY:"number"==typeof e.pageY?e.pageY:e.clientY},_refresh:function(t){var n=this._generateMarkup();this._element.parentNode.replaceChild(n,this._element),this._element=n,e.restoreIdAndClasses(this._element,this),this._dragTriggers=i.select(this._options.dragObject,this._element),t||this._observe()},_onDown:function(n){if(!this._isMoving){var r=t.element(n);if(!o.inArray(r,this._dragTriggers)){for(;!o.inArray(r,this._dragTriggers)&&"body"!==r.nodeName.toLowerCase();)r=r.parentNode;if("body"===r.nodeName.toLowerCase())return}t.stop(n);var i;if("li"!==r.nodeName.toLowerCase())for(;"li"!==r.nodeName.toLowerCase()&&"body"!==r.nodeName.toLowerCase();)r=r.parentNode;return i=r,this._index=e.childIndex(i),this._height=i.offsetHeight,this._startY=this._getY(n),this._isMoving=!0,document.body.style.cursor="move",this._refresh(!1),!1}},_onMove:function(e){if(this._isMoving){t.stop(e);var n=this._getY(e),r=n-this._startY,i=r>0?1:-1,o=i*Math.floor(Math.abs(r)/this._height);if(0!==o&&(o/=Math.abs(o),!(-1===o&&0===this._index||1===o&&this._index===this._model.length-1))){var s=o>0?this._index:this._index+o,a=0>o?this._index:this._index+o;this._model.splice(s,2,this._model[a],this._model[s]),this._index+=o,this._startY=n,this._refresh(!1)}}},_onUp:function(e){this._isMoving&&(t.stop(e),this._index=void 0,this._isMoving=!1,document.body.style.cursor="",this._refresh())},getModel:function(){return this._model.slice()},destroy:e.destroyComponent},s}); -Ink.createModule("Ink.UI.Spy","1",["Ink.UI.Aux_1","Ink.Dom.Event_1","Ink.Dom.Css_1","Ink.Dom.Element_1","Ink.Dom.Selector_1","Ink.Util.Array_1"],function(e,t,n,r,i,o){"use strict";var s=function(t,n){this._rootElement=e.elOrSelector(t,"1st argument"),this._options=Ink.extendObj({target:void 0},r.data(this._rootElement)),this._options=Ink.extendObj(this._options,n||{}),this._options.target=e.elOrSelector(this._options.target,"Target"),this._scrollTimeout=null,this._init()};return s.prototype={_elements:[],_init:function(){t.observe(document,"scroll",Ink.bindEvent(this._onScroll,this)),this._elements.push(this._rootElement)},_onScroll:function(){var e=r.scrollHeight();if(!(this._rootElement.offsetTop>e)){for(var t=0,s=this._elements.length;s>t;t++)if(e>=this._elements[t].offsetTop&&this._elements[t]!==this._rootElement&&this._elements[t].offsetTop>this._rootElement.offsetTop)return;o.each(i.select("a",this._options.target),Ink.bind(function(e){var t="name"in this._rootElement&&this._rootElement.name?"#"+this._rootElement.name:"#"+this._rootElement.id;e.href.substr(e.href.indexOf("#"))===t?n.addClassName(r.findUpwardsByTag(e,"li"),"active"):n.removeClassName(r.findUpwardsByTag(e,"li"),"active")},this))}}},s}); -Ink.createModule("Ink.UI.Sticky","1",["Ink.UI.Aux_1","Ink.Dom.Event_1","Ink.Dom.Css_1","Ink.Dom.Element_1","Ink.Dom.Selector_1"],function(e,t,n,r,i){"use strict";var o=function(t,n){if("object"!=typeof t&&"string"!=typeof t)throw"[Sticky] :: Invalid selector defined";if("object"==typeof t)this._rootElement=t;else{if(this._rootElement=i.select(t),0>=this._rootElement.length)throw"[Sticky] :: Can't find any element with the specified selector";this._rootElement=this._rootElement[0]}this._options=Ink.extendObj({offsetBottom:0,offsetTop:0,topElement:void 0,bottomElement:void 0},r.data(this._rootElement)),this._options=Ink.extendObj(this._options,n||{}),this._options.topElement=this._options.topElement!==void 0?e.elOrSelector(this._options.topElement,"Top Element"):e.elOrSelector("body","Top Element"),this._options.bottomElement=this._options.bottomElement!==void 0?e.elOrSelector(this._options.bottomElement,"Bottom Element"):e.elOrSelector("body","Top Element"),this._computedStyle=window.getComputedStyle?window.getComputedStyle(this._rootElement,null):this._rootElement.currentStyle,this._dims={height:this._computedStyle.height,width:this._computedStyle.width},this._init()};return o.prototype={_init:function(){t.observe(document,"scroll",Ink.bindEvent(this._onScroll,this)),t.observe(window,"resize",Ink.bindEvent(this._onResize,this)),this._calculateOriginalSizes(),this._calculateOffsets()},_onScroll:function(){var e="CSS1Compat"===document.compatMode?document.documentElement:document.body;return 100*r.elementWidth(this._rootElement)/e.clientWidth>90||649>=e.clientWidth?(r.hasAttribute(this._rootElement,"style")&&this._rootElement.removeAttribute("style"),void 0):(this._scrollTimeout&&clearTimeout(this._scrollTimeout),this._scrollTimeout=setTimeout(Ink.bind(function(){var e=r.scrollHeight();if(r.hasAttribute(this._rootElement,"style"))this._options.originalTop-this._options.originalOffsetTop>=e?this._rootElement.removeAttribute("style"):document.body.scrollHeight-(e+parseInt(this._dims.height,10))=this._options.offsetBottom&&(this._rootElement.style.left=this._options.originalLeft+"px",this._rootElement.style.position="fixed",this._rootElement.style.bottom="auto",this._rootElement.style.left=this._options.originalLeft+"px",this._rootElement.style.top=this._options.originalOffsetTop+"px",this._rootElement.style.width=this._options.originalWidth+"px");else{if(this._options.originalTop-this._options.originalOffsetTop>=e)return;this._rootElement.style.left=this._options.originalLeft+"px",this._rootElement.style.position="fixed",this._rootElement.style.bottom="auto",this._rootElement.style.left=this._options.originalLeft+"px",this._rootElement.style.top=this._options.originalOffsetTop+"px",this._rootElement.style.width=this._options.originalWidth+"px"}this._scrollTimeout=void 0},this),0),void 0)},_onResize:function(){this._resizeTimeout&&clearTimeout(this._resizeTimeout),this._resizeTimeout=setTimeout(Ink.bind(function(){this._rootElement.removeAttribute("style"),this._calculateOriginalSizes(),this._calculateOffsets()},this),0)},_calculateOffsets:function(){if(this._options.topElement!==void 0)if("body"!==this._options.topElement.nodeName.toLowerCase()){var e=r.elementHeight(this._options.topElement),t=r.elementTop(this._options.topElement);this._options.offsetTop=parseInt(e,10)+parseInt(t,10)+parseInt(this._options.originalOffsetTop,10)}else this._options.offsetTop=parseInt(this._options.originalOffsetTop,10);if(this._options.bottomElement!==void 0)if("body"!==this._options.bottomElement.nodeName.toLowerCase()){var n=r.elementHeight(this._options.bottomElement);this._options.offsetBottom=parseInt(n,10)+parseInt(this._options.originalOffsetBottom,10)}else this._options.offsetBottom=parseInt(this._options.originalOffsetBottom,10);this._onScroll()},_calculateOriginalSizes:function(){this._options.originalOffsetTop===void 0&&(this._options.originalOffsetTop=parseInt(this._options.offsetTop,10),this._options.originalOffsetBottom=parseInt(this._options.offsetBottom,10)),this._options.originalTop=parseInt(this._rootElement.offsetTop,10),this._options.originalLeft=parseInt(this._rootElement.offsetLeft,10),isNaN(this._options.originalWidth=parseInt(this._dims.width,10))&&(this._options.originalWidth=0),this._options.originalWidth=parseInt(this._computedStyle.width,10)}},o}); -Ink.createModule("Ink.UI.Table","1",["Ink.Net.Ajax_1","Ink.UI.Aux_1","Ink.Dom.Event_1","Ink.Dom.Css_1","Ink.Dom.Element_1","Ink.Dom.Selector_1","Ink.Util.Array_1","Ink.Util.String_1"],function(e,t,n,i,r,o,s,a){"use strict";var l=function(e,n){if(this._rootElement=t.elOrSelector(e,"1st argument"),"table"!==this._rootElement.nodeName.toLowerCase())throw"[Ink.UI.Table] :: The element is not a table";this._options=Ink.extendObj({pageSize:void 0,endpoint:void 0,loadMode:"full",allowResetSorting:!1,visibleFields:void 0},r.data(this._rootElement)),this._options=Ink.extendObj(this._options,n||{}),this._markupMode=this._options.endpoint===void 0,this._options.visibleFields&&(this._options.visibleFields=this._options.visibleFields.split(",")),this._handlers={click:Ink.bindEvent(this._onClick,this)},this._originalFields=[],this._sortableFields={},this._originalData=this._data=[],this._headers=[],this._pagination=null,this._totalRows=0,this._init()};return l.prototype={_init:function(){if(this._markupMode){if(this._setHeadersHandlers(),s.each(o.select("tbody tr",this._rootElement),Ink.bind(function(e){this._data.push(e)},this)),this._originalData=this._data.slice(0),this._totalRows=this._data.length,"pageSize"in this._options&&this._options.pageSize!==void 0){for(this._pagination=this._rootElement.nextSibling;1!==this._pagination.nodeType;)this._pagination=this._pagination.nextSibling;if("nav"!==this._pagination.nodeName.toLowerCase())throw"[Ink.UI.Table] :: Missing the pagination markup or is mis-positioned";var e=Ink.getModule("Ink.UI.Pagination",1);this._pagination=new e(this._pagination,{size:Math.ceil(this._totalRows/this._options.pageSize),onChange:Ink.bind(function(e){this._paginate(e._current+1)},this)}),this._paginate(1)}}else this._getData(this._options.endpoint,!0)},_onClick:function(e){var i,l,u=n.element(e),c=r.data(u),h="pageSize"in this._options&&this._options.pageSize!==void 0;if("th"===u.nodeName.toLowerCase()&&"sortable"in c&&"true"==""+c.sortable){if(n.stop(e),i=-1,s.inArray(u,this._headers))for(l=0;this._headers.length>l;l++)if(this._headers[l]===u){i=l;break}if(!this._markupMode&&h){for(var d in this._sortableFields)d!=="col_"+i&&(this._sortableFields[d]="none",this._headers[d.replace("col_","")].innerHTML=a.stripTags(this._headers[d.replace("col_","")].innerHTML));"asc"===this._sortableFields["col_"+i]?(this._sortableFields["col_"+i]="desc",this._headers[i].innerHTML=a.stripTags(this._headers[i].innerHTML)+''):(this._sortableFields["col_"+i]="asc",this._headers[i].innerHTML=a.stripTags(this._headers[i].innerHTML)+''),this._pagination.setCurrent(this._pagination._current)}else{if(-1===i)return;if("desc"===this._sortableFields["col_"+i]&&this._options.allowResetSorting&&"true"==""+this._options.allowResetSorting)this._headers[i].innerHTML=a.stripTags(this._headers[i].innerHTML),this._sortableFields["col_"+i]="none",this._data=this._originalData.slice(0);else{for(var d in this._sortableFields)d!=="col_"+i&&(this._sortableFields[d]="none",this._headers[d.replace("col_","")].innerHTML=a.stripTags(this._headers[d.replace("col_","")].innerHTML));this._sort(i),"asc"===this._sortableFields["col_"+i]?(this._data.reverse(),this._sortableFields["col_"+i]="desc",this._headers[i].innerHTML=a.stripTags(this._headers[i].innerHTML)+''):(this._sortableFields["col_"+i]="asc",this._headers[i].innerHTML=a.stripTags(this._headers[i].innerHTML)+'')}var p=o.select("tbody",this._rootElement)[0];t.cleanChildren(p),s.each(this._data,function(e){p.appendChild(e)}),this._pagination.setCurrent(0),this._paginate(1)}}},_paginate:function(e){s.each(this._data,Ink.bind(function(t,n){n>=(e-1)*parseInt(this._options.pageSize,10)&&(e-1)*parseInt(this._options.pageSize,10)+parseInt(this._options.pageSize,10)>n?i.removeClassName(t,"hide-all"):i.addClassName(t,"hide-all")},this))},_sort:function(e){this._data.sort(Ink.bind(function(t,n){var i=r.textContent(o.select("td",t)[e]),s=r.textContent(o.select("td",n)[e]),a=RegExp(/\d/g);return!isNaN(i)&&a.test(i)?i=parseInt(i,10):isNaN(i)||(i=parseFloat(i)),!isNaN(s)&&a.test(s)?s=parseInt(s,10):isNaN(s)||(s=parseFloat(s)),i===s?0:i>s?1:-1},this))},_setHeaders:function(e,t){var n,i,s,a,l;if(0===(s=o.select("thead",this._rootElement)).length){s=this._rootElement.createTHead(),a=s.insertRow(0);for(n in e)if(e.hasOwnProperty(n)){if(this._options.visibleFields&&-1===this._options.visibleFields.indexOf(n))continue;l=document.createElement("th"),i=e[n],"sortable"in i&&"true"==""+i.sortable&&l.setAttribute("data-sortable","true"),"label"in i&&r.setTextContent(l,i.label),this._originalFields.push(n),a.appendChild(l)}}else{var u=t[0];for(n in u)if(u.hasOwnProperty(n)){if(this._options.visibleFields&&-1===this._options.visibleFields.indexOf(n))continue;this._originalFields.push(n)}}},_setHeadersHandlers:function(){var e=o.select("thead",this._rootElement);e.length&&(n.observe(e[0],"click",this._handlers.click),this._headers=o.select("thead tr th",this._rootElement),s.each(this._headers,Ink.bind(function(e,t){var n=r.data(e);"sortable"in n&&"true"==""+n.sortable&&(this._sortableFields["col_"+t]="none")},this)))},_setData:function(e){var t,n,i,r,s,a;n=o.select("tbody",this._rootElement),0===n.length?(n=document.createElement("tbody"),this._rootElement.appendChild(n)):(n=n[0],n.innerHTML=""),this._data=[];for(s in e)if(e.hasOwnProperty(s)){i=document.createElement("tr"),n.appendChild(i),a=0;for(t in e[s])if(e[s].hasOwnProperty(t)){if(this._options.visibleFields&&-1===this._options.visibleFields.indexOf(t))continue;r=i.insertCell(a++),r.innerHTML=e[s][t]}this._data.push(i)}this._originalData=this._data.slice(0)},setEndpoint:function(e,t){this._markupMode||(this._options.endpoint=e,this._pagination.setCurrent(t?parseInt(t,10):0))},_setPagination:function(){if("pageSize"in this._options&&this._options.pageSize!==void 0,"pageSize"in this._options&&this._options.pageSize!==void 0&&!this._pagination){this._pagination=document.createElement("nav"),this._pagination.className="ink-navigation",this._rootElement.parentNode.insertBefore(this._pagination,this._rootElement.nextSibling),this._pagination.appendChild(document.createElement("ul")).className="pagination";var e=Ink.getModule("Ink.UI.Pagination",1);this._pagination=new e(this._pagination,{size:Math.ceil(this._totalRows/this._options.pageSize),onChange:Ink.bind(function(){this._getData(this._options.endpoint)},this)})}},_getData:function(e){Ink.requireModules(["Ink.Util.Url_1"],Ink.bind(function(t){var n=t.parseUrl(e),i="pageSize"in this._options&&this._options.pageSize!==void 0,r=this._pagination?this._pagination._current+1:1;if(n.query=n.query?n.query.split("&"):[],i){n.query.push("rows_per_page="+this._options.pageSize),n.query.push("page="+r);for(var o in this._sortableFields)if("none"!==this._sortableFields[o]){n.query.push("sortField="+this._originalFields[parseInt(o.replace("col_",""),10)]),n.query.push("sortOrder="+this._sortableFields[o]);break}this._getDataViaAjax(e+"?"+n.query.join("&"))}else this._getDataViaAjax(e)},this))},_getDataViaAjax:function(t){var n="pageSize"in this._options&&this._options.pageSize!==void 0;new e(t,{method:"GET",contentType:"application/json",sanitizeJSON:!0,onSuccess:Ink.bind(function(e){if(200===e.status){var t=JSON.parse(e.responseText);0===this._headers.length&&(this._setHeaders(t.headers,t.rows),this._setHeadersHandlers()),this._setData(t.rows),n?this._totalRows&&parseInt(t.totalRows,10)!==parseInt(this._totalRows,10)?(this._totalRows=t.totalRows,this._pagination.setSize(Math.ceil(this._totalRows/this._options.pageSize))):this._totalRows=t.totalRows:this._totalRows&&t.rows.length!==parseInt(this._totalRows,10)?(this._totalRows=t.rows.length,this._pagination.setSize(Math.ceil(this._totalRows/this._options.pageSize))):this._totalRows=t.rows.length,this._setPagination()}},this)})}},l}); -Ink.createModule("Ink.UI.Tabs","1",["Ink.UI.Aux_1","Ink.Dom.Event_1","Ink.Dom.Css_1","Ink.Dom.Element_1","Ink.Dom.Selector_1","Ink.Util.Array_1"],function(e,t,n,i,r,o){"use strict";var s=function(t,n){if(e.isDOMElement(t))this._element=t;else{if(t=r.select(t),0===t.length)throw new TypeError("1st argument must either be a DOM Element or a selector expression!");this._element=t[0]}this._options=Ink.extendObj({preventUrlChange:!1,active:void 0,disabled:[],onBeforeChange:void 0,onChange:void 0},i.data(t)),this._options=Ink.extendObj(this._options,n||{}),this._handlers={tabClicked:Ink.bindEvent(this._onTabClicked,this),disabledTabClicked:Ink.bindEvent(this._onDisabledTabClicked,this),resize:Ink.bindEvent(this._onResize,this)},this._init()};return s.prototype={_init:function(){this._menu=r.select(".tabs-nav",this._element)[0],this._menuTabs=this._getChildElements(this._menu),this._contentTabs=r.select(".tabs-content",this._element),this._initializeDom(),this._observe(),this._setFirstActive(),this._changeTab(this._activeMenuLink),this._handlers.resize(),e.registerInstance(this,this._element,"tabs")},_initializeDom:function(){for(var e=0;this._contentTabs.length>e;e++)n.hide(this._contentTabs[e])},_observe:function(){o.each(this._menuTabs,Ink.bind(function(e){var t=r.select("a",e)[0];o.inArray(t.getAttribute("href"),this._options.disabled)?this.disable(t):this.enable(t)},this)),t.observe(window,"resize",this._handlers.resize)},_setFirstActive:function(){var e=window.location.hash;this._activeContentTab=r.select(e,this._element)[0]||r.select(this._hashify(this._options.active),this._element)[0]||r.select(".tabs-content",this._element)[0],this._activeMenuLink=this._findLinkByHref(this._activeContentTab.getAttribute("id")),this._activeMenuTab=this._activeMenuLink.parentNode},_changeTab:function(e,t){t&&this._options.onBeforeChange!==void 0&&this._options.onBeforeChange(this);var i=e.getAttribute("href");n.removeClassName(this._activeMenuTab,"active"),n.removeClassName(this._activeContentTab,"active"),n.addClassName(this._activeContentTab,"hide-all"),this._activeMenuLink=e,this._activeMenuTab=this._activeMenuLink.parentNode,this._activeContentTab=r.select(i.substr(i.indexOf("#")),this._element)[0],n.addClassName(this._activeMenuTab,"active"),n.addClassName(this._activeContentTab,"active"),n.removeClassName(this._activeContentTab,"hide-all"),n.show(this._activeContentTab),t&&this._options.onChange!==void 0&&this._options.onChange(this)},_onTabClicked:function(e){t.stop(e);var n=t.findElement(e,"A");"a"===n.nodeName.toLowerCase()&&("true"!=""+this._options.preventUrlChange&&(window.location.hash=n.getAttribute("href").substr(n.getAttribute("href").indexOf("#"))),n!==this._activeMenuLink&&this.changeTab(n))},_onDisabledTabClicked:function(e){t.stop(e)},_onResize:function(){var t=e.currentLayout();t!==this._lastLayout&&(t===e.Layouts.SMALL||t===e.Layouts.MEDIUM?(n.removeClassName(this._menu,"menu"),n.removeClassName(this._menu,"horizontal")):(n.addClassName(this._menu,"menu"),n.addClassName(this._menu,"horizontal")),this._lastLayout=t)},_hashify:function(e){return e?0===e.indexOf("#")?e:"#"+e:""},_findLinkByHref:function(e){e=this._hashify(e);var t;return o.each(this._menuTabs,Ink.bind(function(n){var i=r.select("a",n)[0];-1!==i.getAttribute("href").indexOf("#")&&i.getAttribute("href").substr(i.getAttribute("href").indexOf("#"))===e&&(t=i)},this)),t},_getChildElements:function(e){for(var t=[],n=e.children,i=0;n.length>i;i++)1===n[i].nodeType&&t.push(n[i]);return t},changeTab:function(e){var t=1===e.nodeType?e:this._findLinkByHref(this._hashify(e));t&&!n.hasClassName(t,"ink-disabled")&&this._changeTab(t,!0)},disable:function(e){var i=1===e.nodeType?e:this._findLinkByHref(this._hashify(e));i&&(t.stopObserving(i,"click",this._handlers.tabClicked),t.observe(i,"click",this._handlers.disabledTabClicked),n.addClassName(i,"ink-disabled"))},enable:function(e){var i=1===e.nodeType?e:this._findLinkByHref(this._hashify(e));i&&(t.stopObserving(i,"click",this._handlers.disabledTabClicked),t.observe(i,"click",this._handlers.tabClicked),n.removeClassName(i,"ink-disabled"))},activeTab:function(){return this._activeContentTab.getAttribute("id")},activeMenuTab:function(){return this._activeMenuTab},activeMenuLink:function(){return this._activeMenuLink},activeContentTab:function(){return this._activeContentTab},destroy:e.destroyComponent},s}); -Ink.createModule("Ink.UI.Toggle","1",["Ink.UI.Aux_1","Ink.Dom.Event_1","Ink.Dom.Css_1","Ink.Dom.Element_1","Ink.Dom.Selector_1","Ink.Util.Array_1"],function(e,t,n,i,r,o){"use strict";var s=function(e,t){if("string"!=typeof e&&"object"!=typeof e)throw"[Ink.UI.Toggle] Invalid CSS selector to determine the root element";if("string"==typeof e){if(this._rootElement=r.select(e),0>=this._rootElement.length)throw"[Ink.UI.Toggle] Root element not found";this._rootElement=this._rootElement[0]}else this._rootElement=e;if(this._options=Ink.extendObj({target:void 0,triggerEvent:"click",closeOnClick:!0},i.data(this._rootElement)),this._options=Ink.extendObj(this._options,t||{}),this._targets=function(e){return"string"==typeof e?r.select(e):"object"==typeof e?e.constructor===Array?e:[e]:void 0}(this._options.target),!this._targets.length)throw"[Ink.UI.Toggle] Toggle target was not found! Supply a valid selector, array, or element through the `target` option.";this._init()};return s.prototype={_init:function(){this._accordion=n.hasClassName(this._rootElement.parentNode,"accordion")||n.hasClassName(this._targets[0].parentNode,"accordion"),t.observe(this._rootElement,this._options.triggerEvent,Ink.bindEvent(this._onTriggerEvent,this)),"true"==""+this._options.closeOnClick&&t.observe(document,"click",Ink.bindEvent(this._onClick,this))},_onTriggerEvent:function(){if(this._accordion){var e,t,o;for(o=n.hasClassName(this._targets[0].parentNode,"accordion")?this._targets[0].parentNode:this._targets[0].parentNode.parentNode,e=r.select(".toggle",o),t=0;e.length>t;t+=1){var s=i.data(e[t]),a=r.select(s.target,o);a.length>0&&a[0]!==this._targets[0]&&(a[0].style.display="none")}}for(var l,u,c=0,h=this._targets.length;h>c;c++)l="none"===n.getStyle(this._targets[c],"display")?"show-all":"hide-all",u="none"===n.getStyle(this._targets[c],"display")?"block":"none",n.removeClassName(this._targets[c],"show-all"),n.removeClassName(this._targets[c],"hide-all"),n.addClassName(this._targets[c],l),this._targets[c].style.display=u;"show-all"===l?n.addClassName(this._rootElement,"active"):n.removeClassName(this._rootElement,"active")},_onClick:function(e){var n,r=t.element(e),s=o.some(this._targets,function(e){return i.isAncestorOf(e,r)});if(this._rootElement!==r&&!i.isAncestorOf(this._rootElement,r)&&!s){if((n=Ink.ss(".ink-shade")).length)for(var a=n.length,l=0;a>l;l++)if(i.isAncestorOf(n[l],r)&&i.isAncestorOf(n[l],this._rootElement))return;i.findUpwardsByClass(r,"toggle")&&this._dismiss(this._rootElement)}},_dismiss:function(){if("none"!==n.getStyle(this._targets[0],"display")){for(var e=0,t=this._targets.length;t>e;e++)n.removeClassName(this._targets[e],"show-all"),n.addClassName(this._targets[e],"hide-all"),this._targets[e].style.display="none";n.removeClassName(this._rootElement,"active")}}},s}); -Ink.createModule("Ink.UI.Tooltip","1",["Ink.UI.Aux_1","Ink.Dom.Event_1","Ink.Dom.Element_1","Ink.Dom.Selector_1","Ink.Util.Array_1","Ink.Dom.Css_1","Ink.Dom.Browser_1"],function(e,t,n,i,o,r){"use strict";function s(e,t){this._init(e,t||{})}function a(e,t){this._init(e,t)}var l,u,c;(function(){for(var e=document.createElement("DIV"),t=["transition","oTransition","msTransition","mozTransition","webkitTransition"],n=0;t.length>n;n++)if(e.style[t[n]+"Duration"]!==void 0){l=t[n]+"Duration",u=t[n]+"Property",c=t[n]+"TimingFunction";break}})();var h=document.getElementsByTagName("body"),d=h&&h.length?h[0]:document.documentElement;return s.prototype={_init:function(e,t){var n;if(this.options=Ink.extendObj({where:"up",zIndex:1e4,left:10,top:10,spacing:8,forever:0,color:"",timeout:0,delay:0,template:null,templatefield:null,fade:.3,text:""},t||{}),"string"==typeof e)n=i.select(e);else{if("object"!=typeof e)throw"Element expected";n=[e]}this.tooltips=[];for(var o=0,r=n.length;r>o;o++)this.tooltips[o]=new a(this,n[o])},destroy:function(){o.each(this.tooltips,function(e){e._destroy()}),this.tooltips=null,this.options=null}},a.prototype={_oppositeDirections:{left:"right",right:"left",up:"down",down:"up"},_init:function(e,n){t.observe(n,"mouseover",Ink.bindEvent(this._onMouseOver,this)),t.observe(n,"mouseout",Ink.bindEvent(this._onMouseOut,this)),t.observe(n,"mousemove",Ink.bindEvent(this._onMouseMove,this)),this.root=e,this.element=n,this._delayTimeout=null,this.tooltip=null},_makeTooltip:function(e){if(!this._getOpt("text"))return!1;var n=this._createTooltipElement();this.tooltip&&this._removeTooltip(),this.tooltip=n,this._fadeInTooltipElement(n),this._placeTooltipElement(n,e),t.observe(n,"mouseover",Ink.bindEvent(this._onTooltipMouseOver,this));var i=this._getFloatOpt("timeout");i&&setTimeout(Ink.bind(function(){this.tooltip===n&&this._removeTooltip()},this),1e3*i)},_createTooltipElement:function(){var t,o,s=this._getOpt("template"),a=this._getOpt("templatefield");if(s){var l=document.createElement("DIV");if(l.innerHTML=e.elOrSelector(s,"options.template").outerHTML,t=l.firstChild,a){if(o=i.select(a,t),!o)throw"options.templatefield must be a valid selector within options.template";o=o[0]}else o=t}else t=document.createElement("DIV"),r.addClassName(t,"ink-tooltip"),r.addClassName(t,this._getOpt("color")),o=document.createElement("DIV"),r.addClassName(o,"content"),t.appendChild(o);return n.setTextContent(o,this._getOpt("text")),t.style.display="block",t.style.position="absolute",t.style.zIndex=this._getIntOpt("zIndex"),t},_fadeInTooltipElement:function(e){var t=this._getFloatOpt("fade");l&&t&&(e.style.opacity="0",e.style[l]=t+"s",e.style[u]="opacity",e.style[c]="ease-in-out",setTimeout(function(){e.style.opacity="1"},0))},_placeTooltipElement:function(e,t){var i=this._getOpt("where");if("mousemove"===i||"mousefix"===i){var o=t;this._setPos(o[0],o[1]),d.appendChild(e)}else if(i.match(/(up|down|left|right)/)){d.appendChild(e);var s=n.offset(this.element),a=s[0],l=s[1];a instanceof Array&&(l=a[1],a=a[0]);var u=n.elementWidth(this.element)/2-n.elementWidth(e)/2,c=n.elementHeight(this.element)/2-n.elementHeight(e)/2,h=this._getIntOpt("spacing"),p=n.elementDimensions(e),f=n.elementDimensions(this.element),m=n.scrollWidth()+n.viewportWidth(),g=n.scrollHeight()+n.viewportHeight();"left"===i&&0>a-p[0]?i="right":"right"===i&&a+p[0]>m?i="left":"up"===i&&0>l-p[1]?i="down":"down"===i&&l+p[1]>g&&(i="up"),"up"===i?(l-=p[1],l-=h,a+=u):"down"===i?(l+=f[1],l+=h,a+=u):"left"===i?(a-=p[0],a-=h,l+=c):"right"===i&&(a+=f[0],a+=h,l+=c);var v=null;i.match(/(up|down|left|right)/)&&(v=document.createElement("SPAN"),r.addClassName(v,"arrow"),r.addClassName(v,this._oppositeDirections[i]),e.appendChild(v));var _=this._getLocalScroll(),y=a-_[0],b=l-_[1],w=b+p[1]-g,E=y+p[0]-m,k=0-y,C=0-b;w>0?(v&&(v.style.top=p[1]/2+w+"px"),b-=w):C>0?(v&&(v.style.top=p[1]/2-C+"px"),b+=C):E>0?(v&&(v.style.left=p[0]/2+E+"px"),y-=E):k>0&&(v&&(v.style.left=p[0]/2-k+"px"),y+=k),e.style.left=y+"px",e.style.top=b+"px"}},_removeTooltip:function(){var e=this.tooltip;if(e){var t=Ink.bind(n.remove,{},e);"mousemove"!==this._getOpt("where")&&l?(e.style.opacity=0,setTimeout(t,1e3*this._getFloatOpt("fade"))):t(),this.tooltip=null}},_getOpt:function(e){var t=n.data(this.element)[n._camelCase("tip-"+e)];if(t)return t;var i=this.root.options[e];return i!==void 0?i:void 0},_getIntOpt:function(e){return parseInt(this._getOpt(e),10)},_getFloatOpt:function(e){return parseFloat(this._getOpt(e),10)},_destroy:function(){this.tooltip&&n.remove(this.tooltip),this.root=null,this.element=null,this.tooltip=null},_onMouseOver:function(e){var t=this._getMousePosition(e),n=this._getFloatOpt("delay");n?this._delayTimeout=setTimeout(Ink.bind(function(){this.tooltip||this._makeTooltip(t),this._delayTimeout=null},this),1e3*n):this._makeTooltip(t)},_onMouseMove:function(e){if("mousemove"===this._getOpt("where")&&this.tooltip){var t=this._getMousePosition(e);this._setPos(t[0],t[1])}},_onMouseOut:function(){this._getIntOpt("forever")||this._removeTooltip(),this._delayTimeout&&(clearTimeout(this._delayTimeout),this._delayTimeout=null)},_onTooltipMouseOver:function(){this.tooltip&&this._removeTooltip()},_setPos:function(e,t){e+=this._getIntOpt("left"),t+=this._getIntOpt("top");var i=this._getPageXY();if(this.tooltip){var o=[n.elementWidth(this.tooltip),n.elementHeight(this.tooltip)],r=this._getScroll();o[0]+e-r[0]>=i[0]-20&&(e=e-o[0]-this._getIntOpt("left")-10),o[1]+t-r[1]>=i[1]-20&&(t=t-o[1]-this._getIntOpt("top")-10),this.tooltip.style.left=e+"px",this.tooltip.style.top=t+"px"}},_getPageXY:function(){var e=0,t=0;return"number"==typeof window.innerWidth?(e=window.innerWidth,t=window.innerHeight):document.documentElement&&(document.documentElement.clientWidth||document.documentElement.clientHeight)?(e=document.documentElement.clientWidth,t=document.documentElement.clientHeight):document.body&&(document.body.clientWidth||document.body.clientHeight)&&(e=document.body.clientWidth,t=document.body.clientHeight),[parseInt(e,10),parseInt(t,10)]},_getScroll:function(){var e=document.documentElement,t=document.body;return e&&(e.scrollLeft||e.scrollTop)?[e.scrollLeft,e.scrollTop]:t?[t.scrollLeft,t.scrollTop]:[0,0]},_getLocalScroll:function(){for(var e,t,n=[0,0],i=this.element.parentNode;i&&i!==document.documentElement&&i!==document.body;)e=i.scrollLeft,t=i.scrollTop,e&&(n[0]+=e),t&&(n[1]+=t),i=i.parentNode;return n},_getMousePosition:function(e){return[parseInt(t.pointerX(e),10),parseInt(t.pointerY(e),10)]}},s}); -Ink.createModule("Ink.UI.TreeView","1",["Ink.UI.Aux_1","Ink.Dom.Event_1","Ink.Dom.Css_1","Ink.Dom.Element_1","Ink.Dom.Selector_1","Ink.Util.Array_1"],function(e,t,n,i,o,r){"use strict";var s=function(t,n){if(!e.isDOMElement(t)&&"string"!=typeof t)throw"[Ink.UI.TreeView] :: Invalid selector";if("string"==typeof t){if(this._element=o.select(t),1>this._element.length)throw"[Ink.UI.TreeView] :: Selector has returned no elements";this._element=this._element[0]}else this._element=t;this._options=Ink.extendObj({node:"li",child:"ul"},i.data(this._element)),this._options=Ink.extendObj(this._options,n||{}),this._init()};return s.prototype={_init:function(){this._handlers={click:Ink.bindEvent(this._onClick,this)},t.observe(this._element,"click",this._handlers.click);var e,i=o.select(this._options.node,this._element);r.each(i,Ink.bind(function(t){n.hasClassName(t,"open")||(n.hasClassName(t,"closed")||n.addClassName(t,"closed"),e=o.select(this._options.child,t),r.each(e,Ink.bind(function(e){n.hasClassName(e,"hide-all")||n.addClassName(e,"hide-all")},this)))},this))},_onClick:function(e){var i=t.element(e);if("."===this._options.node[0]){if(!n.hasClassName(i,this._options.node.substr(1)))for(;!n.hasClassName(i,this._options.node.substr(1))&&"body"!==i.nodeName.toLowerCase();)i=i.parentNode}else if("#"===this._options.node[0]){if(i.id!==this._options.node.substr(1))for(;i.id!==this._options.node.substr(1)&&"body"!==i.nodeName.toLowerCase();)i=i.parentNode}else if(i.nodeName.toLowerCase()!==this._options.node)for(;i.nodeName.toLowerCase()!==this._options.node&&"body"!==i.nodeName.toLowerCase();)i=i.parentNode;if("body"!==i.nodeName.toLowerCase()){var r=o.select(this._options.child,i);r.length>0&&(t.stop(e),r=r[0],n.hasClassName(r,"hide-all")?(n.removeClassName(r,"hide-all"),n.addClassName(i,"open"),n.removeClassName(i,"closed")):(n.addClassName(r,"hide-all"),n.removeClassName(i,"open"),n.addClassName(i,"closed")))}}},s}); -Ink.createModule("Ink.UI.SmoothScroller","1",["Ink.Dom.Event_1","Ink.Dom.Selector_1","Ink.Dom.Loaded_1"],function(e,t,n){"use strict";var i={speed:10,gy:function(e){var t;if(t=e.offsetTop,e.offsetParent)for(;e=e.offsetParent;)t+=e.offsetTop;return t},scrollTop:function(){var e=document.body,t=document.documentElement;return e&&e.scrollTop?e.scrollTop:t&&t.scrollTop?t.scrollTop:window.pageYOffset?window.pageYOffset:0},add:function(t,n,i){e.observe(t,n,i)},end:function(t){return window.event?(window.event.cancelBubble=!0,window.event.returnValue=!1,void 0):(e.stop(t),void 0)},scroll:function(e){var t=Ink.UI.SmoothScroller.scrollTop();t+=e>t?Math.ceil((e-t)/Ink.UI.SmoothScroller.speed):(e-t)/Ink.UI.SmoothScroller.speed,window.scrollTo(0,t),(t===e||Ink.UI.SmoothScroller.offsetTop===t)&&clearInterval(Ink.UI.SmoothScroller.interval),Ink.UI.SmoothScroller.offsetTop=t},init:function(){n.run(Ink.UI.SmoothScroller.render)},render:function(){var n=t.select("a.scrollableLink");Ink.UI.SmoothScroller.end(this);for(var i=0;n.length>i;i++){var o=n[i];!o.href||-1===o.href.indexOf("#")||o.pathname!==location.pathname&&"/"+o.pathname!==location.pathname||(Ink.UI.SmoothScroller.add(o,"click",Ink.UI.SmoothScroller.end),e.observe(o,"click",Ink.bindEvent(Ink.UI.SmoothScroller.clickScroll,this,o)))}},clickScroll:function(e,n){if(Ink.UI.SmoothScroller.end(n),null!==n&&null!==n.getAttribute("href")){var i=n.href.indexOf("#");if(-1===i)return;var o=n.href.substr(i+1),r=t.select('a[name="'+o+'"],#'+o);if(r[0]!==void 0){if(-1===n.parentNode.className.indexOf("active")){var s=n.parentNode.parentNode,a=s.firstChild;do if(a.tagName!==void 0&&"LI"===a.tagName.toUpperCase()&&-1!==a.className.indexOf("active")){a.className=a.className.replace("active","");break}while(a=a.nextSibling);n.parentNode.className+=" active"}clearInterval(Ink.UI.SmoothScroller.interval),Ink.UI.SmoothScroller.interval=setInterval("Ink.UI.SmoothScroller.scroll("+Ink.UI.SmoothScroller.gy(r[0])+")",10)}}}};return i}); -Ink.createModule("Ink.UI.ImageQuery","1",["Ink.UI.Aux_1","Ink.Dom.Event_1","Ink.Dom.Css_1","Ink.Dom.Element_1","Ink.Dom.Selector_1","Ink.Util.Array_1"],function(e,t,n,i,o,r){"use strict";var s=function(t,n){if(!e.isDOMElement(t)&&"string"!=typeof t)throw"[ImageQuery] :: Invalid selector";if("string"==typeof t){if(this._element=o.select(t),1>this._element.length)throw"[ImageQuery] :: Selector has returned no elements";if(this._element.length>1){var r;for(r=1;this._element.length>r;r+=1)new Ink.UI.ImageQuery(this._element[r],n)}this._element=this._element[0]}else this._element=t;this._options=Ink.extendObj({queries:[],onLoad:null},i.data(this._element)),this._options=Ink.extendObj(this._options,n||{});var s;if(-1!==(s=this._element.src.lastIndexOf("?"))){var a=this._element.src.substr(s);this._filename=this._element.src.replace(a,"").split("/").pop()+a}else this._filename=this._element.src.split("/").pop();this._init()};return s.prototype={_init:function(){this._options.queries=r.sortMulti(this._options.queries,"width").reverse(),this._handlers={resize:Ink.bindEvent(this._onResize,this),load:Ink.bindEvent(this._onLoad,this)},"function"==typeof this._options.onLoad&&t.observe(this._element,"onload",this._handlers.load),t.observe(window,"resize",this._handlers.resize),this._handlers.resize.call(this)},_onResize:function(){clearTimeout(e);var e=setTimeout(Ink.bind(function(){if(!this._options.queries||this._options.queries==={})return clearTimeout(e),void 0;var t,n,i;for("number"==typeof window.innerWidth?i=window.innerWidth:document.documentElement&&(document.documentElement.clientWidth||document.documentElement.clientHeight)?i=document.documentElement.clientWidth:document.body&&(document.body.clientWidth||document.body.clientHeight)&&(i=document.body.clientWidth),t=0;this._options.queries.length>t;t+=1)if(i>=this._options.queries[t].width){n=t;break}n===void 0&&(n=this._options.queries.length-1);var o=this._options.queries[n].src||this._options.src;if("devicePixelRatio"in window&&window.devicePixelRatio>1&&"retina"in this._options&&(o=this._options.queries[n].retina||this._options.retina),this._options.queries[n].file=this._filename,"function"==typeof o&&(o=o.apply(this,[this._element,this._options.queries[n]]),"string"!=typeof o))throw'[ImageQuery] :: "src" callback does not return a string';var r;for(r in this._options.queries[n])if(this._options.queries[n].hasOwnProperty(r)){if("src"===r||"retina"===r)continue;o=o.replace("{:"+r+"}",this._options.queries[n][r])}this._element.src=o,delete this._options.queries[n].file,e=void 0},this),300)},_onLoad:function(){this._options.onLoad.call(this)}},s}); -Ink.createModule("Ink.UI.FormValidator","2",["Ink.UI.Aux_1","Ink.Dom.Element_1","Ink.Dom.Event_1","Ink.Dom.Selector_1","Ink.Dom.Css_1","Ink.Util.Array_1","Ink.Util.I18n_1","Ink.Util.Validator_1"],function(e,t,n,i,o,r,s,a){"use strict";var l={required:function(e){return e!==void 0&&!/^\s*$/.test(e)},min_length:function(e,t){return"string"==typeof e&&e.length>=parseInt(t,10)},max_length:function(e,t){return"string"==typeof e&&e.length<=parseInt(t,10)},exact_length:function(e,t){return"string"==typeof e&&e.length===parseInt(t,10)},email:function(e){return"string"==typeof e&&a.mail(e)},url:function(e,t){return t=t||!1,"string"==typeof e&&a.url(e,t)},ip:function(e,t){return"string"!=typeof e?!1:a.isIP(e,t)},phone:function(e,t){if("string"!=typeof e)return!1;var n=t?t.toUpperCase():"";return a["is"+n+"Phone"](e)},credit_card:function(e,t){return"string"!=typeof e?!1:a.isCreditCard(e,t||"default")},date:function(e,t){return"string"==typeof e&&a.isDate(t,e)},alpha:function(e,t){return a.ascii(e,{singleLineWhitespace:t})},text:function(e,t,n){return a.unicode(e,{singleLineWhitespace:t,unicodePunctuation:n})},latin:function(e,t,n){return"string"!=typeof e?!1:a.latin1(e,{latin1Punctuation:t,singleLineWhitespace:n})},alpha_numeric:function(e){return a.ascii(e,{numbers:!0})},alpha_dash:function(e){return a.ascii(e,{dash:!0,underscore:!0})},digit:function(e){return"string"==typeof e&&/^[0-9]{1}$/.test(e)},integer:function(e,t){return a.number(e,{negative:!t,decimalPlaces:0})},decimal:function(e,t,n,i){return a.number(e,{decimalSep:t||".",decimalPlaces:+n||null,maxDigits:+i})},numeric:function(e,t,n,i){return t=t||".",-1!==e.indexOf(t)?l.decimal(e,t,n,i):l.integer(e)},range:function(e,t,n,i){return e=+e,t=+t,n=+n,isNaN(e)||isNaN(t)||isNaN(n)?!1:t>e||e>n?!1:i?0===(e-t)%i:!0},color:function(e){return a.isColor(e)},matches:function(e,t){return e===this.getFormElements()[t][0].getValue()}},u=new s({en_US:{"formvalidator.required":"The {field} filling is mandatory","formvalidator.min_length":"The {field} must have a minimum size of {param1} characters","formvalidator.max_length":"The {field} must have a maximum size of {param1} characters","formvalidator.exact_length":"The {field} must have an exact size of {param1} characters","formvalidator.email":"The {field} must have a valid e-mail address","formvalidator.url":"The {field} must have a valid URL","formvalidator.ip":"The {field} does not contain a valid {param1} IP address","formvalidator.phone":"The {field} does not contain a valid {param1} phone number","formvalidator.credit_card":"The {field} does not contain a valid {param1} credit card","formvalidator.date":"The {field} should contain a date in the {param1} format","formvalidator.alpha":"The {field} should only contain letters","formvalidator.text":"The {field} should only contain alphabetic characters","formvalidator.latin":"The {field} should only contain alphabetic characters","formvalidator.alpha_numeric":"The {field} should only contain letters or numbers","formvalidator.alpha_dashes":"The {field} should only contain letters or dashes","formvalidator.digit":"The {field} should only contain a digit","formvalidator.integer":"The {field} should only contain an integer","formvalidator.decimal":"The {field} should contain a valid decimal number","formvalidator.numeric":"The {field} should contain a number","formvalidator.range":"The {field} should contain a number between {param1} and {param2}","formvalidator.color":"The {field} should contain a valid color","formvalidator.matches":"The {field} should match the field {param1}","formvalidator.validation_function_not_found":"The rule {rule} has not been defined"},pt_PT:{"formvalidator.required":"Preencher {field} é obrigatório","formvalidator.min_length":"{field} deve ter no mínimo {param1} caracteres","formvalidator.max_length":"{field} tem um tamanho máximo de {param1} caracteres","formvalidator.exact_length":"{field} devia ter exactamente {param1} caracteres","formvalidator.email":"{field} deve ser um e-mail válido","formvalidator.url":"O {field} deve ser um URL válido","formvalidator.ip":"{field} não tem um endereço IP {param1} válido","formvalidator.phone":"{field} deve ser preenchido com um número de telefone {param1} válido.","formvalidator.credit_card":"{field} não tem um cartão de crédito {param1} válido","formvalidator.date":"{field} deve conter uma data no formato {param1}","formvalidator.alpha":"O campo {field} deve conter apenas caracteres alfabéticos","formvalidator.text":"O campo {field} deve conter apenas caracteres alfabéticos","formvalidator.latin":"O campo {field} deve conter apenas caracteres alfabéticos","formvalidator.alpha_numeric":"{field} deve conter apenas letras e números","formvalidator.alpha_dashes":"{field} deve conter apenas letras e traços","formvalidator.digit":"{field} destina-se a ser preenchido com apenas um dígito","formvalidator.integer":"{field} deve conter um número inteiro","formvalidator.decimal":"{field} deve conter um número válido","formvalidator.numeric":"{field} deve conter um número válido","formvalidator.range":"{field} deve conter um número entre {param1} e {param2}","formvalidator.color":"{field} deve conter uma cor válida","formvalidator.matches":"{field} deve corresponder ao campo {param1}","formvalidator.validation_function_not_found":"[A regra {rule} não foi definida]"}},"en_US"),c=function(n,i){this._element=e.elOrSelector(n,"Invalid FormElement"),this._errors={},this._rules={},this._value=null,this._options=Ink.extendObj({label:this._getLabel()},t.data(this._element)),this._options=Ink.extendObj(this._options,i||{})};c.prototype={_getLabel:function(){var e=t.findUpwardsByClass(this._element,"control-group"),n=Ink.s("label",e);return n=n?t.textContent(n):this._element.name||this._element.id||""},_parseRules:function(e){this._rules={},e=e.split("|");var t,n,i,o,r=e.length;if(r>0)for(t=0;r>t;t++)if(n=e[t])if(-1!==(o=n.indexOf("["))){i=n.substr(o+1),i=i.split("]"),i=i[0],i=i.split(",");for(var s=0,a=i.length;a>s;s++)i[s]="true"===i[s]?!0:"false"===i[s]?!1:i[s];i.splice(0,0,this.getValue()),n=n.substr(0,o),this._rules[n]=i}else this._rules[n]=[this.getValue()]},_addError:function(e){for(var t=this._rules[e]||[],n={field:this._options.label,value:this.getValue()},i=1;t.length>i;i++)n["param"+i]=t[i];var o="formvalidator."+e;this._errors[e]=u.text(o,n),this._errors[e]===o&&(this._errors[e]="Validation message not found")},getValue:function(){switch(this._element.nodeName.toLowerCase()){case"select":return Ink.s("option:selected",this._element).value;case"textarea":return this._element.innerHTML;case"input":if(!("type"in this._element))return this._element.value;if("radio"===this._element.type&&"checkbox"===this._element.type){if(this._element.checked)return this._element.value}else if("file"!==this._element.type)return this._element.value;return;default:return this._element.innerHTML}},getErrors:function(){return this._errors},getElement:function(){return this._element},getFormElements:function(){return this._options.form._formElements},validate:function(){if(this._errors={},this._parseRules(this._options.rules),"required"in this._rules||""!==this.getValue())for(var e in this._rules)if(this._rules.hasOwnProperty(e)){if("function"!=typeof l[e])return this._addError(null),!1;if(l[e].apply(this,this._rules[e])===!1)return this._addError(e),!1}return!0}};var h=function(i,o){this._rootElement=e.elOrSelector(i),this._formElements={},this._errorMessages=[],this._markedErrorElements=[],this._options=Ink.extendObj({eventTrigger:"submit",searchFor:"input, select, textarea, .control-group",beforeValidation:void 0,onError:void 0,onSuccess:void 0},t.data(this._rootElement)),this._options=Ink.extendObj(this._options,o||{}),"string"==typeof this._options.eventTrigger&&n.observe(this._rootElement,this._options.eventTrigger,Ink.bindEvent(this.validate,this)),this._init()};return h.setRule=function(e,t,n){if(l[e]=n,u.getKey("formvalidator."+e)!==t){var i={};i["formvalidator."+e]=t;var o={};o[u.lang()]=i,u.append(o)}},h.getI18n=function(){return u},h.setI18n=function(e){u=e},h.appendI18n=function(){u.append.apply(u,[].slice.call(arguments))},h.setLanguage=function(e){u.lang(e)},h.getRules=function(){return l},h.prototype={_init:function(){},getElements:function(){this._formElements={};var e=i.select(this._options.searchFor,this._rootElement);if(e.length){var n,o;for(n=0;e.length>n;n+=1){o=e[n];var r=t.data(o);if("rules"in r){var s,a={form:this};"name"in o&&o.name?s=o.name:"id"in o&&o.id?s=o.id:(s="element_"+Math.floor(100*Math.random()),o.id=s),s in this._formElements?this._formElements[s].push(new c(o,a)):this._formElements[s]=[new c(o,a)]}}}return this._formElements},validate:function(e){n.stop(e),"function"==typeof this._options.beforeValidation&&this._options.beforeValidation(),this.getElements();var i=[];for(var s in this._formElements)if(this._formElements.hasOwnProperty(s))for(var a=0;this._formElements[s].length>a;a+=1)this._formElements[s][a].validate()||i.push(this._formElements[s][a]);return 0===i.length?("function"==typeof this._options.onSuccess&&this._options.onSuccess(),!0):("function"==typeof this._options.onError&&this._options.onError(i),r.each(this._markedErrorElements,Ink.bind(o.removeClassName,o,"validation")),r.each(this._markedErrorElements,Ink.bind(o.removeClassName,o,"error")),r.each(this._errorMessages,t.remove),this._errorMessages=[],this._markedErrorElements=[],r.each(i,Ink.bind(function(e){var n,i;o.hasClassName(e.getElement(),"control-group")?(n=e.getElement(),i=Ink.s(".control",e.getElement())):(n=t.findUpwardsByClass(e.getElement(),"control-group"),i=t.findUpwardsByClass(e.getElement(),"control")),i&&n||(i=n=e.getElement()),o.addClassName(n,"validation"),o.addClassName(n,"error"),this._markedErrorElements.push(n);var r=document.createElement("p");o.addClassName(r,"tip"),t.insertAfter(r,i);var s=e.getErrors(),a=[];for(var l in s)s.hasOwnProperty(l)&&a.push(s[l]);r.innerHTML=a.join("
"),this._errorMessages.push(r)},this)),!1)}},h}); -Ink.createModule("Ink.UI.FormValidator","1",["Ink.Dom.Css_1","Ink.Util.Validator_1"],function(e,t){"use strict";var n={version:"1",_flagMap:{"ink-fv-required":{msg:"Required field"},"ink-fv-email":{msg:"Invalid e-mail address"},"ink-fv-url":{msg:"Invalid URL"},"ink-fv-number":{msg:"Invalid number"},"ink-fv-phone_pt":{msg:"Invalid phone number"},"ink-fv-phone_cv":{msg:"Invalid phone number"},"ink-fv-phone_mz":{msg:"Invalid phone number"},"ink-fv-phone_ao":{msg:"Invalid phone number"},"ink-fv-date":{msg:"Invalid date"},"ink-fv-confirm":{msg:"Confirmation does not match"},"ink-fv-custom":{msg:""}},elements:{},confirmElms:{},hasConfirm:{},_errorClassName:"tip",_errorValidationClassName:"validaton",_errorTypeWarningClassName:"warning",_errorTypeErrorClassName:"error",validate:function(e,t){if(this._free(),t=Ink.extendObj({onSuccess:!1,onError:!1,customFlag:!1,confirmGroup:[]},t||{}),"string"==typeof e&&(e=document.getElementById(e)),null===e)return!1;this.element=e,(this.element.id===void 0||null===this.element.id||""===this.element.id)&&(this.element.id="ink-fv_randomid_"+Math.round(99999*Math.random())),this.custom=t.customFlag,this.confirmGroup=t.confirmGroup;var n=this._validateElements();return n.length>0?(t.onError?t.onError(n):this._showError(e,n),!1):(t.onError||this._clearError(e),this._clearCache(),t.onSuccess&&t.onSuccess(),!0)},reset:function(){this._clearError(),this._clearCache()},_free:function(){this.element=null,this.custom=!1,this.confirmGroup=!1},_clearCache:function(){this.element=null,this.elements=[],this.custom=!1,this.confirmGroup=!1},_getElements:function(){this.elements[this.element.id]=[],this.confirmElms[this.element.id]=[];for(var t=this.element.elements,n=!1,i=0,r=t.length;r>i;i++)if(n=t[i],null!==n.getAttribute("type")&&"radio"===n.getAttribute("type").toLowerCase()){if(0===this.elements[this.element.id].length||n.getAttribute("type")!==this.elements[this.element.id][this.elements[this.element.id].length-1].getAttribute("type")&&n.getAttribute("name")!==this.elements[this.element.id][this.elements[this.element.id].length-1].getAttribute("name"))for(var o in this._flagMap)if(e.hasClassName(n,o)){this.elements[this.element.id].push(n);break}}else{for(var s in this._flagMap)if(e.hasClassName(n,s)&&"ink-fv-confirm"!==s){this.elements[this.element.id].push(n);break}e.hasClassName(n,"ink-fv-confirm")&&(this.confirmElms[this.element.id].push(n),this.hasConfirm[this.element.id]=!0)}},_validateElements:function(){var t;this._getElements(),this.hasConfirm[this.element.id]!==void 0&&this.hasConfirm[this.element.id]===!0&&(t=this._makeConfirmGroups());for(var n,i=[],r=!1,o=!1,s=0,a=this.elements[this.element.id].length;a>s;s++)if(n=!1,r=this.elements[this.element.id][s],!r.disabled)for(var l in this._flagMap)e.hasClassName(r,l)&&("ink-fv-custom"!==l&&"ink-fv-confirm"!==l?this._isValid(r,l)||(n?i[i.length-1].errors.push(l):(i.push({elm:r,errors:[l]}),n=!0)):"ink-fv-confirm"!==l&&(o=this._isCustomValid(r),o.length>0&&i.push({elm:r,errors:[l],custom:o})));return i=this._validateConfirmGroups(t,i)},_validateConfirmGroups:function(e,t){var n=!1;for(var i in e)e.hasOwnProperty(i)&&(n=e[i],2===n.length&&n[0].value!==n[1].value&&t.push({elm:n[1],errors:["ink-fv-confirm"]}));return t},_makeConfirmGroups:function(){var t;if(this.confirmGroup&&this.confirmGroup.length>0){t={};for(var n=!1,i=!1,r=0,o=this.confirmElms[this.element.id].length;o>r;r++){n=this.confirmElms[this.element.id][r];for(var s=0,a=this.confirmGroup.length;a>s;s++)i=this.confirmGroup[s],e.hasClassName(n,i)&&(t[i]===void 0?t[i]=[n]:t[i].push(n))}return t}return 2===this.confirmElms[this.element.id].length&&(t={"ink-fv-confirm":[this.confirmElms[this.element.id][0],this.confirmElms[this.element.id][1]]}),t},_isCustomValid:function(t){for(var n=[],i=!1,r=0,o=this.custom.length;o>r;r++)i=this.custom[r],e.hasClassName(t,i.flag)&&(i.callback(t,i.msg)||n.push({flag:i.flag,msg:i.msg}));return n},_isValid:function(n,i){switch(i){case"ink-fv-required":if("select"===n.nodeName.toLowerCase())return n.selectedIndex>0?!0:!1;if("checkbox"!==n.getAttribute("type")&&"radio"!==n.getAttribute("type")){if(""!==this._trim(n.value))return!0}else if("checkbox"===n.getAttribute("type")){if(n.checked===!0)return!0}else if("radio"===n.getAttribute("type")){var r=n.form[n.name];r.length===void 0&&(r=[r]);for(var o=!1,s=0,a=r.length;a>s;s++)r[s].checked===!0&&(o=!0);return o}break;case"ink-fv-email":if(""===this._trim(n.value))return e.hasClassName(n,"ink-fv-required")?!1:!0;if(t.mail(n.value))return!0;break;case"ink-fv-url":if(""===this._trim(n.value))return e.hasClassName(n,"ink-fv-required")?!1:!0;if(t.url(n.value))return!0;break;case"ink-fv-number":if(""===this._trim(n.value))return e.hasClassName(n,"ink-fv-required")?!1:!0;if(!isNaN(Number(n.value)))return!0;break;case"ink-fv-phone_pt":if(""===this._trim(n.value))return e.hasClassName(n,"ink-fv-required")?!1:!0;if(t.isPTPhone(n.value))return!0;break;case"ink-fv-phone_cv":if(""===this._trim(n.value))return e.hasClassName(n,"ink-fv-required")?!1:!0;if(t.isCVPhone(n.value))return!0;break;case"ink-fv-phone_ao":if(""===this._trim(n.value))return e.hasClassName(n,"ink-fv-required")?!1:!0;if(t.isAOPhone(n.value))return!0;break;case"ink-fv-phone_mz":if(""===this._trim(n.value))return e.hasClassName(n,"ink-fv-required")?!1:!0;if(t.isMZPhone(n.value))return!0;break;case"ink-fv-date":if(""===this._trim(n.value))return e.hasClassName(n,"ink-fv-required")?!1:!0;var l=Ink.getModule("Ink.Dom.Element",1),u=l.data(n),c="yyyy-mm-dd";if(e.hasClassName(n,"ink-datepicker")&&"format"in u?c=u.format:"validFormat"in u&&(c=u.validFormat),!(c in t._dateParsers)){var h=[];for(var d in t._dateParsers)t._dateParsers.hasOwnProperty(d)&&h.push(d);throw"The attribute data-valid-format must be one of the following values: "+h.join(",")}return t.isDate(c,n.value);case"ink-fv-custom":}return!1},_showError:function(t,n){this._clearError(t);for(var i=!1,r=0,o=n.length;o>r;r++)if(i=n[r].elm,"radio"!==i.getAttribute("type")){var s=document.createElement("p");e.addClassName(s,this._errorClassName),e.addClassName(s,this._errorTypeErrorClassName),s.innerHTML="ink-fv-custom"!==n[r].errors[0]?this._flagMap[n[r].errors[0]].msg:n[r].custom[0].msg,"checkbox"!==i.getAttribute("type")&&(i.nextSibling.parentNode.insertBefore(s,i.nextSibling),e.hasClassName(i.parentNode,"control")&&(e.addClassName(i.parentNode.parentNode,"validation"),"ink-fv-required"===n[r].errors[0]?e.addClassName(i.parentNode.parentNode,"error"):e.addClassName(i.parentNode.parentNode,"warning")))}else e.hasClassName(i.parentNode.parentNode,"control-group")&&(e.addClassName(i.parentNode.parentNode,"validation"),e.addClassName(i.parentNode.parentNode,"error"))},_clearError:function(t){for(var n=t.getElementsByTagName("p"),i=!1,r=n.length-1;r>=0;r--)i=n[r],e.hasClassName(i,this._errorClassName)&&(e.hasClassName(i.parentNode,"control")&&(e.removeClassName(i.parentNode.parentNode,"validation"),e.removeClassName(i.parentNode.parentNode,"error"),e.removeClassName(i.parentNode.parentNode,"warning")),e.hasClassName(i,"tip")&&e.hasClassName(i,"error")&&i.parentNode.removeChild(i));var o=t.getElementsByTagName("ul");for(r=o.length-1;r>=0;r--)i=o[r],e.hasClassName(i,"control-group")&&(e.removeClassName(i,"validation"),e.removeClassName(i,"error"))},_trim:function(e){return"string"==typeof e?e.replace(/^\s+|\s+$|\n+$/g,""):void 0}};return n}); -Ink.createModule("Ink.UI.Droppable","1",["Ink.Dom.Element_1","Ink.Dom.Event_1","Ink.Dom.Css_1","Ink.UI.Aux_1","Ink.Util.Array_1","Ink.Dom.Selector_1"],function(e,t,n,i,r,o){var s=function(e){return function(t){return n.addClassName(e,t)}},a=function(e){return function(t){return n.removeClassName(e,t)}},l={debug:!1,_droppables:[],_draggables:[],add:function(t,n){function r(e){e.style.position="inherit"}t=i.elOrSelector(t,"Droppable.add target element");var o=Ink.extendObj({hoverClass:n.hoverclass||!1,accept:!1,onHover:!1,onDrop:!1,onDropOut:!1},n||{},e.data(t));"string"==typeof o.hoverClass&&(o.hoverClass=o.hoverClass.split(/\s+/));var s,a=this,l={move:function(e,t){r(e),t.appendChild(e)},copy:function(e,t){r(e),t.appendChild(e.cloneNode)},revert:function(e){a._findDraggable(e).originalParent.appendChild(e),r(e)}};if("string"==typeof o.onHover&&(s=o.onHover,o.onHover=l[s],void 0===o.onHover))throw Error("Unknown hover event handler: "+s);if("string"==typeof o.onDrop&&(s=o.onDrop,o.onDrop=l[s],void 0===o.onDrop))throw Error("Unknown drop event handler: "+s);if("string"==typeof o.onDropOut&&(s=o.onDropOut,o.onDropOut=l[s],void 0===o.onDropOut))throw Error("Unknown dropOut event handler: "+s);var u={element:t,data:{},options:o};this._droppables.push(u),this._update(u)},_findData:function(e){for(var t=this._droppables,n=0,i=t.length;i>n;n++)if(t[n].element===e)return t[n]},_findDraggable:function(e){for(var t=this._draggables,n=0,i=t.length;i>n;n++)if(t[n].element===e)return t[n]},updateAll:function(){r.each(this._droppables,l._update)},update:function(e){this._update(this._findData(e))},_update:function(t){var n=t.data,i=t.element;n.left=e.offsetLeft(i),n.top=e.offsetTop(i),n.right=n.left+e.elementWidth(i),n.bottom=n.top+e.elementHeight(i)},remove:function(e){e=i.elOrSelector(e);for(var t=this._droppables.length,n=0;t>n;n++)if(this._droppables[n].element===e){this._droppables.splice(n,1);break}return t!==this._droppables.length},action:function(e,t,n,i){r.each(this._droppables,Ink.bind(function(l){var u=l.data,h=l.options,c=l.element;(!h.accept||o.matches(h.accept,[i]).length)&&("drag"!==t||this._findDraggable(i)||this._draggables.push({element:i,originalParent:i.parentNode}),e.x>=u.left&&e.x<=u.right&&e.y>=u.top&&e.y<=u.bottom?"drag"===t?(h.hoverClass&&r.each(h.hoverClass,s(c)),h.onHover&&h.onHover(i,c)):"drop"===t&&(h.hoverClass&&r.each(h.hoverClass,a(c)),h.onDrop&&h.onDrop(i,c,n)):"drag"===t&&h.hoverClass?r.each(h.hoverClass,a(c)):"drop"===t&&h.onDropOut&&h.onDropOut(i,c,n))},this))}};return l}); -Ink.createModule("Ink.UI.Draggable","1",["Ink.Dom.Element_1","Ink.Dom.Event_1","Ink.Dom.Css_1","Ink.Dom.Browser_1","Ink.Dom.Selector_1","Ink.UI.Aux_1"],function(e,t,n,i,o,r){function s(e,t,n){return e=Math.min(e,n),e=Math.max(e,t)}var a=0,l=1,h=function(e,t){this.init(e,t)};return h.prototype={init:function(n,o){var s=Ink.extendObj({constraint:!1,constraintElm:!1,top:!1,right:!1,bottom:!1,left:!1,handle:o.handler||!1,revert:!1,cursor:"move",zindex:o.zindex||9999,dragClass:"drag",onStart:!1,onEnd:!1,onDrag:!1,onChange:!1,droppableProxy:!1,mouseAnchor:void 0,skipChildren:!0,fps:100,debug:!1},o||{},e.data(n));this.options=s,this.element=r.elOrSelector(n),this.constraintElm=s.constraintElm&&r.elOrSelector(s.constraintElm),this.handle=!1,this.elmStartPosition=!1,this.active=!1,this.dragged=!1,this.prevCoords=!1,this.placeholder=!1,this.position=!1,this.zindex=!1,this.firstDrag=!0,s.fps&&(this.deltaMs=1e3/s.fps,this.lastRunAt=0),this.handlers={},this.handlers.start=Ink.bindEvent(this._onStart,this),this.handlers.dragFacade=Ink.bindEvent(this._onDragFacade,this),this.handlers.drag=Ink.bindEvent(this._onDrag,this),this.handlers.end=Ink.bindEvent(this._onEnd,this),this.handlers.selectStart=function(e){return t.stop(e),!1},this.handle=this.options.handle?r.elOrSelector(this.options.handle):this.element,this.handle.style.cursor=s.cursor,t.observe(this.handle,"touchstart",this.handlers.start),t.observe(this.handle,"mousedown",this.handlers.start),i.IE&&t.observe(this.element,"selectstart",this.handlers.selectStart)},destroy:function(){t.stopObserving(this.handle,"touchstart",this.handlers.start),t.stopObserving(this.handle,"mousedown",this.handlers.start),i.IE&&t.stopObserving(this.element,"selectstart",this.handlers.selectStart)},_getCoords:function(t){var n=[e.scrollWidth(),e.scrollHeight()];return{x:(t.touches?t.touches[0].clientX:t.clientX)+n[a],y:(t.touches?t.touches[0].clientY:t.clientY)+n[l]}},_cloneStyle:function(t,i){i.className=t.className,i.style.borderWidth="0",i.style.padding="0",i.style.position="absolute",i.style.width=e.elementWidth(t)+"px",i.style.height=e.elementHeight(t)+"px",i.style.left=e.elementLeft(t)+"px",i.style.top=e.elementTop(t)+"px",i.style.cssFloat=n.getStyle(t,"float"),i.style.display=n.getStyle(t,"display")},_onStart:function(i){if(!this.active&&t.isLeftClick(i)||i.button===void 0){var o=t.element(i);if(this.options.skipChildren&&o!==this.handle)return;t.stop(i),n.addClassName(this.element,this.options.dragClass),this.elmStartPosition=[e.elementLeft(this.element),e.elementTop(this.element)];var r=[parseInt(n.getStyle(this.element,"left"),10),parseInt(n.getStyle(this.element,"top"),10)],s=e.elementDimensions(this.element);this.originalPosition=[r[a]?r[a]:null,r[l]?r[l]:null],this.delta=this._getCoords(i),this.active=!0,this.position=n.getStyle(this.element,"position"),this.zindex=n.getStyle(this.element,"zIndex");var h=document.createElement("div");if(h.style.position=this.position,h.style.width=s[a]+"px",h.style.height=s[l]+"px",h.style.marginTop=n.getStyle(this.element,"margin-top"),h.style.marginBottom=n.getStyle(this.element,"margin-bottom"),h.style.marginLeft=n.getStyle(this.element,"margin-left"),h.style.marginRight=n.getStyle(this.element,"margin-right"),h.style.borderWidth="0",h.style.padding="0",h.style.cssFloat=n.getStyle(this.element,"float"),h.style.display=n.getStyle(this.element,"display"),h.style.visibility="hidden",this.delta2=[this.delta.x-this.elmStartPosition[a],this.delta.y-this.elmStartPosition[l]],this.options.mouseAnchor){var u=this.options.mouseAnchor.split(" "),c=[s[a],s[l]];"left"===u[0]?c[a]=0:"center"===u[0]&&(c[a]=parseInt(c[a]/2,10)),"top"===u[1]?c[l]=0:"center"===u[1]&&(c[l]=parseInt(c[l]/2,10)),this.applyDelta=[this.delta2[a]-c[a],this.delta2[l]-c[l]]}var d=this.options.fps?"dragFacade":"drag";if(this.placeholder=h,this.options.onStart&&this.options.onStart(this.element,i),this.options.droppableProxy){this.proxy=document.createElement("div"),s=[window.innerWidth||document.documentElement.clientWidth||document.body.clientWidth,window.innerHeight||document.documentElement.clientHeight||document.body.clientHeight];var f=this.proxy.style;f.width=s[a]+"px",f.height=s[l]+"px",f.position="fixed",f.left="0",f.top="0",f.zIndex=this.options.zindex+1,f.backgroundColor="#FF0000",n.setOpacity(this.proxy,0);for(var p=document.body.firstChild;p&&1!==p.nodeType;)p=p.nextSibling;document.body.insertBefore(this.proxy,p),t.observe(this.proxy,"mousemove",this.handlers[d]),t.observe(this.proxy,"touchmove",this.handlers[d])}else t.observe(document,"mousemove",this.handlers[d]);return this.element.style.position="absolute",this.element.style.zIndex=this.options.zindex,this.element.parentNode.insertBefore(this.placeholder,this.element),this._onDrag(i),t.observe(document,"mouseup",this.handlers.end),t.observe(document,"touchend",this.handlers.end),!1}},_onDragFacade:function(e){var t=+new Date;(!this.lastRunAt||t>this.lastRunAt+this.deltaMs)&&(this.lastRunAt=t,this._onDrag(e))},_onDrag:function(n){if(this.active){t.stop(n),this.dragged=!0;var i=this._getCoords(n),o=i.x,r=i.y,h=this.options,u=!1,c=!1;if(this.prevCoords&&o!==this.prevCoords.x||r!==this.prevCoords.y){h.onDrag&&h.onDrag(this.element,n),this.prevCoords=i,u=this.elmStartPosition[a]+o-this.delta.x,c=this.elmStartPosition[l]+r-this.delta.y;var d=e.elementDimensions(this.element);if(this.constraintElm){var f=e.offset(this.constraintElm),p=e.elementDimensions(this.constraintElm),m=f[l]+(h.top||0),g=f[l]+p[l]-(h.bottom||0),v=f[a]+(h.left||0),_=f[a]+p[a]-(h.right||0);c=s(c,m,g-d[l]),u=s(u,v,_-d[a])}else if(h.constraint){var y=h.right===!1?e.pageWidth()-d[a]:h.right,b=h.left===!1?0:h.left,k=h.top===!1?0:h.top,w=h.bottom===!1?e.pageHeight()-d[l]:h.bottom;("horizontal"===h.constraint||"both"===h.constraint)&&(u=s(u,b,y)),("vertical"===h.constraint||"both"===h.constraint)&&(c=s(c,k,w))}var I=Ink.getModule("Ink.UI.Droppable_1");if(this.firstDrag&&(I&&I.updateAll(),this.firstDrag=!1),u&&(this.element.style.left=u+"px"),c&&(this.element.style.top=c+"px"),I){var E=this.options.mouseAnchor?{x:o-this.applyDelta[a],y:r-this.applyDelta[l]}:i;I.action(E,"drag",n,this.element)}h.onChange&&h.onChange(this)}}},_onEnd:function(i){if(t.stopObserving(document,"mousemove",this.handlers.drag),t.stopObserving(document,"touchmove",this.handlers.drag),this.options.fps&&this._onDrag(i),n.removeClassName(this.element,this.options.dragClass),this.active&&this.dragged){this.options.droppableProxy&&document.body.removeChild(this.proxy),this.pt&&(e.remove(this.pt),this.pt=void 0),this.placeholder&&e.remove(this.placeholder),this.options.revert&&(this.element.style.position=this.position,this.element.style.zIndex=null!==this.zindex?this.zindex:"auto",this.element.style.left=this.originalPosition[a]?this.originalPosition[a]+"px":"",this.element.style.top=this.originalPosition[l]?this.originalPosition[l]+"px":""),this.options.onEnd&&this.options.onEnd(this.element,i);var o=Ink.getModule("Ink.UI.Droppable_1");o&&o.action(this._getCoords(i),"drop",i,this.element),this.position=!1,this.zindex=!1,this.firstDrag=!0}this.active=!1,this.dragged=!1}},h}); -Ink.createModule("Ink.UI.DatePicker","1",["Ink.UI.Aux_1","Ink.Dom.Event_1","Ink.Dom.Css_1","Ink.Dom.Element_1","Ink.Dom.Selector_1","Ink.Util.Array_1","Ink.Util.Date_1","Ink.Dom.Browser_1"],function(e,t,n,i,o,r,s){"use strict";var a=function(t,n){t&&(this._dataField=e.elOrSelector(t,"1st argument")),this._options=Ink.extendObj({instance:"scdp_"+Math.round(99999*Math.random()),format:"yyyy-mm-dd",cssClass:"sapo_component_datepicker",position:"right",onFocus:!0,onYearSelected:void 0,onMonthSelected:void 0,validDayFn:void 0,startDate:!1,onSetDate:!1,displayInSelect:!1,showClose:!0,showClean:!0,yearRange:!1,dateRange:!1,startWeekDay:1,closeText:"Close",cleanText:"Clear",prevLinkText:"«",nextLinkText:"»",ofText:" de ",month:{1:"January",2:"February",3:"March",4:"April",5:"May",6:"June",7:"July",8:"August",9:"September",10:"October",11:"November",12:"December"},wDay:{0:"Sunday",1:"Monday",2:"Tuesday",3:"Wednesday",4:"Thursday",5:"Friday",6:"Saturday"}},i.data(this._dataField)||{}),this._options=Ink.extendObj(this._options,n||{}),this._options.format=this._dateParsers[this._options.format]||this._options.format,this._hoverPicker=!1,this._picker=null,this._options.pickerField&&(this._picker=e.elOrSelector(this._options.pickerField,"pickerField")),this._today=new Date,this._day=this._today.getDate(),this._month=this._today.getMonth(),this._year=this._today.getFullYear(),this._setMinMax(this._options.dateRange||this._options.yearRange),this._data=new Date(Date.UTC.apply(this,this._checkDateRange(this._year,this._month,this._day))),this._options.startDate&&"string"==typeof this._options.startDate&&/\d\d\d\d\-\d\d\-\d\d/.test(this._options.startDate)&&this.setDate(this._options.startDate),this._init(),this._render(),this._options.startDate||this._dataField&&"string"==typeof this._dataField.value&&this._dataField.value&&this.setDate(this._dataField.value),e.registerInstance(this,this._containerObject,"datePicker")};return a.prototype={version:"0.1",_init:function(){Ink.extendObj(this._options,this._lang||{})},_render:function(){this._containerObject=document.createElement("div"),this._containerObject.id=this._options.instance,this._containerObject.className="sapo_component_datepicker";var n=document.getElementsByTagName("body")[0];if(this._options.showClose||this._options.showClean){if(this._superTopBar=document.createElement("div"),this._superTopBar.className="sapo_cal_top_options",this._options.showClean){var o=document.createElement("a");o.className="clean",o.innerHTML=this._options.cleanText,this._superTopBar.appendChild(o)}if(this._options.showClose){var r=document.createElement("a");r.className="close",r.innerHTML=this._options.closeText,this._superTopBar.appendChild(r)}this._containerObject.appendChild(this._superTopBar)}var s=document.createElement("div");s.className="sapo_cal_top",this._monthDescContainer=document.createElement("div"),this._monthDescContainer.className="sapo_cal_month_desc",this._monthPrev=document.createElement("div"),this._monthPrev.className="sapo_cal_prev",this._monthPrev.innerHTML=''+this._options.prevLinkText+"",this._monthNext=document.createElement("div"),this._monthNext.className="sapo_cal_next",this._monthNext.innerHTML=''+this._options.nextLinkText+"",s.appendChild(this._monthPrev),s.appendChild(this._monthDescContainer),s.appendChild(this._monthNext),this._monthContainer=document.createElement("div"),this._monthContainer.className="sapo_cal_month",this._containerObject.appendChild(s),this._containerObject.appendChild(this._monthContainer),this._monthSelector=document.createElement("ul"),this._monthSelector.className="sapo_cal_month_selector";for(var a,l,h=1;12>=h;h++)0===(h-1)%4&&(a=document.createElement("ul")),l=document.createElement("li"),l.innerHTML=''+this._options.month[h].substring(0,3)+"",a.appendChild(l),0===h%4&&this._monthSelector.appendChild(a);if(this._containerObject.appendChild(this._monthSelector),this._yearSelector=document.createElement("ul"),this._yearSelector.className="sapo_cal_year_selector",this._containerObject.appendChild(this._yearSelector),(!this._options.onFocus||this._options.displayInSelect)&&(this._options.pickerField?this._picker=e.elOrSelector(this._options.pickerField,"pickerField"):(this._picker=document.createElement("a"),this._picker.href="#open_cal",this._picker.innerHTML="open",this._picker.style.position="absolute",this._picker.style.top=i.elementTop(this._dataField),this._picker.style.left=i.elementLeft(this._dataField)+(i.elementWidth(this._dataField)||0)+5+"px",this._dataField.parentNode.appendChild(this._picker),this._picker.className="sapo_cal_date_picker")),this._options.displayInSelect){if(!(this._options.dayField&&this._options.monthField&&this._options.yearField||this._options.pickerField))throw"To use display in select you *MUST* to set dayField, monthField, yearField and pickerField!";this._options.dayField=e.elOrSelector(this._options.dayField,"dayField"),this._options.monthField=e.elOrSelector(this._options.monthField,"monthField"),this._options.yearField=e.elOrSelector(this._options.yearField,"yearField")}n.insertBefore(this._containerObject,n.childNodes[0]),this._picker?t.observe(this._picker,"click",Ink.bindEvent(function(e){t.stop(e),this._containerObject=i.clonePosition(this._containerObject,this._picker),this._updateDate(),this._showMonth(),this._containerObject.style.display="block"},this)):t.observe(this._dataField,"focus",Ink.bindEvent(function(){this._containerObject=i.clonePosition(this._containerObject,this._dataField),"bottom"===this._options.position?(this._containerObject.style.top=i.elementHeight(this._dataField)+i.offsetTop(this._dataField)+"px",this._containerObject.style.left=i.offset(this._dataField)[0]+"px"):(this._containerObject.style.top=i.offset(this._dataField)[1]+"px",this._containerObject.style.left=i.elementWidth(this._dataField)+i.offset(this._dataField)[0]+"px"),this._updateDate(),this._showMonth(),this._containerObject.style.display="block"},this)),this._options.displayInSelect?(t.observe(this._options.dayField,"change",Ink.bindEvent(function(){var e=this._options.yearField[this._options.yearField.selectedIndex].value;""!==e&&0!==e&&(this._updateDate(),this._showDefaultView())},this)),t.observe(this._options.monthField,"change",Ink.bindEvent(function(){var e=this._options.yearField[this._options.yearField.selectedIndex].value;""!==e&&0!==e&&(this._updateDate(),this._showDefaultView())},this)),t.observe(this._options.yearField,"change",Ink.bindEvent(function(){this._updateDate(),this._showDefaultView()},this))):(t.observe(this._dataField,"change",Ink.bindEvent(function(){this._updateDate(),this._showDefaultView(),this.setDate(),this._hoverPicker||(this._containerObject.style.display="none")},this)),t.observe(this._dataField,"blur",Ink.bindEvent(function(){this._hoverPicker||(this._containerObject.style.display="none")},this))),t.observe(document,"click",Ink.bindEvent(function(e){void 0===e.target&&(e.target=e.srcElement),i.descendantOf(this._containerObject,e.target)||e.target===this._dataField||(this._picker?e.target===this._picker||this._options.displayInSelect&&(e.target===this._options.dayField||e.target===this._options.monthField||e.target===this._options.yearField)||this._options.dayField&&(i.descendantOf(this._options.dayField,e.target)||i.descendantOf(this._options.monthField,e.target)||i.descendantOf(this._options.yearField,e.target))||(this._containerObject.style.display="none"):this._containerObject.style.display="none")},this)),this._showMonth(),this._monthChanger=document.createElement("a"),this._monthChanger.href="#monthchanger",this._monthChanger.className="sapo_cal_link_month",this._monthChanger.innerHTML=this._options.month[this._month+1],this._deText=document.createElement("span"),this._deText.innerHTML=this._options._deText,this._yearChanger=document.createElement("a"),this._yearChanger.href="#yearchanger",this._yearChanger.className="sapo_cal_link_year",this._yearChanger.innerHTML=this._year,this._monthDescContainer.innerHTML="",this._monthDescContainer.appendChild(this._monthChanger),this._monthDescContainer.appendChild(this._deText),this._monthDescContainer.appendChild(this._yearChanger),t.observe(this._containerObject,"mouseover",Ink.bindEvent(function(e){t.stop(e),this._hoverPicker=!0},this)),t.observe(this._containerObject,"mouseout",Ink.bindEvent(function(e){t.stop(e),this._hoverPicker=!1},this)),t.observe(this._containerObject,"click",Ink.bindEvent(function(e){e.target===void 0&&(e.target=e.srcElement);var n=e.target.className,i=-1!==n.indexOf("sapo_cal_off");if(t.stop(e),0!==n.indexOf("sapo_cal_")||i)if(0!==n.indexOf("sapo_calmonth_")||i)if(0!==n.indexOf("sapo_calyear_")||i)0!==n.indexOf("change_month_")||i?0!==n.indexOf("change_year_")||i?"clean"===n?this._options.displayInSelect?(this._options.yearField.selectedIndex=0,this._options.monthField.selectedIndex=0,this._options.dayField.selectedIndex=0):this._dataField.value="":"close"===n&&(this._containerObject.style.display="none"):"change_year_next"===n?this._showYearSelector(1):"change_year_prev"===n&&this._showYearSelector(-1):"change_month_next"===n?this._updateCal(1):"change_month_prev"===n&&this._updateCal(-1);else{var o=n.substr(13,4);Number(o)&&(this._year=o,"function"==typeof this._options.onYearSelected&&this._options.onYearSelected(this,{year:this._year}),this._monthPrev.childNodes[0].className="action_inactive",this._monthNext.childNodes[0].className="action_inactive",this._yearSelector.style.display="none",this._setActiveMonth(),this._monthSelector.style.display="block")}else{var r=n.substr(14,2);Number(r)&&(this._month=r-1,this._monthSelector.style.display="none",this._monthPrev.childNodes[0].className="change_month_prev",this._monthNext.childNodes[0].className="change_month_next",this._yearthis._yearMax||this._year===this._yearMax&&this._month>=this._monthMax)&&(this._monthNext.childNodes[0].className="action_inactive"),this._updateCal(),this._monthContainer.style.display="block")}else{var s=n.substr(9,2);Number(s)?(this.setDate(this._year+"-"+(this._month+1)+"-"+s),this._containerObject.style.display="none"):"sapo_cal_link_month"===n?(this._monthContainer.style.display="none",this._yearSelector.style.display="none",this._monthPrev.childNodes[0].className="action_inactive",this._monthNext.childNodes[0].className="action_inactive",this._setActiveMonth(),this._monthSelector.style.display="block"):"sapo_cal_link_year"===n&&(this._monthPrev.childNodes[0].className="action_inactive",this._monthNext.childNodes[0].className="action_inactive",this._monthSelector.style.display="none",this._monthContainer.style.display="none",this._showYearSelector(),this._yearSelector.style.display="block")}this._updateDescription()},this))},_setMinMax:function(e){var t;if(e){var n=e.split(":"),i=/^(\d{4})((\-)(\d{1,2})((\-)(\d{1,2}))?)?$/;if(n[0]&&("NOW"===n[0]?(this._yearMin=this._today.getFullYear(),this._monthMin=this._today.getMonth()+1,this._dayMin=this._today.getDate()):i.test(n[0])?(t=n[0].split("-"),this._yearMin=Math.floor(t[0]),this._monthMin=Math.floor(t[1])||1,this._dayMin=Math.floor(t[2])||1,this._monthMin>1&&this._monthMin>12&&(this._monthMin=1,this._dayMin=1),this._dayMin>1&&this._dayMin>this._daysInMonth(this._yearMin,this._monthMin)&&(this._dayMin=1)):(this._yearMin=Number.MIN_VALUE,this._monthMin=1,this._dayMin=1)),n[1])if("NOW"===n[1])this._yearMax=this._today.getFullYear(),this._monthMax=this._today.getMonth()+1,this._dayMax=this._today.getDate();else if(i.test(n[1])){t=n[1].split("-"),this._yearMax=Math.floor(t[0]),this._monthMax=Math.floor(t[1])||12,this._dayMax=Math.floor(t[2])||this._daysInMonth(this._yearMax,this._monthMax),this._monthMax>1&&this._monthMax>12&&(this._monthMax=12,this._dayMax=31);var o=this._daysInMonth(this._yearMax,this._monthMax);this._dayMax>1&&this._dayMax>o&&(this._dayMax=o)}else this._yearMax=Number.MAX_VALUE,this._monthMax=12,this._dayMax=31;this._yearMax>=this._yearMin&&(this._monthMax>this._monthMin||this._monthMax===this._monthMin&&this._dayMax>=this._dayMin)||(this._yearMin=Number.MIN_VALUE,this._monthMin=1,this._dayMin=1,this._yearMax=Number.MAX_VALUE,this._monthMax=12,this._dayMaXx=31)}else this._yearMin=Number.MIN_VALUE,this._monthMin=1,this._dayMin=1,this._yearMax=Number.MAX_VALUE,this._monthMax=12,this._dayMax=31},_checkDateRange:function(e,t,n){return this._isValidDate(e,t+1,n)||(e=this._today.getFullYear(),t=this._today.getMonth(),n=this._today.getDate()),e>this._yearMax?(e=this._yearMax,t=this._monthMax-1,n=this._dayMax):this._yearMin>e&&(e=this._yearMin,t=this._monthMin-1,n=this._dayMin),e===this._yearMax&&t+1>this._monthMax?(t=this._monthMax-1,n=this._dayMax):e===this._yearMin&&this._monthMin>t+1&&(t=this._monthMin-1,n=this._dayMin),e===this._yearMax&&t+1===this._monthMax&&n>this._dayMax?n=this._dayMax:e===this._yearMin&&t+1===this._monthMin&&this._dayMin>n?n=this._dayMin:n>this._daysInMonth(e,t+1)&&(n=this._daysInMonth(e,t+1)),[e,t,n]},_showDefaultView:function(){this._yearSelector.style.display="none",this._monthSelector.style.display="none",this._monthPrev.childNodes[0].className="change_month_prev",this._monthNext.childNodes[0].className="change_month_next",this._yearthis._yearMax||this._year===this._yearMax&&this._month+1>=this._monthMax)&&(this._monthNext.childNodes[0].className="action_inactive"),this._monthContainer.style.display="block"},_updateDate:function(){var e;this._options.displayInSelect?(e=[],this._isValidDate(e[0]=this._options.yearField[this._options.yearField.selectedIndex].value,e[1]=this._options.monthField[this._options.monthField.selectedIndex].value,e[2]=this._options.dayField[this._options.dayField.selectedIndex].value)?(e=this._checkDateRange(e[0],e[1]-1,e[2]),this._year=e[0],this._month=e[1],this._day=e[2]):(e=this._checkDateRange(e[0],e[1]-1,1),this._isValidDate(e[0],e[1]+1,e[2])&&(this._year=e[0],this._month=e[1],this._day=this._daysInMonth(e[0],e[1]),this.setDate()))):""!==this._dataField.value&&(this._isDate(this._options.format,this._dataField.value)?(e=this._getDataArrayParsed(this._dataField.value),e=this._checkDateRange(e[0],e[1]-1,e[2]),this._year=e[0],this._month=e[1],this._day=e[2]):(this._dataField.value="",this._year=this._data.getFullYear(),this._month=this._data.getMonth(),this._day=this._data.getDate()),this._data.setFullYear(this._year,this._month,this._day),this._dataField.value=this._writeDateInFormat()),this._updateDescription(),this._showMonth()},_updateDescription:function(){this._monthChanger.innerHTML=this._options.month[this._month+1],this._deText.innerHTML=this._options.ofText,this._yearChanger.innerHTML=this._year},_showYearSelector:function(){if(arguments.length){var e=+this._year+10*arguments[0];if(e-=e%10,e>this._yearMax||this._yearMin>e+9)return;this._year=+this._year+10*arguments[0]}for(var t="
  • ",n=this._year-this._year%10,i=0;11>=i;i++)0===i%4&&(t+="");t+="
  • ",this._yearSelector.innerHTML=t},_getDataArrayParsed:function(e){var t=[],n=s.set(this._options.format,e);return n&&(t=[n.getFullYear(),n.getMonth()+1,n.getDate()]),t},_isValidDate:function(e,t,n){var i=/^\d{4}$/,o=/^\d{1,2}$/;return i.test(e)&&o.test(t)&&o.test(n)&&t>=1&&12>=t&&n>=1&&this._daysInMonth(e,t)>=n},_isDate:function(e,t){try{if(e===void 0)return!1;var n=s.set(e,t);if(n&&this._isValidDate(n.getFullYear(),n.getMonth()+1,n.getDate()))return!0}catch(i){}return!1},_writeDateInFormat:function(){return s.get(this._options.format,this._data)},setDate:function(e){if("string"==typeof e&&/\d{4}-\d{1,2}-\d{1,2}/.test(e)){var t=e.split("-");this._year=t[0],this._month=t[1]-1,this._day=t[2]}this._setDate()},_setDate:function(e){e!==void 0&&e.className&&0===e.className.indexOf("sapo_cal_")&&(this._day=e.className.substr(9,2)),this._data.setFullYear.apply(this._data,this._checkDateRange(this._year,this._month,this._day)),this._options.displayInSelect?(this._options.dayField.value=this._data.getDate(),this._options.monthField.value=this._data.getMonth()+1,this._options.yearField.value=this._data.getFullYear()):this._dataField.value=this._writeDateInFormat(),this._options.onSetDate&&this._options.onSetDate(this,{date:this._data})},_updateCal:function(e){"function"==typeof this._options.onMonthSelected&&this._options.onMonthSelected(this,{year:this._year,month:this._month}),this._updateMonth(e),this._showMonth()},_daysInMonth:function(e,t){var n=31;switch(t){case 2:n=0===e%400||0===e%4&&0!==e%100?29:28;break;case 4:case 6:case 9:case 11:n=30}return n},_updateMonth:function(e){e===void 0&&(e="0");var t=this._month+1,n=this._year;switch(e){case-1:if(1===t){if(n===this._yearMin)return;t=12,n--}else t--;this._year=n,this._month=t-1;break;case 1:if(12===t){if(n===this._yearMax)return;t=1,n++}else t++;this._year=n,this._month=t-1;break;default:}},_dateParsers:{"yyyy-mm-dd":"Y-m-d","yyyy/mm/dd":"Y/m/d","yy-mm-dd":"y-m-d","yy/mm/dd":"y/m/d","dd-mm-yyyy":"d-m-Y","dd/mm/yyyy":"d/m/Y","dd-mm-yy":"d-m-y","dd/mm/yy":"d/m/y","mm/dd/yyyy":"m/d/Y","mm-dd-yyyy":"m-d-Y"},_showMonth:function(){var e,t,n=this._month+1,i=this._year,o=this._daysInMonth(i,n),r=new Date(i,n-1,1).getDay(),s=this._options.startWeekDay||0;this._monthPrev.childNodes[0].className="change_month_prev",this._monthNext.childNodes[0].className="change_month_next",this._yearMin>i||i===this._yearMin&&this._monthMin>=n?this._monthPrev.childNodes[0].className="action_inactive":(i>this._yearMax||i===this._yearMax&&n>=this._monthMax)&&(this._monthNext.childNodes[0].className="action_inactive"),s&&Number(s)&&(s>r?r=7+s-r:r+=s);var a="";for(a+='
      ',e=0;7>e;e++)a+="
    • "+this._options.wDay[e+(s+e>6?s-7:s)].substring(0,1)+"
    • ";a+="
    ";var l=0;if(a+="
      ",r)for(t=s;r-s>t;t++)l||(a+="
        "),a+='
      •  
      • ',l++;for(e=1;o>=e;e++){7===l&&(l=0,a+="
          ");var h="sapo_cal_"+(2===(e+"").length?e:"0"+e);h+=i===this._yearMin&&n===this._monthMin&&this._dayMin>e||i===this._yearMax&&n===this._monthMax&&e>this._dayMax||i===this._yearMin&&this._monthMin>n||i===this._yearMax&&n>this._monthMax||this._yearMin>i||i>this._yearMax||this._options.validDayFn&&!this._options.validDayFn.call(this,new Date(i,n-1,e))?" sapo_cal_off":this._data.getFullYear()===i&&this._data.getMonth()===n-1&&e===this._day?" sapo_cal_on":"",a+='
        • '+e+"
        • ",l++,7===l&&(a+="
        ")}if(7!==l){for(e=l;7>e;e++)a+='
      •  
      • ';a+="
      "}a+="
    ",this._monthContainer.innerHTML=a},_setActiveMonth:function(e){e===void 0&&(e=this._monthSelector);var t=e.childNodes.length;if(e.className&&e.className.match(/sapo_calmonth_/)){var i=this._year,o=e.className.substr(14,2);i===this._data.getFullYear()&&o===this._data.getMonth()+1?(n.addClassName(e,"sapo_cal_on"),n.removeClassName(e,"sapo_cal_off")):(n.removeClassName(e,"sapo_cal_on"),i===this._yearMin&&this._monthMin>o||i===this._yearMax&&o>this._monthMax||this._yearMin>i||i>this._yearMax?n.addClassName(e,"sapo_cal_off"):n.removeClassName(e,"sapo_cal_off"))}else if(0!==t)for(var r=0;t>r;r++)this._setActiveMonth(e.childNodes[r])},lang:function(e){this._lang=e},showMonth:function(){this._showMonth()},isMonthRendered:function(){var e=o.select(".sapo_cal_header",this._containerObject)[0];return"none"!==n.getStyle(e.parentNode,"display")&&"none"!==n.getStyle(e.parentNode.parentNode,"display")}},a}); -Ink.createModule("Ink.UI.Close","1",["Ink.Dom.Event_1","Ink.Dom.Element_1"],function(e,t){"use strict";var n=function(){e.observe(document.body,"click",function(n){var i=e.element(n);if(i=t.findUpwardsByClass(i,"ink-close")||t.findUpwardsByClass(i,"ink-dismiss")){var o=i;o=t.findUpwardsByClass(i,"ink-alert")||t.findUpwardsByClass(i,"ink-alert-block"),o&&(e.stop(n),t.remove(o))}})};return n}); -Ink.createModule("Ink.UI.Carousel","1",["Ink.UI.Aux_1","Ink.Dom.Event_1","Ink.Dom.Css_1","Ink.Dom.Element_1","Ink.UI.Pagination_1","Ink.Dom.Browser_1","Ink.Dom.Selector_1"],function(e,t,n,i,o,s){"use strict";var r=function(n,s){this._handlers={paginationChange:Ink.bind(this._onPaginationChange,this),windowResize:Ink.bind(this.refit,this)},t.observe(window,"resize",this._handlers.windowResize),this._element=e.elOrSelector(n,"1st argument"),this._options=Ink.extendObj({axis:"x",hideLast:!1,center:!1,keyboardSupport:!1,pagination:null,onChange:null},s||{},i.data(this._element)),this._isY="y"===this._options.axis;var r=this._element,a=Ink.s("ul.stage",r);if(this._ulEl=a,i.removeTextNodeChildren(a),this._options.hideLast){var l=document.createElement("div");l.className="hider",this._element.appendChild(l),l.style.position="absolute",l.style[this._isY?"left":"top"]="0",l.style[this._isY?"right":"bottom"]="0",l.style[this._isY?"bottom":"right"]="0",this._hiderEl=l}this.refit(),this._isY&&(this._ulEl.style.whiteSpace="normal"),this._options.pagination&&(e.isDOMElement(this._options.pagination)||"string"==typeof this._options.pagination?this._pagination=new o(this._options.pagination,{size:this._numPages,onChange:this._handlers.paginationChange}):(this._pagination=this._options.pagination,this._pagination._options.onChange=this._handlers.paginationChange,this._pagination.setSize(this._numPages),this._pagination.setCurrent(0)))};return r.prototype={refit:function(){this._liEls=Ink.ss("li.slide",this._ulEl);var e=this._liEls.length;this._ctnLength=this._size(this._element),this._elLength=this._size(this._liEls[0]),this._itemsPerPage=Math.floor(this._ctnLength/this._elLength),this._numPages=Math.ceil(e/this._itemsPerPage),this._deltaLength=this._itemsPerPage*this._elLength,this._isY?(this._element.style.width=this._liEls[0].offsetWidth+"px",this._ulEl.style.width=this._liEls[0].offsetWidth+"px"):this._ulEl.style.height=this._liEls[0].offsetHeight+"px",this._center(),this._updateHider(),this._IE7(),this._pagination&&(this._pagination.setSize(this._numPages),this._pagination.setCurrent(0))},_size:function(e){var t=i.outerDimensions(e);return this._isY?t[1]:t[0]},_center:function(){if(this._options.center){var e,t=Math.floor((this._ctnLength-this._elLength*this._itemsPerPage)/2);e=this._isY?[t,"px 0"]:["0 ",t,"px"],this._ulEl.style.padding=e.join("")}},_updateHider:function(){if(this._hiderEl){var e=Math.floor(this._ctnLength-this._elLength*this._itemsPerPage);this._options.center&&(e/=2),this._hiderEl.style[this._isY?"height":"width"]=e+"px"}},_IE7:function(){if(s.IE&&"7"==""+s.version.split(".")[0]){this._numPages;for(var e=Ink.ss("li.slide",this._ulEl),t=function(t,i){e[n].style[t]=i},n=0,i=e.length;i>n;n++)t("position","absolute"),t(this._isY?"top":"left",n*this._elLength+"px")}},_onPaginationChange:function(e){var t=e.getCurrent();this._ulEl.style["y"===this._options.axis?"top":"left"]=["-",t*this._deltaLength,"px"].join(""),this._options.onChange&&this._options.onChange.call(this,t)}},r}); -Ink.createModule("Ink.UI.Modal","1",["Ink.UI.Aux_1","Ink.Dom.Event_1","Ink.Dom.Css_1","Ink.Dom.Element_1","Ink.Dom.Selector_1","Ink.Util.Array_1"],function(e,t,n,i,o,s){"use strict";var r=function(e,r){if("string"!=typeof e&&"object"!=typeof e&&r.markup===void 0)throw"Invalid Modal selector";if("string"==typeof e){if(""!==e){if(this._element=o.select(e),0===this._element.length)throw"The Modal selector has not returned any elements";this._element=this._element[0]}}else e&&(this._element=e);if(this._options={width:void 0,height:void 0,shadeClass:void 0,modalClass:void 0,trigger:void 0,triggerEvent:"click",autoDisplay:!0,markup:void 0,onShow:void 0,onDismiss:void 0,closeOnClick:!1,responsive:!0,disableScroll:!0},this._handlers={click:Ink.bindEvent(this._onClick,this),keyDown:Ink.bindEvent(this._onKeyDown,this),resize:Ink.bindEvent(this._onResize,this)},this._wasDismissed=!1,this._markupMode=this._element?n.hasClassName(this._element,"ink-modal"):!1,this._markupMode){if(this._modalDiv=this._element,this._modalDivStyle=this._modalDiv.style,this._modalShadow=this._modalDiv.parentNode,this._modalShadowStyle=this._modalShadow.style,this._contentContainer=o.select(".modal-body",this._modalDiv),!this._contentContainer.length)throw'Missing div with class "modal-body"';this._contentContainer=this._contentContainer[0],this._options.markup=this._contentContainer.innerHTML,this._options=Ink.extendObj(this._options,i.data(this._element))}else this._modalShadow=document.createElement("div"),this._modalShadowStyle=this._modalShadow.style,this._modalDiv=document.createElement("div"),this._modalDivStyle=this._modalDiv.style,this._element&&(this._options.markup=this._element.innerHTML),n.addClassName(this._modalShadow,"ink-shade"),n.addClassName(this._modalDiv,"ink-modal"),n.addClassName(this._modalDiv,"ink-space"),this._modalShadow.appendChild(this._modalDiv),document.body.appendChild(this._modalShadow);if(this._options=Ink.extendObj(this._options,r||{}),this._markupMode||this.setContentMarkup(this._options.markup),"string"==typeof this._options.shadeClass&&s.each(this._options.shadeClass.split(" "),Ink.bind(function(e){n.addClassName(this._modalShadow,e.trim())},this)),"string"==typeof this._options.modalClass&&s.each(this._options.modalClass.split(" "),Ink.bind(function(e){n.addClassName(this._modalDiv,e.trim())},this)),"trigger"in this._options&&this._options.trigger!==void 0){var a,l;if("string"==typeof this._options.trigger&&(a=o.select(this._options.trigger),a.length>0))for(l=0;a.length>l;l++)t.observe(a[l],this._options.triggerEvent,Ink.bindEvent(this.open,this))}else this._options.autoDisplay&&this.open()};return r.prototype={_reposition:function(){this._modalDivStyle.top=this._modalDivStyle.left="50%",this._modalDivStyle.marginTop="-"+~~(i.elementHeight(this._modalDiv)/2)+"px",this._modalDivStyle.marginLeft="-"+~~(i.elementWidth(this._modalDiv)/2)+"px"},_onResize:function(e){"boolean"==typeof e?this._timeoutResizeFunction.call(this):this._resizeTimeout||"object"!=typeof e||(this._resizeTimeout=setTimeout(Ink.bind(this._timeoutResizeFunction,this),250))},_timeoutResizeFunction:function(){var e="CSS1Compat"===document.compatMode?document.documentElement:document.body,t=parseInt(e.clientHeight,10),n=parseInt(e.clientWidth,10);this._modalDivStyle.width=n>this.originalStatus.width?this._modalDivStyle.maxWidth:~~(.9*n)+"px",this._modalDivStyle.height=t>this.originalStatus.height&&parseInt(this._modalDivStyle.maxHeight,10)>=i.elementHeight(this._modalDiv)?this._modalDivStyle.maxHeight:~~(.9*t)+"px",this._resizeContainer(),this._reposition(),this._resizeTimeout=void 0},_onClick:function(e){var s=t.element(e);if(n.hasClassName(s,"ink-close")||n.hasClassName(s,"ink-dismiss")||i.findUpwardsByClass(s,"ink-close")||i.findUpwardsByClass(s,"ink-dismiss")||this._options.closeOnClick&&(!i.descendantOf(this._shadeElement,s)||s===this._shadeElement)){for(var r=o.select(".ink-alert",this._shadeElement),a=r.length,l=0;a>l;l++)if(i.descendantOf(r[l],s))return;t.stop(e),this.dismiss()}},_onKeyDown:function(e){27!==e.keyCode||this._wasDismissed||this.dismiss()},_resizeContainer:function(){this._contentElement.style.overflow=this._contentElement.style.overflowX=this._contentElement.style.overflowY="hidden";var e=i.elementHeight(this._modalDiv);this._modalHeader=o.select(".modal-header",this._modalDiv),this._modalHeader.length>0&&(this._modalHeader=this._modalHeader[0],e-=i.elementHeight(this._modalHeader)),this._modalFooter=o.select(".modal-footer",this._modalDiv),this._modalFooter.length>0&&(this._modalFooter=this._modalFooter[0],e-=i.elementHeight(this._modalFooter)),this._contentContainer.style.height=e+"px",e!==i.elementHeight(this._contentContainer)&&(this._contentContainer.style.height=~~(e-(i.elementHeight(this._contentContainer)-e))+"px"),this._markupMode||(this._contentContainer.style.overflow=this._contentContainer.style.overflowX="hidden",this._contentContainer.style.overflowY="auto",this._contentElement.style.overflow=this._contentElement.style.overflowX=this._contentElement.style.overflowY="visible")},_disableScroll:function(){this._oldScrollPos=i.scroll(),this._onScrollBinded=Ink.bindEvent(function(e){var n=t.element(e);i.descendantOf(this._modalShadow,n)||(t.stop(e),window.scrollTo(this._oldScrollPos[0],this._oldScrollPos[1]))},this),t.observe(window,"scroll",this._onScrollBinded),t.observe(document,"touchmove",this._onScrollBinded)},open:function(o){o&&t.stop(o);var s="CSS1Compat"===document.compatMode?document.documentElement:document.body;this._resizeTimeout=null,n.addClassName(this._modalShadow,"ink-shade"),this._modalShadowStyle.display=this._modalDivStyle.display="block",setTimeout(Ink.bind(function(){n.addClassName(this._modalShadow,"visible"),n.addClassName(this._modalDiv,"visible")},this),100),this._contentElement=this._modalDiv,this._shadeElement=this._modalShadow,this._markupMode||this.setContentMarkup(this._options.markup),this._options.width!==void 0?(this._modalDivStyle.width=this._options.width,-1===this._options.width.indexOf("%")&&(this._modalDivStyle.maxWidth=i.elementWidth(this._modalDiv)+"px")):this._modalDivStyle.maxWidth=this._modalDivStyle.width=i.elementWidth(this._modalDiv)+"px",parseInt(s.clientWidth,10)<=parseInt(this._modalDivStyle.width,10)&&(this._modalDivStyle.width=~~(.9*parseInt(s.clientWidth,10))+"px"),this._options.height!==void 0?(this._modalDivStyle.height=this._options.height,-1===this._options.height.indexOf("%")&&(this._modalDivStyle.maxHeight=i.elementHeight(this._modalDiv)+"px")):this._modalDivStyle.maxHeight=this._modalDivStyle.height=i.elementHeight(this._modalDiv)+"px",parseInt(s.clientHeight,10)<=parseInt(this._modalDivStyle.height,10)&&(this._modalDivStyle.height=~~(.9*parseInt(s.clientHeight,10))+"px"),this.originalStatus={viewportHeight:parseInt(s.clientHeight,10),viewportWidth:parseInt(s.clientWidth,10),width:parseInt(this._modalDivStyle.maxWidth,10),height:parseInt(this._modalDivStyle.maxHeight,10)},this._options.responsive?(this._onResize(!0),t.observe(window,"resize",this._handlers.resize)):(this._resizeContainer(),this._reposition()),this._options.onShow&&this._options.onShow(this),this._options.disableScroll&&this._disableScroll(),t.observe(this._shadeElement,"click",this._handlers.click),t.observe(document,"keydown",this._handlers.keyDown),e.registerInstance(this,this._shadeElement,"modal"),this._wasDismissed=!1},dismiss:function(){if(this._options.onDismiss){var e=this._options.onDismiss(this);if(e===!1)return}if(this._wasDismissed=!0,this._options.disableScroll&&(t.stopObserving(window,"scroll",this._onScrollBinded),t.stopObserving(document,"touchmove",this._onScrollBinded)),this._options.responsive&&t.stopObserving(window,"resize",this._handlers.resize),this._markupMode){n.removeClassName(this._modalDiv,"visible"),n.removeClassName(this._modalShadow,"visible");var i,o=Ink.bindEvent(function(){i&&(this._modalShadowStyle.display="none",t.stopObserving(document,"transitionend",o),t.stopObserving(document,"oTransitionEnd",o),t.stopObserving(document,"webkitTransitionEnd",o),clearInterval(i),i=void 0)},this);t.observe(document,"transitionend",o),t.observe(document,"oTransitionEnd",o),t.observe(document,"webkitTransitionEnd",o),i||(i=setInterval(Ink.bind(function(){this._modalShadowStyle.opacity>0||(this._modalShadowStyle.display="none",clearInterval(i),i=void 0)},this),500))}else this._modalShadow.parentNode.removeChild(this._modalShadow),this.destroy()},destroy:function(){e.unregisterInstance(this._instanceId)},getContentElement:function(){return this._contentContainer},setContentMarkup:function(e){if(this._markupMode)this._contentContainer.innerHTML=[e].join("");else{if(this._modalDiv.innerHTML=[e].join(""),this._contentContainer=o.select(".modal-body",this._modalDiv),!this._contentContainer.length){var t=o.select(".modal-header",this._modalDiv),i=o.select(".modal-footer",this._modalDiv);s.each(t,Ink.bind(function(e){e.parentNode.removeChild(e)},this)),s.each(i,Ink.bind(function(e){e.parentNode.removeChild(e)},this));var r=document.createElement("div");n.addClassName(r,"modal-body"),r.innerHTML=this._modalDiv.innerHTML,this._modalDiv.innerHTML="",s.each(t,Ink.bind(function(e){this._modalDiv.appendChild(e)},this)),this._modalDiv.appendChild(r),s.each(i,Ink.bind(function(e){this._modalDiv.appendChild(e)},this)),this._contentContainer=o.select(".modal-body",this._modalDiv)}this._contentContainer=this._contentContainer[0]}this._contentElement=this._modalDiv,this._resizeContainer()}},r}); -Ink.createModule("Ink.UI.ProgressBar","1",["Ink.Dom.Selector_1","Ink.Dom.Element_1"],function(e,t){"use strict";var n=function(n,i){if("object"!=typeof n){if("string"!=typeof n)throw"[Ink.UI.ProgressBar] :: Invalid selector";if(this._element=e.select(n),1>this._element.length)throw"[Ink.UI.ProgressBar] :: Selector didn't find any elements";this._element=this._element[0]}else this._element=n;this._options=Ink.extendObj({startValue:0,onStart:function(){},onEnd:function(){}},t.data(this._element)),this._options=Ink.extendObj(this._options,i||{}),this._value=this._options.startValue,this._init()};return n.prototype={_init:function(){if(this._elementBar=e.select(".bar",this._element),1>this._elementBar.length)throw"[Ink.UI.ProgressBar] :: Bar element not found";this._elementBar=this._elementBar[0],this._options.onStart=Ink.bind(this._options.onStart,this),this._options.onEnd=Ink.bind(this._options.onEnd,this),this.setValue(this._options.startValue)},setValue:function(e){this._options.onStart(this._value),e=parseInt(e,10),isNaN(e)||0>e?e=0:e>100&&(e=100),this._value=e,this._elementBar.style.width=this._value+"%",this._options.onEnd(this._value)}},n}); \ No newline at end of file diff --git a/public/js/vendor/ink-ui.min.js b/public/js/vendor/ink-ui.min.js deleted file mode 100644 index d7cb85f..0000000 --- a/public/js/vendor/ink-ui.min.js +++ /dev/null @@ -1,22 +0,0 @@ - -Ink.createModule("Ink.UI.Aux","1",["Ink.Net.Ajax_1","Ink.Dom.Css_1","Ink.Dom.Selector_1","Ink.Util.Url_1"],function(e,t,n,r){"use strict";var i={},o=0,a={Layouts:{SMALL:"small",MEDIUM:"medium",LARGE:"large"},isDOMElement:function(e){return"object"==typeof e&&"nodeType"in e&&1===e.nodeType},isInteger:function(e){return"number"==typeof e&&0===e%1},elOrSelector:function(e,t){if(!this.isDOMElement(e)){var r=n.select(e);if(0===r.length)throw new TypeError(t+" must either be a DOM Element or a selector expression!\nThe script element must also be after the DOM Element itself.");return r[0]}return e},clone:function(e){try{if("object"!=typeof e)throw Error("Given argument is not an object!");return JSON.parse(JSON.stringify(e))}catch(t){throw Error("Given object cannot have loops!")}},childIndex:function(e){if(a.isDOMElement(e))for(var t=n.select("> *",e.parentNode),r=0,i=t.length;i>r;++r)if(t[r]===e)return r;throw"not found!"},ajaxJSON:function(t,n,r){new e(t,{evalJS:"force",method:"POST",parameters:n,onSuccess:function(e){try{if(e=e.responseJSON,"ok"!==e.status)throw"server error: "+e.message;r(null,e)}catch(t){r(t)}},onFailure:function(){r("communication failure")}})},currentLayout:function(){var e,r,i,o,a,s=n.select("#ink-layout-detector")[0];if(!s){s=document.createElement("div"),s.id="ink-layout-detector";for(i in this.Layouts)this.Layouts.hasOwnProperty(i)&&(o=this.Layouts[i],a=document.createElement("div"),a.className="show-"+o+" hide-all",a.setAttribute("data-ink-layout",o),s.appendChild(a));document.body.appendChild(s)}for(e=0,r=s.childNodes.length;r>e;++e)if(a=s.childNodes[e],"hidden"!==t.getStyle(a,"visibility"))return a.getAttribute("data-ink-layout")},hashSet:function(e){if("object"!=typeof e)throw new TypeError("o should be an object!");var t=r.getAnchorString();t=Ink.extendObj(t,e),window.location.hash=r.genQueryString("",t).substring(1)},cleanChildren:function(e){if(!a.isDOMElement(e))throw"Please provide a valid DOMElement";for(var t,n=e.lastChild;n;)t=n.previousSibling,e.removeChild(n),n=t},storeIdAndClasses:function(e,t){if(!a.isDOMElement(e))throw"Please provide a valid DOMElement as first parameter";var n=e.id;n&&(t._id=n);var r=e.className;r&&(t._classes=r)},restoreIdAndClasses:function(e,t){if(!a.isDOMElement(e))throw"Please provide a valid DOMElement as first parameter";t._id&&e.id!==t._id&&(e.id=t._id),t._classes&&-1===e.className.indexOf(t._classes)&&(e.className?e.className+=" "+t._classes:e.className=t._classes),t._instanceId&&!e.getAttribute("data-instance")&&e.setAttribute("data-instance",t._instanceId)},registerInstance:function(e,t,n){if(!e._instanceId){if("object"!=typeof e)throw new TypeError("1st argument must be a JavaScript object!");if(!e._options||!e._options.skipRegister){if(!this.isDOMElement(t))throw new TypeError("2nd argument must be a DOM element!");if(void 0!==n&&"string"!=typeof n)throw new TypeError("3rd argument must be a string!");var r=(n||"instance")+ ++o;i[r]=e,e._instanceId=r;var a=t.getAttribute("data-instance");a=null!==a?[a,r].join(" "):r,t.setAttribute("data-instance",a)}}},unregisterInstance:function(e){delete i[e]},getInstance:function(e){var t;if(this.isDOMElement(e)){if(t=e.getAttribute("data-instance"),null===t)throw Error("argument is not a DOM instance element!")}else t=e;t=t.split(" ");var n,r,o,a=t.length,s=[];for(o=0;a>o;++o){if(r=t[o],!r)throw Error("Element is not a JS instance!");if(n=i[r],!n)throw Error('Instance "'+r+'" not found!');s.push(n)}return 1===a?s[0]:s},getInstanceFromSelector:function(e){var t=n.select(e)[0];if(!t)throw Error("Element not found!");return this.getInstance(t)},getInstanceIds:function(){var e=[];for(var t in i)i.hasOwnProperty(t)&&e.push(t);return e},getInstances:function(){var e=[];for(var t in i)i.hasOwnProperty(t)&&e.push(i[t]);return e},destroyComponent:function(){Ink.Util.Aux.unregisterInstance(this._instanceId),this._element.parentNode.removeChild(this._element)}};return a}); -Ink.createModule("Ink.UI.Pagination","1",["Ink.UI.Aux_1","Ink.Dom.Event_1","Ink.Dom.Css_1","Ink.Dom.Element_1","Ink.Dom.Selector_1"],function(e,t,n,r,i){"use strict";var o=function(e,t){var n=document.createElement("a");return n.setAttribute("href","#"),void 0!==t&&n.setAttribute("data-index",t),n.innerHTML=e,n},a=function(t,i){if(this._element=e.elOrSelector(t,"1st argument"),this._options=Ink.extendObj({size:void 0,start:1,firstLabel:"First",lastLabel:"Last",previousLabel:"Previous",nextLabel:"Next",onChange:void 0,setHash:!1,hashParameter:"page",numberFormatter:function(e){return e+1}},i||{},r.data(this._element)),this._options.previousPageLabel||(this._options.previousPageLabel="Previous "+this._options.maxSize),this._options.nextPageLabel||(this._options.nextPageLabel="Next "+this._options.maxSize),this._handlers={click:Ink.bindEvent(this._onClick,this)},!e.isInteger(this._options.size))throw new TypeError("size option is a required integer!");if(!e.isInteger(this._options.start)&&this._options.start>0&&this._options.start<=this._options.size)throw new TypeError("start option is a required integer between 1 and size!");if(this._options.maxSize&&!e.isInteger(this._options.maxSize)&&this._options.maxSize>0)throw new TypeError("maxSize option is a positive integer!");if(0>this._options.size)throw new RangeError("size option must be equal or more than 0!");if(void 0!==this._options.onChange&&"function"!=typeof this._options.onChange)throw new TypeError("onChange option must be a function!");n.hasClassName(Ink.s("ul",this._element),"dotted")&&(this._options.numberFormatter=function(){return''}),this._current=this._options.start-1,this._itemLiEls=[],this._init()};return a.prototype={_init:function(){this._generateMarkup(this._element),this._updateItems(),this._observe(),e.registerInstance(this,this._element,"pagination")},_observe:function(){t.observe(this._element,"click",this._handlers.click)},_updateItems:function(){var e,t,r,i=this._itemLiEls,a=this._options.size===i.length;if(a)for(e=0,t=this._options.size;t>e;++e)n.setClassName(i[e],"active",e===this._current);else{for(e=i.length-1;e>=0;--e)this._ulEl.removeChild(i[e]);for(i=[],e=0,t=this._options.size;t>e;++e)r=document.createElement("li"),r.appendChild(o(this._options.numberFormatter(e),e)),n.setClassName(r,"active",e===this._current),this._ulEl.insertBefore(r,this._nextEl),i.push(r);this._itemLiEls=i}if(this._options.maxSize){var s=Math.floor(this._current/this._options.maxSize),u=this._options.maxSize*s,l=u+this._options.maxSize-1;for(e=0,t=this._options.size;t>e;++e)r=i[e],n.setClassName(r,"hide-all",u>e||e>l);this._pageStart=u,this._pageEnd=l,this._page=s,n.setClassName(this._prevPageEl,"disabled",!this.hasPreviousPage()),n.setClassName(this._nextPageEl,"disabled",!this.hasNextPage()),n.setClassName(this._firstEl,"disabled",this.isFirst()),n.setClassName(this._lastEl,"disabled",this.isLast())}n.setClassName(this._prevEl,"disabled",!this.hasPrevious()),n.setClassName(this._nextEl,"disabled",!this.hasNext())},_generateMarkup:function(e){n.addClassName(e,"ink-navigation");var t,r,a=!1;1>(t=i.select("ul.pagination",e)).length?(t=document.createElement("ul"),n.addClassName(t,"pagination")):(a=!0,t=t[0]),this._options.maxSize&&(r=document.createElement("li"),r.appendChild(o(this._options.firstLabel)),this._firstEl=r,n.addClassName(r,"first"),t.appendChild(r),r=document.createElement("li"),r.appendChild(o(this._options.previousPageLabel)),this._prevPageEl=r,n.addClassName(r,"previousPage"),t.appendChild(r)),r=document.createElement("li"),r.appendChild(o(this._options.previousLabel)),this._prevEl=r,n.addClassName(r,"previous"),t.appendChild(r),r=document.createElement("li"),r.appendChild(o(this._options.nextLabel)),this._nextEl=r,n.addClassName(r,"next"),t.appendChild(r),this._options.maxSize&&(r=document.createElement("li"),r.appendChild(o(this._options.nextPageLabel)),this._nextPageEl=r,n.addClassName(r,"nextPage"),t.appendChild(r),r=document.createElement("li"),r.appendChild(o(this._options.lastLabel)),this._lastEl=r,n.addClassName(r,"last"),t.appendChild(r)),a||e.appendChild(t),this._ulEl=t},_onClick:function(e){t.stop(e);var r=t.element(e);if("a"!==r.nodeName.toLowerCase()){do r=r.parentNode;while("a"!==r.nodeName.toLowerCase()&&r!==this._element);if(r===this._element)return}var i=r.parentNode;if("li"===i.nodeName.toLowerCase()&&!n.hasClassName(i,"active")&&!n.hasClassName(i,"disabled")){var o=n.hasClassName(i,"previous"),a=n.hasClassName(i,"next"),s=n.hasClassName(i,"previousPage"),u=n.hasClassName(i,"nextPage"),l=n.hasClassName(i,"first"),c=n.hasClassName(i,"last");if(l)this.setCurrent(0);else if(c)this.setCurrent(this._options.size-1);else if(s||u)this.setCurrent((s?-1:1)*this._options.maxSize,!0);else if(o||a)this.setCurrent(o?-1:1,!0);else{var d=parseInt(r.getAttribute("data-index"),10);this.setCurrent(d)}}},setSize:function(t){if(!e.isInteger(t))throw new TypeError("1st argument must be an integer number!");this._options.size=t,this._updateItems(),this._current=0},setCurrent:function(t,n){if(!e.isInteger(t))throw new TypeError("1st argument must be an integer number!");n&&(t+=this._current),0>t?t=0:t>this._options.size-1&&(t=this._options.size-1),this._current=t,this._updateItems(),this._options.onChange&&this._options.onChange(this)},getSize:function(){return this._options.size},getCurrent:function(){return this._current},isFirst:function(){return 0===this._current},isLast:function(){return this._current===this._options.size-1},hasPrevious:function(){return this._current>0},hasNext:function(){return this._currentthis._options.maxSize-1},hasNextPage:function(){return this._options.maxSize&&this._options.size-this._current>=this._options.maxSize+1},destroy:e.destroyComponent},a}); -Ink.createModule("Ink.UI.SortableList","1",["Ink.UI.Aux_1","Ink.Dom.Event_1","Ink.Dom.Css_1","Ink.Dom.Element_1","Ink.Dom.Selector_1","Ink.Util.Array_1"],function(e,t,n,r,i,o){"use strict";var s=function(t,n){if(this._element=e.elOrSelector(t,"1st argument"),!e.isDOMElement(t)&&"string"!=typeof t)throw"[Ink.UI.SortableList] :: Invalid selector";if("string"==typeof t){if(this._element=Ink.Dom.Selector.select(t),1>this._element.length)throw"[Ink.UI.SortableList] :: Selector has returned no elements";this._element=this._element[0]}else this._element=t;if(this._options=Ink.extendObj({dragObject:"li"},Ink.Dom.Element.data(this._element)),this._options=Ink.extendObj(this._options,n||{}),this._handlers={down:Ink.bindEvent(this._onDown,this),move:Ink.bindEvent(this._onMove,this),up:Ink.bindEvent(this._onUp,this)},this._model=[],this._index=void 0,this._isMoving=!1,this._options.model instanceof Array)this._model=this._options.model,this._createdFrom="JSON";else{if("ul"!==this._element.nodeName.toLowerCase())throw new TypeError("You must pass a selector expression/DOM element as 1st option or provide a model on 2nd argument!");this._createdFrom="DOM"}if(this._dragTriggers=i.select(this._options.dragObject,this._element),!this._dragTriggers)throw"[Ink.UI.SortableList] :: Drag object not found";this._init()};return s.prototype={_init:function(){"DOM"===this._createdFrom&&(this._extractModelFromDOM(),this._createdFrom="JSON");var n="ontouchstart"in document.documentElement;this._down=n?"touchstart":"mousedown",this._move=n?"touchmove":"mousemove",this._up=n?"touchend":"mouseup";var r=document.body;t.observe(r,this._move,this._handlers.move),t.observe(r,this._up,this._handlers.up),this._observe(),e.registerInstance(this,this._element,"sortableList")},_observe:function(){t.observe(this._element,this._down,this._handlers.down)},_extractModelFromDOM:function(){this._model=[];var e=this,t=i.select("> li",this._element);o.each(t,function(t){var n=t.innerHTML;e._model.push(n)})},_generateMarkup:function(){var e=document.createElement("ul");e.className="unstyled ink-sortable-list";var t=this;return o.each(this._model,function(n,r){var i=document.createElement("li");r===t._index&&(i.className="drag"),i.innerHTML=[n].join(""),e.appendChild(i)}),e},_getY:function(e){return 0===e.type.indexOf("touch")?e.changedTouches[0].pageY:"number"==typeof e.pageY?e.pageY:e.clientY},_refresh:function(t){var n=this._generateMarkup();this._element.parentNode.replaceChild(n,this._element),this._element=n,e.restoreIdAndClasses(this._element,this),this._dragTriggers=i.select(this._options.dragObject,this._element),t||this._observe()},_onDown:function(n){if(!this._isMoving){var r=t.element(n);if(!o.inArray(r,this._dragTriggers)){for(;!o.inArray(r,this._dragTriggers)&&"body"!==r.nodeName.toLowerCase();)r=r.parentNode;if("body"===r.nodeName.toLowerCase())return}t.stop(n);var i;if("li"!==r.nodeName.toLowerCase())for(;"li"!==r.nodeName.toLowerCase()&&"body"!==r.nodeName.toLowerCase();)r=r.parentNode;return i=r,this._index=e.childIndex(i),this._height=i.offsetHeight,this._startY=this._getY(n),this._isMoving=!0,document.body.style.cursor="move",this._refresh(!1),!1}},_onMove:function(e){if(this._isMoving){t.stop(e);var n=this._getY(e),r=n-this._startY,i=r>0?1:-1,o=i*Math.floor(Math.abs(r)/this._height);if(0!==o&&(o/=Math.abs(o),!(-1===o&&0===this._index||1===o&&this._index===this._model.length-1))){var s=o>0?this._index:this._index+o,a=0>o?this._index:this._index+o;this._model.splice(s,2,this._model[a],this._model[s]),this._index+=o,this._startY=n,this._refresh(!1)}}},_onUp:function(e){this._isMoving&&(t.stop(e),this._index=void 0,this._isMoving=!1,document.body.style.cursor="",this._refresh())},getModel:function(){return this._model.slice()},destroy:e.destroyComponent},s}); -Ink.createModule("Ink.UI.Spy","1",["Ink.UI.Aux_1","Ink.Dom.Event_1","Ink.Dom.Css_1","Ink.Dom.Element_1","Ink.Dom.Selector_1","Ink.Util.Array_1"],function(e,t,n,r,i,o){"use strict";var s=function(t,n){this._rootElement=e.elOrSelector(t,"1st argument"),this._options=Ink.extendObj({target:void 0},r.data(this._rootElement)),this._options=Ink.extendObj(this._options,n||{}),this._options.target=e.elOrSelector(this._options.target,"Target"),this._scrollTimeout=null,this._init()};return s.prototype={_elements:[],_init:function(){t.observe(document,"scroll",Ink.bindEvent(this._onScroll,this)),this._elements.push(this._rootElement)},_onScroll:function(){var e=r.scrollHeight();if(!(this._rootElement.offsetTop>e)){for(var t=0,s=this._elements.length;s>t;t++)if(e>=this._elements[t].offsetTop&&this._elements[t]!==this._rootElement&&this._elements[t].offsetTop>this._rootElement.offsetTop)return;o.each(i.select("a",this._options.target),Ink.bind(function(e){var t="name"in this._rootElement&&this._rootElement.name?"#"+this._rootElement.name:"#"+this._rootElement.id;e.href.substr(e.href.indexOf("#"))===t?n.addClassName(r.findUpwardsByTag(e,"li"),"active"):n.removeClassName(r.findUpwardsByTag(e,"li"),"active")},this))}}},s}); -Ink.createModule("Ink.UI.Sticky","1",["Ink.UI.Aux_1","Ink.Dom.Event_1","Ink.Dom.Css_1","Ink.Dom.Element_1","Ink.Dom.Selector_1"],function(e,t,n,r,i){"use strict";var o=function(t,n){if("object"!=typeof t&&"string"!=typeof t)throw"[Sticky] :: Invalid selector defined";if("object"==typeof t)this._rootElement=t;else{if(this._rootElement=i.select(t),0>=this._rootElement.length)throw"[Sticky] :: Can't find any element with the specified selector";this._rootElement=this._rootElement[0]}this._options=Ink.extendObj({offsetBottom:0,offsetTop:0,topElement:void 0,bottomElement:void 0},r.data(this._rootElement)),this._options=Ink.extendObj(this._options,n||{}),this._options.topElement=this._options.topElement!==void 0?e.elOrSelector(this._options.topElement,"Top Element"):e.elOrSelector("body","Top Element"),this._options.bottomElement=this._options.bottomElement!==void 0?e.elOrSelector(this._options.bottomElement,"Bottom Element"):e.elOrSelector("body","Top Element"),this._computedStyle=window.getComputedStyle?window.getComputedStyle(this._rootElement,null):this._rootElement.currentStyle,this._dims={height:this._computedStyle.height,width:this._computedStyle.width},this._init()};return o.prototype={_init:function(){t.observe(document,"scroll",Ink.bindEvent(this._onScroll,this)),t.observe(window,"resize",Ink.bindEvent(this._onResize,this)),this._calculateOriginalSizes(),this._calculateOffsets()},_onScroll:function(){var e="CSS1Compat"===document.compatMode?document.documentElement:document.body;return 100*r.elementWidth(this._rootElement)/e.clientWidth>90||649>=e.clientWidth?(r.hasAttribute(this._rootElement,"style")&&this._rootElement.removeAttribute("style"),void 0):(this._scrollTimeout&&clearTimeout(this._scrollTimeout),this._scrollTimeout=setTimeout(Ink.bind(function(){var e=r.scrollHeight();if(r.hasAttribute(this._rootElement,"style"))this._options.originalTop-this._options.originalOffsetTop>=e?this._rootElement.removeAttribute("style"):document.body.scrollHeight-(e+parseInt(this._dims.height,10))=this._options.offsetBottom&&(this._rootElement.style.left=this._options.originalLeft+"px",this._rootElement.style.position="fixed",this._rootElement.style.bottom="auto",this._rootElement.style.left=this._options.originalLeft+"px",this._rootElement.style.top=this._options.originalOffsetTop+"px",this._rootElement.style.width=this._options.originalWidth+"px");else{if(this._options.originalTop-this._options.originalOffsetTop>=e)return;this._rootElement.style.left=this._options.originalLeft+"px",this._rootElement.style.position="fixed",this._rootElement.style.bottom="auto",this._rootElement.style.left=this._options.originalLeft+"px",this._rootElement.style.top=this._options.originalOffsetTop+"px",this._rootElement.style.width=this._options.originalWidth+"px"}this._scrollTimeout=void 0},this),0),void 0)},_onResize:function(){this._resizeTimeout&&clearTimeout(this._resizeTimeout),this._resizeTimeout=setTimeout(Ink.bind(function(){this._rootElement.removeAttribute("style"),this._calculateOriginalSizes(),this._calculateOffsets()},this),0)},_calculateOffsets:function(){if(this._options.topElement!==void 0)if("body"!==this._options.topElement.nodeName.toLowerCase()){var e=r.elementHeight(this._options.topElement),t=r.elementTop(this._options.topElement);this._options.offsetTop=parseInt(e,10)+parseInt(t,10)+parseInt(this._options.originalOffsetTop,10)}else this._options.offsetTop=parseInt(this._options.originalOffsetTop,10);if(this._options.bottomElement!==void 0)if("body"!==this._options.bottomElement.nodeName.toLowerCase()){var n=r.elementHeight(this._options.bottomElement);this._options.offsetBottom=parseInt(n,10)+parseInt(this._options.originalOffsetBottom,10)}else this._options.offsetBottom=parseInt(this._options.originalOffsetBottom,10);this._onScroll()},_calculateOriginalSizes:function(){this._options.originalOffsetTop===void 0&&(this._options.originalOffsetTop=parseInt(this._options.offsetTop,10),this._options.originalOffsetBottom=parseInt(this._options.offsetBottom,10)),this._options.originalTop=parseInt(this._rootElement.offsetTop,10),this._options.originalLeft=parseInt(this._rootElement.offsetLeft,10),isNaN(this._options.originalWidth=parseInt(this._dims.width,10))&&(this._options.originalWidth=0),this._options.originalWidth=parseInt(this._computedStyle.width,10)}},o}); -Ink.createModule("Ink.UI.Table","1",["Ink.Net.Ajax_1","Ink.UI.Aux_1","Ink.Dom.Event_1","Ink.Dom.Css_1","Ink.Dom.Element_1","Ink.Dom.Selector_1","Ink.Util.Array_1","Ink.Util.String_1"],function(e,t,n,i,r,o,s,a){"use strict";var l=function(e,n){if(this._rootElement=t.elOrSelector(e,"1st argument"),"table"!==this._rootElement.nodeName.toLowerCase())throw"[Ink.UI.Table] :: The element is not a table";this._options=Ink.extendObj({pageSize:void 0,endpoint:void 0,loadMode:"full",allowResetSorting:!1,visibleFields:void 0},r.data(this._rootElement)),this._options=Ink.extendObj(this._options,n||{}),this._markupMode=this._options.endpoint===void 0,this._options.visibleFields&&(this._options.visibleFields=this._options.visibleFields.split(",")),this._handlers={click:Ink.bindEvent(this._onClick,this)},this._originalFields=[],this._sortableFields={},this._originalData=this._data=[],this._headers=[],this._pagination=null,this._totalRows=0,this._init()};return l.prototype={_init:function(){if(this._markupMode){if(this._setHeadersHandlers(),s.each(o.select("tbody tr",this._rootElement),Ink.bind(function(e){this._data.push(e)},this)),this._originalData=this._data.slice(0),this._totalRows=this._data.length,"pageSize"in this._options&&this._options.pageSize!==void 0){for(this._pagination=this._rootElement.nextSibling;1!==this._pagination.nodeType;)this._pagination=this._pagination.nextSibling;if("nav"!==this._pagination.nodeName.toLowerCase())throw"[Ink.UI.Table] :: Missing the pagination markup or is mis-positioned";var e=Ink.getModule("Ink.UI.Pagination",1);this._pagination=new e(this._pagination,{size:Math.ceil(this._totalRows/this._options.pageSize),onChange:Ink.bind(function(e){this._paginate(e._current+1)},this)}),this._paginate(1)}}else this._getData(this._options.endpoint,!0)},_onClick:function(e){var i,l,u=n.element(e),c=r.data(u),h="pageSize"in this._options&&this._options.pageSize!==void 0;if("th"===u.nodeName.toLowerCase()&&"sortable"in c&&"true"==""+c.sortable){if(n.stop(e),i=-1,s.inArray(u,this._headers))for(l=0;this._headers.length>l;l++)if(this._headers[l]===u){i=l;break}if(!this._markupMode&&h){for(var d in this._sortableFields)d!=="col_"+i&&(this._sortableFields[d]="none",this._headers[d.replace("col_","")].innerHTML=a.stripTags(this._headers[d.replace("col_","")].innerHTML));"asc"===this._sortableFields["col_"+i]?(this._sortableFields["col_"+i]="desc",this._headers[i].innerHTML=a.stripTags(this._headers[i].innerHTML)+''):(this._sortableFields["col_"+i]="asc",this._headers[i].innerHTML=a.stripTags(this._headers[i].innerHTML)+''),this._pagination.setCurrent(this._pagination._current)}else{if(-1===i)return;if("desc"===this._sortableFields["col_"+i]&&this._options.allowResetSorting&&"true"==""+this._options.allowResetSorting)this._headers[i].innerHTML=a.stripTags(this._headers[i].innerHTML),this._sortableFields["col_"+i]="none",this._data=this._originalData.slice(0);else{for(var d in this._sortableFields)d!=="col_"+i&&(this._sortableFields[d]="none",this._headers[d.replace("col_","")].innerHTML=a.stripTags(this._headers[d.replace("col_","")].innerHTML));this._sort(i),"asc"===this._sortableFields["col_"+i]?(this._data.reverse(),this._sortableFields["col_"+i]="desc",this._headers[i].innerHTML=a.stripTags(this._headers[i].innerHTML)+''):(this._sortableFields["col_"+i]="asc",this._headers[i].innerHTML=a.stripTags(this._headers[i].innerHTML)+'')}var p=o.select("tbody",this._rootElement)[0];t.cleanChildren(p),s.each(this._data,function(e){p.appendChild(e)}),this._pagination.setCurrent(0),this._paginate(1)}}},_paginate:function(e){s.each(this._data,Ink.bind(function(t,n){n>=(e-1)*parseInt(this._options.pageSize,10)&&(e-1)*parseInt(this._options.pageSize,10)+parseInt(this._options.pageSize,10)>n?i.removeClassName(t,"hide-all"):i.addClassName(t,"hide-all")},this))},_sort:function(e){this._data.sort(Ink.bind(function(t,n){var i=r.textContent(o.select("td",t)[e]),s=r.textContent(o.select("td",n)[e]),a=RegExp(/\d/g);return!isNaN(i)&&a.test(i)?i=parseInt(i,10):isNaN(i)||(i=parseFloat(i)),!isNaN(s)&&a.test(s)?s=parseInt(s,10):isNaN(s)||(s=parseFloat(s)),i===s?0:i>s?1:-1},this))},_setHeaders:function(e,t){var n,i,s,a,l;if(0===(s=o.select("thead",this._rootElement)).length){s=this._rootElement.createTHead(),a=s.insertRow(0);for(n in e)if(e.hasOwnProperty(n)){if(this._options.visibleFields&&-1===this._options.visibleFields.indexOf(n))continue;l=document.createElement("th"),i=e[n],"sortable"in i&&"true"==""+i.sortable&&l.setAttribute("data-sortable","true"),"label"in i&&r.setTextContent(l,i.label),this._originalFields.push(n),a.appendChild(l)}}else{var u=t[0];for(n in u)if(u.hasOwnProperty(n)){if(this._options.visibleFields&&-1===this._options.visibleFields.indexOf(n))continue;this._originalFields.push(n)}}},_setHeadersHandlers:function(){var e=o.select("thead",this._rootElement);e.length&&(n.observe(e[0],"click",this._handlers.click),this._headers=o.select("thead tr th",this._rootElement),s.each(this._headers,Ink.bind(function(e,t){var n=r.data(e);"sortable"in n&&"true"==""+n.sortable&&(this._sortableFields["col_"+t]="none")},this)))},_setData:function(e){var t,n,i,r,s,a;n=o.select("tbody",this._rootElement),0===n.length?(n=document.createElement("tbody"),this._rootElement.appendChild(n)):(n=n[0],n.innerHTML=""),this._data=[];for(s in e)if(e.hasOwnProperty(s)){i=document.createElement("tr"),n.appendChild(i),a=0;for(t in e[s])if(e[s].hasOwnProperty(t)){if(this._options.visibleFields&&-1===this._options.visibleFields.indexOf(t))continue;r=i.insertCell(a++),r.innerHTML=e[s][t]}this._data.push(i)}this._originalData=this._data.slice(0)},setEndpoint:function(e,t){this._markupMode||(this._options.endpoint=e,this._pagination.setCurrent(t?parseInt(t,10):0))},_setPagination:function(){if("pageSize"in this._options&&this._options.pageSize!==void 0,"pageSize"in this._options&&this._options.pageSize!==void 0&&!this._pagination){this._pagination=document.createElement("nav"),this._pagination.className="ink-navigation",this._rootElement.parentNode.insertBefore(this._pagination,this._rootElement.nextSibling),this._pagination.appendChild(document.createElement("ul")).className="pagination";var e=Ink.getModule("Ink.UI.Pagination",1);this._pagination=new e(this._pagination,{size:Math.ceil(this._totalRows/this._options.pageSize),onChange:Ink.bind(function(){this._getData(this._options.endpoint)},this)})}},_getData:function(e){Ink.requireModules(["Ink.Util.Url_1"],Ink.bind(function(t){var n=t.parseUrl(e),i="pageSize"in this._options&&this._options.pageSize!==void 0,r=this._pagination?this._pagination._current+1:1;if(n.query=n.query?n.query.split("&"):[],i){n.query.push("rows_per_page="+this._options.pageSize),n.query.push("page="+r);for(var o in this._sortableFields)if("none"!==this._sortableFields[o]){n.query.push("sortField="+this._originalFields[parseInt(o.replace("col_",""),10)]),n.query.push("sortOrder="+this._sortableFields[o]);break}this._getDataViaAjax(e+"?"+n.query.join("&"))}else this._getDataViaAjax(e)},this))},_getDataViaAjax:function(t){var n="pageSize"in this._options&&this._options.pageSize!==void 0;new e(t,{method:"GET",contentType:"application/json",sanitizeJSON:!0,onSuccess:Ink.bind(function(e){if(200===e.status){var t=JSON.parse(e.responseText);0===this._headers.length&&(this._setHeaders(t.headers,t.rows),this._setHeadersHandlers()),this._setData(t.rows),n?this._totalRows&&parseInt(t.totalRows,10)!==parseInt(this._totalRows,10)?(this._totalRows=t.totalRows,this._pagination.setSize(Math.ceil(this._totalRows/this._options.pageSize))):this._totalRows=t.totalRows:this._totalRows&&t.rows.length!==parseInt(this._totalRows,10)?(this._totalRows=t.rows.length,this._pagination.setSize(Math.ceil(this._totalRows/this._options.pageSize))):this._totalRows=t.rows.length,this._setPagination()}},this)})}},l}); -Ink.createModule("Ink.UI.Tabs","1",["Ink.UI.Aux_1","Ink.Dom.Event_1","Ink.Dom.Css_1","Ink.Dom.Element_1","Ink.Dom.Selector_1","Ink.Util.Array_1"],function(e,t,n,i,r,o){"use strict";var s=function(t,n){if(e.isDOMElement(t))this._element=t;else{if(t=r.select(t),0===t.length)throw new TypeError("1st argument must either be a DOM Element or a selector expression!");this._element=t[0]}this._options=Ink.extendObj({preventUrlChange:!1,active:void 0,disabled:[],onBeforeChange:void 0,onChange:void 0},i.data(t)),this._options=Ink.extendObj(this._options,n||{}),this._handlers={tabClicked:Ink.bindEvent(this._onTabClicked,this),disabledTabClicked:Ink.bindEvent(this._onDisabledTabClicked,this),resize:Ink.bindEvent(this._onResize,this)},this._init()};return s.prototype={_init:function(){this._menu=r.select(".tabs-nav",this._element)[0],this._menuTabs=this._getChildElements(this._menu),this._contentTabs=r.select(".tabs-content",this._element),this._initializeDom(),this._observe(),this._setFirstActive(),this._changeTab(this._activeMenuLink),this._handlers.resize(),e.registerInstance(this,this._element,"tabs")},_initializeDom:function(){for(var e=0;this._contentTabs.length>e;e++)n.hide(this._contentTabs[e])},_observe:function(){o.each(this._menuTabs,Ink.bind(function(e){var t=r.select("a",e)[0];o.inArray(t.getAttribute("href"),this._options.disabled)?this.disable(t):this.enable(t)},this)),t.observe(window,"resize",this._handlers.resize)},_setFirstActive:function(){var e=window.location.hash;this._activeContentTab=r.select(e,this._element)[0]||r.select(this._hashify(this._options.active),this._element)[0]||r.select(".tabs-content",this._element)[0],this._activeMenuLink=this._findLinkByHref(this._activeContentTab.getAttribute("id")),this._activeMenuTab=this._activeMenuLink.parentNode},_changeTab:function(e,t){t&&this._options.onBeforeChange!==void 0&&this._options.onBeforeChange(this);var i=e.getAttribute("href");n.removeClassName(this._activeMenuTab,"active"),n.removeClassName(this._activeContentTab,"active"),n.addClassName(this._activeContentTab,"hide-all"),this._activeMenuLink=e,this._activeMenuTab=this._activeMenuLink.parentNode,this._activeContentTab=r.select(i.substr(i.indexOf("#")),this._element)[0],n.addClassName(this._activeMenuTab,"active"),n.addClassName(this._activeContentTab,"active"),n.removeClassName(this._activeContentTab,"hide-all"),n.show(this._activeContentTab),t&&this._options.onChange!==void 0&&this._options.onChange(this)},_onTabClicked:function(e){t.stop(e);var n=t.findElement(e,"A");"a"===n.nodeName.toLowerCase()&&("true"!=""+this._options.preventUrlChange&&(window.location.hash=n.getAttribute("href").substr(n.getAttribute("href").indexOf("#"))),n!==this._activeMenuLink&&this.changeTab(n))},_onDisabledTabClicked:function(e){t.stop(e)},_onResize:function(){var t=e.currentLayout();t!==this._lastLayout&&(t===e.Layouts.SMALL||t===e.Layouts.MEDIUM?(n.removeClassName(this._menu,"menu"),n.removeClassName(this._menu,"horizontal")):(n.addClassName(this._menu,"menu"),n.addClassName(this._menu,"horizontal")),this._lastLayout=t)},_hashify:function(e){return e?0===e.indexOf("#")?e:"#"+e:""},_findLinkByHref:function(e){e=this._hashify(e);var t;return o.each(this._menuTabs,Ink.bind(function(n){var i=r.select("a",n)[0];-1!==i.getAttribute("href").indexOf("#")&&i.getAttribute("href").substr(i.getAttribute("href").indexOf("#"))===e&&(t=i)},this)),t},_getChildElements:function(e){for(var t=[],n=e.children,i=0;n.length>i;i++)1===n[i].nodeType&&t.push(n[i]);return t},changeTab:function(e){var t=1===e.nodeType?e:this._findLinkByHref(this._hashify(e));t&&!n.hasClassName(t,"ink-disabled")&&this._changeTab(t,!0)},disable:function(e){var i=1===e.nodeType?e:this._findLinkByHref(this._hashify(e));i&&(t.stopObserving(i,"click",this._handlers.tabClicked),t.observe(i,"click",this._handlers.disabledTabClicked),n.addClassName(i,"ink-disabled"))},enable:function(e){var i=1===e.nodeType?e:this._findLinkByHref(this._hashify(e));i&&(t.stopObserving(i,"click",this._handlers.disabledTabClicked),t.observe(i,"click",this._handlers.tabClicked),n.removeClassName(i,"ink-disabled"))},activeTab:function(){return this._activeContentTab.getAttribute("id")},activeMenuTab:function(){return this._activeMenuTab},activeMenuLink:function(){return this._activeMenuLink},activeContentTab:function(){return this._activeContentTab},destroy:e.destroyComponent},s}); -Ink.createModule("Ink.UI.Toggle","1",["Ink.UI.Aux_1","Ink.Dom.Event_1","Ink.Dom.Css_1","Ink.Dom.Element_1","Ink.Dom.Selector_1","Ink.Util.Array_1"],function(e,t,n,i,r,o){"use strict";var s=function(e,t){if("string"!=typeof e&&"object"!=typeof e)throw"[Ink.UI.Toggle] Invalid CSS selector to determine the root element";if("string"==typeof e){if(this._rootElement=r.select(e),0>=this._rootElement.length)throw"[Ink.UI.Toggle] Root element not found";this._rootElement=this._rootElement[0]}else this._rootElement=e;if(this._options=Ink.extendObj({target:void 0,triggerEvent:"click",closeOnClick:!0},i.data(this._rootElement)),this._options=Ink.extendObj(this._options,t||{}),this._targets=function(e){return"string"==typeof e?r.select(e):"object"==typeof e?e.constructor===Array?e:[e]:void 0}(this._options.target),!this._targets.length)throw"[Ink.UI.Toggle] Toggle target was not found! Supply a valid selector, array, or element through the `target` option.";this._init()};return s.prototype={_init:function(){this._accordion=n.hasClassName(this._rootElement.parentNode,"accordion")||n.hasClassName(this._targets[0].parentNode,"accordion"),t.observe(this._rootElement,this._options.triggerEvent,Ink.bindEvent(this._onTriggerEvent,this)),"true"==""+this._options.closeOnClick&&t.observe(document,"click",Ink.bindEvent(this._onClick,this))},_onTriggerEvent:function(){if(this._accordion){var e,t,o;for(o=n.hasClassName(this._targets[0].parentNode,"accordion")?this._targets[0].parentNode:this._targets[0].parentNode.parentNode,e=r.select(".toggle",o),t=0;e.length>t;t+=1){var s=i.data(e[t]),a=r.select(s.target,o);a.length>0&&a[0]!==this._targets[0]&&(a[0].style.display="none")}}for(var l,u,c=0,h=this._targets.length;h>c;c++)l="none"===n.getStyle(this._targets[c],"display")?"show-all":"hide-all",u="none"===n.getStyle(this._targets[c],"display")?"block":"none",n.removeClassName(this._targets[c],"show-all"),n.removeClassName(this._targets[c],"hide-all"),n.addClassName(this._targets[c],l),this._targets[c].style.display=u;"show-all"===l?n.addClassName(this._rootElement,"active"):n.removeClassName(this._rootElement,"active")},_onClick:function(e){var n,r=t.element(e),s=o.some(this._targets,function(e){return i.isAncestorOf(e,r)});if(this._rootElement!==r&&!i.isAncestorOf(this._rootElement,r)&&!s){if((n=Ink.ss(".ink-shade")).length)for(var a=n.length,l=0;a>l;l++)if(i.isAncestorOf(n[l],r)&&i.isAncestorOf(n[l],this._rootElement))return;i.findUpwardsByClass(r,"toggle")&&this._dismiss(this._rootElement)}},_dismiss:function(){if("none"!==n.getStyle(this._targets[0],"display")){for(var e=0,t=this._targets.length;t>e;e++)n.removeClassName(this._targets[e],"show-all"),n.addClassName(this._targets[e],"hide-all"),this._targets[e].style.display="none";n.removeClassName(this._rootElement,"active")}}},s}); -Ink.createModule("Ink.UI.Tooltip","1",["Ink.UI.Aux_1","Ink.Dom.Event_1","Ink.Dom.Element_1","Ink.Dom.Selector_1","Ink.Util.Array_1","Ink.Dom.Css_1","Ink.Dom.Browser_1"],function(e,t,n,i,o,r){"use strict";function s(e,t){this._init(e,t||{})}function a(e,t){this._init(e,t)}var l,u,c;(function(){for(var e=document.createElement("DIV"),t=["transition","oTransition","msTransition","mozTransition","webkitTransition"],n=0;t.length>n;n++)if(e.style[t[n]+"Duration"]!==void 0){l=t[n]+"Duration",u=t[n]+"Property",c=t[n]+"TimingFunction";break}})();var h=document.getElementsByTagName("body"),d=h&&h.length?h[0]:document.documentElement;return s.prototype={_init:function(e,t){var n;if(this.options=Ink.extendObj({where:"up",zIndex:1e4,left:10,top:10,spacing:8,forever:0,color:"",timeout:0,delay:0,template:null,templatefield:null,fade:.3,text:""},t||{}),"string"==typeof e)n=i.select(e);else{if("object"!=typeof e)throw"Element expected";n=[e]}this.tooltips=[];for(var o=0,r=n.length;r>o;o++)this.tooltips[o]=new a(this,n[o])},destroy:function(){o.each(this.tooltips,function(e){e._destroy()}),this.tooltips=null,this.options=null}},a.prototype={_oppositeDirections:{left:"right",right:"left",up:"down",down:"up"},_init:function(e,n){t.observe(n,"mouseover",Ink.bindEvent(this._onMouseOver,this)),t.observe(n,"mouseout",Ink.bindEvent(this._onMouseOut,this)),t.observe(n,"mousemove",Ink.bindEvent(this._onMouseMove,this)),this.root=e,this.element=n,this._delayTimeout=null,this.tooltip=null},_makeTooltip:function(e){if(!this._getOpt("text"))return!1;var n=this._createTooltipElement();this.tooltip&&this._removeTooltip(),this.tooltip=n,this._fadeInTooltipElement(n),this._placeTooltipElement(n,e),t.observe(n,"mouseover",Ink.bindEvent(this._onTooltipMouseOver,this));var i=this._getFloatOpt("timeout");i&&setTimeout(Ink.bind(function(){this.tooltip===n&&this._removeTooltip()},this),1e3*i)},_createTooltipElement:function(){var t,o,s=this._getOpt("template"),a=this._getOpt("templatefield");if(s){var l=document.createElement("DIV");if(l.innerHTML=e.elOrSelector(s,"options.template").outerHTML,t=l.firstChild,a){if(o=i.select(a,t),!o)throw"options.templatefield must be a valid selector within options.template";o=o[0]}else o=t}else t=document.createElement("DIV"),r.addClassName(t,"ink-tooltip"),r.addClassName(t,this._getOpt("color")),o=document.createElement("DIV"),r.addClassName(o,"content"),t.appendChild(o);return n.setTextContent(o,this._getOpt("text")),t.style.display="block",t.style.position="absolute",t.style.zIndex=this._getIntOpt("zIndex"),t},_fadeInTooltipElement:function(e){var t=this._getFloatOpt("fade");l&&t&&(e.style.opacity="0",e.style[l]=t+"s",e.style[u]="opacity",e.style[c]="ease-in-out",setTimeout(function(){e.style.opacity="1"},0))},_placeTooltipElement:function(e,t){var i=this._getOpt("where");if("mousemove"===i||"mousefix"===i){var o=t;this._setPos(o[0],o[1]),d.appendChild(e)}else if(i.match(/(up|down|left|right)/)){d.appendChild(e);var s=n.offset(this.element),a=s[0],l=s[1];a instanceof Array&&(l=a[1],a=a[0]);var u=n.elementWidth(this.element)/2-n.elementWidth(e)/2,c=n.elementHeight(this.element)/2-n.elementHeight(e)/2,h=this._getIntOpt("spacing"),p=n.elementDimensions(e),f=n.elementDimensions(this.element),m=n.scrollWidth()+n.viewportWidth(),g=n.scrollHeight()+n.viewportHeight();"left"===i&&0>a-p[0]?i="right":"right"===i&&a+p[0]>m?i="left":"up"===i&&0>l-p[1]?i="down":"down"===i&&l+p[1]>g&&(i="up"),"up"===i?(l-=p[1],l-=h,a+=u):"down"===i?(l+=f[1],l+=h,a+=u):"left"===i?(a-=p[0],a-=h,l+=c):"right"===i&&(a+=f[0],a+=h,l+=c);var v=null;i.match(/(up|down|left|right)/)&&(v=document.createElement("SPAN"),r.addClassName(v,"arrow"),r.addClassName(v,this._oppositeDirections[i]),e.appendChild(v));var _=this._getLocalScroll(),y=a-_[0],b=l-_[1],w=b+p[1]-g,E=y+p[0]-m,k=0-y,C=0-b;w>0?(v&&(v.style.top=p[1]/2+w+"px"),b-=w):C>0?(v&&(v.style.top=p[1]/2-C+"px"),b+=C):E>0?(v&&(v.style.left=p[0]/2+E+"px"),y-=E):k>0&&(v&&(v.style.left=p[0]/2-k+"px"),y+=k),e.style.left=y+"px",e.style.top=b+"px"}},_removeTooltip:function(){var e=this.tooltip;if(e){var t=Ink.bind(n.remove,{},e);"mousemove"!==this._getOpt("where")&&l?(e.style.opacity=0,setTimeout(t,1e3*this._getFloatOpt("fade"))):t(),this.tooltip=null}},_getOpt:function(e){var t=n.data(this.element)[n._camelCase("tip-"+e)];if(t)return t;var i=this.root.options[e];return i!==void 0?i:void 0},_getIntOpt:function(e){return parseInt(this._getOpt(e),10)},_getFloatOpt:function(e){return parseFloat(this._getOpt(e),10)},_destroy:function(){this.tooltip&&n.remove(this.tooltip),this.root=null,this.element=null,this.tooltip=null},_onMouseOver:function(e){var t=this._getMousePosition(e),n=this._getFloatOpt("delay");n?this._delayTimeout=setTimeout(Ink.bind(function(){this.tooltip||this._makeTooltip(t),this._delayTimeout=null},this),1e3*n):this._makeTooltip(t)},_onMouseMove:function(e){if("mousemove"===this._getOpt("where")&&this.tooltip){var t=this._getMousePosition(e);this._setPos(t[0],t[1])}},_onMouseOut:function(){this._getIntOpt("forever")||this._removeTooltip(),this._delayTimeout&&(clearTimeout(this._delayTimeout),this._delayTimeout=null)},_onTooltipMouseOver:function(){this.tooltip&&this._removeTooltip()},_setPos:function(e,t){e+=this._getIntOpt("left"),t+=this._getIntOpt("top");var i=this._getPageXY();if(this.tooltip){var o=[n.elementWidth(this.tooltip),n.elementHeight(this.tooltip)],r=this._getScroll();o[0]+e-r[0]>=i[0]-20&&(e=e-o[0]-this._getIntOpt("left")-10),o[1]+t-r[1]>=i[1]-20&&(t=t-o[1]-this._getIntOpt("top")-10),this.tooltip.style.left=e+"px",this.tooltip.style.top=t+"px"}},_getPageXY:function(){var e=0,t=0;return"number"==typeof window.innerWidth?(e=window.innerWidth,t=window.innerHeight):document.documentElement&&(document.documentElement.clientWidth||document.documentElement.clientHeight)?(e=document.documentElement.clientWidth,t=document.documentElement.clientHeight):document.body&&(document.body.clientWidth||document.body.clientHeight)&&(e=document.body.clientWidth,t=document.body.clientHeight),[parseInt(e,10),parseInt(t,10)]},_getScroll:function(){var e=document.documentElement,t=document.body;return e&&(e.scrollLeft||e.scrollTop)?[e.scrollLeft,e.scrollTop]:t?[t.scrollLeft,t.scrollTop]:[0,0]},_getLocalScroll:function(){for(var e,t,n=[0,0],i=this.element.parentNode;i&&i!==document.documentElement&&i!==document.body;)e=i.scrollLeft,t=i.scrollTop,e&&(n[0]+=e),t&&(n[1]+=t),i=i.parentNode;return n},_getMousePosition:function(e){return[parseInt(t.pointerX(e),10),parseInt(t.pointerY(e),10)]}},s}); -Ink.createModule("Ink.UI.TreeView","1",["Ink.UI.Aux_1","Ink.Dom.Event_1","Ink.Dom.Css_1","Ink.Dom.Element_1","Ink.Dom.Selector_1","Ink.Util.Array_1"],function(e,t,n,i,o,r){"use strict";var s=function(t,n){if(!e.isDOMElement(t)&&"string"!=typeof t)throw"[Ink.UI.TreeView] :: Invalid selector";if("string"==typeof t){if(this._element=o.select(t),1>this._element.length)throw"[Ink.UI.TreeView] :: Selector has returned no elements";this._element=this._element[0]}else this._element=t;this._options=Ink.extendObj({node:"li",child:"ul"},i.data(this._element)),this._options=Ink.extendObj(this._options,n||{}),this._init()};return s.prototype={_init:function(){this._handlers={click:Ink.bindEvent(this._onClick,this)},t.observe(this._element,"click",this._handlers.click);var e,i=o.select(this._options.node,this._element);r.each(i,Ink.bind(function(t){n.hasClassName(t,"open")||(n.hasClassName(t,"closed")||n.addClassName(t,"closed"),e=o.select(this._options.child,t),r.each(e,Ink.bind(function(e){n.hasClassName(e,"hide-all")||n.addClassName(e,"hide-all")},this)))},this))},_onClick:function(e){var i=t.element(e);if("."===this._options.node[0]){if(!n.hasClassName(i,this._options.node.substr(1)))for(;!n.hasClassName(i,this._options.node.substr(1))&&"body"!==i.nodeName.toLowerCase();)i=i.parentNode}else if("#"===this._options.node[0]){if(i.id!==this._options.node.substr(1))for(;i.id!==this._options.node.substr(1)&&"body"!==i.nodeName.toLowerCase();)i=i.parentNode}else if(i.nodeName.toLowerCase()!==this._options.node)for(;i.nodeName.toLowerCase()!==this._options.node&&"body"!==i.nodeName.toLowerCase();)i=i.parentNode;if("body"!==i.nodeName.toLowerCase()){var r=o.select(this._options.child,i);r.length>0&&(t.stop(e),r=r[0],n.hasClassName(r,"hide-all")?(n.removeClassName(r,"hide-all"),n.addClassName(i,"open"),n.removeClassName(i,"closed")):(n.addClassName(r,"hide-all"),n.removeClassName(i,"open"),n.addClassName(i,"closed")))}}},s}); -Ink.createModule("Ink.UI.SmoothScroller","1",["Ink.Dom.Event_1","Ink.Dom.Selector_1","Ink.Dom.Loaded_1"],function(e,t,n){"use strict";var i={speed:10,gy:function(e){var t;if(t=e.offsetTop,e.offsetParent)for(;e=e.offsetParent;)t+=e.offsetTop;return t},scrollTop:function(){var e=document.body,t=document.documentElement;return e&&e.scrollTop?e.scrollTop:t&&t.scrollTop?t.scrollTop:window.pageYOffset?window.pageYOffset:0},add:function(t,n,i){e.observe(t,n,i)},end:function(t){return window.event?(window.event.cancelBubble=!0,window.event.returnValue=!1,void 0):(e.stop(t),void 0)},scroll:function(e){var t=Ink.UI.SmoothScroller.scrollTop();t+=e>t?Math.ceil((e-t)/Ink.UI.SmoothScroller.speed):(e-t)/Ink.UI.SmoothScroller.speed,window.scrollTo(0,t),(t===e||Ink.UI.SmoothScroller.offsetTop===t)&&clearInterval(Ink.UI.SmoothScroller.interval),Ink.UI.SmoothScroller.offsetTop=t},init:function(){n.run(Ink.UI.SmoothScroller.render)},render:function(){var n=t.select("a.scrollableLink");Ink.UI.SmoothScroller.end(this);for(var i=0;n.length>i;i++){var o=n[i];!o.href||-1===o.href.indexOf("#")||o.pathname!==location.pathname&&"/"+o.pathname!==location.pathname||(Ink.UI.SmoothScroller.add(o,"click",Ink.UI.SmoothScroller.end),e.observe(o,"click",Ink.bindEvent(Ink.UI.SmoothScroller.clickScroll,this,o)))}},clickScroll:function(e,n){if(Ink.UI.SmoothScroller.end(n),null!==n&&null!==n.getAttribute("href")){var i=n.href.indexOf("#");if(-1===i)return;var o=n.href.substr(i+1),r=t.select('a[name="'+o+'"],#'+o);if(r[0]!==void 0){if(-1===n.parentNode.className.indexOf("active")){var s=n.parentNode.parentNode,a=s.firstChild;do if(a.tagName!==void 0&&"LI"===a.tagName.toUpperCase()&&-1!==a.className.indexOf("active")){a.className=a.className.replace("active","");break}while(a=a.nextSibling);n.parentNode.className+=" active"}clearInterval(Ink.UI.SmoothScroller.interval),Ink.UI.SmoothScroller.interval=setInterval("Ink.UI.SmoothScroller.scroll("+Ink.UI.SmoothScroller.gy(r[0])+")",10)}}}};return i}); -Ink.createModule("Ink.UI.ImageQuery","1",["Ink.UI.Aux_1","Ink.Dom.Event_1","Ink.Dom.Css_1","Ink.Dom.Element_1","Ink.Dom.Selector_1","Ink.Util.Array_1"],function(e,t,n,i,o,r){"use strict";var s=function(t,n){if(!e.isDOMElement(t)&&"string"!=typeof t)throw"[ImageQuery] :: Invalid selector";if("string"==typeof t){if(this._element=o.select(t),1>this._element.length)throw"[ImageQuery] :: Selector has returned no elements";if(this._element.length>1){var r;for(r=1;this._element.length>r;r+=1)new Ink.UI.ImageQuery(this._element[r],n)}this._element=this._element[0]}else this._element=t;this._options=Ink.extendObj({queries:[],onLoad:null},i.data(this._element)),this._options=Ink.extendObj(this._options,n||{});var s;if(-1!==(s=this._element.src.lastIndexOf("?"))){var a=this._element.src.substr(s);this._filename=this._element.src.replace(a,"").split("/").pop()+a}else this._filename=this._element.src.split("/").pop();this._init()};return s.prototype={_init:function(){this._options.queries=r.sortMulti(this._options.queries,"width").reverse(),this._handlers={resize:Ink.bindEvent(this._onResize,this),load:Ink.bindEvent(this._onLoad,this)},"function"==typeof this._options.onLoad&&t.observe(this._element,"onload",this._handlers.load),t.observe(window,"resize",this._handlers.resize),this._handlers.resize.call(this)},_onResize:function(){clearTimeout(e);var e=setTimeout(Ink.bind(function(){if(!this._options.queries||this._options.queries==={})return clearTimeout(e),void 0;var t,n,i;for("number"==typeof window.innerWidth?i=window.innerWidth:document.documentElement&&(document.documentElement.clientWidth||document.documentElement.clientHeight)?i=document.documentElement.clientWidth:document.body&&(document.body.clientWidth||document.body.clientHeight)&&(i=document.body.clientWidth),t=0;this._options.queries.length>t;t+=1)if(i>=this._options.queries[t].width){n=t;break}n===void 0&&(n=this._options.queries.length-1);var o=this._options.queries[n].src||this._options.src;if("devicePixelRatio"in window&&window.devicePixelRatio>1&&"retina"in this._options&&(o=this._options.queries[n].retina||this._options.retina),this._options.queries[n].file=this._filename,"function"==typeof o&&(o=o.apply(this,[this._element,this._options.queries[n]]),"string"!=typeof o))throw'[ImageQuery] :: "src" callback does not return a string';var r;for(r in this._options.queries[n])if(this._options.queries[n].hasOwnProperty(r)){if("src"===r||"retina"===r)continue;o=o.replace("{:"+r+"}",this._options.queries[n][r])}this._element.src=o,delete this._options.queries[n].file,e=void 0},this),300)},_onLoad:function(){this._options.onLoad.call(this)}},s}); -Ink.createModule("Ink.UI.FormValidator","2",["Ink.UI.Aux_1","Ink.Dom.Element_1","Ink.Dom.Event_1","Ink.Dom.Selector_1","Ink.Dom.Css_1","Ink.Util.Array_1","Ink.Util.I18n_1","Ink.Util.Validator_1"],function(e,t,n,i,o,r,s,a){"use strict";var l={required:function(e){return e!==void 0&&!/^\s*$/.test(e)},min_length:function(e,t){return"string"==typeof e&&e.length>=parseInt(t,10)},max_length:function(e,t){return"string"==typeof e&&e.length<=parseInt(t,10)},exact_length:function(e,t){return"string"==typeof e&&e.length===parseInt(t,10)},email:function(e){return"string"==typeof e&&a.mail(e)},url:function(e,t){return t=t||!1,"string"==typeof e&&a.url(e,t)},ip:function(e,t){return"string"!=typeof e?!1:a.isIP(e,t)},phone:function(e,t){if("string"!=typeof e)return!1;var n=t?t.toUpperCase():"";return a["is"+n+"Phone"](e)},credit_card:function(e,t){return"string"!=typeof e?!1:a.isCreditCard(e,t||"default")},date:function(e,t){return"string"==typeof e&&a.isDate(t,e)},alpha:function(e,t){return a.ascii(e,{singleLineWhitespace:t})},text:function(e,t,n){return a.unicode(e,{singleLineWhitespace:t,unicodePunctuation:n})},latin:function(e,t,n){return"string"!=typeof e?!1:a.latin1(e,{latin1Punctuation:t,singleLineWhitespace:n})},alpha_numeric:function(e){return a.ascii(e,{numbers:!0})},alpha_dash:function(e){return a.ascii(e,{dash:!0,underscore:!0})},digit:function(e){return"string"==typeof e&&/^[0-9]{1}$/.test(e)},integer:function(e,t){return a.number(e,{negative:!t,decimalPlaces:0})},decimal:function(e,t,n,i){return a.number(e,{decimalSep:t||".",decimalPlaces:+n||null,maxDigits:+i})},numeric:function(e,t,n,i){return t=t||".",-1!==e.indexOf(t)?l.decimal(e,t,n,i):l.integer(e)},range:function(e,t,n,i){return e=+e,t=+t,n=+n,isNaN(e)||isNaN(t)||isNaN(n)?!1:t>e||e>n?!1:i?0===(e-t)%i:!0},color:function(e){return a.isColor(e)},matches:function(e,t){return e===this.getFormElements()[t][0].getValue()}},u=new s({en_US:{"formvalidator.required":"The {field} filling is mandatory","formvalidator.min_length":"The {field} must have a minimum size of {param1} characters","formvalidator.max_length":"The {field} must have a maximum size of {param1} characters","formvalidator.exact_length":"The {field} must have an exact size of {param1} characters","formvalidator.email":"The {field} must have a valid e-mail address","formvalidator.url":"The {field} must have a valid URL","formvalidator.ip":"The {field} does not contain a valid {param1} IP address","formvalidator.phone":"The {field} does not contain a valid {param1} phone number","formvalidator.credit_card":"The {field} does not contain a valid {param1} credit card","formvalidator.date":"The {field} should contain a date in the {param1} format","formvalidator.alpha":"The {field} should only contain letters","formvalidator.text":"The {field} should only contain alphabetic characters","formvalidator.latin":"The {field} should only contain alphabetic characters","formvalidator.alpha_numeric":"The {field} should only contain letters or numbers","formvalidator.alpha_dashes":"The {field} should only contain letters or dashes","formvalidator.digit":"The {field} should only contain a digit","formvalidator.integer":"The {field} should only contain an integer","formvalidator.decimal":"The {field} should contain a valid decimal number","formvalidator.numeric":"The {field} should contain a number","formvalidator.range":"The {field} should contain a number between {param1} and {param2}","formvalidator.color":"The {field} should contain a valid color","formvalidator.matches":"The {field} should match the field {param1}","formvalidator.validation_function_not_found":"The rule {rule} has not been defined"},pt_PT:{"formvalidator.required":"Preencher {field} é obrigatório","formvalidator.min_length":"{field} deve ter no mínimo {param1} caracteres","formvalidator.max_length":"{field} tem um tamanho máximo de {param1} caracteres","formvalidator.exact_length":"{field} devia ter exactamente {param1} caracteres","formvalidator.email":"{field} deve ser um e-mail válido","formvalidator.url":"O {field} deve ser um URL válido","formvalidator.ip":"{field} não tem um endereço IP {param1} válido","formvalidator.phone":"{field} deve ser preenchido com um número de telefone {param1} válido.","formvalidator.credit_card":"{field} não tem um cartão de crédito {param1} válido","formvalidator.date":"{field} deve conter uma data no formato {param1}","formvalidator.alpha":"O campo {field} deve conter apenas caracteres alfabéticos","formvalidator.text":"O campo {field} deve conter apenas caracteres alfabéticos","formvalidator.latin":"O campo {field} deve conter apenas caracteres alfabéticos","formvalidator.alpha_numeric":"{field} deve conter apenas letras e números","formvalidator.alpha_dashes":"{field} deve conter apenas letras e traços","formvalidator.digit":"{field} destina-se a ser preenchido com apenas um dígito","formvalidator.integer":"{field} deve conter um número inteiro","formvalidator.decimal":"{field} deve conter um número válido","formvalidator.numeric":"{field} deve conter um número válido","formvalidator.range":"{field} deve conter um número entre {param1} e {param2}","formvalidator.color":"{field} deve conter uma cor válida","formvalidator.matches":"{field} deve corresponder ao campo {param1}","formvalidator.validation_function_not_found":"[A regra {rule} não foi definida]"}},"en_US"),c=function(n,i){this._element=e.elOrSelector(n,"Invalid FormElement"),this._errors={},this._rules={},this._value=null,this._options=Ink.extendObj({label:this._getLabel()},t.data(this._element)),this._options=Ink.extendObj(this._options,i||{})};c.prototype={_getLabel:function(){var e=t.findUpwardsByClass(this._element,"control-group"),n=Ink.s("label",e);return n=n?t.textContent(n):this._element.name||this._element.id||""},_parseRules:function(e){this._rules={},e=e.split("|");var t,n,i,o,r=e.length;if(r>0)for(t=0;r>t;t++)if(n=e[t])if(-1!==(o=n.indexOf("["))){i=n.substr(o+1),i=i.split("]"),i=i[0],i=i.split(",");for(var s=0,a=i.length;a>s;s++)i[s]="true"===i[s]?!0:"false"===i[s]?!1:i[s];i.splice(0,0,this.getValue()),n=n.substr(0,o),this._rules[n]=i}else this._rules[n]=[this.getValue()]},_addError:function(e){for(var t=this._rules[e]||[],n={field:this._options.label,value:this.getValue()},i=1;t.length>i;i++)n["param"+i]=t[i];var o="formvalidator."+e;this._errors[e]=u.text(o,n),this._errors[e]===o&&(this._errors[e]="Validation message not found")},getValue:function(){switch(this._element.nodeName.toLowerCase()){case"select":return Ink.s("option:selected",this._element).value;case"textarea":return this._element.innerHTML;case"input":if(!("type"in this._element))return this._element.value;if("radio"===this._element.type&&"checkbox"===this._element.type){if(this._element.checked)return this._element.value}else if("file"!==this._element.type)return this._element.value;return;default:return this._element.innerHTML}},getErrors:function(){return this._errors},getElement:function(){return this._element},getFormElements:function(){return this._options.form._formElements},validate:function(){if(this._errors={},this._parseRules(this._options.rules),"required"in this._rules||""!==this.getValue())for(var e in this._rules)if(this._rules.hasOwnProperty(e)){if("function"!=typeof l[e])return this._addError(null),!1;if(l[e].apply(this,this._rules[e])===!1)return this._addError(e),!1}return!0}};var h=function(i,o){this._rootElement=e.elOrSelector(i),this._formElements={},this._errorMessages=[],this._markedErrorElements=[],this._options=Ink.extendObj({eventTrigger:"submit",searchFor:"input, select, textarea, .control-group",beforeValidation:void 0,onError:void 0,onSuccess:void 0},t.data(this._rootElement)),this._options=Ink.extendObj(this._options,o||{}),"string"==typeof this._options.eventTrigger&&n.observe(this._rootElement,this._options.eventTrigger,Ink.bindEvent(this.validate,this)),this._init()};return h.setRule=function(e,t,n){if(l[e]=n,u.getKey("formvalidator."+e)!==t){var i={};i["formvalidator."+e]=t;var o={};o[u.lang()]=i,u.append(o)}},h.getI18n=function(){return u},h.setI18n=function(e){u=e},h.appendI18n=function(){u.append.apply(u,[].slice.call(arguments))},h.setLanguage=function(e){u.lang(e)},h.getRules=function(){return l},h.prototype={_init:function(){},getElements:function(){this._formElements={};var e=i.select(this._options.searchFor,this._rootElement);if(e.length){var n,o;for(n=0;e.length>n;n+=1){o=e[n];var r=t.data(o);if("rules"in r){var s,a={form:this};"name"in o&&o.name?s=o.name:"id"in o&&o.id?s=o.id:(s="element_"+Math.floor(100*Math.random()),o.id=s),s in this._formElements?this._formElements[s].push(new c(o,a)):this._formElements[s]=[new c(o,a)]}}}return this._formElements},validate:function(e){n.stop(e),"function"==typeof this._options.beforeValidation&&this._options.beforeValidation(),this.getElements();var i=[];for(var s in this._formElements)if(this._formElements.hasOwnProperty(s))for(var a=0;this._formElements[s].length>a;a+=1)this._formElements[s][a].validate()||i.push(this._formElements[s][a]);return 0===i.length?("function"==typeof this._options.onSuccess&&this._options.onSuccess(),!0):("function"==typeof this._options.onError&&this._options.onError(i),r.each(this._markedErrorElements,Ink.bind(o.removeClassName,o,"validation")),r.each(this._markedErrorElements,Ink.bind(o.removeClassName,o,"error")),r.each(this._errorMessages,t.remove),this._errorMessages=[],this._markedErrorElements=[],r.each(i,Ink.bind(function(e){var n,i;o.hasClassName(e.getElement(),"control-group")?(n=e.getElement(),i=Ink.s(".control",e.getElement())):(n=t.findUpwardsByClass(e.getElement(),"control-group"),i=t.findUpwardsByClass(e.getElement(),"control")),i&&n||(i=n=e.getElement()),o.addClassName(n,"validation"),o.addClassName(n,"error"),this._markedErrorElements.push(n);var r=document.createElement("p");o.addClassName(r,"tip"),t.insertAfter(r,i);var s=e.getErrors(),a=[];for(var l in s)s.hasOwnProperty(l)&&a.push(s[l]);r.innerHTML=a.join("
    "),this._errorMessages.push(r)},this)),!1)}},h}); -Ink.createModule("Ink.UI.FormValidator","1",["Ink.Dom.Css_1","Ink.Util.Validator_1"],function(e,t){"use strict";var n={version:"1",_flagMap:{"ink-fv-required":{msg:"Required field"},"ink-fv-email":{msg:"Invalid e-mail address"},"ink-fv-url":{msg:"Invalid URL"},"ink-fv-number":{msg:"Invalid number"},"ink-fv-phone_pt":{msg:"Invalid phone number"},"ink-fv-phone_cv":{msg:"Invalid phone number"},"ink-fv-phone_mz":{msg:"Invalid phone number"},"ink-fv-phone_ao":{msg:"Invalid phone number"},"ink-fv-date":{msg:"Invalid date"},"ink-fv-confirm":{msg:"Confirmation does not match"},"ink-fv-custom":{msg:""}},elements:{},confirmElms:{},hasConfirm:{},_errorClassName:"tip",_errorValidationClassName:"validaton",_errorTypeWarningClassName:"warning",_errorTypeErrorClassName:"error",validate:function(e,t){if(this._free(),t=Ink.extendObj({onSuccess:!1,onError:!1,customFlag:!1,confirmGroup:[]},t||{}),"string"==typeof e&&(e=document.getElementById(e)),null===e)return!1;this.element=e,(this.element.id===void 0||null===this.element.id||""===this.element.id)&&(this.element.id="ink-fv_randomid_"+Math.round(99999*Math.random())),this.custom=t.customFlag,this.confirmGroup=t.confirmGroup;var n=this._validateElements();return n.length>0?(t.onError?t.onError(n):this._showError(e,n),!1):(t.onError||this._clearError(e),this._clearCache(),t.onSuccess&&t.onSuccess(),!0)},reset:function(){this._clearError(),this._clearCache()},_free:function(){this.element=null,this.custom=!1,this.confirmGroup=!1},_clearCache:function(){this.element=null,this.elements=[],this.custom=!1,this.confirmGroup=!1},_getElements:function(){this.elements[this.element.id]=[],this.confirmElms[this.element.id]=[];for(var t=this.element.elements,n=!1,i=0,r=t.length;r>i;i++)if(n=t[i],null!==n.getAttribute("type")&&"radio"===n.getAttribute("type").toLowerCase()){if(0===this.elements[this.element.id].length||n.getAttribute("type")!==this.elements[this.element.id][this.elements[this.element.id].length-1].getAttribute("type")&&n.getAttribute("name")!==this.elements[this.element.id][this.elements[this.element.id].length-1].getAttribute("name"))for(var o in this._flagMap)if(e.hasClassName(n,o)){this.elements[this.element.id].push(n);break}}else{for(var s in this._flagMap)if(e.hasClassName(n,s)&&"ink-fv-confirm"!==s){this.elements[this.element.id].push(n);break}e.hasClassName(n,"ink-fv-confirm")&&(this.confirmElms[this.element.id].push(n),this.hasConfirm[this.element.id]=!0)}},_validateElements:function(){var t;this._getElements(),this.hasConfirm[this.element.id]!==void 0&&this.hasConfirm[this.element.id]===!0&&(t=this._makeConfirmGroups());for(var n,i=[],r=!1,o=!1,s=0,a=this.elements[this.element.id].length;a>s;s++)if(n=!1,r=this.elements[this.element.id][s],!r.disabled)for(var l in this._flagMap)e.hasClassName(r,l)&&("ink-fv-custom"!==l&&"ink-fv-confirm"!==l?this._isValid(r,l)||(n?i[i.length-1].errors.push(l):(i.push({elm:r,errors:[l]}),n=!0)):"ink-fv-confirm"!==l&&(o=this._isCustomValid(r),o.length>0&&i.push({elm:r,errors:[l],custom:o})));return i=this._validateConfirmGroups(t,i)},_validateConfirmGroups:function(e,t){var n=!1;for(var i in e)e.hasOwnProperty(i)&&(n=e[i],2===n.length&&n[0].value!==n[1].value&&t.push({elm:n[1],errors:["ink-fv-confirm"]}));return t},_makeConfirmGroups:function(){var t;if(this.confirmGroup&&this.confirmGroup.length>0){t={};for(var n=!1,i=!1,r=0,o=this.confirmElms[this.element.id].length;o>r;r++){n=this.confirmElms[this.element.id][r];for(var s=0,a=this.confirmGroup.length;a>s;s++)i=this.confirmGroup[s],e.hasClassName(n,i)&&(t[i]===void 0?t[i]=[n]:t[i].push(n))}return t}return 2===this.confirmElms[this.element.id].length&&(t={"ink-fv-confirm":[this.confirmElms[this.element.id][0],this.confirmElms[this.element.id][1]]}),t},_isCustomValid:function(t){for(var n=[],i=!1,r=0,o=this.custom.length;o>r;r++)i=this.custom[r],e.hasClassName(t,i.flag)&&(i.callback(t,i.msg)||n.push({flag:i.flag,msg:i.msg}));return n},_isValid:function(n,i){switch(i){case"ink-fv-required":if("select"===n.nodeName.toLowerCase())return n.selectedIndex>0?!0:!1;if("checkbox"!==n.getAttribute("type")&&"radio"!==n.getAttribute("type")){if(""!==this._trim(n.value))return!0}else if("checkbox"===n.getAttribute("type")){if(n.checked===!0)return!0}else if("radio"===n.getAttribute("type")){var r=n.form[n.name];r.length===void 0&&(r=[r]);for(var o=!1,s=0,a=r.length;a>s;s++)r[s].checked===!0&&(o=!0);return o}break;case"ink-fv-email":if(""===this._trim(n.value))return e.hasClassName(n,"ink-fv-required")?!1:!0;if(t.mail(n.value))return!0;break;case"ink-fv-url":if(""===this._trim(n.value))return e.hasClassName(n,"ink-fv-required")?!1:!0;if(t.url(n.value))return!0;break;case"ink-fv-number":if(""===this._trim(n.value))return e.hasClassName(n,"ink-fv-required")?!1:!0;if(!isNaN(Number(n.value)))return!0;break;case"ink-fv-phone_pt":if(""===this._trim(n.value))return e.hasClassName(n,"ink-fv-required")?!1:!0;if(t.isPTPhone(n.value))return!0;break;case"ink-fv-phone_cv":if(""===this._trim(n.value))return e.hasClassName(n,"ink-fv-required")?!1:!0;if(t.isCVPhone(n.value))return!0;break;case"ink-fv-phone_ao":if(""===this._trim(n.value))return e.hasClassName(n,"ink-fv-required")?!1:!0;if(t.isAOPhone(n.value))return!0;break;case"ink-fv-phone_mz":if(""===this._trim(n.value))return e.hasClassName(n,"ink-fv-required")?!1:!0;if(t.isMZPhone(n.value))return!0;break;case"ink-fv-date":if(""===this._trim(n.value))return e.hasClassName(n,"ink-fv-required")?!1:!0;var l=Ink.getModule("Ink.Dom.Element",1),u=l.data(n),c="yyyy-mm-dd";if(e.hasClassName(n,"ink-datepicker")&&"format"in u?c=u.format:"validFormat"in u&&(c=u.validFormat),!(c in t._dateParsers)){var h=[];for(var d in t._dateParsers)t._dateParsers.hasOwnProperty(d)&&h.push(d);throw"The attribute data-valid-format must be one of the following values: "+h.join(",")}return t.isDate(c,n.value);case"ink-fv-custom":}return!1},_showError:function(t,n){this._clearError(t);for(var i=!1,r=0,o=n.length;o>r;r++)if(i=n[r].elm,"radio"!==i.getAttribute("type")){var s=document.createElement("p");e.addClassName(s,this._errorClassName),e.addClassName(s,this._errorTypeErrorClassName),s.innerHTML="ink-fv-custom"!==n[r].errors[0]?this._flagMap[n[r].errors[0]].msg:n[r].custom[0].msg,"checkbox"!==i.getAttribute("type")&&(i.nextSibling.parentNode.insertBefore(s,i.nextSibling),e.hasClassName(i.parentNode,"control")&&(e.addClassName(i.parentNode.parentNode,"validation"),"ink-fv-required"===n[r].errors[0]?e.addClassName(i.parentNode.parentNode,"error"):e.addClassName(i.parentNode.parentNode,"warning")))}else e.hasClassName(i.parentNode.parentNode,"control-group")&&(e.addClassName(i.parentNode.parentNode,"validation"),e.addClassName(i.parentNode.parentNode,"error"))},_clearError:function(t){for(var n=t.getElementsByTagName("p"),i=!1,r=n.length-1;r>=0;r--)i=n[r],e.hasClassName(i,this._errorClassName)&&(e.hasClassName(i.parentNode,"control")&&(e.removeClassName(i.parentNode.parentNode,"validation"),e.removeClassName(i.parentNode.parentNode,"error"),e.removeClassName(i.parentNode.parentNode,"warning")),e.hasClassName(i,"tip")&&e.hasClassName(i,"error")&&i.parentNode.removeChild(i));var o=t.getElementsByTagName("ul");for(r=o.length-1;r>=0;r--)i=o[r],e.hasClassName(i,"control-group")&&(e.removeClassName(i,"validation"),e.removeClassName(i,"error"))},_trim:function(e){return"string"==typeof e?e.replace(/^\s+|\s+$|\n+$/g,""):void 0}};return n}); -Ink.createModule("Ink.UI.Droppable","1",["Ink.Dom.Element_1","Ink.Dom.Event_1","Ink.Dom.Css_1","Ink.UI.Aux_1","Ink.Util.Array_1","Ink.Dom.Selector_1"],function(e,t,n,i,r,o){var s=function(e){return function(t){return n.addClassName(e,t)}},a=function(e){return function(t){return n.removeClassName(e,t)}},l={debug:!1,_droppables:[],_draggables:[],add:function(t,n){function r(e){e.style.position="inherit"}t=i.elOrSelector(t,"Droppable.add target element");var o=Ink.extendObj({hoverClass:n.hoverclass||!1,accept:!1,onHover:!1,onDrop:!1,onDropOut:!1},n||{},e.data(t));"string"==typeof o.hoverClass&&(o.hoverClass=o.hoverClass.split(/\s+/));var s,a=this,l={move:function(e,t){r(e),t.appendChild(e)},copy:function(e,t){r(e),t.appendChild(e.cloneNode)},revert:function(e){a._findDraggable(e).originalParent.appendChild(e),r(e)}};if("string"==typeof o.onHover&&(s=o.onHover,o.onHover=l[s],void 0===o.onHover))throw Error("Unknown hover event handler: "+s);if("string"==typeof o.onDrop&&(s=o.onDrop,o.onDrop=l[s],void 0===o.onDrop))throw Error("Unknown drop event handler: "+s);if("string"==typeof o.onDropOut&&(s=o.onDropOut,o.onDropOut=l[s],void 0===o.onDropOut))throw Error("Unknown dropOut event handler: "+s);var u={element:t,data:{},options:o};this._droppables.push(u),this._update(u)},_findData:function(e){for(var t=this._droppables,n=0,i=t.length;i>n;n++)if(t[n].element===e)return t[n]},_findDraggable:function(e){for(var t=this._draggables,n=0,i=t.length;i>n;n++)if(t[n].element===e)return t[n]},updateAll:function(){r.each(this._droppables,l._update)},update:function(e){this._update(this._findData(e))},_update:function(t){var n=t.data,i=t.element;n.left=e.offsetLeft(i),n.top=e.offsetTop(i),n.right=n.left+e.elementWidth(i),n.bottom=n.top+e.elementHeight(i)},remove:function(e){e=i.elOrSelector(e);for(var t=this._droppables.length,n=0;t>n;n++)if(this._droppables[n].element===e){this._droppables.splice(n,1);break}return t!==this._droppables.length},action:function(e,t,n,i){r.each(this._droppables,Ink.bind(function(l){var u=l.data,h=l.options,c=l.element;(!h.accept||o.matches(h.accept,[i]).length)&&("drag"!==t||this._findDraggable(i)||this._draggables.push({element:i,originalParent:i.parentNode}),e.x>=u.left&&e.x<=u.right&&e.y>=u.top&&e.y<=u.bottom?"drag"===t?(h.hoverClass&&r.each(h.hoverClass,s(c)),h.onHover&&h.onHover(i,c)):"drop"===t&&(h.hoverClass&&r.each(h.hoverClass,a(c)),h.onDrop&&h.onDrop(i,c,n)):"drag"===t&&h.hoverClass?r.each(h.hoverClass,a(c)):"drop"===t&&h.onDropOut&&h.onDropOut(i,c,n))},this))}};return l}); -Ink.createModule("Ink.UI.Draggable","1",["Ink.Dom.Element_1","Ink.Dom.Event_1","Ink.Dom.Css_1","Ink.Dom.Browser_1","Ink.Dom.Selector_1","Ink.UI.Aux_1"],function(e,t,n,i,o,r){function s(e,t,n){return e=Math.min(e,n),e=Math.max(e,t)}var a=0,l=1,h=function(e,t){this.init(e,t)};return h.prototype={init:function(n,o){var s=Ink.extendObj({constraint:!1,constraintElm:!1,top:!1,right:!1,bottom:!1,left:!1,handle:o.handler||!1,revert:!1,cursor:"move",zindex:o.zindex||9999,dragClass:"drag",onStart:!1,onEnd:!1,onDrag:!1,onChange:!1,droppableProxy:!1,mouseAnchor:void 0,skipChildren:!0,fps:100,debug:!1},o||{},e.data(n));this.options=s,this.element=r.elOrSelector(n),this.constraintElm=s.constraintElm&&r.elOrSelector(s.constraintElm),this.handle=!1,this.elmStartPosition=!1,this.active=!1,this.dragged=!1,this.prevCoords=!1,this.placeholder=!1,this.position=!1,this.zindex=!1,this.firstDrag=!0,s.fps&&(this.deltaMs=1e3/s.fps,this.lastRunAt=0),this.handlers={},this.handlers.start=Ink.bindEvent(this._onStart,this),this.handlers.dragFacade=Ink.bindEvent(this._onDragFacade,this),this.handlers.drag=Ink.bindEvent(this._onDrag,this),this.handlers.end=Ink.bindEvent(this._onEnd,this),this.handlers.selectStart=function(e){return t.stop(e),!1},this.handle=this.options.handle?r.elOrSelector(this.options.handle):this.element,this.handle.style.cursor=s.cursor,t.observe(this.handle,"touchstart",this.handlers.start),t.observe(this.handle,"mousedown",this.handlers.start),i.IE&&t.observe(this.element,"selectstart",this.handlers.selectStart)},destroy:function(){t.stopObserving(this.handle,"touchstart",this.handlers.start),t.stopObserving(this.handle,"mousedown",this.handlers.start),i.IE&&t.stopObserving(this.element,"selectstart",this.handlers.selectStart)},_getCoords:function(t){var n=[e.scrollWidth(),e.scrollHeight()];return{x:(t.touches?t.touches[0].clientX:t.clientX)+n[a],y:(t.touches?t.touches[0].clientY:t.clientY)+n[l]}},_cloneStyle:function(t,i){i.className=t.className,i.style.borderWidth="0",i.style.padding="0",i.style.position="absolute",i.style.width=e.elementWidth(t)+"px",i.style.height=e.elementHeight(t)+"px",i.style.left=e.elementLeft(t)+"px",i.style.top=e.elementTop(t)+"px",i.style.cssFloat=n.getStyle(t,"float"),i.style.display=n.getStyle(t,"display")},_onStart:function(i){if(!this.active&&t.isLeftClick(i)||i.button===void 0){var o=t.element(i);if(this.options.skipChildren&&o!==this.handle)return;t.stop(i),n.addClassName(this.element,this.options.dragClass),this.elmStartPosition=[e.elementLeft(this.element),e.elementTop(this.element)];var r=[parseInt(n.getStyle(this.element,"left"),10),parseInt(n.getStyle(this.element,"top"),10)],s=e.elementDimensions(this.element);this.originalPosition=[r[a]?r[a]:null,r[l]?r[l]:null],this.delta=this._getCoords(i),this.active=!0,this.position=n.getStyle(this.element,"position"),this.zindex=n.getStyle(this.element,"zIndex");var h=document.createElement("div");if(h.style.position=this.position,h.style.width=s[a]+"px",h.style.height=s[l]+"px",h.style.marginTop=n.getStyle(this.element,"margin-top"),h.style.marginBottom=n.getStyle(this.element,"margin-bottom"),h.style.marginLeft=n.getStyle(this.element,"margin-left"),h.style.marginRight=n.getStyle(this.element,"margin-right"),h.style.borderWidth="0",h.style.padding="0",h.style.cssFloat=n.getStyle(this.element,"float"),h.style.display=n.getStyle(this.element,"display"),h.style.visibility="hidden",this.delta2=[this.delta.x-this.elmStartPosition[a],this.delta.y-this.elmStartPosition[l]],this.options.mouseAnchor){var u=this.options.mouseAnchor.split(" "),c=[s[a],s[l]];"left"===u[0]?c[a]=0:"center"===u[0]&&(c[a]=parseInt(c[a]/2,10)),"top"===u[1]?c[l]=0:"center"===u[1]&&(c[l]=parseInt(c[l]/2,10)),this.applyDelta=[this.delta2[a]-c[a],this.delta2[l]-c[l]]}var d=this.options.fps?"dragFacade":"drag";if(this.placeholder=h,this.options.onStart&&this.options.onStart(this.element,i),this.options.droppableProxy){this.proxy=document.createElement("div"),s=[window.innerWidth||document.documentElement.clientWidth||document.body.clientWidth,window.innerHeight||document.documentElement.clientHeight||document.body.clientHeight];var f=this.proxy.style;f.width=s[a]+"px",f.height=s[l]+"px",f.position="fixed",f.left="0",f.top="0",f.zIndex=this.options.zindex+1,f.backgroundColor="#FF0000",n.setOpacity(this.proxy,0);for(var p=document.body.firstChild;p&&1!==p.nodeType;)p=p.nextSibling;document.body.insertBefore(this.proxy,p),t.observe(this.proxy,"mousemove",this.handlers[d]),t.observe(this.proxy,"touchmove",this.handlers[d])}else t.observe(document,"mousemove",this.handlers[d]);return this.element.style.position="absolute",this.element.style.zIndex=this.options.zindex,this.element.parentNode.insertBefore(this.placeholder,this.element),this._onDrag(i),t.observe(document,"mouseup",this.handlers.end),t.observe(document,"touchend",this.handlers.end),!1}},_onDragFacade:function(e){var t=+new Date;(!this.lastRunAt||t>this.lastRunAt+this.deltaMs)&&(this.lastRunAt=t,this._onDrag(e))},_onDrag:function(n){if(this.active){t.stop(n),this.dragged=!0;var i=this._getCoords(n),o=i.x,r=i.y,h=this.options,u=!1,c=!1;if(this.prevCoords&&o!==this.prevCoords.x||r!==this.prevCoords.y){h.onDrag&&h.onDrag(this.element,n),this.prevCoords=i,u=this.elmStartPosition[a]+o-this.delta.x,c=this.elmStartPosition[l]+r-this.delta.y;var d=e.elementDimensions(this.element);if(this.constraintElm){var f=e.offset(this.constraintElm),p=e.elementDimensions(this.constraintElm),m=f[l]+(h.top||0),g=f[l]+p[l]-(h.bottom||0),v=f[a]+(h.left||0),_=f[a]+p[a]-(h.right||0);c=s(c,m,g-d[l]),u=s(u,v,_-d[a])}else if(h.constraint){var y=h.right===!1?e.pageWidth()-d[a]:h.right,b=h.left===!1?0:h.left,k=h.top===!1?0:h.top,w=h.bottom===!1?e.pageHeight()-d[l]:h.bottom;("horizontal"===h.constraint||"both"===h.constraint)&&(u=s(u,b,y)),("vertical"===h.constraint||"both"===h.constraint)&&(c=s(c,k,w))}var I=Ink.getModule("Ink.UI.Droppable_1");if(this.firstDrag&&(I&&I.updateAll(),this.firstDrag=!1),u&&(this.element.style.left=u+"px"),c&&(this.element.style.top=c+"px"),I){var E=this.options.mouseAnchor?{x:o-this.applyDelta[a],y:r-this.applyDelta[l]}:i;I.action(E,"drag",n,this.element)}h.onChange&&h.onChange(this)}}},_onEnd:function(i){if(t.stopObserving(document,"mousemove",this.handlers.drag),t.stopObserving(document,"touchmove",this.handlers.drag),this.options.fps&&this._onDrag(i),n.removeClassName(this.element,this.options.dragClass),this.active&&this.dragged){this.options.droppableProxy&&document.body.removeChild(this.proxy),this.pt&&(e.remove(this.pt),this.pt=void 0),this.placeholder&&e.remove(this.placeholder),this.options.revert&&(this.element.style.position=this.position,this.element.style.zIndex=null!==this.zindex?this.zindex:"auto",this.element.style.left=this.originalPosition[a]?this.originalPosition[a]+"px":"",this.element.style.top=this.originalPosition[l]?this.originalPosition[l]+"px":""),this.options.onEnd&&this.options.onEnd(this.element,i);var o=Ink.getModule("Ink.UI.Droppable_1");o&&o.action(this._getCoords(i),"drop",i,this.element),this.position=!1,this.zindex=!1,this.firstDrag=!0}this.active=!1,this.dragged=!1}},h}); -Ink.createModule("Ink.UI.DatePicker","1",["Ink.UI.Aux_1","Ink.Dom.Event_1","Ink.Dom.Css_1","Ink.Dom.Element_1","Ink.Dom.Selector_1","Ink.Util.Array_1","Ink.Util.Date_1","Ink.Dom.Browser_1"],function(e,t,n,i,o,r,s){"use strict";var a=function(t,n){t&&(this._dataField=e.elOrSelector(t,"1st argument")),this._options=Ink.extendObj({instance:"scdp_"+Math.round(99999*Math.random()),format:"yyyy-mm-dd",cssClass:"sapo_component_datepicker",position:"right",onFocus:!0,onYearSelected:void 0,onMonthSelected:void 0,validDayFn:void 0,startDate:!1,onSetDate:!1,displayInSelect:!1,showClose:!0,showClean:!0,yearRange:!1,dateRange:!1,startWeekDay:1,closeText:"Close",cleanText:"Clear",prevLinkText:"«",nextLinkText:"»",ofText:" de ",month:{1:"January",2:"February",3:"March",4:"April",5:"May",6:"June",7:"July",8:"August",9:"September",10:"October",11:"November",12:"December"},wDay:{0:"Sunday",1:"Monday",2:"Tuesday",3:"Wednesday",4:"Thursday",5:"Friday",6:"Saturday"}},i.data(this._dataField)||{}),this._options=Ink.extendObj(this._options,n||{}),this._options.format=this._dateParsers[this._options.format]||this._options.format,this._hoverPicker=!1,this._picker=null,this._options.pickerField&&(this._picker=e.elOrSelector(this._options.pickerField,"pickerField")),this._today=new Date,this._day=this._today.getDate(),this._month=this._today.getMonth(),this._year=this._today.getFullYear(),this._setMinMax(this._options.dateRange||this._options.yearRange),this._data=new Date(Date.UTC.apply(this,this._checkDateRange(this._year,this._month,this._day))),this._options.startDate&&"string"==typeof this._options.startDate&&/\d\d\d\d\-\d\d\-\d\d/.test(this._options.startDate)&&this.setDate(this._options.startDate),this._init(),this._render(),this._options.startDate||this._dataField&&"string"==typeof this._dataField.value&&this._dataField.value&&this.setDate(this._dataField.value),e.registerInstance(this,this._containerObject,"datePicker")};return a.prototype={version:"0.1",_init:function(){Ink.extendObj(this._options,this._lang||{})},_render:function(){this._containerObject=document.createElement("div"),this._containerObject.id=this._options.instance,this._containerObject.className="sapo_component_datepicker";var n=document.getElementsByTagName("body")[0];if(this._options.showClose||this._options.showClean){if(this._superTopBar=document.createElement("div"),this._superTopBar.className="sapo_cal_top_options",this._options.showClean){var o=document.createElement("a");o.className="clean",o.innerHTML=this._options.cleanText,this._superTopBar.appendChild(o)}if(this._options.showClose){var r=document.createElement("a");r.className="close",r.innerHTML=this._options.closeText,this._superTopBar.appendChild(r)}this._containerObject.appendChild(this._superTopBar)}var s=document.createElement("div");s.className="sapo_cal_top",this._monthDescContainer=document.createElement("div"),this._monthDescContainer.className="sapo_cal_month_desc",this._monthPrev=document.createElement("div"),this._monthPrev.className="sapo_cal_prev",this._monthPrev.innerHTML=''+this._options.prevLinkText+"",this._monthNext=document.createElement("div"),this._monthNext.className="sapo_cal_next",this._monthNext.innerHTML=''+this._options.nextLinkText+"",s.appendChild(this._monthPrev),s.appendChild(this._monthDescContainer),s.appendChild(this._monthNext),this._monthContainer=document.createElement("div"),this._monthContainer.className="sapo_cal_month",this._containerObject.appendChild(s),this._containerObject.appendChild(this._monthContainer),this._monthSelector=document.createElement("ul"),this._monthSelector.className="sapo_cal_month_selector";for(var a,l,h=1;12>=h;h++)0===(h-1)%4&&(a=document.createElement("ul")),l=document.createElement("li"),l.innerHTML=''+this._options.month[h].substring(0,3)+"",a.appendChild(l),0===h%4&&this._monthSelector.appendChild(a);if(this._containerObject.appendChild(this._monthSelector),this._yearSelector=document.createElement("ul"),this._yearSelector.className="sapo_cal_year_selector",this._containerObject.appendChild(this._yearSelector),(!this._options.onFocus||this._options.displayInSelect)&&(this._options.pickerField?this._picker=e.elOrSelector(this._options.pickerField,"pickerField"):(this._picker=document.createElement("a"),this._picker.href="#open_cal",this._picker.innerHTML="open",this._picker.style.position="absolute",this._picker.style.top=i.elementTop(this._dataField),this._picker.style.left=i.elementLeft(this._dataField)+(i.elementWidth(this._dataField)||0)+5+"px",this._dataField.parentNode.appendChild(this._picker),this._picker.className="sapo_cal_date_picker")),this._options.displayInSelect){if(!(this._options.dayField&&this._options.monthField&&this._options.yearField||this._options.pickerField))throw"To use display in select you *MUST* to set dayField, monthField, yearField and pickerField!";this._options.dayField=e.elOrSelector(this._options.dayField,"dayField"),this._options.monthField=e.elOrSelector(this._options.monthField,"monthField"),this._options.yearField=e.elOrSelector(this._options.yearField,"yearField")}n.insertBefore(this._containerObject,n.childNodes[0]),this._picker?t.observe(this._picker,"click",Ink.bindEvent(function(e){t.stop(e),this._containerObject=i.clonePosition(this._containerObject,this._picker),this._updateDate(),this._showMonth(),this._containerObject.style.display="block"},this)):t.observe(this._dataField,"focus",Ink.bindEvent(function(){this._containerObject=i.clonePosition(this._containerObject,this._dataField),"bottom"===this._options.position?(this._containerObject.style.top=i.elementHeight(this._dataField)+i.offsetTop(this._dataField)+"px",this._containerObject.style.left=i.offset(this._dataField)[0]+"px"):(this._containerObject.style.top=i.offset(this._dataField)[1]+"px",this._containerObject.style.left=i.elementWidth(this._dataField)+i.offset(this._dataField)[0]+"px"),this._updateDate(),this._showMonth(),this._containerObject.style.display="block"},this)),this._options.displayInSelect?(t.observe(this._options.dayField,"change",Ink.bindEvent(function(){var e=this._options.yearField[this._options.yearField.selectedIndex].value;""!==e&&0!==e&&(this._updateDate(),this._showDefaultView())},this)),t.observe(this._options.monthField,"change",Ink.bindEvent(function(){var e=this._options.yearField[this._options.yearField.selectedIndex].value;""!==e&&0!==e&&(this._updateDate(),this._showDefaultView())},this)),t.observe(this._options.yearField,"change",Ink.bindEvent(function(){this._updateDate(),this._showDefaultView()},this))):(t.observe(this._dataField,"change",Ink.bindEvent(function(){this._updateDate(),this._showDefaultView(),this.setDate(),this._hoverPicker||(this._containerObject.style.display="none")},this)),t.observe(this._dataField,"blur",Ink.bindEvent(function(){this._hoverPicker||(this._containerObject.style.display="none")},this))),t.observe(document,"click",Ink.bindEvent(function(e){void 0===e.target&&(e.target=e.srcElement),i.descendantOf(this._containerObject,e.target)||e.target===this._dataField||(this._picker?e.target===this._picker||this._options.displayInSelect&&(e.target===this._options.dayField||e.target===this._options.monthField||e.target===this._options.yearField)||this._options.dayField&&(i.descendantOf(this._options.dayField,e.target)||i.descendantOf(this._options.monthField,e.target)||i.descendantOf(this._options.yearField,e.target))||(this._containerObject.style.display="none"):this._containerObject.style.display="none")},this)),this._showMonth(),this._monthChanger=document.createElement("a"),this._monthChanger.href="#monthchanger",this._monthChanger.className="sapo_cal_link_month",this._monthChanger.innerHTML=this._options.month[this._month+1],this._deText=document.createElement("span"),this._deText.innerHTML=this._options._deText,this._yearChanger=document.createElement("a"),this._yearChanger.href="#yearchanger",this._yearChanger.className="sapo_cal_link_year",this._yearChanger.innerHTML=this._year,this._monthDescContainer.innerHTML="",this._monthDescContainer.appendChild(this._monthChanger),this._monthDescContainer.appendChild(this._deText),this._monthDescContainer.appendChild(this._yearChanger),t.observe(this._containerObject,"mouseover",Ink.bindEvent(function(e){t.stop(e),this._hoverPicker=!0},this)),t.observe(this._containerObject,"mouseout",Ink.bindEvent(function(e){t.stop(e),this._hoverPicker=!1},this)),t.observe(this._containerObject,"click",Ink.bindEvent(function(e){e.target===void 0&&(e.target=e.srcElement);var n=e.target.className,i=-1!==n.indexOf("sapo_cal_off");if(t.stop(e),0!==n.indexOf("sapo_cal_")||i)if(0!==n.indexOf("sapo_calmonth_")||i)if(0!==n.indexOf("sapo_calyear_")||i)0!==n.indexOf("change_month_")||i?0!==n.indexOf("change_year_")||i?"clean"===n?this._options.displayInSelect?(this._options.yearField.selectedIndex=0,this._options.monthField.selectedIndex=0,this._options.dayField.selectedIndex=0):this._dataField.value="":"close"===n&&(this._containerObject.style.display="none"):"change_year_next"===n?this._showYearSelector(1):"change_year_prev"===n&&this._showYearSelector(-1):"change_month_next"===n?this._updateCal(1):"change_month_prev"===n&&this._updateCal(-1);else{var o=n.substr(13,4);Number(o)&&(this._year=o,"function"==typeof this._options.onYearSelected&&this._options.onYearSelected(this,{year:this._year}),this._monthPrev.childNodes[0].className="action_inactive",this._monthNext.childNodes[0].className="action_inactive",this._yearSelector.style.display="none",this._setActiveMonth(),this._monthSelector.style.display="block")}else{var r=n.substr(14,2);Number(r)&&(this._month=r-1,this._monthSelector.style.display="none",this._monthPrev.childNodes[0].className="change_month_prev",this._monthNext.childNodes[0].className="change_month_next",this._yearthis._yearMax||this._year===this._yearMax&&this._month>=this._monthMax)&&(this._monthNext.childNodes[0].className="action_inactive"),this._updateCal(),this._monthContainer.style.display="block")}else{var s=n.substr(9,2);Number(s)?(this.setDate(this._year+"-"+(this._month+1)+"-"+s),this._containerObject.style.display="none"):"sapo_cal_link_month"===n?(this._monthContainer.style.display="none",this._yearSelector.style.display="none",this._monthPrev.childNodes[0].className="action_inactive",this._monthNext.childNodes[0].className="action_inactive",this._setActiveMonth(),this._monthSelector.style.display="block"):"sapo_cal_link_year"===n&&(this._monthPrev.childNodes[0].className="action_inactive",this._monthNext.childNodes[0].className="action_inactive",this._monthSelector.style.display="none",this._monthContainer.style.display="none",this._showYearSelector(),this._yearSelector.style.display="block")}this._updateDescription()},this))},_setMinMax:function(e){var t;if(e){var n=e.split(":"),i=/^(\d{4})((\-)(\d{1,2})((\-)(\d{1,2}))?)?$/;if(n[0]&&("NOW"===n[0]?(this._yearMin=this._today.getFullYear(),this._monthMin=this._today.getMonth()+1,this._dayMin=this._today.getDate()):i.test(n[0])?(t=n[0].split("-"),this._yearMin=Math.floor(t[0]),this._monthMin=Math.floor(t[1])||1,this._dayMin=Math.floor(t[2])||1,this._monthMin>1&&this._monthMin>12&&(this._monthMin=1,this._dayMin=1),this._dayMin>1&&this._dayMin>this._daysInMonth(this._yearMin,this._monthMin)&&(this._dayMin=1)):(this._yearMin=Number.MIN_VALUE,this._monthMin=1,this._dayMin=1)),n[1])if("NOW"===n[1])this._yearMax=this._today.getFullYear(),this._monthMax=this._today.getMonth()+1,this._dayMax=this._today.getDate();else if(i.test(n[1])){t=n[1].split("-"),this._yearMax=Math.floor(t[0]),this._monthMax=Math.floor(t[1])||12,this._dayMax=Math.floor(t[2])||this._daysInMonth(this._yearMax,this._monthMax),this._monthMax>1&&this._monthMax>12&&(this._monthMax=12,this._dayMax=31);var o=this._daysInMonth(this._yearMax,this._monthMax);this._dayMax>1&&this._dayMax>o&&(this._dayMax=o)}else this._yearMax=Number.MAX_VALUE,this._monthMax=12,this._dayMax=31;this._yearMax>=this._yearMin&&(this._monthMax>this._monthMin||this._monthMax===this._monthMin&&this._dayMax>=this._dayMin)||(this._yearMin=Number.MIN_VALUE,this._monthMin=1,this._dayMin=1,this._yearMax=Number.MAX_VALUE,this._monthMax=12,this._dayMaXx=31)}else this._yearMin=Number.MIN_VALUE,this._monthMin=1,this._dayMin=1,this._yearMax=Number.MAX_VALUE,this._monthMax=12,this._dayMax=31},_checkDateRange:function(e,t,n){return this._isValidDate(e,t+1,n)||(e=this._today.getFullYear(),t=this._today.getMonth(),n=this._today.getDate()),e>this._yearMax?(e=this._yearMax,t=this._monthMax-1,n=this._dayMax):this._yearMin>e&&(e=this._yearMin,t=this._monthMin-1,n=this._dayMin),e===this._yearMax&&t+1>this._monthMax?(t=this._monthMax-1,n=this._dayMax):e===this._yearMin&&this._monthMin>t+1&&(t=this._monthMin-1,n=this._dayMin),e===this._yearMax&&t+1===this._monthMax&&n>this._dayMax?n=this._dayMax:e===this._yearMin&&t+1===this._monthMin&&this._dayMin>n?n=this._dayMin:n>this._daysInMonth(e,t+1)&&(n=this._daysInMonth(e,t+1)),[e,t,n]},_showDefaultView:function(){this._yearSelector.style.display="none",this._monthSelector.style.display="none",this._monthPrev.childNodes[0].className="change_month_prev",this._monthNext.childNodes[0].className="change_month_next",this._yearthis._yearMax||this._year===this._yearMax&&this._month+1>=this._monthMax)&&(this._monthNext.childNodes[0].className="action_inactive"),this._monthContainer.style.display="block"},_updateDate:function(){var e;this._options.displayInSelect?(e=[],this._isValidDate(e[0]=this._options.yearField[this._options.yearField.selectedIndex].value,e[1]=this._options.monthField[this._options.monthField.selectedIndex].value,e[2]=this._options.dayField[this._options.dayField.selectedIndex].value)?(e=this._checkDateRange(e[0],e[1]-1,e[2]),this._year=e[0],this._month=e[1],this._day=e[2]):(e=this._checkDateRange(e[0],e[1]-1,1),this._isValidDate(e[0],e[1]+1,e[2])&&(this._year=e[0],this._month=e[1],this._day=this._daysInMonth(e[0],e[1]),this.setDate()))):""!==this._dataField.value&&(this._isDate(this._options.format,this._dataField.value)?(e=this._getDataArrayParsed(this._dataField.value),e=this._checkDateRange(e[0],e[1]-1,e[2]),this._year=e[0],this._month=e[1],this._day=e[2]):(this._dataField.value="",this._year=this._data.getFullYear(),this._month=this._data.getMonth(),this._day=this._data.getDate()),this._data.setFullYear(this._year,this._month,this._day),this._dataField.value=this._writeDateInFormat()),this._updateDescription(),this._showMonth()},_updateDescription:function(){this._monthChanger.innerHTML=this._options.month[this._month+1],this._deText.innerHTML=this._options.ofText,this._yearChanger.innerHTML=this._year},_showYearSelector:function(){if(arguments.length){var e=+this._year+10*arguments[0];if(e-=e%10,e>this._yearMax||this._yearMin>e+9)return;this._year=+this._year+10*arguments[0]}for(var t="
  • ",n=this._year-this._year%10,i=0;11>=i;i++)0===i%4&&(t+="");t+="
  • ",this._yearSelector.innerHTML=t},_getDataArrayParsed:function(e){var t=[],n=s.set(this._options.format,e);return n&&(t=[n.getFullYear(),n.getMonth()+1,n.getDate()]),t},_isValidDate:function(e,t,n){var i=/^\d{4}$/,o=/^\d{1,2}$/;return i.test(e)&&o.test(t)&&o.test(n)&&t>=1&&12>=t&&n>=1&&this._daysInMonth(e,t)>=n},_isDate:function(e,t){try{if(e===void 0)return!1;var n=s.set(e,t);if(n&&this._isValidDate(n.getFullYear(),n.getMonth()+1,n.getDate()))return!0}catch(i){}return!1},_writeDateInFormat:function(){return s.get(this._options.format,this._data)},setDate:function(e){if("string"==typeof e&&/\d{4}-\d{1,2}-\d{1,2}/.test(e)){var t=e.split("-");this._year=t[0],this._month=t[1]-1,this._day=t[2]}this._setDate()},_setDate:function(e){e!==void 0&&e.className&&0===e.className.indexOf("sapo_cal_")&&(this._day=e.className.substr(9,2)),this._data.setFullYear.apply(this._data,this._checkDateRange(this._year,this._month,this._day)),this._options.displayInSelect?(this._options.dayField.value=this._data.getDate(),this._options.monthField.value=this._data.getMonth()+1,this._options.yearField.value=this._data.getFullYear()):this._dataField.value=this._writeDateInFormat(),this._options.onSetDate&&this._options.onSetDate(this,{date:this._data})},_updateCal:function(e){"function"==typeof this._options.onMonthSelected&&this._options.onMonthSelected(this,{year:this._year,month:this._month}),this._updateMonth(e),this._showMonth()},_daysInMonth:function(e,t){var n=31;switch(t){case 2:n=0===e%400||0===e%4&&0!==e%100?29:28;break;case 4:case 6:case 9:case 11:n=30}return n},_updateMonth:function(e){e===void 0&&(e="0");var t=this._month+1,n=this._year;switch(e){case-1:if(1===t){if(n===this._yearMin)return;t=12,n--}else t--;this._year=n,this._month=t-1;break;case 1:if(12===t){if(n===this._yearMax)return;t=1,n++}else t++;this._year=n,this._month=t-1;break;default:}},_dateParsers:{"yyyy-mm-dd":"Y-m-d","yyyy/mm/dd":"Y/m/d","yy-mm-dd":"y-m-d","yy/mm/dd":"y/m/d","dd-mm-yyyy":"d-m-Y","dd/mm/yyyy":"d/m/Y","dd-mm-yy":"d-m-y","dd/mm/yy":"d/m/y","mm/dd/yyyy":"m/d/Y","mm-dd-yyyy":"m-d-Y"},_showMonth:function(){var e,t,n=this._month+1,i=this._year,o=this._daysInMonth(i,n),r=new Date(i,n-1,1).getDay(),s=this._options.startWeekDay||0;this._monthPrev.childNodes[0].className="change_month_prev",this._monthNext.childNodes[0].className="change_month_next",this._yearMin>i||i===this._yearMin&&this._monthMin>=n?this._monthPrev.childNodes[0].className="action_inactive":(i>this._yearMax||i===this._yearMax&&n>=this._monthMax)&&(this._monthNext.childNodes[0].className="action_inactive"),s&&Number(s)&&(s>r?r=7+s-r:r+=s);var a="";for(a+='
      ',e=0;7>e;e++)a+="
    • "+this._options.wDay[e+(s+e>6?s-7:s)].substring(0,1)+"
    • ";a+="
    ";var l=0;if(a+="
      ",r)for(t=s;r-s>t;t++)l||(a+="
        "),a+='
      •  
      • ',l++;for(e=1;o>=e;e++){7===l&&(l=0,a+="
          ");var h="sapo_cal_"+(2===(e+"").length?e:"0"+e);h+=i===this._yearMin&&n===this._monthMin&&this._dayMin>e||i===this._yearMax&&n===this._monthMax&&e>this._dayMax||i===this._yearMin&&this._monthMin>n||i===this._yearMax&&n>this._monthMax||this._yearMin>i||i>this._yearMax||this._options.validDayFn&&!this._options.validDayFn.call(this,new Date(i,n-1,e))?" sapo_cal_off":this._data.getFullYear()===i&&this._data.getMonth()===n-1&&e===this._day?" sapo_cal_on":"",a+='
        • '+e+"
        • ",l++,7===l&&(a+="
        ")}if(7!==l){for(e=l;7>e;e++)a+='
      •  
      • ';a+="
      "}a+="
    ",this._monthContainer.innerHTML=a},_setActiveMonth:function(e){e===void 0&&(e=this._monthSelector);var t=e.childNodes.length;if(e.className&&e.className.match(/sapo_calmonth_/)){var i=this._year,o=e.className.substr(14,2);i===this._data.getFullYear()&&o===this._data.getMonth()+1?(n.addClassName(e,"sapo_cal_on"),n.removeClassName(e,"sapo_cal_off")):(n.removeClassName(e,"sapo_cal_on"),i===this._yearMin&&this._monthMin>o||i===this._yearMax&&o>this._monthMax||this._yearMin>i||i>this._yearMax?n.addClassName(e,"sapo_cal_off"):n.removeClassName(e,"sapo_cal_off"))}else if(0!==t)for(var r=0;t>r;r++)this._setActiveMonth(e.childNodes[r])},lang:function(e){this._lang=e},showMonth:function(){this._showMonth()},isMonthRendered:function(){var e=o.select(".sapo_cal_header",this._containerObject)[0];return"none"!==n.getStyle(e.parentNode,"display")&&"none"!==n.getStyle(e.parentNode.parentNode,"display")}},a}); -Ink.createModule("Ink.UI.Close","1",["Ink.Dom.Event_1","Ink.Dom.Element_1"],function(e,t){"use strict";var n=function(){e.observe(document.body,"click",function(n){var i=e.element(n);if(i=t.findUpwardsByClass(i,"ink-close")||t.findUpwardsByClass(i,"ink-dismiss")){var o=i;o=t.findUpwardsByClass(i,"ink-alert")||t.findUpwardsByClass(i,"ink-alert-block"),o&&(e.stop(n),t.remove(o))}})};return n}); -Ink.createModule("Ink.UI.Carousel","1",["Ink.UI.Aux_1","Ink.Dom.Event_1","Ink.Dom.Css_1","Ink.Dom.Element_1","Ink.UI.Pagination_1","Ink.Dom.Browser_1","Ink.Dom.Selector_1"],function(e,t,n,i,o,s){"use strict";var r=function(n,s){this._handlers={paginationChange:Ink.bind(this._onPaginationChange,this),windowResize:Ink.bind(this.refit,this)},t.observe(window,"resize",this._handlers.windowResize),this._element=e.elOrSelector(n,"1st argument"),this._options=Ink.extendObj({axis:"x",hideLast:!1,center:!1,keyboardSupport:!1,pagination:null,onChange:null},s||{},i.data(this._element)),this._isY="y"===this._options.axis;var r=this._element,a=Ink.s("ul.stage",r);if(this._ulEl=a,i.removeTextNodeChildren(a),this._options.hideLast){var l=document.createElement("div");l.className="hider",this._element.appendChild(l),l.style.position="absolute",l.style[this._isY?"left":"top"]="0",l.style[this._isY?"right":"bottom"]="0",l.style[this._isY?"bottom":"right"]="0",this._hiderEl=l}this.refit(),this._isY&&(this._ulEl.style.whiteSpace="normal"),this._options.pagination&&(e.isDOMElement(this._options.pagination)||"string"==typeof this._options.pagination?this._pagination=new o(this._options.pagination,{size:this._numPages,onChange:this._handlers.paginationChange}):(this._pagination=this._options.pagination,this._pagination._options.onChange=this._handlers.paginationChange,this._pagination.setSize(this._numPages),this._pagination.setCurrent(0)))};return r.prototype={refit:function(){this._liEls=Ink.ss("li.slide",this._ulEl);var e=this._liEls.length;this._ctnLength=this._size(this._element),this._elLength=this._size(this._liEls[0]),this._itemsPerPage=Math.floor(this._ctnLength/this._elLength),this._numPages=Math.ceil(e/this._itemsPerPage),this._deltaLength=this._itemsPerPage*this._elLength,this._isY?(this._element.style.width=this._liEls[0].offsetWidth+"px",this._ulEl.style.width=this._liEls[0].offsetWidth+"px"):this._ulEl.style.height=this._liEls[0].offsetHeight+"px",this._center(),this._updateHider(),this._IE7(),this._pagination&&(this._pagination.setSize(this._numPages),this._pagination.setCurrent(0))},_size:function(e){var t=i.outerDimensions(e);return this._isY?t[1]:t[0]},_center:function(){if(this._options.center){var e,t=Math.floor((this._ctnLength-this._elLength*this._itemsPerPage)/2);e=this._isY?[t,"px 0"]:["0 ",t,"px"],this._ulEl.style.padding=e.join("")}},_updateHider:function(){if(this._hiderEl){var e=Math.floor(this._ctnLength-this._elLength*this._itemsPerPage);this._options.center&&(e/=2),this._hiderEl.style[this._isY?"height":"width"]=e+"px"}},_IE7:function(){if(s.IE&&"7"==""+s.version.split(".")[0]){this._numPages;for(var e=Ink.ss("li.slide",this._ulEl),t=function(t,i){e[n].style[t]=i},n=0,i=e.length;i>n;n++)t("position","absolute"),t(this._isY?"top":"left",n*this._elLength+"px")}},_onPaginationChange:function(e){var t=e.getCurrent();this._ulEl.style["y"===this._options.axis?"top":"left"]=["-",t*this._deltaLength,"px"].join(""),this._options.onChange&&this._options.onChange.call(this,t)}},r}); -Ink.createModule("Ink.UI.Modal","1",["Ink.UI.Aux_1","Ink.Dom.Event_1","Ink.Dom.Css_1","Ink.Dom.Element_1","Ink.Dom.Selector_1","Ink.Util.Array_1"],function(e,t,n,i,o,s){"use strict";var r=function(e,r){if("string"!=typeof e&&"object"!=typeof e&&r.markup===void 0)throw"Invalid Modal selector";if("string"==typeof e){if(""!==e){if(this._element=o.select(e),0===this._element.length)throw"The Modal selector has not returned any elements";this._element=this._element[0]}}else e&&(this._element=e);if(this._options={width:void 0,height:void 0,shadeClass:void 0,modalClass:void 0,trigger:void 0,triggerEvent:"click",autoDisplay:!0,markup:void 0,onShow:void 0,onDismiss:void 0,closeOnClick:!1,responsive:!0,disableScroll:!0},this._handlers={click:Ink.bindEvent(this._onClick,this),keyDown:Ink.bindEvent(this._onKeyDown,this),resize:Ink.bindEvent(this._onResize,this)},this._wasDismissed=!1,this._markupMode=this._element?n.hasClassName(this._element,"ink-modal"):!1,this._markupMode){if(this._modalDiv=this._element,this._modalDivStyle=this._modalDiv.style,this._modalShadow=this._modalDiv.parentNode,this._modalShadowStyle=this._modalShadow.style,this._contentContainer=o.select(".modal-body",this._modalDiv),!this._contentContainer.length)throw'Missing div with class "modal-body"';this._contentContainer=this._contentContainer[0],this._options.markup=this._contentContainer.innerHTML,this._options=Ink.extendObj(this._options,i.data(this._element))}else this._modalShadow=document.createElement("div"),this._modalShadowStyle=this._modalShadow.style,this._modalDiv=document.createElement("div"),this._modalDivStyle=this._modalDiv.style,this._element&&(this._options.markup=this._element.innerHTML),n.addClassName(this._modalShadow,"ink-shade"),n.addClassName(this._modalDiv,"ink-modal"),n.addClassName(this._modalDiv,"ink-space"),this._modalShadow.appendChild(this._modalDiv),document.body.appendChild(this._modalShadow);if(this._options=Ink.extendObj(this._options,r||{}),this._markupMode||this.setContentMarkup(this._options.markup),"string"==typeof this._options.shadeClass&&s.each(this._options.shadeClass.split(" "),Ink.bind(function(e){n.addClassName(this._modalShadow,e.trim())},this)),"string"==typeof this._options.modalClass&&s.each(this._options.modalClass.split(" "),Ink.bind(function(e){n.addClassName(this._modalDiv,e.trim())},this)),"trigger"in this._options&&this._options.trigger!==void 0){var a,l;if("string"==typeof this._options.trigger&&(a=o.select(this._options.trigger),a.length>0))for(l=0;a.length>l;l++)t.observe(a[l],this._options.triggerEvent,Ink.bindEvent(this.open,this))}else this._options.autoDisplay&&this.open()};return r.prototype={_reposition:function(){this._modalDivStyle.top=this._modalDivStyle.left="50%",this._modalDivStyle.marginTop="-"+~~(i.elementHeight(this._modalDiv)/2)+"px",this._modalDivStyle.marginLeft="-"+~~(i.elementWidth(this._modalDiv)/2)+"px"},_onResize:function(e){"boolean"==typeof e?this._timeoutResizeFunction.call(this):this._resizeTimeout||"object"!=typeof e||(this._resizeTimeout=setTimeout(Ink.bind(this._timeoutResizeFunction,this),250))},_timeoutResizeFunction:function(){var e="CSS1Compat"===document.compatMode?document.documentElement:document.body,t=parseInt(e.clientHeight,10),n=parseInt(e.clientWidth,10);this._modalDivStyle.width=n>this.originalStatus.width?this._modalDivStyle.maxWidth:~~(.9*n)+"px",this._modalDivStyle.height=t>this.originalStatus.height&&parseInt(this._modalDivStyle.maxHeight,10)>=i.elementHeight(this._modalDiv)?this._modalDivStyle.maxHeight:~~(.9*t)+"px",this._resizeContainer(),this._reposition(),this._resizeTimeout=void 0},_onClick:function(e){var s=t.element(e);if(n.hasClassName(s,"ink-close")||n.hasClassName(s,"ink-dismiss")||i.findUpwardsByClass(s,"ink-close")||i.findUpwardsByClass(s,"ink-dismiss")||this._options.closeOnClick&&(!i.descendantOf(this._shadeElement,s)||s===this._shadeElement)){for(var r=o.select(".ink-alert",this._shadeElement),a=r.length,l=0;a>l;l++)if(i.descendantOf(r[l],s))return;t.stop(e),this.dismiss()}},_onKeyDown:function(e){27!==e.keyCode||this._wasDismissed||this.dismiss()},_resizeContainer:function(){this._contentElement.style.overflow=this._contentElement.style.overflowX=this._contentElement.style.overflowY="hidden";var e=i.elementHeight(this._modalDiv);this._modalHeader=o.select(".modal-header",this._modalDiv),this._modalHeader.length>0&&(this._modalHeader=this._modalHeader[0],e-=i.elementHeight(this._modalHeader)),this._modalFooter=o.select(".modal-footer",this._modalDiv),this._modalFooter.length>0&&(this._modalFooter=this._modalFooter[0],e-=i.elementHeight(this._modalFooter)),this._contentContainer.style.height=e+"px",e!==i.elementHeight(this._contentContainer)&&(this._contentContainer.style.height=~~(e-(i.elementHeight(this._contentContainer)-e))+"px"),this._markupMode||(this._contentContainer.style.overflow=this._contentContainer.style.overflowX="hidden",this._contentContainer.style.overflowY="auto",this._contentElement.style.overflow=this._contentElement.style.overflowX=this._contentElement.style.overflowY="visible")},_disableScroll:function(){this._oldScrollPos=i.scroll(),this._onScrollBinded=Ink.bindEvent(function(e){var n=t.element(e);i.descendantOf(this._modalShadow,n)||(t.stop(e),window.scrollTo(this._oldScrollPos[0],this._oldScrollPos[1]))},this),t.observe(window,"scroll",this._onScrollBinded),t.observe(document,"touchmove",this._onScrollBinded)},open:function(o){o&&t.stop(o);var s="CSS1Compat"===document.compatMode?document.documentElement:document.body;this._resizeTimeout=null,n.addClassName(this._modalShadow,"ink-shade"),this._modalShadowStyle.display=this._modalDivStyle.display="block",setTimeout(Ink.bind(function(){n.addClassName(this._modalShadow,"visible"),n.addClassName(this._modalDiv,"visible")},this),100),this._contentElement=this._modalDiv,this._shadeElement=this._modalShadow,this._markupMode||this.setContentMarkup(this._options.markup),this._options.width!==void 0?(this._modalDivStyle.width=this._options.width,-1===this._options.width.indexOf("%")&&(this._modalDivStyle.maxWidth=i.elementWidth(this._modalDiv)+"px")):this._modalDivStyle.maxWidth=this._modalDivStyle.width=i.elementWidth(this._modalDiv)+"px",parseInt(s.clientWidth,10)<=parseInt(this._modalDivStyle.width,10)&&(this._modalDivStyle.width=~~(.9*parseInt(s.clientWidth,10))+"px"),this._options.height!==void 0?(this._modalDivStyle.height=this._options.height,-1===this._options.height.indexOf("%")&&(this._modalDivStyle.maxHeight=i.elementHeight(this._modalDiv)+"px")):this._modalDivStyle.maxHeight=this._modalDivStyle.height=i.elementHeight(this._modalDiv)+"px",parseInt(s.clientHeight,10)<=parseInt(this._modalDivStyle.height,10)&&(this._modalDivStyle.height=~~(.9*parseInt(s.clientHeight,10))+"px"),this.originalStatus={viewportHeight:parseInt(s.clientHeight,10),viewportWidth:parseInt(s.clientWidth,10),width:parseInt(this._modalDivStyle.maxWidth,10),height:parseInt(this._modalDivStyle.maxHeight,10)},this._options.responsive?(this._onResize(!0),t.observe(window,"resize",this._handlers.resize)):(this._resizeContainer(),this._reposition()),this._options.onShow&&this._options.onShow(this),this._options.disableScroll&&this._disableScroll(),t.observe(this._shadeElement,"click",this._handlers.click),t.observe(document,"keydown",this._handlers.keyDown),e.registerInstance(this,this._shadeElement,"modal"),this._wasDismissed=!1},dismiss:function(){if(this._options.onDismiss){var e=this._options.onDismiss(this);if(e===!1)return}if(this._wasDismissed=!0,this._options.disableScroll&&(t.stopObserving(window,"scroll",this._onScrollBinded),t.stopObserving(document,"touchmove",this._onScrollBinded)),this._options.responsive&&t.stopObserving(window,"resize",this._handlers.resize),this._markupMode){n.removeClassName(this._modalDiv,"visible"),n.removeClassName(this._modalShadow,"visible");var i,o=Ink.bindEvent(function(){i&&(this._modalShadowStyle.display="none",t.stopObserving(document,"transitionend",o),t.stopObserving(document,"oTransitionEnd",o),t.stopObserving(document,"webkitTransitionEnd",o),clearInterval(i),i=void 0)},this);t.observe(document,"transitionend",o),t.observe(document,"oTransitionEnd",o),t.observe(document,"webkitTransitionEnd",o),i||(i=setInterval(Ink.bind(function(){this._modalShadowStyle.opacity>0||(this._modalShadowStyle.display="none",clearInterval(i),i=void 0)},this),500))}else this._modalShadow.parentNode.removeChild(this._modalShadow),this.destroy()},destroy:function(){e.unregisterInstance(this._instanceId)},getContentElement:function(){return this._contentContainer},setContentMarkup:function(e){if(this._markupMode)this._contentContainer.innerHTML=[e].join("");else{if(this._modalDiv.innerHTML=[e].join(""),this._contentContainer=o.select(".modal-body",this._modalDiv),!this._contentContainer.length){var t=o.select(".modal-header",this._modalDiv),i=o.select(".modal-footer",this._modalDiv);s.each(t,Ink.bind(function(e){e.parentNode.removeChild(e)},this)),s.each(i,Ink.bind(function(e){e.parentNode.removeChild(e)},this));var r=document.createElement("div");n.addClassName(r,"modal-body"),r.innerHTML=this._modalDiv.innerHTML,this._modalDiv.innerHTML="",s.each(t,Ink.bind(function(e){this._modalDiv.appendChild(e)},this)),this._modalDiv.appendChild(r),s.each(i,Ink.bind(function(e){this._modalDiv.appendChild(e)},this)),this._contentContainer=o.select(".modal-body",this._modalDiv)}this._contentContainer=this._contentContainer[0]}this._contentElement=this._modalDiv,this._resizeContainer()}},r}); -Ink.createModule("Ink.UI.ProgressBar","1",["Ink.Dom.Selector_1","Ink.Dom.Element_1"],function(e,t){"use strict";var n=function(n,i){if("object"!=typeof n){if("string"!=typeof n)throw"[Ink.UI.ProgressBar] :: Invalid selector";if(this._element=e.select(n),1>this._element.length)throw"[Ink.UI.ProgressBar] :: Selector didn't find any elements";this._element=this._element[0]}else this._element=n;this._options=Ink.extendObj({startValue:0,onStart:function(){},onEnd:function(){}},t.data(this._element)),this._options=Ink.extendObj(this._options,i||{}),this._value=this._options.startValue,this._init()};return n.prototype={_init:function(){if(this._elementBar=e.select(".bar",this._element),1>this._elementBar.length)throw"[Ink.UI.ProgressBar] :: Bar element not found";this._elementBar=this._elementBar[0],this._options.onStart=Ink.bind(this._options.onStart,this),this._options.onEnd=Ink.bind(this._options.onEnd,this),this.setValue(this._options.startValue)},setValue:function(e){this._options.onStart(this._value),e=parseInt(e,10),isNaN(e)||0>e?e=0:e>100&&(e=100),this._value=e,this._elementBar.style.width=this._value+"%",this._options.onEnd(this._value)}},n}); \ No newline at end of file diff --git a/public/js/vendor/ink.formvalidator.js b/public/js/vendor/ink.formvalidator.js deleted file mode 100644 index 3ccfa42..0000000 --- a/public/js/vendor/ink.formvalidator.js +++ /dev/null @@ -1,715 +0,0 @@ -/** - * @module Ink.UI.FormValidator_1 - * @author inkdev AT sapo.pt - * @version 1 - */ -Ink.createModule('Ink.UI.FormValidator', '1', ['Ink.Dom.Css_1','Ink.Util.Validator_1'], function( Css, InkValidator ) { - 'use strict'; - - /** - * @class Ink.UI.FormValidator - * @version 1 - */ - var FormValidator = { - - /** - * Specifies the version of the component - * - * @property version - * @type {String} - * @readOnly - * @public - */ - version: '1', - - /** - * Available flags to use in the validation process. - * The keys are the 'rules', and their values are objects with the key 'msg', determining - * what is the error message. - * - * @property _flagMap - * @type {Object} - * @readOnly - * @private - */ - _flagMap: { - //'ink-fv-required': {msg: 'Campo obrigatório'}, - 'ink-fv-required': {msg: 'Required field'}, - //'ink-fv-email': {msg: 'E-mail inválido'}, - 'ink-fv-email': {msg: 'Invalid e-mail address'}, - //'ink-fv-url': {msg: 'URL inválido'}, - 'ink-fv-url': {msg: 'Invalid URL'}, - //'ink-fv-number': {msg: 'Número inválido'}, - 'ink-fv-number': {msg: 'Invalid number'}, - //'ink-fv-phone_pt': {msg: 'Número de telefone inválido'}, - 'ink-fv-phone_pt': {msg: 'Invalid phone number'}, - //'ink-fv-phone_cv': {msg: 'Número de telefone inválido'}, - 'ink-fv-phone_cv': {msg: 'Invalid phone number'}, - //'ink-fv-phone_mz': {msg: 'Número de telefone inválido'}, - 'ink-fv-phone_mz': {msg: 'Invalid phone number'}, - //'ink-fv-phone_ao': {msg: 'Número de telefone inválido'}, - 'ink-fv-phone_ao': {msg: 'Invalid phone number'}, - //'ink-fv-date': {msg: 'Data inválida'}, - 'ink-fv-date': {msg: 'Invalid date'}, - //'ink-fv-confirm': {msg: 'Confirmação inválida'}, - 'ink-fv-confirm': {msg: 'Confirmation does not match'}, - 'ink-fv-custom': {msg: ''} - }, - - /** - * This property holds all form elements for later validation - * - * @property elements - * @type {Object} - * @public - */ - elements: {}, - - /** - * This property holds the objects needed to cross-check for the 'confirm' rule - * - * @property confirmElms - * @type {Object} - * @public - */ - confirmElms: {}, - - /** - * This property holds the previous elements in the confirmElms property, but with a - * true/false specifying if it has the class ink-fv-confirm. - * - * @property hasConfirm - * @type {Object} - */ - hasConfirm: {}, - - /** - * Defined class name to use in error messages label - * - * @property _errorClassName - * @type {String} - * @readOnly - * @private - */ - _errorClassName: 'tip', - - /** - * @property _errorValidationClassName - * @type {String} - * @readOnly - * @private - */ - _errorValidationClassName: 'validaton', - - /** - * @property _errorTypeWarningClassName - * @type {String} - * @readOnly - * @private - */ - _errorTypeWarningClassName: 'warning', - - /** - * @property _errorTypeErrorClassName - * @type {String} - * @readOnly - * @private - */ - _errorTypeErrorClassName: 'error', - - /** - * Check if a form is valid or not - * - * @method validate - * @param {DOMElement|String} elm DOM form element or form id - * @param {Object} options Options for - * @param {Function} [options.onSuccess] function to run when form is valid - * @param {Function} [options.onError] function to run when form is not valid - * @param {Array} [options.customFlag] custom flags to use to validate form fields - * @public - * @return {Boolean} - */ - validate: function(elm, options) - { - this._free(); - - options = Ink.extendObj({ - onSuccess: false, - onError: false, - customFlag: false, - confirmGroup: [] - }, options || {}); - - if(typeof(elm) === 'string') { - elm = document.getElementById(elm); - } - if(elm === null){ - return false; - } - this.element = elm; - - if(typeof(this.element.id) === 'undefined' || this.element.id === null || this.element.id === '') { - // generate a random ID - this.element.id = 'ink-fv_randomid_'+(Math.round(Math.random() * 99999)); - } - - this.custom = options.customFlag; - - this.confirmGroup = options.confirmGroup; - - var fail = this._validateElements(); - - if(fail.length > 0) { - if(options.onError) { - options.onError(fail); - } else { - this._showError(elm, fail); - } - return false; - } else { - if(!options.onError) { - this._clearError(elm); - } - this._clearCache(); - if(options.onSuccess) { - options.onSuccess(); - } - return true; - } - - }, - - /** - * Reset previously generated validation errors - * - * @method reset - * @public - */ - reset: function() - { - this._clearError(); - this._clearCache(); - }, - - /** - * Cleans the object - * - * @method _free - * @private - */ - _free: function() - { - this.element = null; - //this.elements = []; - this.custom = false; - this.confirmGroup = false; - }, - - /** - * Cleans the properties responsible for caching - * - * @method _clearCache - * @private - */ - _clearCache: function() - { - this.element = null; - this.elements = []; - this.custom = false; - this.confirmGroup = false; - }, - - /** - * Gets the form elements and stores them in the caching properties - * - * @method _getElements - * @private - */ - _getElements: function() - { - //this.elements = []; - // if(typeof(this.elements[this.element.id]) !== 'undefined') { - // return; - // } - - this.elements[this.element.id] = []; - this.confirmElms[this.element.id] = []; - //console.log(this.element); - //console.log(this.element.elements); - var formElms = this.element.elements; - var curElm = false; - for(var i=0, totalElm = formElms.length; i < totalElm; i++) { - curElm = formElms[i]; - - if(curElm.getAttribute('type') !== null && curElm.getAttribute('type').toLowerCase() === 'radio') { - if(this.elements[this.element.id].length === 0 || - ( - curElm.getAttribute('type') !== this.elements[this.element.id][(this.elements[this.element.id].length - 1)].getAttribute('type') && - curElm.getAttribute('name') !== this.elements[this.element.id][(this.elements[this.element.id].length - 1)].getAttribute('name') - )) { - for(var flag in this._flagMap) { - if(Css.hasClassName(curElm, flag)) { - this.elements[this.element.id].push(curElm); - break; - } - } - } - } else { - for(var flag2 in this._flagMap) { - if(Css.hasClassName(curElm, flag2) && flag2 !== 'ink-fv-confirm') { - /*if(flag2 == 'ink-fv-confirm') { - this.confirmElms[this.element.id].push(curElm); - this.hasConfirm[this.element.id] = true; - }*/ - this.elements[this.element.id].push(curElm); - break; - } - } - - if(Css.hasClassName(curElm, 'ink-fv-confirm')) { - this.confirmElms[this.element.id].push(curElm); - this.hasConfirm[this.element.id] = true; - } - - } - } - //debugger; - }, - - /** - * Runs the validation for each element - * - * @method _validateElements - * @private - */ - _validateElements: function() - { - var oGroups; - this._getElements(); - //console.log('HAS CONFIRM', this.hasConfirm); - if(typeof(this.hasConfirm[this.element.id]) !== 'undefined' && this.hasConfirm[this.element.id] === true) { - oGroups = this._makeConfirmGroups(); - } - - var errors = []; - - var curElm = false; - var customErrors = false; - var inArray; - for(var i=0, totalElm = this.elements[this.element.id].length; i < totalElm; i++) { - inArray = false; - curElm = this.elements[this.element.id][i]; - - if(!curElm.disabled) { - for(var flag in this._flagMap) { - if(Css.hasClassName(curElm, flag)) { - - if(flag !== 'ink-fv-custom' && flag !== 'ink-fv-confirm') { - if(!this._isValid(curElm, flag)) { - - if(!inArray) { - errors.push({elm: curElm, errors:[flag]}); - inArray = true; - } else { - errors[(errors.length - 1)].errors.push(flag); - } - } - } else if(flag !== 'ink-fv-confirm'){ - customErrors = this._isCustomValid(curElm); - if(customErrors.length > 0) { - errors.push({elm: curElm, errors:[flag], custom: customErrors}); - } - } else if(flag === 'ink-fv-confirm'){ - } - } - } - } - } - errors = this._validateConfirmGroups(oGroups, errors); - //console.log(InkDumper.returnDump(errors)); - return errors; - }, - - /** - * Runs the 'confirm' validation for each group of elements - * - * @method _validateConfirmGroups - * @param {Array} oGroups Array/Object that contains the group of confirm objects - * @param {Array} errors Array that will store the errors - * @private - * @return {Array} Array of errors that was passed as 2nd parameter (either changed, or not, depending if errors were found). - */ - _validateConfirmGroups: function(oGroups, errors) - { - //console.log(oGroups); - var curGroup = false; - for(var i in oGroups) { - if (oGroups.hasOwnProperty(i)) { - curGroup = oGroups[i]; - if(curGroup.length === 2) { - if(curGroup[0].value !== curGroup[1].value) { - errors.push({elm:curGroup[1], errors:['ink-fv-confirm']}); - } - } - } - } - return errors; - }, - - /** - * Creates the groups of 'confirm' objects - * - * @method _makeConfirmGroups - * @private - * @return {Array|Boolean} Returns the array of confirm elements or false on error. - */ - _makeConfirmGroups: function() - { - var oGroups; - if(this.confirmGroup && this.confirmGroup.length > 0) { - oGroups = {}; - var curElm = false; - var curGroup = false; - //this.confirmElms[this.element.id]; - for(var i=0, total=this.confirmElms[this.element.id].length; i < total; i++) { - curElm = this.confirmElms[this.element.id][i]; - for(var j=0, totalG=this.confirmGroup.length; j < totalG; j++) { - curGroup = this.confirmGroup[j]; - if(Css.hasClassName(curElm, curGroup)) { - if(typeof(oGroups[curGroup]) === 'undefined') { - oGroups[curGroup] = [curElm]; - } else { - oGroups[curGroup].push(curElm); - } - } - } - } - return oGroups; - } else { - if(this.confirmElms[this.element.id].length === 2) { - oGroups = { - "ink-fv-confirm": [ - this.confirmElms[this.element.id][0], - this.confirmElms[this.element.id][1] - ] - }; - } - return oGroups; - } - return false; - }, - - /** - * Validates an element with a custom validation - * - * @method _isCustomValid - * @param {DOMElemenmt} elm Element to be validated - * @private - * @return {Array} Array of errors. If no errors are found, results in an empty array. - */ - _isCustomValid: function(elm) - { - var customErrors = []; - var curFlag = false; - for(var i=0, tCustom = this.custom.length; i < tCustom; i++) { - curFlag = this.custom[i]; - if(Css.hasClassName(elm, curFlag.flag)) { - if(!curFlag.callback(elm, curFlag.msg)) { - customErrors.push({flag: curFlag.flag, msg: curFlag.msg}); - } - } - } - return customErrors; - }, - - /** - * Runs the normal validation functions for a specific element - * - * @method _isValid - * @param {DOMElement} elm DOMElement that will be validated - * @param {String} fieldType Rule to be validated. This must be one of the keys present in the _flagMap property. - * @private - * @return {Boolean} The result of the validation. - */ - _isValid: function(elm, fieldType) - { - switch(fieldType) { - case 'ink-fv-required': - if(elm.nodeName.toLowerCase() === 'select') { - if(elm.selectedIndex > 0) { - return true; - } else { - return false; - } - } - if(elm.getAttribute('type') !== 'checkbox' && elm.getAttribute('type') !== 'radio') { - if(this._trim(elm.value) !== '') { - return true; - } - } else if(elm.getAttribute('type') === 'checkbox') { - if(elm.checked === true) { - return true; - } - } else if(elm.getAttribute('type') === 'radio') { // get top radio - var aFormRadios = elm.form[elm.name]; - if(typeof(aFormRadios.length) === 'undefined') { - aFormRadios = [aFormRadios]; - } - var isChecked = false; - for(var i=0, totalRadio = aFormRadios.length; i < totalRadio; i++) { - if(aFormRadios[i].checked === true) { - isChecked = true; - } - } - return isChecked; - } - break; - - case 'ink-fv-email': - if(this._trim(elm.value) === '') { - if(Css.hasClassName(elm, 'ink-fv-required')) { - return false; - } else { - return true; - } - } else { - if(InkValidator.mail(elm.value)) { - return true; - } - } - break; - case 'ink-fv-url': - if(this._trim(elm.value) === '') { - if(Css.hasClassName(elm, 'ink-fv-required')) { - return false; - } else { - return true; - } - } else { - if(InkValidator.url(elm.value)) { - return true; - } - } - break; - case 'ink-fv-number': - if(this._trim(elm.value) === '') { - if(Css.hasClassName(elm, 'ink-fv-required')) { - return false; - } else { - return true; - } - } else { - if(!isNaN(Number(elm.value))) { - return true; - } - } - break; - case 'ink-fv-phone_pt': - if(this._trim(elm.value) === '') { - if(Css.hasClassName(elm, 'ink-fv-required')) { - return false; - } else { - return true; - } - } else { - if(InkValidator.isPTPhone(elm.value)) { - return true; - } - } - break; - case 'ink-fv-phone_cv': - if(this._trim(elm.value) === '') { - if(Css.hasClassName(elm, 'ink-fv-required')) { - return false; - } else { - return true; - } - } else { - if(InkValidator.isCVPhone(elm.value)) { - return true; - } - } - break; - case 'ink-fv-phone_ao': - if(this._trim(elm.value) === '') { - if(Css.hasClassName(elm, 'ink-fv-required')) { - return false; - } else { - return true; - } - } else { - if(InkValidator.isAOPhone(elm.value)) { - return true; - } - } - break; - case 'ink-fv-phone_mz': - if(this._trim(elm.value) === '') { - if(Css.hasClassName(elm, 'ink-fv-required')) { - return false; - } else { - return true; - } - } else { - if(InkValidator.isMZPhone(elm.value)) { - return true; - } - } - break; - case 'ink-fv-date': - if(this._trim(elm.value) === '') { - if(Css.hasClassName(elm, 'ink-fv-required')) { - return false; - } else { - return true; - } - } else { - var Element = Ink.getModule('Ink.Dom.Element',1); - var dataset = Element.data( elm ); - var validFormat = 'yyyy-mm-dd'; - - if( Css.hasClassName(elm, 'ink-datepicker') && ("format" in dataset) ){ - validFormat = dataset.format; - } else if( ("validFormat" in dataset) ){ - validFormat = dataset.validFormat; - } - - if( !(validFormat in InkValidator._dateParsers ) ){ - var validValues = []; - for( var val in InkValidator._dateParsers ){ - if (InkValidator._dateParsers.hasOwnProperty(val)) { - validValues.push(val); - } - } - throw "The attribute data-valid-format must be one of the following values: " + validValues.join(','); - } - - return InkValidator.isDate( validFormat, elm.value ); - } - break; - case 'ink-fv-custom': - break; - } - - return false; - }, - - /** - * Makes the necessary changes to the markup to show the errors of a given element - * - * @method _showError - * @param {DOMElement} formElm The form element to be changed to show the errors - * @param {Array} aFail An array with the errors found. - * @private - */ - _showError: function(formElm, aFail) - { - this._clearError(formElm); - - //ink-warning-field - - //console.log(aFail); - var curElm = false; - for(var i=0, tFail = aFail.length; i < tFail; i++) { - curElm = aFail[i].elm; - - if(curElm.getAttribute('type') !== 'radio') { - - var newLabel = document.createElement('p'); - //newLabel.setAttribute('for',curElm.id); - //newLabel.className = this._errorClassName; - //newLabel.className += ' ' + this._errorTypeErrorClassName; - Css.addClassName(newLabel, this._errorClassName); - Css.addClassName(newLabel, this._errorTypeErrorClassName); - if(aFail[i].errors[0] !== 'ink-fv-custom') { - newLabel.innerHTML = this._flagMap[aFail[i].errors[0]].msg; - } else { - newLabel.innerHTML = aFail[i].custom[0].msg; - } - - if(curElm.getAttribute('type') !== 'checkbox') { - curElm.nextSibling.parentNode.insertBefore(newLabel, curElm.nextSibling); - if(Css.hasClassName(curElm.parentNode, 'control')) { - Css.addClassName(curElm.parentNode.parentNode, 'validation'); - if(aFail[i].errors[0] === 'ink-fv-required') { - Css.addClassName(curElm.parentNode.parentNode, 'error'); - } else { - Css.addClassName(curElm.parentNode.parentNode, 'warning'); - } - } - } else { - /* // TODO checkbox... does not work with this CSS - curElm.parentNode.appendChild(newLabel); - if(Css.hasClassName(curElm.parentNode.parentNode, 'control-group')) { - Css.addClassName(curElm.parentNode.parentNode, 'control'); - Css.addClassName(curElm.parentNode.parentNode, 'validation'); - Css.addClassName(curElm.parentNode.parentNode, 'error'); - }*/ - } - } else { - if(Css.hasClassName(curElm.parentNode.parentNode, 'control-group')) { - Css.addClassName(curElm.parentNode.parentNode, 'validation'); - Css.addClassName(curElm.parentNode.parentNode, 'error'); - } - } - } - }, - - /** - * Clears the error of a given element. Normally executed before any validation, for all elements, as a reset. - * - * @method _clearErrors - * @param {DOMElement} formElm Form element to be cleared. - * @private - */ - _clearError: function(formElm) - { - //return; - var aErrorLabel = formElm.getElementsByTagName('p'); - - var curElm = false; - for(var i = (aErrorLabel.length - 1); i >= 0; i--) { - curElm = aErrorLabel[i]; - if(Css.hasClassName(curElm, this._errorClassName)) { - if(Css.hasClassName(curElm.parentNode, 'control')) { - Css.removeClassName(curElm.parentNode.parentNode, 'validation'); - Css.removeClassName(curElm.parentNode.parentNode, 'error'); - Css.removeClassName(curElm.parentNode.parentNode, 'warning'); - } - - if(Css.hasClassName(curElm,'tip') && Css.hasClassName(curElm,'error')){ - curElm.parentNode.removeChild(curElm); - } - } - } - - var aErrorLabel2 = formElm.getElementsByTagName('ul'); - for(i = (aErrorLabel2.length - 1); i >= 0; i--) { - curElm = aErrorLabel2[i]; - if(Css.hasClassName(curElm, 'control-group')) { - Css.removeClassName(curElm, 'validation'); - Css.removeClassName(curElm, 'error'); - } - } - }, - - /** - * Removes unnecessary spaces to the left or right of a string - * - * @method _trim - * @param {String} stri String to be trimmed - * @private - * @return {String|undefined} String trimmed. - */ - _trim: function(str) - { - if(typeof(str) === 'string') - { - return str.replace(/^\s+|\s+$|\n+$/g, ''); - } - } - }; - - return FormValidator; - -}); diff --git a/public/js/vendor/ink.min.js b/public/js/vendor/ink.min.js deleted file mode 100644 index b838ee6..0000000 --- a/public/js/vendor/ink.min.js +++ /dev/null @@ -1,22 +0,0 @@ - -(function(){"use strict";if(!("Ink"in window)){var e={Ink:"INK_PATH"in window?window.INK_PATH:window.location.protocol+"//js.ink.sapo.pt/Ink/"},n={},t=[],r={},i=[],o=function(e){if("object"!=typeof e)return!1;for(var n in e)if(e.hasOwnProperty(n))return!1;return!0};window.Ink={_checkPendingRequireModules:function(){var e,t,r,o,a,u,s=[];for(e=0,t=i.length;t>e;++e)if(r=i[e]){for(o in r.left)r.left.hasOwnProperty(o)&&(a=n[o],a&&(r.args[r.left[o]]=a,delete r.left[o],--r.remaining));if(r.remaining>0)s.push(r);else{if(u=r.cb,!u)continue;delete r.cb,u.apply(!1,r.args)}}i=s,i.length>0&&setTimeout(function(){Ink._checkPendingRequireModules()},0)},_modNameToUri:function(n){if(-1!==n.indexOf("/"))return n;var t=n.replace(/_/g,".").split("."),r=t.shift(),i=e[r];return i||(i="./"+r+"/"),[i,t.join("/"),"/lib.js"].join("")},getPath:function(n){return e[n||"Ink"]},setPath:function(n,t){e[n]=t},loadScript:function(e){var n=document.createElement("script");n.setAttribute("type","text/javascript"),n.setAttribute("src",this._modNameToUri(e));var t=document.getElementsByTagName("head");t.length>0&&t[0].appendChild(n)},namespace:function(e,n){if(!e||!e.length)return null;for(var t,r=e.split("."),i=window,o=0,a=r.length;a>o;++o)i[r[o]]=i[r[o]]||{},t=i,i=i[r[o]];return n?[t,r[o-1]]:i},getModule:function(e,t){var r=t?[e,"_",t].join(""):e;return n[r]},createModule:function(e,i,a,u){var s=function(){if("string"!=typeof e)throw Error("module name must be a string!");if(!("number"==typeof i||"string"==typeof i&&i.length>0))throw Error("version number missing!");var a=[e,"_",i].join("");if(!n[a]){delete r[a],delete r[e];var s=Array.prototype.slice.call(arguments),c=u.apply(window,s);t.push(a),"object"==typeof c?c._version=i:"function"==typeof c&&(c.prototype._version=i,c._version=i);var l,f=0===e.indexOf("Ink.");f&&(l=Ink.namespace(e,!0)),n[a]=c,f&&(l[0][l[1]+"_"+i]=c),n[e]=c,f&&o(l[0][l[1]])&&(l[0][l[1]]=c),this&&Ink._checkPendingRequireModules()}};this.requireModules(a,s)},requireModules:function(e,t){var o,a,u,s,c;if(a=e.length,u={args:Array(a),left:{},remaining:a,cb:t},"object"!=typeof e||void 0===e.length)throw Error("Dependency list should be an array!");if("function"!=typeof t)throw Error("Callback should be a function!");for(o=0;a>o;++o)s=e[o],c=n[s],c?(u.args[o]=c,--u.remaining):(r[s]||(r[s]=!0,Ink.loadScript(s)),u.left[s]=o);u.remaining>0?i.push(u):t.apply(!0,u.args)},getModulesLoadOrder:function(){return t.slice()},getModuleScripts:function(){var e=this.getModulesLoadOrder();return e.unshift("Ink_1"),e=e.map(function(e){var n=e.indexOf(".");-1===n&&(n=e.indexOf("_"));var t=e.substring(0,n);e=e.substring(n+1);var r=Ink.getPath(t);return[''].join("")}),e.join("\n")},bind:function(e,n){var t=Array.prototype.slice.call(arguments,2);return function(){var r=Array.prototype.slice.call(arguments),i=t.concat(r);return e.apply(n,i)}},bindMethod:function(e,n){return this.bind.apply(this,[e[n],e].concat([].slice.call(arguments,2)))},bindEvent:function(e,n){var t=Array.prototype.slice.call(arguments,2);return function(r){var i=t.slice();return i.unshift(r||window.event),e.apply(n,i)}},i:function(e){if(!e)throw Error("Ink.i => id or element must be passed");return"string"==typeof e?document.getElementById(e):e},s:function(e,n){if(Ink.Dom===void 0||Ink.Dom.Selector===void 0)throw Error("This method requires Ink.Dom.Selector");return Ink.Dom.Selector.select(e,n||document)[0]||null},ss:function(e,n){if(Ink.Dom===void 0||Ink.Dom.Selector===void 0)throw Error("This method requires Ink.Dom.Selector");return Ink.Dom.Selector.select(e,n||document)},extendObj:function(e,n){if(arguments.length>2&&(n=Ink.extendObj.apply(this,[].slice.call(arguments,1))),n)for(var t in n)Object.prototype.hasOwnProperty.call(n,t)&&(e[t]=n[t]);return e}}}})(); -Ink.createModule("Ink.Net.Ajax","1",[],function(){"use strict";var Ajax=function(t,e){this.init(t,e)};Ajax.globalOptions={parameters:{},requestHeaders:{}};var xMLHttpRequestWithCredentials="XMLHttpRequest"in window&&"withCredentials"in new XMLHttpRequest;return Ajax.prototype={init:function(t,e){if(!t)throw Error("WRONG_ARGUMENTS_ERR");var n=Ink.extendObj({asynchronous:!0,method:"POST",parameters:null,timeout:0,delay:0,postBody:"",contentType:"application/x-www-form-urlencoded",requestHeaders:null,onComplete:null,onSuccess:null,onFailure:null,onException:null,onHeaders:null,onCreate:null,onInit:null,onTimeout:null,sanitizeJSON:!1,evalJS:!0,xhrProxy:"",cors:!1,debug:!1,useCredentials:!1,signRequest:!1},Ajax.globalOptions);if(e&&"object"==typeof e){if(n=Ink.extendObj(n,e),"object"==typeof e.parameters)n.parameters=Ink.extendObj(Ink.extendObj({},Ajax.globalOptions.parameters),e.parameters);else if(null!==e.parameters){var s=this.paramsObjToStr(Ajax.globalOptions.parameters);s&&(n.parameters=e.parameters+"&"+s)}n.requestHeaders=Ink.extendObj({},Ajax.globalOptions.requestHeaders),n.requestHeaders=Ink.extendObj(n.requestHeaders,e.requestHeaders)}this.options=n,this.safeCall("onInit");var r=document.createElementNS?document.createElementNS("http://www.w3.org/1999/xhtml","a"):document.createElement("a");r.href=t,this.url=t,this.isHTTP=r.protocol.match(/^https?:$/i)&&!0,this.requestHasBody=0>n.method.search(/^get|head$/i),this.isCrossDomain=this.isHTTP&&"widget:"!==location.protocol&&"object"!=typeof window.widget?location.protocol!==r.protocol||location.host!==r.host:!1,this.options.cors&&(this.isCrossDomain=!1),this.transport=this.getTransport(),this.request()},getTransport:function(){if(!xMLHttpRequestWithCredentials&&this.options.cors&&"XDomainRequest"in window)return this.usingXDomainReq=!0,new XDomainRequest;if("undefined"!=typeof XMLHttpRequest)return new XMLHttpRequest;if("undefined"==typeof ActiveXObject)return null;try{return new ActiveXObject("Msxml2.XMLHTTP")}catch(t){return new ActiveXObject("Microsoft.XMLHTTP")}},setHeaders:function(){if(this.transport)try{var t={Accept:"text/javascript,text/xml,application/xml,application/xhtml+xml,text/html,application/json;q=0.9,text/plain;q=0.8,video/x-mng,image/png,image/jpeg,image/gif;q=0.2,*/*;q=0.1","Accept-Language":navigator.language,"X-Requested-With":"XMLHttpRequest","X-Ink-Version":"1"};if(this.options.cors&&(this.options.signRequest||delete t["X-Requested-With"],delete t["X-Ink-Version"]),this.options.requestHeaders&&"object"==typeof this.options.requestHeaders)for(var e in this.options.requestHeaders)this.options.requestHeaders.hasOwnProperty(e)&&(t[e]=this.options.requestHeaders[e]);this.transport.overrideMimeType&&2005>(navigator.userAgent.match(/Gecko\/(\d{4})/)||[0,2005])[1]&&(t.Connection="close");for(var n in t)t.hasOwnProperty(n)&&this.transport.setRequestHeader(n,t[n])}catch(s){}},paramsObjToStr:function(t){var e,n,s,r,i=[];if("object"!=typeof t)return t;for(s in t)if(t.hasOwnProperty(s))if(r=t[s],"[object Array]"!==Object.prototype.toString.call(r)||isNaN(r.length))i=i.concat([encodeURIComponent(s),"=",encodeURIComponent(r),"&"]);else for(e=0,n=r.length;n>e;e++)i=i.concat([encodeURIComponent(s),"[]","=",encodeURIComponent(r[e]),"&"]);return i.length>0&&i.pop(),i.join("")},setParams:function(){var t=null,e=this.options.parameters;t="object"==typeof e?this.paramsObjToStr(e):""+e,t&&(this.url=this.url.indexOf("?")>-1?this.url.split("#")[0]+"&"+t:this.url.split("#")[0]+"?"+t)},getHeader:function(t){if(this.usingXDomainReq&&"Content-Type"===t)return this.transport.contentType;try{return this.transport.getResponseHeader(t)}catch(e){return null}},getAllHeaders:function(){try{return this.transport.getAllResponseHeaders()}catch(t){return null}},getResponse:function(){var t=this.transport,e={headerJSON:null,responseJSON:null,getHeader:this.getHeader,getAllHeaders:this.getAllHeaders,request:this,transport:t,timeTaken:new Date-this.startTime,requestedUrl:this.url};e.readyState=t.readyState;try{e.responseText=t.responseText}catch(n){}try{e.responseXML=t.responseXML}catch(n){}try{e.status=t.status}catch(n){e.status=0}try{e.statusText=t.statusText}catch(n){e.statusText=""}return e},abort:function(){if(this.transport){clearTimeout(this.delayTimeout),clearTimeout(this.stoTimeout);try{this.transport.abort()}catch(t){}this.finish()}},runStateChange:function(){var t=this.transport.readyState;if(3===t)this.isHTTP&&this.safeCall("onHeaders");else if(4===t||this.usingXDomainReq){if(this.options.asynchronous&&this.options.delay&&this.startTime+this.options.delay>(new Date).getTime())return this.delayTimeout=setTimeout(Ink.bind(this.runStateChange,this),this.options.delay+this.startTime-(new Date).getTime()),void 0;var e,n=this.transport.responseText,s=this.getResponse(),r=this.transport.status;this.isHTTP&&!this.options.asynchronous&&this.safeCall("onHeaders"),clearTimeout(this.stoTimeout),0===r?this.isHTTP?this.safeCall("onException",this.makeError(18,"NETWORK_ERR")):r=n?200:404:304===r&&(r=200);var i=this.usingXDomainReq||r>=200&&300>r,o=this.getHeader("Content-Type")||"";if(this.options.evalJS&&(o.indexOf("application/json")>=0||"force"===this.options.evalJS))try{e=this.evalJSON(n,this.sanitizeJSON),e&&(n=s.responseJSON=e)}catch(a){i&&this.safeCall("onException",a)}if(this.usingXDomainReq&&-1!==o.indexOf("xml")&&"DOMParser"in window){var u;switch(o){case"application/xml":case"application/xhtml+xml":case"image/svg+xml":u=o;break;default:u="text/xml"}var l=(new DOMParser).parseFromString(this.transport.responseText,u);this.transport.responseXML=l,s.responseXML=l}null!==this.transport.responseXML&&null===s.responseJSON&&""!==this.transport.responseXML.xml&&(n=this.transport.responseXML),(r||this.usingXDomainReq)&&(i?this.safeCall("onSuccess",s,n):this.safeCall("onFailure",s,n),this.safeCall("on"+r,s,n)),this.finish(s,n)}},finish:function(t,e){if(t&&this.safeCall("onComplete",t,e),clearTimeout(this.stoTimeout),this.transport){try{this.transport.onreadystatechange=null}catch(n){}"function"==typeof this.transport.destroy&&this.transport.destroy(),this.transport=null}},safeCall:function(t,e){function n(t){setTimeout(function(){throw t.message&&(t.message+="\n"+(t.stacktrace||t.stack||"")),t},1)}if("function"==typeof this.options[t])try{this.options[t].apply(this,[].slice.call(arguments,1))}catch(s){n(s)}else e&&window.Error&&e instanceof Error&&n(e)},setRequestHeader:function(t,e){this.options.requestHeaders||(this.options.requestHeaders={}),this.options.requestHeaders[t]=e},request:function(){if(this.transport){var t=null;this.requestHasBody?(null!==this.options.postBody&&""!==this.options.postBody?(t=this.options.postBody,this.setParams()):null!==this.options.parameters&&""!==this.options.parameters&&(t=this.options.parameters),"object"!=typeof t||t.nodeType?"object"!=typeof t&&null!==t&&(t=""+t):t=this.paramsObjToStr(t),this.options.contentType&&this.setRequestHeader("Content-Type",this.options.contentType)):this.setParams();var e=this.url,n=this.options.method,s=this.isCrossDomain;s&&this.options.xhrProxy&&(this.setRequestHeader("X-Url",e),e=this.options.xhrProxy+encodeURIComponent(e),s=!1);try{this.transport.open(n,e,this.options.asynchronous)}catch(r){return this.safeCall("onException",r),this.finish(this.getResponse(),null)}this.setHeaders(),this.safeCall("onCreate"),this.options.timeout&&!isNaN(this.options.timeout)&&(this.stoTimeout=setTimeout(Ink.bind(function(){this.options.onTimeout&&(this.safeCall("onTimeout"),this.abort())},this),1e3*this.options.timeout)),this.options.useCredentials&&!this.usingXDomainReq&&(this.transport.withCredentials=!0),this.options.asynchronous&&!this.usingXDomainReq?this.transport.onreadystatechange=Ink.bind(this.runStateChange,this):this.usingXDomainReq&&(this.transport.onload=Ink.bind(this.runStateChange,this));try{if(s)throw this.makeError(18,"NETWORK_ERR");this.startTime=(new Date).getTime(),this.transport.send(t)}catch(r){return this.safeCall("onException",r),this.finish(this.getResponse(),null)}this.options.asynchronous||this.runStateChange()}},makeError:function(t,e){if("function"!=typeof Error)return{code:t,message:e};var n=Error(e);return n.code=t,n},isJSON:function(t){return"string"==typeof t&&t?(t=t.replace(/\\./g,"@").replace(/"[^"\\\n\r]*"/g,""),/^[,:{}\[\]0-9.\-+Eaeflnr-u \n\r\t]*$/.test(t)):!1},evalJSON:function(strJSON,sanitize){if(strJSON&&(!sanitize||this.isJSON(strJSON)))try{return"undefined"!=typeof JSON&&JSON.parse!==void 0?JSON.parse(strJSON):eval("("+strJSON+")")}catch(e){throw Error("ERROR: Bad JSON string...")}return null}},Ajax.load=function(t,e){return new Ajax(t,{method:"GET",onSuccess:function(t){e(t.responseText,t)}})},Ajax.ping=function(t,e){return new Ajax(t,{method:"HEAD",onSuccess:function(t){"function"==typeof e&&e(t)}})},Ajax}); -Ink.createModule("Ink.Net.JsonP","1",[],function(){"use strict";var t=function(t,e){this.init(t,e)};return t.prototype={init:function(t,e){if(this.options=Ink.extendObj({onSuccess:void 0,onFailure:void 0,failureObj:{},timeout:10,params:{},callbackParam:"jsoncallback",internalCallback:"_cb",randVar:!1},e||{}),this.randVar=this.options.randVar!==!1?this.options.randVar:parseInt(1e5*Math.random(),10),this.options.internalCallback+=this.randVar,this.uri=t,"function"==typeof this.options.onComplete&&(this.options.onSuccess=this.options.onComplete),"string"!=typeof this.uri)throw"Please define an URI";if("function"!=typeof this.options.onSuccess)throw"please define a callback function on option onSuccess!";Ink.Net.JsonP[this.options.internalCallback]=Ink.bind(function(){window.clearTimeout(this.timeout),delete window.Ink.Net.JsonP[this.options.internalCallback],this._removeScriptTag(),this.options.onSuccess(arguments[0])},this),this._addScriptTag()},_addParamsToGet:function(t,e){var n,s,i,o=-1!==t.indexOf("?"),r=[t];for(s in e)e.hasOwnProperty(s)&&(o?n="&":(n="?",o=!0),i=e[s],"number"==typeof i||i||(i=""),r=r.concat([n,s,"=",encodeURIComponent(i)]));return r.join("")},_getScriptContainer:function(){var t=document.getElementsByTagName("head");if(0===t.length){var e=document.getElementsByTagName("script");return e[0]}return t[0]},_addScriptTag:function(){this.options.params[this.options.callbackParam]="Ink.Net.JsonP."+this.options.internalCallback,this.options.params.rnd_seed=this.randVar,this.uri=this._addParamsToGet(this.uri,this.options.params);var t=document.createElement("script");t.type="text/javascript",t.src=this.uri;var e=this._getScriptContainer();e.appendChild(t),this.timeout=setTimeout(Ink.bind(this._requestFailed,this),1e3*this.options.timeout)},_requestFailed:function(){delete Ink.Net.JsonP[this.options.internalCallback],this._removeScriptTag(),"function"==typeof this.options.onFailure&&this.options.onFailure(this.options.failureObj)},_removeScriptTag:function(){for(var t,e,n=document.getElementsByTagName("script"),s=0,i=n.length;i>s;++s)if(t=n[s],e=t.getAttribute("src")||t.src,null!==e&&e===this.uri)return t.parentNode.removeChild(t),void 0}},t}); -Ink.createModule("Ink.Dom.Css",1,[],function(){"use strict";var t={addRemoveClassName:function(t,e,n){return n?this.addClassName(t,e):(this.removeClassName(t,e),void 0)},addClassName:function(t,e){t=Ink.i(t),t&&e&&(t.classList!==void 0?t.classList.add(e):this.hasClassName(t,e)||(t.className+=(t.className?" ":"")+e))},removeClassName:function(t,e){if(t=Ink.i(t),t&&e)if(t.classList!==void 0)t.classList.remove(e);else{if(t.className===void 0)return!1;var n=t.className,s=RegExp("(^|\\s+)"+e+"(\\s+|$)");n=n.replace(s," "),n=n.replace(/^\s+/,"").replace(/\s+$/,""),t.className=n}},setClassName:function(t,e,n){this.addRemoveClassName(t,e,n||!1)},hasClassName:function(t,e){if(t=Ink.i(t),t&&e){if(t.classList!==void 0)return t.classList.contains(e);if(t.className===void 0)return!1;var n=t.className;if(n.length===void 0)return!1;if(n.length>0){if(n===e)return!0;var s=RegExp("(^|\\s)"+e+"(\\s|$)");if(s.test(n))return!0}}return!1},blinkClass:function(t,e,n,s){t=Ink.i(t),this.addRemoveClassName(t,e,!s),setTimeout(Ink.bind(function(){this.addRemoveClassName(t,e,s)},this),Number(n)||100)},toggleClassName:function(t,e,n){return t&&e&&t.classList!==void 0?(t=Ink.i(t),null!==t&&t.classList.toggle(e),!0):(n!==void 0?n===!0?this.addClassName(t,e):n===!1&&this.removeClassName(t,e):this.hasClassName(t,e)?this.removeClassName(t,e):this.addClassName(t,e),void 0)},setOpacity:function(t,e){if(t=Ink.i(t),null!==t){var n=1;isNaN(Number(e))||(n=0>=e?0:1>=e?e:100>=e?e/100:1),t.style.opacity!==void 0?t.style.opacity=n:t.style.filter="alpha(opacity:"+(0|100*n)+")"}},_camelCase:function(t){return t?t.replace(/-(\w)/g,function(t,e){return e.toUpperCase()}):t},getStyle:function(t,e){if(t=Ink.i(t),null!==t){e="float"===e?"cssFloat":this._camelCase(e);var n=t.style[e];if(!window.getComputedStyle||n&&"auto"!==n)!n&&t.currentStyle&&(n=t.currentStyle[e],"auto"!==n||"width"!==e&&"height"!==e||(n=t["offset"+e.charAt(0).toUpperCase()+e.slice(1)]+"px"));else{var s=window.getComputedStyle(t,null);n=s?s[e]:null}if("opacity"===e)return n?parseFloat(n,10):1;if("borderTopWidth"===e||"borderBottomWidth"===e||"borderRightWidth"===e||"borderLeftWidth"===e){if("thin"===n)return"1px";if("medium"===n)return"3px";if("thick"===n)return"5px"}return"auto"===n?null:n}},setStyle:function(t,e){if(t=Ink.i(t),null!==t)if("string"==typeof e)t.style.cssText+="; "+e,-1!==e.indexOf("opacity")&&this.setOpacity(t,e.match(/opacity:\s*(\d?\.?\d*)/)[1]);else for(var n in e)e.hasOwnProperty(n)&&("opacity"===n?this.setOpacity(t,e[n]):"float"===n||"cssFloat"===n?t.style.styleFloat===void 0?t.style.cssFloat=e[n]:t.style.styleFloat=e[n]:t.style[n]=e[n])},show:function(t,e){t=Ink.i(t),null!==t&&(t.style.display=e?e:"")},hide:function(t){t=Ink.i(t),null!==t&&(t.style.display="none")},showHide:function(t,e){t=Ink.i(t),t&&(t.style.display=e?"":"none")},toggle:function(t,e){t=Ink.i(t),null!==t&&(e!==void 0?e===!0?this.show(t):this.hide(t):"none"===t.style.display?this.show(t):this.hide(t))},_getRefTag:function(t){if(t.firstElementChild)return t.firstElementChild;for(var e=t.firstChild;e;e=e.nextSibling)if(1===e.nodeType)return e;return null},appendStyleTag:function(t,e,n){n=Ink.extendObj({type:"text/css",force:!1},n||{});var s,i,r=document.getElementsByTagName("style"),o=!1,a=!0;for(s=0,i=r.length;i>s;s++)o=r[s].innerHTML,o.indexOf(t)>=0&&(a=!1);if(a){var l=document.createElement("style"),u=document.getElementsByTagName("head")[0],c=!1,h="";l.type=n.type,h+=t+" {",h+=e,h+="} ",l.styleSheet!==void 0?l.styleSheet.cssText=h:l.appendChild(document.createTextNode(h)),n.force?u.appendChild(l):(c=this._getRefTag(u),c&&u.insertBefore(l,c))}},appendStylesheet:function(t,e){e=Ink.extendObj({media:"screen",type:"text/css",force:!1},e||{});var n,s=document.createElement("link"),i=document.getElementsByTagName("head")[0];s.media=e.media,s.type=e.type,s.href=t,s.rel="Stylesheet",e.force?i.appendChild(s):(n=this._getRefTag(i),n&&i.insertBefore(s,n))},_loadingCSSFiles:{},_loadedCSSFiles:{},appendStylesheetCb:function(t,e){if(!t)return e(t);if(this._loadedCSSFiles[t])return e(t);var n=this._loadingCSSFiles[t];if(n)return n.push(e);this._loadingCSSFiles[t]=[e];var s=document.createElement("link");s.type="text/css",s.rel="stylesheet",s.href=t;var i=document.getElementsByTagName("head")[0];i.appendChild(s);var r=document.createElement("img");r.onerror=Ink.bindEvent(function(t,e){var n=e;this._loadedCSSFiles[n]=!0;for(var s=this._loadingCSSFiles[n],i=0,r=s.length;r>i;++i)s[i](n);delete this._loadingCSSFiles[n]},this,t),r.src=t},decToHex:function(t){var e=function(t){return 1===t.length&&(t="0"+t),t=t.toUpperCase()};if("object"==typeof t){var n=e(parseInt(t.r,10).toString(16)),s=e(parseInt(t.g,10).toString(16)),i=e(parseInt(t.b,10).toString(16));return n+s+i}t+="";var r=t.match(/\((\d+),\s?(\d+),\s?(\d+)\)/);return null!==r?e(parseInt(r[1],10).toString(16))+e(parseInt(r[2],10).toString(16))+e(parseInt(r[3],10).toString(16)):e(parseInt(t,10).toString(16))},hexToDec:function(t){return 0===t.indexOf("#")&&(t=t.substr(1)),6===t.length?{r:parseInt(t.substr(0,2),16),g:parseInt(t.substr(2,2),16),b:parseInt(t.substr(4,2),16)}:3===t.length?{r:parseInt(t.charAt(0)+t.charAt(0),16),g:parseInt(t.charAt(1)+t.charAt(1),16),b:parseInt(t.charAt(2)+t.charAt(2),16)}:2>=t.length?parseInt(t,16):void 0},getPropertyFromStylesheet:function(t,e){var n=this.getRuleFromStylesheet(t);return n?n.style[e]:null},getPropertyFromStylesheet2:function(t,e){for(var n,s=this.getRulesFromStylesheet(t),i=0,r=s.length;r>i;i++)if(n=s[i].style[e],null!==n&&void 0!==n)return n;return null},getRuleFromStylesheet:function(t){var e,n,s,i,r,o=document.styleSheets;if(!o)return null;for(var a=0,l=document.styleSheets.length;l>a;++a){if(e=document.styleSheets[a],n=e.rules?e.rules:e.cssRules,!n)return null;for(s=0,i=n.length;i>s;++s)if(r=n[s],r.selectorText&&r.selectorText===t)return r}return null},getRulesFromStylesheet:function(t){var e,n,s,i,r,o=[],a=document.styleSheets;if(!a)return o;for(var l=0,u=document.styleSheets.length;u>l;++l){if(e=document.styleSheets[l],n=e.rules?e.rules:e.cssRules,!n)return null;for(s=0,i=n.length;i>s;++s)r=n[s],r.selectorText&&r.selectorText===t&&o.push(r)}return o},getPropertiesFromRule:function(t){var e,n,s,i=this.getRuleFromStylesheet(t),r={};i=i.style.cssText;var o,a,l,u,c=i.split(";");for(n=0,s=c.length;s>n;++n)" "===c[n].charAt(0)&&(c[n]=c[n].substring(1)),o=c[n].split(":"),e=this._camelCase(o[0].toLowerCase()),a=o[1],a&&(a=a.substring(1),"padding"===e||"margin"===e||"borderWidth"===e?("borderWidth"===e?(l="border",u="Width"):(l=e,u=""),-1!==a.indexOf(" ")?(a=a.split(" "),r[l+"Top"+u]=a[0],r[l+"Bottom"+u]=a[0],r[l+"Left"+u]=a[1],r[l+"Right"+u]=a[1]):(r[l+"Top"+u]=a,r[l+"Bottom"+u]=a,r[l+"Left"+u]=a,r[l+"Right"+u]=a)):"borderRadius"===e?-1!==a.indexOf(" ")?(a=a.split(" "),r.borderTopLeftRadius=a[0],r.borderBottomRightRadius=a[0],r.borderTopRightRadius=a[1],r.borderBottomLeftRadius=a[1]):(r.borderTopLeftRadius=a,r.borderTopRightRadius=a,r.borderBottomLeftRadius=a,r.borderBottomRightRadius=a):r[e]=a);return r},changeFontSize:function(t,e,n,s,i){var r=this;Ink.requireModules(["Ink.Dom.Selector_1"],function(o){var a;if("string"!=typeof t?a="1st argument must be a CSS selector rule.":"number"!=typeof e?a="2nd argument must be a number.":void 0!==n&&"+"!==n&&"*"!==n?a='3rd argument must be one of "+", "*".':void 0!==s&&("number"!=typeof s||0>=s)?a="4th argument must be a positive number.":void 0!==i&&("number"!=typeof i||i>i)&&(a="5th argument must be a positive number greater than minValue."),a)throw new TypeError(a);var l,u,c=o.select(t);void 0===s&&(s=1),n="*"===n?function(t,e){return t*e}:function(t,e){return t+e};for(var h=0,p=c.length;p>h;++h)u=c[h],l=parseFloat(r.getStyle(u,"fontSize")),l=n(l,e),s>l||"number"==typeof i&&l>i||(u.style.fontSize=l+"px")})}};return t}); -Ink.createModule("Ink.Dom.Element",1,[],function(){"use strict";var e={get:function(e){return e!==void 0?"string"==typeof e?document.getElementById(e):e:null},create:function(e,t){var n=document.createElement(e);for(var i in t)t.hasOwnProperty(i)&&("className"===i&&(i="class"),n.setAttribute(i,t[i]));return n},remove:function(e){var t;e&&(t=e.parentNode)&&t.removeChild(e)},scrollTo:function(e){if(e=this.get(e)){if(e.scrollIntoView)return e.scrollIntoView();var t={},n=0,i=0;do n+=e.offsetTop||0,i+=e.offsetLeft||0,e=e.offsetParent;while(e);t={x:i,y:n},window.scrollTo(t.x,t.y)}},offsetTop:function(e){return this.offset(e)[1]},offsetLeft:function(e){return this.offset(e)[0]},positionedOffset:function(e){var t=0,n=0;e=this.get(e);do if(t+=e.offsetTop||0,n+=e.offsetLeft||0,e=e.offsetParent){if("body"===e.tagName.toLowerCase())break;var i=e.style.position;if(!i&&e.currentStyle&&(i=e.currentStyle.position),(!i||"auto"===i)&&"undefined"!=typeof getComputedStyle){var r=getComputedStyle(e,null);i=r?r.position:null}if("relative"===i||"absolute"===i)break}while(e);return[n,t]},offset:function(e){e=Ink.i(e);var t,n,i,r,o=["border-left-width","border-top-width"],s=[0,0],a=this._getPropPx,l=Ink.getModule("Ink.Dom.Browser",1);do r=window.getComputedStyle?window.getComputedStyle(e,null):e.currentStyle,t=[0|e.offsetLeft,0|e.offsetTop],n=[a(r,o[0]),a(r,o[1])],l.OPERA?(s[0]+=t[0],s[1]+=t[1]):(s[0]+=t[0]+n[0],s[1]+=t[1]+n[1]),i=e.offsetParent;while(e=i);return n=[a(r,o[0]),a(r,o[1])],l.GECKO?(s[0]+=n[0],s[1]+=n[1]):l.OPERA||(s[0]-=n[0],s[1]-=n[1]),s},scroll:function(e){return e=e?Ink.i(e):document.body,[window.pageXOffset?window.pageXOffset:e.scrollLeft,window.pageYOffset?window.pageYOffset:e.scrollTop]},_getPropPx:function(e,t){var n,i,r=e.getPropertyValue?e.getPropertyValue(t):e[t];return r?(i=r.indexOf("px"),n=-1===i?0:parseInt(r,10)):n=0,n},offset2:function(e){return this.offset(e)},hasAttribute:function(e,t){return e.hasAttribute?e.hasAttribute(t):!!e.getAttribute(t)},insertAfter:function(e,t){(t=this.get(t))&&t.parentNode.insertBefore(e,t.nextSibling)},insertTop:function(e,t){(t=this.get(t))&&t.insertBefore(e,t.firstChild)},textContent:function(e){e=Ink.i(e);var t,n,i,r;switch(e&&e.nodeType){case 9:return this.textContent(e.documentElement||e.body&&e.body.parentNode||e.body);case 1:if(t=e.innerText,t!==void 0)return t;case 11:if(t=e.textContent,t!==void 0)return t;if(e.firstChild===e.lastChild)return this.textContent(e.firstChild);for(t=[],i=e.childNodes,n=0,r=i.length;r>n;++n)t.push(this.textContent(i[n]));return t.join("");case 3:case 4:return e.nodeValue}return""},setTextContent:function(e,t){switch(e=Ink.i(e),e&&e.nodeType){case 1:if("innerText"in e){e.innerText=t;break}case 11:if("textContent"in e){e.textContent=t;break}case 9:for(;e.firstChild;)e.removeChild(e.firstChild);if(""!==t){var n=e.ownerDocument||e;e.appendChild(n.createTextNode(t))}break;case 3:case 4:e.nodeValue=t}},isLink:function(e){var t=e&&1===e.nodeType&&(/^a|area$/i.test(e.tagName)||e.hasAttributeNS&&e.hasAttributeNS("http://www.w3.org/1999/xlink","href"));return!!t},isAncestorOf:function(e,t){if(!t||!e)return!1;if(t.compareDocumentPosition)return 0!==(16&e.compareDocumentPosition(t));for(;t=t.parentNode;)if(t===e)return!0;return!1},descendantOf:function(e,t){return e!==t&&this.isAncestorOf(e,t)},firstElementChild:function(e){if(!e)return null;if("firstElementChild"in e)return e.firstElementChild;for(var t=e.firstChild;t&&1!==t.nodeType;)t=t.nextSibling;return t},lastElementChild:function(e){if(!e)return null;if("lastElementChild"in e)return e.lastElementChild;for(var t=e.lastChild;t&&1!==t.nodeType;)t=t.previousSibling;return t},nextElementSibling:function(e){var t=null;if(!e)return t;if("nextElementSibling"in e)return e.nextElementSibling;for(t=e.nextSibling;t&&1!==t.nodeType;)t=t.nextSibling;return t},previousElementSibling:function(e){var t=null;if(!e)return t;if("previousElementSibling"in e)return e.previousElementSibling;for(t=e.previousSibling;t&&1!==t.nodeType;)t=t.previousSibling;return t},elementWidth:function(e){return"string"==typeof e&&(e=document.getElementById(e)),e.offsetWidth},elementHeight:function(e){return"string"==typeof e&&(e=document.getElementById(e)),e.offsetHeight},elementLeft:function(e){return"string"==typeof e&&(e=document.getElementById(e)),e.offsetLeft},elementTop:function(e){return"string"==typeof e&&(e=document.getElementById(e)),e.offsetTop},elementDimensions:function(e){return e=Ink.i(e),[e.offsetWidth,e.offsetHeight]},outerDimensions:function(t){var n=e.elementDimensions(t),i=Ink.getModule("Ink.Dom.Css_1");return[n[0]+parseFloat(i.getStyle(t,"marginLeft")||0)+parseFloat(i.getStyle(t,"marginRight")||0),n[1]+parseFloat(i.getStyle(t,"marginTop")||0)+parseFloat(i.getStyle(t,"marginBottom")||0)]},inViewport:function(t,n){var i=Ink.i(t).getBoundingClientRect();return n?i.bottom>0&&i.left0:i.top>0&&i.right0},clonePosition:function(e,t){var n=this.offset(t);return e.style.left=n[0]+"px",e.style.top=n[1]+"px",e},ellipsizeText:function(e,t){if(e=Ink.i(e))for(;e&&e.scrollHeight>e.offsetHeight+8;)e.textContent=e.textContent.replace(/(\s+\S+)\s*$/,t||"…")},findUpwardsHaving:function(e,t){for(;e&&1===e.nodeType;){if(t(e))return e;e=e.parentNode}return!1},findUpwardsByClass:function(e,t){var n=RegExp("(^|\\s)"+t+"(\\s|$)"),i=function(e){var t=e.className;return t&&n.test(t)};return this.findUpwardsHaving(e,i)},findUpwardsByTag:function(e,t){t=t.toUpperCase();var n=function(e){return e.nodeName&&e.nodeName.toUpperCase()===t};return this.findUpwardsHaving(e,n)},findUpwardsById:function(e,t){var n=function(e){return e.id===t};return this.findUpwardsHaving(e,n)},findUpwardsBySelector:function(e,t){if(Ink.Dom===void 0||Ink.Dom.Selector===void 0)throw Error("This method requires Ink.Dom.Selector");var n=function(e){return Ink.Dom.Selector.matchesSelector(e,t)};return this.findUpwardsHaving(e,n)},getChildrenText:function(e,t){var n,i,r,o=e.childNodes,s=o.length,a="";if(!e)return a;for(i=0;s>i;++i)n=o[i],n&&3===n.nodeType&&(r=this._trimString(n.data+""),r.length>0?(a+=r,t&&e.removeChild(n)):e.removeChild(n));return a},_trimString:function(e){return String.prototype.trim?e.trim():e.replace(/^\s*/,"").replace(/\s*$/,"")},getSelectValues:function(e){for(var t=Ink.i(e),n=[],i=0;t.options.length>i;++i)n.push(t.options[i].value);return n},_normalizeData:function(e){for(var t,n=[],i=0,r=e.length;r>i;++i)t=e[i],t instanceof Array?1===t.length&&t.push(t[0]):t=[t,t],n.push(t);return n},fillSelect:function(e,t,n,i){var r=Ink.i(e);if(r){r.innerHTML="";var o,s;n||(s=document.createElement("option"),s.setAttribute("value",""),r.appendChild(s)),t=this._normalizeData(t);for(var a=0,l=t.length;l>a;++a)o=t[a],s=document.createElement("option"),s.setAttribute("value",o[0]),o.length>2&&s.setAttribute("extra",o[2]),s.appendChild(document.createTextNode(o[1])),o[0]===i&&s.setAttribute("selected","selected"),r.appendChild(s)}},fillSelect2:function(e,t){e=Ink.i(e),e.innerHTML="";var n={skipEmpty:!1,skipCreate:!1,emptyLabel:"none",createLabel:"create",optionsGroupLabel:"groups",emptyOptionsGroupLabel:"none exist",defaultValue:""};if(!t)throw"param opts is a requirement!";if(!t.data)throw"opts.data is a requirement!";t=Ink.extendObj(n,t);var i,r,o=document.createElement("optgroup");o.setAttribute("label",t.optionsGroupLabel),t.data=this._normalizeData(t.data),t.skipCreate||t.data.unshift(["$create$",t.createLabel]),t.skipEmpty||t.data.unshift(["",t.emptyLabel]);for(var s=0,a=t.data.length;a>s;++s)r=t.data[s],i=document.createElement("option"),i.setAttribute("value",r[0]),i.appendChild(document.createTextNode(r[1])),r[0]===t.defaultValue&&i.setAttribute("selected","selected"),""===r[0]||"$create$"===r[0]?e.appendChild(i):o.appendChild(i);var l=function(e){var t=e[e.length-1][0];return""===t||"$create$"===t};l(t.data)&&(i=document.createElement("option"),i.setAttribute("value","$dummy$"),i.setAttribute("disabled","disabled"),i.appendChild(document.createTextNode(t.emptyOptionsGroupLabel)),o.appendChild(i)),e.appendChild(o);var u=function(t,n){var i=e.options[e.options.length-1];i.getAttribute("disabled")&&i.parentNode.removeChild(i),i=document.createElement("option"),i.setAttribute("value",t),i.appendChild(document.createTextNode(n)),o.appendChild(i),e.options[e.options.length-1].setAttribute("selected",!0)};t.skipCreate||(e.onchange=function(){"$create$"===e.value&&"function"==typeof t.onCreate&&t.onCreate(e,u)})},fillRadios:function(e,t,n,i,r,o){var s=Ink.i(e);for(s=s.nextSibling;s&&1!==s.nodeType;)s=s.nextSibling;var a=document.createElement("span");s?s.parentNode.insertBefore(a,s):Ink.i(e).appendChild(a),n=this._normalizeData(n),"]"!==t.substring(t.length-1)&&(t+="[]");var l,u;i||(u=document.createElement("input"),u.setAttribute("type","radio"),u.setAttribute("name",t),u.setAttribute("value",""),a.appendChild(u),o&&a.appendChild(document.createElement(o)));for(var d=0;n.length>d;++d)l=n[d],u=document.createElement("input"),u.setAttribute("type","radio"),u.setAttribute("name",t),u.setAttribute("value",l[0]),a.appendChild(u),a.appendChild(document.createTextNode(l[1])),o&&a.appendChild(document.createElement(o)),l[0]===r&&(u.checked=!0);return a},fillChecks:function(e,t,n,i,r){var o=Ink.i(e);for(o=o.nextSibling;o&&1!==o.nodeType;)o=o.nextSibling;var s=document.createElement("span");o?o.parentNode.insertBefore(s,o):Ink.i(e).appendChild(s),n=this._normalizeData(n),"]"!==t.substring(t.length-1)&&(t+="[]");for(var a,l,u=0;n.length>u;++u)a=n[u],l=document.createElement("input"),l.setAttribute("type","checkbox"),l.setAttribute("name",t),l.setAttribute("value",a[0]),s.appendChild(l),s.appendChild(document.createTextNode(a[1])),r&&s.appendChild(document.createElement(r)),a[0]===i&&(l.checked=!0);return s},parentIndexOf:function(e,t){for(var n,i=0,r=0,o=e.childNodes.length;o>r;++r)if(n=e.childNodes[r],1===n.nodeType){if(n===t)return i;++i}return-1},nextSiblings:function(e){if("string"==typeof e&&(e=document.getElementById(e)),"object"==typeof e&&null!==e&&e.nodeType&&1===e.nodeType){for(var t=[],n=e.parentNode.children,i=this.parentIndexOf(e.parentNode,e),r=++i,o=n.length;o>r;r++)t.push(n[r]);return t}return[]},previousSiblings:function(e){if("string"==typeof e&&(e=document.getElementById(e)),"object"==typeof e&&null!==e&&e.nodeType&&1===e.nodeType){for(var t=[],n=e.parentNode.children,i=this.parentIndexOf(e.parentNode,e),r=0,o=i;o>r;r++)t.push(n[r]);return t}return[]},siblings:function(e){if("string"==typeof e&&(e=document.getElementById(e)),"object"==typeof e&&null!==e&&e.nodeType&&1===e.nodeType){for(var t=[],n=e.parentNode.children,i=0,r=n.length;r>i;i++)e!==n[i]&&t.push(n[i]);return t}return[]},childElementCount:function(e){return e=Ink.i(e),"childElementCount"in e?e.childElementCount:e?this.siblings(e).length+1:0},appendHTML:function(e,t){var n=document.createElement("div");n.innerHTML=t;for(var i=n.children,r=0;i.length>r;r++)e.appendChild(i[r])},prependHTML:function(e,t){var n=document.createElement("div");n.innerHTML=t;for(var i=e.firstChild,r=n.children,o=r.length-1;o>=0;o--)e.insertBefore(r[o],i),i=e.firstChild},removeTextNodeChildren:function(e){var t,n,i=e;for(e=e.firstChild;e;)n=3===e.nodeType,t=e,e=e.nextSibling,n&&i.removeChild(t)},htmlToFragment:function(e){return this.htmlToFragment="function"==typeof document.createRange&&"function"==typeof Range.prototype.createContextualFragment?function(e){var t;return"string"!=typeof e?document.createDocumentFragment():(t=document.createRange(),t.selectNode(document.body),t.createContextualFragment(e))}:function(e){var t,n,i=document.createDocumentFragment();if("string"!=typeof e)return i;for(t=document.createElement("div"),t.innerHTML=e;n=t.firstChild;)i.appendChild(n);return i},this.htmlToFragment.call(this,e)},_camelCase:function(e){return e?e.replace(/-(\w)/g,function(e,t){return t.toUpperCase()}):e},data:function(e){var t;if("object"!=typeof e&&"string"!=typeof e)throw"[Ink.Dom.Element.data] :: Invalid selector defined";if("object"==typeof e)t=e;else{var n=Ink.getModule("Ink.Dom.Selector",1);if(!n)throw"[Ink.Dom.Element.data] :: This method requires Ink.Dom.Selector - v1";if(t=n.select(e),0>=t.length)throw"[Ink.Dom.Element.data] :: Can't find any element with the specified selector";t=t[0]}var i,r,o,s={},a=t.attributes||[];if(a)for(var l=0,u=a.length;u>l;++l)i=a[l],r=i.name,o=i.value,r&&0===r.indexOf("data-")&&(s[this._camelCase(r.replace("data-",""))]=o);return s},moveCursorTo:function(e,t){if(e.setSelectionRange)e.setSelectionRange(t,t);else{var n=e.createTextRange();n.collapse(!0),n.moveEnd("character",t),n.moveStart("character",t),n.select()}},pageWidth:function(){var e;e=window.innerWidth&&window.scrollMaxX?window.innerWidth+window.scrollMaxX:document.body.scrollWidth>document.body.offsetWidth?document.body.scrollWidth:document.body.offsetWidth;var t;return window.self.innerWidth?t=document.documentElement.clientWidth?document.documentElement.clientWidth:window.self.innerWidth:document.documentElement&&document.documentElement.clientWidth?t=document.documentElement.clientWidth:document.body&&(t=document.body.clientWidth),t>e?e:t},pageHeight:function(){var e;e=window.innerHeight&&window.scrollMaxY?window.innerHeight+window.scrollMaxY:document.body.scrollHeight>document.body.offsetHeight?document.body.scrollHeight:document.body.offsetHeight;var t;return window.self.innerHeight?t=window.self.innerHeight:document.documentElement&&document.documentElement.clientHeight?t=document.documentElement.clientHeight:document.body&&(t=document.body.clientHeight),t>e?t:e},viewportWidth:function(){return window.innerWidth!==void 0?window.innerWidth:document.documentElement&&document.documentElement.offsetWidth!==void 0?document.documentElement.offsetWidth:void 0},viewportHeight:function(){return window.innerHeight!==void 0?window.innerHeight:document.documentElement&&document.documentElement.offsetHeight!==void 0?document.documentElement.offsetHeight:void 0},scrollWidth:function(){return window.self.pageXOffset!==void 0?window.self.pageXOffset:document.documentElement!==void 0&&document.documentElement.scrollLeft!==void 0?document.documentElement.scrollLeft:document.body.scrollLeft},scrollHeight:function(){return window.self.pageYOffset!==void 0?window.self.pageYOffset:document.documentElement!==void 0&&document.documentElement.scrollTop!==void 0?document.documentElement.scrollTop:document.body.scrollTop}};return e}); -Ink.createModule("Ink.Dom.Event",1,[],function(){"use strict";var e={KEY_BACKSPACE:8,KEY_TAB:9,KEY_RETURN:13,KEY_ESC:27,KEY_LEFT:37,KEY_UP:38,KEY_RIGHT:39,KEY_DOWN:40,KEY_DELETE:46,KEY_HOME:36,KEY_END:35,KEY_PAGEUP:33,KEY_PAGEDOWN:34,KEY_INSERT:45,throttle:function(e,t){t=t||0;var n,o=0,r=function(){var i=+new Date,s=i-o;if(s>=t)return o=i,e.apply(this,[].slice.call(arguments));var a=this,l=[].slice.call(arguments);clearTimeout(n),n=setTimeout(function(){return r.apply(a,l)})};return r},element:function(e){var t=e.target||"mouseout"===e.type&&e.fromElement||"mouseleave"===e.type&&e.fromElement||"mouseover"===e.type&&e.toElement||"mouseenter"===e.type&&e.toElement||e.srcElement||null;return!t||3!==t.nodeType&&4!==t.nodeType?t:t.parentNode},relatedTarget:function(e){var t=e.relatedTarget||"mouseout"===e.type&&e.toElement||"mouseleave"===e.type&&e.toElement||"mouseover"===e.type&&e.fromElement||"mouseenter"===e.type&&e.fromElement||null;return!t||3!==t.nodeType&&4!==t.nodeType?t:t.parentNode},findElement:function(e,t,n){for(var o=this.element(e);;){if(o.nodeName.toLowerCase()===t.toLowerCase())return o;if(o=o.parentNode,!o)return n?!1:document;if(!o.parentNode)return n?!1:document}},fire:function(e,t,n){e=Ink.i(e);var o,r;if(r=document.createEvent?{DOMActivate:!0,DOMFocusIn:!0,DOMFocusOut:!0,focus:!0,focusin:!0,focusout:!0,blur:!0,load:!0,unload:!0,abort:!0,error:!0,select:!0,change:!0,submit:!0,reset:!0,resize:!0,scroll:!0,click:!0,dblclick:!0,mousedown:!0,mouseenter:!0,mouseleave:!0,mousemove:!0,mouseover:!0,mouseout:!0,mouseup:!0,mousewheel:!0,wheel:!0,textInput:!0,keydown:!0,keypress:!0,keyup:!0,compositionstart:!0,compositionupdate:!0,compositionend:!0,DOMSubtreeModified:!0,DOMNodeInserted:!0,DOMNodeRemoved:!0,DOMNodeInsertedIntoDocument:!0,DOMNodeRemovedFromDocument:!0,DOMAttrModified:!0,DOMCharacterDataModified:!0,DOMAttributeNameChanged:!0,DOMElementNameChanged:!0,hashchange:!0}:{onabort:!0,onactivate:!0,onafterprint:!0,onafterupdate:!0,onbeforeactivate:!0,onbeforecopy:!0,onbeforecut:!0,onbeforedeactivate:!0,onbeforeeditfocus:!0,onbeforepaste:!0,onbeforeprint:!0,onbeforeunload:!0,onbeforeupdate:!0,onblur:!0,onbounce:!0,oncellchange:!0,onchange:!0,onclick:!0,oncontextmenu:!0,oncontrolselect:!0,oncopy:!0,oncut:!0,ondataavailable:!0,ondatasetchanged:!0,ondatasetcomplete:!0,ondblclick:!0,ondeactivate:!0,ondrag:!0,ondragend:!0,ondragenter:!0,ondragleave:!0,ondragover:!0,ondragstart:!0,ondrop:!0,onerror:!0,onerrorupdate:!0,onfilterchange:!0,onfinish:!0,onfocus:!0,onfocusin:!0,onfocusout:!0,onhashchange:!0,onhelp:!0,onkeydown:!0,onkeypress:!0,onkeyup:!0,onlayoutcomplete:!0,onload:!0,onlosecapture:!0,onmessage:!0,onmousedown:!0,onmouseenter:!0,onmouseleave:!0,onmousemove:!0,onmouseout:!0,onmouseover:!0,onmouseup:!0,onmousewheel:!0,onmove:!0,onmoveend:!0,onmovestart:!0,onoffline:!0,ononline:!0,onpage:!0,onpaste:!0,onprogress:!0,onpropertychange:!0,onreadystatechange:!0,onreset:!0,onresize:!0,onresizeend:!0,onresizestart:!0,onrowenter:!0,onrowexit:!0,onrowsdelete:!0,onrowsinserted:!0,onscroll:!0,onselect:!0,onselectionchange:!0,onselectstart:!0,onstart:!0,onstop:!0,onstorage:!0,onstoragecommit:!0,onsubmit:!0,ontimeout:!0,onunload:!0},null!==e&&void 0!==e){e===document&&document.createEvent&&!e.dispatchEvent&&(e=document.documentElement),document.createEvent?(o=document.createEvent("HTMLEvents"),r[t]===void 0?o.initEvent("dataavailable",!0,!0):o.initEvent(t,!0,!0)):(o=document.createEventObject(),o.eventType=r["on"+t]===void 0?"ondataavailable":"on"+t),o.eventName=t,o.memo=n||{};try{if(document.createEvent)e.dispatchEvent(o);else{if(!e.fireEvent)return;e.fireEvent(o.eventType,o)}}catch(i){}return o}},_callbackForCustomEvents:function(e,t,n){var o="hashchange"===t&&e.attachEvent&&!window.onhashchange,r=-1!==t.indexOf(":");if(o||r){var i=n;return Ink.bindEvent(function(e,t,n){e.eventName===t&&(window.addEventListener&&(window.event=e),n())},this,t,i)}return null},observe:function(e,t,n,o){if(e=Ink.i(e),null!==e&&void 0!==e){var r=this._callbackForCustomEvents(e,t,n);return r&&(n=r,t="dataavailable"),e.addEventListener?e.addEventListener(t,n,!!o):e.attachEvent("on"+t,n),n}},observeMulti:function(e,t,n,o){if("string"==typeof e?e=Ink.ss(e):e instanceof Element&&(e=[e]),!e[0])return!1;var r=this._callbackForCustomEvents(e[0],t,n);r&&(n=r,t="dataavailable");for(var i=0,s=e.length;s>i;i++)this.observe(e[i],t,n,o);return n},stopObserving:function(e,t,n,o){e=Ink.i(e),null!==e&&void 0!==e&&(e.removeEventListener?e.removeEventListener(t,n,!!o):e.detachEvent("on"+t,n))},stop:function(e){null!==e.cancelBubble&&(e.cancelBubble=!0),e.stopPropagation&&e.stopPropagation(),e.preventDefault&&e.preventDefault(),window.attachEvent&&(e.returnValue=!1),null!==e.cancel&&(e.cancel=!0)},stopPropagation:function(e){null!==e.cancelBubble&&(e.cancelBubble=!0),e.stopPropagation&&e.stopPropagation()},stopDefault:function(e){e.preventDefault&&e.preventDefault(),window.attachEvent&&(e.returnValue=!1),null!==e.cancel&&(e.cancel=!0)},pointer:function(e){return{x:e.pageX||e.clientX+(document.documentElement.scrollLeft||document.body.scrollLeft),y:e.pageY||e.clientY+(document.documentElement.scrollTop||document.body.scrollTop)}},pointerX:function(e){return e.pageX||e.clientX+(document.documentElement.scrollLeft||document.body.scrollLeft)},pointerY:function(e){return e.pageY||e.clientY+(document.documentElement.scrollTop||document.body.scrollTop)},isLeftClick:function(e){if(window.addEventListener){if(0===e.button)return!0;if("touch"===e.type.substring(0,5)&&null===e.button)return!0}else if(1===e.button)return!0;return!1},isRightClick:function(e){return 2===e.button},isMiddleClick:function(e){return window.addEventListener?1===e.button:4===e.button},getCharFromKeyboardEvent:function(e,t){var n=e.keyCode,o=String.fromCharCode(n),r=e.shiftKey;if(n>=65&&90>=n)return"boolean"==typeof t&&(r=t),r?o:o.toLowerCase();if(n>=96&&105>=n)return String.fromCharCode(48+(n-96));switch(n){case 109:case 189:return"-";case 107:case 187:return"+"}return o},debug:function(){}};return e}); -Ink.createModule("Ink.Dom.FormSerialize",1,[],function(){"use strict";var e={serialize:function(e){e=Ink.i(e);var t=this._getFieldNameInputsMap(e),n={};for(var o in t)if(t.hasOwnProperty(o))if(null!==o){var r=o.replace(/\[\]$/,"");n[r]=this._getValuesOfField(t[o])}else n[o]=this._getValuesOfField(t[o]);return delete n["null"],n},fillIn:function(e,t){e=Ink.i(e);var n=this._getFieldNameInputsMap(e);delete n["null"];for(var o in t)t.hasOwnProperty(o)&&this._setValuesOfField(n[o],t[o])},_getFieldNameInputsMap:function(e){for(var t,n,o,r={},i=0,s=e.elements.length;s>i;++i)o=e.elements[i],t=o.getAttribute("name"),n=o.nodeName.toLowerCase(),"fieldset"!==n&&(void 0===r[t]?r[t]=[o]:r[t].push(o));return r},_getValuesOfField:function(e){var t,n,o,r,i,s,a=e[0].nodeName.toLowerCase(),l=e[0].getAttribute("type"),u=e[0].value,c=[];switch(a){case"select":for(t=0,n=e.length;n>t;++t)for(c[t]=[],s=e[t].getAttribute("multiple"),o=0,r=e[t].options.length;r>o;++o)if(i=e[t].options[o],i.selected){if(!s){c[t]=i.value;break}c[t].push(i.value)}return e.length>0&&/\[[^\]]*\]$/.test(e[0].getAttribute("name"))?c:c[0];case"textarea":case"input":if("checkbox"===l||"radio"===l){for(t=0,n=e.length;n>t;++t)i=e[t],i.checked&&c.push(i.value);return"checkbox"===l?e.length>1?c:!!c.length:e.length>1?c[0]:!!c.length}if(e.length>0&&/\[[^\]]*\]$/.test(e[0].getAttribute("name"))){var d=[];for(t=0,n=e.length;n>t;++t)d.push(e[t].value);return d}return u;default:return void 0}},_valInArray:function(e,t){for(var n=0,o=t.length;o>n;++n)if(t[n]===e)return!0;return!1},_setValuesOfField:function(e,t){if(e){var n,o,r,i=e[0].nodeName.toLowerCase(),s=e[0].getAttribute("type");switch(i){case"select":if(e.length>1)throw"Got multiple select elements with same name!";for(n=0,o=e[0].options.length;o>n;++n)r=e[0].options[n],r.selected=t instanceof Array?this._valInArray(r.value,t):r.value===t;break;case"textarea":case"input":if("checkbox"===s||"radio"===s)for(n=0,o=e.length;o>n;++n)r=e[n],r.checked=t instanceof Array?this._valInArray(r.value,t):e.length>1?r.value===t:!!t;else{if(e.length>1)throw"Got multiple input elements with same name!";"file"!==s&&(e[0].value=t)}break;default:throw'Unsupported element: "'+i+'"!'}}}};return e}); -Ink.createModule("Ink.Dom.Loaded",1,[],function(){"use strict";var e={_contexts:[],run:function(e,t){t||(t=e,e=window);for(var n,o=0,r=this._contexts.length;r>o;o++)if(this._contexts[o][0]===e){n=this._contexts[o][1];break}n||(n={cbQueue:[],win:e,doc:e.document,root:e.document.documentElement,done:!1,top:!0},n.handlers={checkState:Ink.bindEvent(this._checkState,this,n),poll:Ink.bind(this._poll,this,n)},this._contexts.push([e,n]));var i=n.doc.addEventListener;n.add=i?"addEventListener":"attachEvent",n.rem=i?"removeEventListener":"detachEvent",n.pre=i?"":"on",n.det=i?"DOMContentLoaded":"onreadystatechange",n.wet=n.pre+"load";var s=n.handlers.checkState,a="complete"===n.doc.readyState&&"about:blank"!=""+n.win.location;if(a)setTimeout(Ink.bind(function(){t.call(n.win,"lazy")},this),0);else{n.cbQueue.push(t),n.doc[n.add](n.det,s),n.win[n.add](n.wet,s);var l=1;try{l=n.win.frameElement}catch(u){}if(!i&&n.root&&n.root.doScroll){try{n.top=!l}catch(u){}n.top&&this._poll(n)}}},_checkState:function(e,t){if(e&&("readystatechange"!==e.type||"complete"===t.doc.readyState)){var n="load"===e.type?t.win:t.doc;n[t.rem](t.pre+e.type,t.handlers.checkState,!1),this._ready(t)}},_poll:function(e){try{e.root.doScroll("left")}catch(t){return setTimeout(e.handlers.poll,50)}this._ready(e)},_ready:function(e){if(!e.done){e.done=!0;for(var t=0;e.cbQueue.length>t;++t)e.cbQueue[t].call(e.win);e.cbQueue=[]}}};return e}); -Ink.createModule("Ink.Dom.Selector",1,[],function(){"use strict";function e(e){return ht.test(e+"")}function t(){var e,t=[];return e=function(n,r){return t.push(n+=" ")>E.cacheLength&&delete e[t.shift()],e[n]=r}}function n(e){return e[P]=!0,e}function r(e){var t=A.createElement("div");try{return!!e(t)}catch(n){return!1}finally{t=null}}function o(e,t,n,r){var o,i,s,a,l,d,f,p,h,m;if((t?t.ownerDocument||t:B)!==A&&O(t),t=t||A,n=n||[],!e||"string"!=typeof e)return n;if(1!==(a=t.nodeType)&&9!==a)return[];if(R&&!r){if(o=mt.exec(e))if(s=o[1]){if(9===a){if(i=t.getElementById(s),!i||!i.parentNode)return n;if(i.id===s)return n.push(i),n}else if(t.ownerDocument&&(i=t.ownerDocument.getElementById(s))&&M(t,i)&&i.id===s)return n.push(i),n}else{if(o[2])return Q.apply(n,t.getElementsByTagName(e)),n;if((s=o[3])&&j.getElementsByClassName&&t.getElementsByClassName)return Q.apply(n,t.getElementsByClassName(s)),n}if(j.qsa&&!L.test(e)){if(f=!0,p=P,h=t,m=9===a&&e,1===a&&"object"!==t.nodeName.toLowerCase()){for(d=u(e),(f=t.getAttribute("id"))?p=f.replace(yt,"\\$&"):t.setAttribute("id",p),p="[id='"+p+"'] ",l=d.length;l--;)d[l]=p+c(d[l]);h=pt.test(e)&&t.parentNode||t,m=d.join(",")}if(m)try{return Q.apply(n,h.querySelectorAll(m)),n}catch(g){}finally{f||t.removeAttribute("id")}}}return y(e.replace(at,"$1"),t,n,r)}function i(e,t){var n=t&&e,r=n&&(~t.sourceIndex||Y)-(~e.sourceIndex||Y);if(r)return r;if(n)for(;n=n.nextSibling;)if(n===t)return-1;return e?1:-1}function s(e){return function(t){var n=t.nodeName.toLowerCase();return"input"===n&&t.type===e}}function a(e){return function(t){var n=t.nodeName.toLowerCase();return("input"===n||"button"===n)&&t.type===e}}function l(e){return n(function(t){return t=+t,n(function(n,r){for(var o,i=e([],n.length,t),s=i.length;s--;)n[o=i[s]]&&(n[o]=!(r[o]=n[o]))})})}function u(e,t){var n,r,i,s,a,l,u,c=W[e+" "];if(c)return t?0:c.slice(0);for(a=e,l=[],u=E.preFilter;a;){(!n||(r=lt.exec(a)))&&(r&&(a=a.slice(r[0].length)||a),l.push(i=[])),n=!1,(r=ut.exec(a))&&(n=r.shift(),i.push({value:n,type:r[0].replace(at," ")}),a=a.slice(n.length));for(s in E.filter)!(r=ft[s].exec(a))||u[s]&&!(r=u[s](r))||(n=r.shift(),i.push({value:n,type:s,matches:r}),a=a.slice(n.length));if(!n)break}return t?a.length:a?o.error(e):W(e,l).slice(0)}function c(e){for(var t=0,n=e.length,r="";n>t;t++)r+=e[t].value;return r}function d(e,t,n){var r=t.dir,o=n&&"parentNode"===r,i=F++;return t.first?function(t,n,i){for(;t=t[r];)if(1===t.nodeType||o)return e(t,n,i)}:function(t,n,s){var a,l,u,c=q+" "+i;if(s){for(;t=t[r];)if((1===t.nodeType||o)&&e(t,n,s))return!0}else for(;t=t[r];)if(1===t.nodeType||o)if(u=t[P]||(t[P]={}),(l=u[r])&&l[0]===c){if((a=l[1])===!0||a===C)return a===!0}else if(l=u[r]=[c],l[1]=e(t,n,s)||C,l[1]===!0)return!0}}function f(e){return e.length>1?function(t,n,r){for(var o=e.length;o--;)if(!e[o](t,n,r))return!1;return!0}:e[0]}function p(e,t,n,r,o){for(var i,s=[],a=0,l=e.length,u=null!=t;l>a;a++)(i=e[a])&&(!n||n(i,r,o))&&(s.push(i),u&&t.push(a));return s}function h(e,t,r,o,i,s){return o&&!o[P]&&(o=h(o)),i&&!i[P]&&(i=h(i,s)),n(function(n,s,a,l){var u,c,d,f=[],h=[],m=s.length,g=n||v(t||"*",a.nodeType?[a]:a,[]),y=!e||!n&&t?g:p(g,f,e,a,l),b=r?i||(n?e:m||o)?[]:s:y;if(r&&r(y,b,a,l),o)for(u=p(b,h),o(u,[],a,l),c=u.length;c--;)(d=u[c])&&(b[h[c]]=!(y[h[c]]=d));if(n){if(i||e){if(i){for(u=[],c=b.length;c--;)(d=b[c])&&u.push(y[c]=d);i(null,b=[],u,l)}for(c=b.length;c--;)(d=b[c])&&(u=i?et.call(n,d):f[c])>-1&&(n[u]=!(s[u]=d))}}else b=p(b===s?b.splice(m,b.length):b),i?i(null,s,b,l):Q.apply(s,b)})}function m(e){for(var t,n,r,o=e.length,i=E.relative[e[0].type],s=i||E.relative[" "],a=i?1:0,l=d(function(e){return e===t},s,!0),u=d(function(e){return et.call(t,e)>-1},s,!0),p=[function(e,n,r){return!i&&(r||n!==N)||((t=n).nodeType?l(e,n,r):u(e,n,r))}];o>a;a++)if(n=E.relative[e[a].type])p=[d(f(p),n)];else{if(n=E.filter[e[a].type].apply(null,e[a].matches),n[P]){for(r=++a;o>r&&!E.relative[e[r].type];r++);return h(a>1&&f(p),a>1&&c(e.slice(0,a-1)).replace(at,"$1"),n,r>a&&m(e.slice(a,r)),o>r&&m(e=e.slice(r)),o>r&&c(e))}p.push(n)}return f(p)}function g(e,t){var r=0,i=t.length>0,s=e.length>0,a=function(n,a,l,u,c){var d,f,h,m=[],g=0,v="0",y=n&&[],b=null!=c,w=N,T=n||s&&E.find.TAG("*",c&&a.parentNode||a),x=q+=null==w?1:Math.random()||.1;for(b&&(N=a!==A&&a,C=r);null!=(d=T[v]);v++){if(s&&d){for(f=0;h=e[f++];)if(h(d,a,l)){u.push(d);break}b&&(q=x,C=++r)}i&&((d=!h&&d)&&g--,n&&y.push(d))}if(g+=v,i&&v!==g){for(f=0;h=t[f++];)h(y,m,a,l);if(n){if(g>0)for(;v--;)y[v]||m[v]||(m[v]=K.call(u));m=p(m)}Q.apply(u,m),b&&!n&&m.length>0&&g+t.length>1&&o.uniqueSort(u)}return b&&(q=x,N=w),y};return i?n(a):a}function v(e,t,n){for(var r=0,i=t.length;i>r;r++)o(e,t[r],n);return n}function y(e,t,n,r){var o,i,s,a,l,d=u(e);if(!r&&1===d.length){if(i=d[0]=d[0].slice(0),i.length>2&&"ID"===(s=i[0]).type&&9===t.nodeType&&R&&E.relative[i[1].type]){if(t=(E.find.ID(s.matches[0].replace(wt,Ct),t)||[])[0],!t)return n;e=e.slice(i.shift().value.length)}for(o=ft.needsContext.test(e)?0:i.length;o--&&(s=i[o],!E.relative[a=s.type]);)if((l=E.find[a])&&(r=l(s.matches[0].replace(wt,Ct),pt.test(i[0].type)&&t.parentNode||t))){if(i.splice(o,1),e=r.length&&c(i),!e)return Q.apply(n,r),n;break}}return S(e,d)(r,t,!R,n,pt.test(e)),n}function b(){}var w,C,E,T,x,S,N,k,I,O,A,D,R,L,H,_,M,P="sizzle"+-new Date,B=window.document,j={},q=0,F=0,X=t(),W=t(),$=t(),U=!1,J=function(){return 0},V="undefined",Y=1<<31,z=[],K=z.pop,G=z.push,Q=z.push,Z=z.slice,et=z.indexOf||function(e){for(var t=0,n=this.length;n>t;t++)if(this[t]===e)return t;return-1},tt="[\\x20\\t\\r\\n\\f]",nt="(?:\\\\.|[\\w-]|[^\\x00-\\xa0])+",rt=nt.replace("w","w#"),ot="([*^$|!~]?=)",it="\\["+tt+"*("+nt+")"+tt+"*(?:"+ot+tt+"*(?:(['\"])((?:\\\\.|[^\\\\])*?)\\3|("+rt+")|)|)"+tt+"*\\]",st=":("+nt+")(?:\\(((['\"])((?:\\\\.|[^\\\\])*?)\\3|((?:\\\\.|[^\\\\()[\\]]|"+it.replace(3,8)+")*)|.*)\\)|)",at=RegExp("^"+tt+"+|((?:^|[^\\\\])(?:\\\\.)*)"+tt+"+$","g"),lt=RegExp("^"+tt+"*,"+tt+"*"),ut=RegExp("^"+tt+"*([\\x20\\t\\r\\n\\f>+~])"+tt+"*"),ct=RegExp(st),dt=RegExp("^"+rt+"$"),ft={ID:RegExp("^#("+nt+")"),CLASS:RegExp("^\\.("+nt+")"),NAME:RegExp("^\\[name=['\"]?("+nt+")['\"]?\\]"),TAG:RegExp("^("+nt.replace("w","w*")+")"),ATTR:RegExp("^"+it),PSEUDO:RegExp("^"+st),CHILD:RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+tt+"*(even|odd|(([+-]|)(\\d*)n|)"+tt+"*(?:([+-]|)"+tt+"*(\\d+)|))"+tt+"*\\)|)","i"),needsContext:RegExp("^"+tt+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+tt+"*((?:-\\d)?\\d*)"+tt+"*\\)|)(?=[^-]|$)","i")},pt=/[\x20\t\r\n\f]*[+~]/,ht=/^[^{]+\{\s*\[native code/,mt=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,gt=/^(?:input|select|textarea|button)$/i,vt=/^h\d$/i,yt=/'|\\/g,bt=/\=[\x20\t\r\n\f]*([^'"\]]*)[\x20\t\r\n\f]*\]/g,wt=/\\([\da-fA-F]{1,6}[\x20\t\r\n\f]?|.)/g,Ct=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.apply(z=Z.call(B.childNodes),B.childNodes),z[B.childNodes.length].nodeType}catch(Et){Q={apply:z.length?function(e,t){G.apply(e,Z.call(t))}:function(e,t){for(var n=e.length,r=0;e[n++]=t[r++];);e.length=n-1}}}x=o.isXML=function(e){var t=e&&(e.ownerDocument||e).documentElement;return t?"HTML"!==t.nodeName:!1},O=o.setDocument=function(t){var n=t?t.ownerDocument||t:B;return n!==A&&9===n.nodeType&&n.documentElement?(A=n,D=n.documentElement,R=!x(n),j.getElementsByTagName=r(function(e){return e.appendChild(n.createComment("")),!e.getElementsByTagName("*").length}),j.attributes=r(function(e){e.innerHTML="";var t=typeof e.lastChild.getAttribute("multiple");return"boolean"!==t&&"string"!==t}),j.getElementsByClassName=r(function(e){return e.innerHTML="",e.getElementsByClassName&&e.getElementsByClassName("e").length?(e.lastChild.className="e",2===e.getElementsByClassName("e").length):!1}),j.getByName=r(function(e){e.id=P+0,e.appendChild(A.createElement("a")).setAttribute("name",P),e.appendChild(A.createElement("i")).setAttribute("name",P),D.appendChild(e);var t=n.getElementsByName&&n.getElementsByName(P).length===2+n.getElementsByName(P+0).length;return D.removeChild(e),t}),j.sortDetached=r(function(e){return e.compareDocumentPosition&&1&e.compareDocumentPosition(A.createElement("div"))}),E.attrHandle=r(function(e){return e.innerHTML="",e.firstChild&&typeof e.firstChild.getAttribute!==V&&"#"===e.firstChild.getAttribute("href")})?{}:{href:function(e){return e.getAttribute("href",2)},type:function(e){return e.getAttribute("type")}},j.getByName?(E.find.ID=function(e,t){if(typeof t.getElementById!==V&&R){var n=t.getElementById(e);return n&&n.parentNode?[n]:[]}},E.filter.ID=function(e){var t=e.replace(wt,Ct);return function(e){return e.getAttribute("id")===t}}):(E.find.ID=function(e,t){if(typeof t.getElementById!==V&&R){var n=t.getElementById(e);return n?n.id===e||typeof n.getAttributeNode!==V&&n.getAttributeNode("id").value===e?[n]:void 0:[]}},E.filter.ID=function(e){var t=e.replace(wt,Ct);return function(e){var n=typeof e.getAttributeNode!==V&&e.getAttributeNode("id");return n&&n.value===t}}),E.find.TAG=j.getElementsByTagName?function(e,t){return typeof t.getElementsByTagName!==V?t.getElementsByTagName(e):void 0}:function(e,t){var n,r=[],o=0,i=t.getElementsByTagName(e);if("*"===e){for(;n=i[o++];)1===n.nodeType&&r.push(n);return r}return i},E.find.NAME=j.getByName&&function(e,t){return typeof t.getElementsByName!==V?t.getElementsByName(name):void 0},E.find.CLASS=j.getElementsByClassName&&function(e,t){return typeof t.getElementsByClassName!==V&&R?t.getElementsByClassName(e):void 0},H=[],L=[":focus"],(j.qsa=e(n.querySelectorAll))&&(r(function(e){e.innerHTML="",e.querySelectorAll("[selected]").length||L.push("\\["+tt+"*(?:checked|disabled|ismap|multiple|readonly|selected|value)"),e.querySelectorAll(":checked").length||L.push(":checked")}),r(function(e){e.innerHTML="",e.querySelectorAll("[i^='']").length&&L.push("[*^$]="+tt+"*(?:\"\"|'')"),e.querySelectorAll(":enabled").length||L.push(":enabled",":disabled"),e.querySelectorAll("*,:x"),L.push(",.*:")})),(j.matchesSelector=e(_=D.matchesSelector||D.mozMatchesSelector||D.webkitMatchesSelector||D.oMatchesSelector||D.msMatchesSelector))&&r(function(e){j.disconnectedMatch=_.call(e,"div"),_.call(e,"[s!='']:x"),H.push("!=",st)}),L=RegExp(L.join("|")),H=H.length&&RegExp(H.join("|")),M=e(D.contains)||D.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)for(;t=t.parentNode;)if(t===e)return!0;return!1},J=D.compareDocumentPosition?function(e,t){if(e===t)return U=!0,0;var r=t.compareDocumentPosition&&e.compareDocumentPosition&&e.compareDocumentPosition(t);return r?1&r||k&&t.compareDocumentPosition(e)===r?e===n||M(B,e)?-1:t===n||M(B,t)?1:I?et.call(I,e)-et.call(I,t):0:4&r?-1:1:e.compareDocumentPosition?-1:1}:function(e,t){var r,o=0,s=e.parentNode,a=t.parentNode,l=[e],u=[t];if(e===t)return U=!0,0;if(!s||!a)return e===n?-1:t===n?1:s?-1:a?1:0;if(s===a)return i(e,t);for(r=e;r=r.parentNode;)l.unshift(r);for(r=t;r=r.parentNode;)u.unshift(r);for(;l[o]===u[o];)o++;return o?i(l[o],u[o]):l[o]===B?-1:u[o]===B?1:0},A):A},o.matches=function(e,t){return o(e,null,null,t)},o.matchesSelector=function(e,t){if((e.ownerDocument||e)!==A&&O(e),t=t.replace(bt,"='$1']"),j.matchesSelector&&R&&(!H||!H.test(t))&&!L.test(t))try{var n=_.call(e,t);if(n||j.disconnectedMatch||e.document&&11!==e.document.nodeType)return n}catch(r){}return o(t,A,null,[e]).length>0},o.contains=function(e,t){return(e.ownerDocument||e)!==A&&O(e),M(e,t)},o.attr=function(e,t){var n;return(e.ownerDocument||e)!==A&&O(e),R&&(t=t.toLowerCase()),(n=E.attrHandle[t])?n(e):!R||j.attributes?e.getAttribute(t):((n=e.getAttributeNode(t))||e.getAttribute(t))&&e[t]===!0?t:n&&n.specified?n.value:null},o.error=function(e){throw Error("Syntax error, unrecognized expression: "+e)},o.uniqueSort=function(e){var t,n=[],r=0,o=0;if(U=!j.detectDuplicates,k=!j.sortDetached,I=!j.sortStable&&e.slice(0),e.sort(J),U){for(;t=e[o++];)t===e[o]&&(r=n.push(o));for(;r--;)e.splice(n[r],1)}return e},T=o.getText=function(e){var t,n="",r=0,o=e.nodeType;if(o){if(1===o||9===o||11===o){if("string"==typeof e.textContent)return e.textContent;for(e=e.firstChild;e;e=e.nextSibling)n+=T(e)}else if(3===o||4===o)return e.nodeValue}else for(;t=e[r];r++)n+=T(t);return n},E=o.selectors={cacheLength:50,createPseudo:n,match:ft,find:{},relative:{">":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace(wt,Ct),e[3]=(e[4]||e[5]||"").replace(wt,Ct),"~="===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]||o.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]&&o.error(e[0]),e},PSEUDO:function(e){var t,n=!e[5]&&e[2];return ft.CHILD.test(e[0])?null:(e[4]?e[2]=e[4]:n&&ct.test(n)&&(t=u(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(wt,Ct).toLowerCase(),function(t){return t.nodeName&&t.nodeName.toLowerCase()===e})},CLASS:function(e){var t=X[e+" "];return t||(t=RegExp("(^|"+tt+")"+e+"("+tt+"|$)"))&&X(e,function(e){return t.test(e.className||typeof e.getAttribute!==V&&e.getAttribute("class")||"")})},ATTR:function(e,t,n){return function(r){var i=o.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,o){var i="nth"!==e.slice(0,3),s="last"!==e.slice(-4),a="of-type"===t;return 1===r&&0===o?function(e){return!!e.parentNode}:function(t,n,l){var u,c,d,f,p,h,m=i!==s?"nextSibling":"previousSibling",g=t.parentNode,v=a&&t.nodeName.toLowerCase(),y=!l&&!a;if(g){if(i){for(;m;){for(d=t;d=d[m];)if(a?d.nodeName.toLowerCase()===v:1===d.nodeType)return!1;h=m="only"===e&&!h&&"nextSibling"}return!0}if(h=[s?g.firstChild:g.lastChild],s&&y){for(c=g[P]||(g[P]={}),u=c[e]||[],p=u[0]===q&&u[1],f=u[0]===q&&u[2],d=p&&g.childNodes[p];d=++p&&d&&d[m]||(f=p=0)||h.pop();)if(1===d.nodeType&&++f&&d===t){c[e]=[q,p,f];break}}else if(y&&(u=(t[P]||(t[P]={}))[e])&&u[0]===q)f=u[1];else for(;(d=++p&&d&&d[m]||(f=p=0)||h.pop())&&((a?d.nodeName.toLowerCase()!==v:1!==d.nodeType)||!++f||(y&&((d[P]||(d[P]={}))[e]=[q,f]),d!==t)););return f-=o,f===r||0===f%r&&f/r>=0}}},PSEUDO:function(e,t){var r,i=E.pseudos[e]||E.setFilters[e.toLowerCase()]||o.error("unsupported pseudo: "+e);return i[P]?i(t):i.length>1?(r=[e,e,"",t],E.setFilters.hasOwnProperty(e.toLowerCase())?n(function(e,n){for(var r,o=i(e,t),s=o.length;s--;)r=et.call(e,o[s]),e[r]=!(n[r]=o[s])}):function(e){return i(e,0,r)}):i}},pseudos:{not:n(function(e){var t=[],r=[],o=S(e.replace(at,"$1"));return o[P]?n(function(e,t,n,r){for(var i,s=o(e,null,r,[]),a=e.length;a--;)(i=s[a])&&(e[a]=!(t[a]=i))}):function(e,n,i){return t[0]=e,o(t,null,i,r),!r.pop()}}),has:n(function(e){return function(t){return o(e,t).length>0}}),contains:n(function(e){return function(t){return(t.textContent||t.innerText||T(t)).indexOf(e)>-1}}),lang:n(function(e){return dt.test(e||"")||o.error("unsupported lang: "+e),e=e.replace(wt,Ct).toLowerCase(),function(t){var n;do if(n=R?t.lang:t.getAttribute("xml:lang")||t.getAttribute("lang"))return n=n.toLowerCase(),n===e||0===n.indexOf(e+"-");while((t=t.parentNode)&&1===t.nodeType);return!1}}),target:function(e){var t=window.location&&window.location.hash;return t&&t.slice(1)===e.id},root:function(e){return e===D},focus:function(e){return e===A.activeElement&&(!A.hasFocus||A.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!E.pseudos.empty(e)},header:function(e){return vt.test(e.nodeName)},input:function(e){return gt.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:l(function(){return[0]}),last:l(function(e,t){return[t-1]}),eq:l(function(e,t,n){return[0>n?n+t:n]}),even:l(function(e,t){for(var n=0;t>n;n+=2)e.push(n);return e}),odd:l(function(e,t){for(var n=1;t>n;n+=2)e.push(n);return e}),lt:l(function(e,t,n){for(var r=0>n?n+t:n;--r>=0;)e.push(r);return e}),gt:l(function(e,t,n){for(var r=0>n?n+t:n;t>++r;)e.push(r);return e})}};for(w in{radio:!0,checkbox:!0,file:!0,password:!0,image:!0})E.pseudos[w]=s(w);for(w in{submit:!0,reset:!0})E.pseudos[w]=a(w);return S=o.compile=function(e,t){var n,r=[],o=[],i=$[e+" "];if(!i){for(t||(t=u(e)),n=t.length;n--;)i=m(t[n]),i[P]?r.push(i):o.push(i);i=$(e,g(o,r))}return i},E.pseudos.nth=E.pseudos.eq,b.prototype=E.filters=E.pseudos,E.setFilters=new b,j.sortStable=P.split("").sort(J).join("")===P,O(),[0,0].sort(J),j.detectDuplicates=U,{select:o,matches:o.matches,matchesSelector:o.matchesSelector}}); -Ink.createModule("Ink.Dom.Browser","1",[],function(){"use strict";var e={IE:!1,GECKO:!1,OPERA:!1,SAFARI:!1,KONQUEROR:!1,CHROME:!1,model:!1,version:!1,userAgent:!1,init:function(){this.detectBrowser(),this.setDimensions(),this.setReferrer()},setDimensions:function(){var e=0,t=0;"number"==typeof window.innerWidth?(e=window.innerWidth,t=window.innerHeight):document.documentElement&&(document.documentElement.clientWidth||document.documentElement.clientHeight)?(e=document.documentElement.clientWidth,t=document.documentElement.clientHeight):document.body&&(document.body.clientWidth||document.body.clientHeight)&&(e=document.body.clientWidth,t=document.body.clientHeight),this.windowWidth=e,this.windowHeight=t},setReferrer:function(){this.referrer=void 0!==document.referrer?document.referrer.length>0?window.escape(document.referrer):!1:!1},detectBrowser:function(){var e=navigator.userAgent;if(this.userAgent=e,e=e.toLowerCase(),RegExp("applewebkit/").test(e))RegExp("chrome/").test(e)?(this.CHROME=!0,this.model="chrome",this.version=e.replace(RegExp("(.*)chrome/([^\\s]+)(.*)"),"$2"),this.cssPrefix="-webkit-",this.domPrefix="Webkit"):(this.SAFARI=!0,this.model="safari",this.version=e.replace(RegExp("(.*)applewebkit/([^\\s]+)(.*)"),"$2"),this.cssPrefix="-webkit-",this.domPrefix="Webkit");else if(RegExp("opera").test(e))this.OPERA=!0,this.model="opera",this.version=e.replace(RegExp("(.*)opera.([^\\s$]+)(.*)"),"$2"),this.cssPrefix="-o-",this.domPrefix="O";else if(RegExp("konqueror").test(e))this.KONQUEROR=!0,this.model="konqueror",this.version=e.replace(RegExp("(.*)konqueror/([^;]+);(.*)"),"$2"),this.cssPrefix="-khtml-",this.domPrefix="Khtml";else if(RegExp("msie\\ ").test(e))this.IE=!0,this.model="ie",this.version=e.replace(RegExp("(.*)\\smsie\\s([^;]+);(.*)"),"$2"),this.cssPrefix="-ms-",this.domPrefix="ms";else if(RegExp("gecko").test(e)){this.GECKO=!0;var t=RegExp("(camino|chimera|epiphany|minefield|firefox|firebird|phoenix|galeon|iceweasel|k\\-meleon|seamonkey|netscape|songbird|sylera)");if(t.test(e))this.model=e.match(t)[1],this.version=e.replace(RegExp("(.*)"+this.model+"/([^;\\s$]+)(.*)"),"$2"),this.cssPrefix="-moz-",this.domPrefix="Moz";else{this.model="mozilla";var n=RegExp("(.*)rv:([^)]+)(.*)");n.test(e)&&(this.version=e.replace(n,"$2")),this.cssPrefix="-moz-",this.domPrefix="Moz"}}},debug:function(){var e="known browsers: (ie, gecko, opera, safari, konqueror) \n";e+=[this.IE,this.GECKO,this.OPERA,this.SAFARI,this.KONQUEROR]+"\n",e+="model -> "+this.model+"\n",e+="version -> "+this.version+"\n",e+="\n",e+="original UA -> "+this.userAgent,alert(e)}};return e.init(),e}); -Ink.createModule("Ink.Util.Url","1",[],function(){"use strict";var e={_keyStr:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=",getUrl:function(){return window.location.href},genQueryString:function(e,t){var n,r,o,i=-1!==e.indexOf("?"),s=[e];for(r in t)t.hasOwnProperty(r)&&(i?n="&":(n="?",i=!0),o=t[r],"number"==typeof o||o||(o=""),s=s.concat([n,encodeURIComponent(r),"=",encodeURIComponent(o)]));return s.join("")},getQueryString:function(e){var t;t=e&&e!==void 0?e:this.getUrl();var n={};if(t.match(/\?(.+)/i)){var r=t.replace(/^(.*)\?([^\#]+)(\#(.*))?/g,"$2");if(r.length>0)for(var o=r.split(/[;&]/),i=0;o.length>i;i++){var s=o[i].split("=");n[decodeURIComponent(s[0])]=s[1]!==void 0&&s[1]?decodeURIComponent(s[1]):!1}}return n},getAnchor:function(e){var t;t=e&&e!==void 0?e:this.getUrl();var n=!1;return t.match(/#(.+)/)&&(n=t.replace(/([^#]+)#(.*)/,"$2")),n},getAnchorString:function(e){var t;t=e&&e!==void 0?e:this.getUrl();var n={};if(t.match(/#(.+)/i)){var r=t.replace(/^([^#]+)#(.*)?/g,"$2");if(r.length>0)for(var o=r.split(/[;&]/),i=0;o.length>i;i++){var s=o[i].split("=");n[decodeURIComponent(s[0])]=s[1]!==void 0&&s[1]?decodeURIComponent(s[1]):!1}}return n},parseUrl:function(e){var t={};if(e&&e!==void 0&&"string"==typeof e){if(e.match(/^([^:]+):\/\//i)){var n=/^([^:]+):\/\/([^\/]*)\/?([^\?#]*)\??([^#]*)#?(.*)/i;e.match(n)&&(t.scheme=e.replace(n,"$1"),t.host=e.replace(n,"$2"),t.path="/"+e.replace(n,"$3"),t.query=e.replace(n,"$4")||!1,t.fragment=e.replace(n,"$5")||!1)}else{var r=RegExp("^([^\\?]+)\\?([^#]+)#(.*)","i"),o=RegExp("^([^\\?]+)\\?([^#]+)#?","i"),i=RegExp("^([^\\?]+)\\??","i");e.match(r)?(t.scheme=!1,t.host=!1,t.path=e.replace(r,"$1"),t.query=e.replace(r,"$2"),t.fragment=e.replace(r,"$3")):e.match(o)?(t.scheme=!1,t.host=!1,t.path=e.replace(o,"$1"),t.query=e.replace(o,"$2"),t.fragment=!1):e.match(i)&&(t.scheme=!1,t.host=!1,t.path=e.replace(i,"$1"),t.query=!1,t.fragment=!1)}if(t.host){var s=RegExp("^(.*)\\:(\\d+)$","i");if(t.host.match(s)){var a=t.host;t.host=a.replace(s,"$1"),t.port=a.replace(s,"$2")}else t.port=!1;if(t.host.match(/@/i)){var l=t.host;t.host=l.split("@")[1];var u=l.split("@")[0];u.match(/\:/)?(t.user=u.split(":")[0],t.pass=u.split(":")[1]):(t.user=u,t.pass=!1)}}}return t},currentScriptElement:function(e){var t=document.getElementsByTagName("script");if(e===void 0)return t.length>0?t[t.length-1]:!1;for(var n=!1,r=RegExp(""+e,"i"),o=0,i=t.length;i>o;o++)if(n=t[o],r.test(n.src))return n;return!1},_debug:function(){}};return e}); -Ink.createModule("Ink.Util.Swipe","1",["Ink.Dom.Event_1"],function(e){"use strict";var t=function(e,t){this._options=Ink.extendObj({callback:void 0,forceAxis:void 0,maxDist:void 0,maxDuration:void 0,minDist:void 0,minDuration:void 0,stopEvents:!0,storeGesture:!1},t||{}),this._handlers={down:Ink.bindEvent(this._onDown,this),move:Ink.bindEvent(this._onMove,this),up:Ink.bindEvent(this._onUp,this)},this._element=Ink.i(e),this._init()};return t._supported="ontouchstart"in document.documentElement,t.prototype={_init:function(){var t=document.body;e.observe(t,"touchstart",this._handlers.down),this._options.storeGesture&&e.observe(t,"touchmove",this._handlers.move),e.observe(t,"touchend",this._handlers.up),this._isOn=!1},_isMeOrParent:function(e,t){if(e){do{if(e===t)return!0;e=e.parentNode}while(e);return!1}},_onDown:function(t){1===event.changedTouches.length&&this._isMeOrParent(t.target,this._element)&&(this._options.stopEvents===!0&&e.stop(t),t=t.changedTouches[0],this._isOn=!0,this._target=t.target,this._t0=(new Date).valueOf(),this._p0=[t.pageX,t.pageY],this._options.storeGesture&&(this._gesture=[this._p0],this._time=[0]))},_onMove:function(t){if(this._isOn&&1===event.changedTouches.length){this._options.stopEvents===!0&&e.stop(t),t=t.changedTouches[0];var n=(new Date).valueOf(),r=.001*(n-this._t0);this._gesture.push([t.pageX,t.pageY]),this._time.push(r)}},_onUp:function(t){if(this._isOn&&1===event.changedTouches.length){this._options.stopEvents&&e.stop(t),t=t.changedTouches[0],this._isOn=!1;var n=(new Date).valueOf(),r=[t.pageX,t.pageY],o=.001*(n-this._t0),i=[r[0]-this._p0[0],r[1]-this._p0[1]],s=Math.sqrt(i[0]*i[0]+i[1]*i[1]),a=Math.abs(i[0])>Math.abs(i[1])?"x":"y",l=this._options;if(!(l.minDist&&l.minDist>s||l.maxDist&&s>l.maxDist||l.minDuration&&l.minDuration>o||l.maxDuration&&o>l.maxDuration||l.forceAxis&&a!==l.forceAxis)){var u={upEvent:t,elementId:this._element.id,duration:o,dr:i,dist:s,axis:a,target:this._target};this._options.storeGesture&&(u.gesture=this._gesture,u.time=this._time),this._options.callback(this,u)}}}},t}); -Ink.createModule("Ink.Util.String","1",[],function(){"use strict";var InkUtilString={_chars:["&","à","á","â","ã","ä","å","æ","ç","è","é","ê","ë","ì","í","î","ï","ð","ñ","ò","ó","ô","õ","ö","ø","ù","ú","û","ü","ý","þ","ÿ","À","Á","Â","Ã","Ä","Å","Æ","Ç","È","É","Ê","Ë","Ì","Í","Î","Ï","Ð","Ñ","Ò","Ó","Ô","Õ","Ö","Ø","Ù","Ú","Û","Ü","Ý","Þ","€",'"',"ß","<",">","¢","£","¤","¥","¦","§","¨","©","ª","«","¬","­","®","¯","°","±","²","³","´","µ","¶","·","¸","¹","º","»","¼","½","¾"],_entities:["amp","agrave","aacute","acirc","atilde","auml","aring","aelig","ccedil","egrave","eacute","ecirc","euml","igrave","iacute","icirc","iuml","eth","ntilde","ograve","oacute","ocirc","otilde","ouml","oslash","ugrave","uacute","ucirc","uuml","yacute","thorn","yuml","Agrave","Aacute","Acirc","Atilde","Auml","Aring","AElig","Ccedil","Egrave","Eacute","Ecirc","Euml","Igrave","Iacute","Icirc","Iuml","ETH","Ntilde","Ograve","Oacute","Ocirc","Otilde","Ouml","Oslash","Ugrave","Uacute","Ucirc","Uuml","Yacute","THORN","euro","quot","szlig","lt","gt","cent","pound","curren","yen","brvbar","sect","uml","copy","ordf","laquo","not","shy","reg","macr","deg","plusmn","sup2","sup3","acute","micro","para","middot","cedil","sup1","ordm","raquo","frac14","frac12","frac34"],_accentedChars:["à","á","â","ã","ä","å","è","é","ê","ë","ì","í","î","ï","ò","ó","ô","õ","ö","ù","ú","û","ü","ç","ñ","À","Á","Â","Ã","Ä","Å","È","É","Ê","Ë","Ì","Í","Î","Ï","Ò","Ó","Ô","Õ","Ö","Ù","Ú","Û","Ü","Ç","Ñ"],_accentedRemovedChars:["a","a","a","a","a","a","e","e","e","e","i","i","i","i","o","o","o","o","o","u","u","u","u","c","n","A","A","A","A","A","A","E","E","E","E","I","I","I","I","O","O","O","O","O","U","U","U","U","C","N"],_htmlUnsafeChars:{"<":"<",">":">","&":"&",'"':""","'":"'"},ucFirst:function(e,t){var n=t?/(^|\s)(\w)(\S{2,})/:/(^|\s)(\w)(\S{2,})/g;return e?(e+"").replace(n,function(e,t,n,r){return t+n.toUpperCase()+r.toLowerCase()}):e},trim:function(e){return"string"==typeof e?e.replace(/^\s+|\s+$|\n+$/g,""):e},stripTags:function(e,t){if(t&&"string"==typeof t){for(var n=InkUtilString.trim(t).split(","),r=[],o=!1,i=0;n.length>i;i++)""!==InkUtilString.trim(n[i])&&(o=InkUtilString.trim(n[i].replace(/(\<|\>)/g,"").replace(/\s/,"")),r.push("(<"+o+"\\s[^>]+>|<(\\s|\\/)?(\\s|\\/)?"+o+">)"));for(var s=r.join("|"),a=RegExp(s,"i"),l=e.match(RegExp("<[^>]*>","g")),u=0;l.length>u;u++)l[u].match(a)||(e=e.replace(RegExp(l[u],"gm"),""));return e}return e.replace(/\<[^\>]+\>/g,"")},htmlEntitiesEncode:function(e){if(e&&e.replace)for(var t=!1,n=0;InkUtilString._chars.length>n;n++)t=RegExp(InkUtilString._chars[n],"gm"),e=e.replace(t,"&"+InkUtilString._entities[n]+";");return e},htmlEntitiesDecode:function(e){if(e&&e.replace){for(var t=!1,n=0;InkUtilString._entities.length>n;n++)t=RegExp("&"+InkUtilString._entities[n]+";","gm"),e=e.replace(t,InkUtilString._chars[n]);e=e.replace(/&#[^;]+;?/g,function(e){return"x"===e.charAt(2)?String.fromCharCode(parseInt(e.substring(3),16)):String.fromCharCode(parseInt(e.substring(2),10))})}return e},utf8Encode:function(e){e=e.replace(/\r\n/g,"\n");for(var t="",n=0;e.length>n;n++){var r=e.charCodeAt(n);128>r?t+=String.fromCharCode(r):r>127&&2048>r?(t+=String.fromCharCode(192|r>>6),t+=String.fromCharCode(128|63&r)):(t+=String.fromCharCode(224|r>>12),t+=String.fromCharCode(128|63&r>>6),t+=String.fromCharCode(128|63&r))}return t},shortString:function(e,t){for(var n=e.split(" "),r="",o=0;n.length>o;o++){if((r+n[o]+" ").length>=t){r+="…";break}r+=n[o]+" "}return r},truncateString:function(e,t){return e.length-1>t?e.substr(0,t-1)+"…":e},utf8Decode:function(e){for(var t="",n=0,r=0,o=0,i=0;e.length>n;)r=e.charCodeAt(n),128>r?(t+=String.fromCharCode(r),n++):r>191&&224>r?(o=e.charCodeAt(n+1),t+=String.fromCharCode((31&r)<<6|63&o),n+=2):(o=e.charCodeAt(n+1),i=e.charCodeAt(n+2),t+=String.fromCharCode((15&r)<<12|(63&o)<<6|63&i),n+=3);return t},removeAccentedChars:function(e){for(var t=e,n=!1,r=0;InkUtilString._accentedChars.length>r;r++)n=RegExp(InkUtilString._accentedChars[r],"gm"),t=t.replace(n,""+InkUtilString._accentedRemovedChars[r]);return t},substrCount:function(e,t){return e?e.split(t).length-1:0},evalJSON:function(strJSON,sanitize){if(sanitize===void 0||null===sanitize||InkUtilString.isJSON(strJSON))try{return"undefined"!=typeof JSON&&JSON.parse!==void 0?JSON.parse(strJSON):eval("("+strJSON+")")}catch(e){throw Error("ERROR: Bad JSON string...")}},isJSON:function(e){return e=e.replace(/\\./g,"@").replace(/"[^"\\\n\r]*"/g,""),/^[,:{}\[\]0-9.\-+Eaeflnr-u \n\r\t]*$/.test(e)},htmlEscapeUnsafe:function(e){var t=InkUtilString._htmlUnsafeChars;return null!=e?(e+"").replace(/[<>&'"]/g,function(e){return t[e]}):e},normalizeWhitespace:function(e){return null!=e?InkUtilString.trim((e+"").replace(/\s+/g," ")):e},toUnicode:function(e){if("string"==typeof e){for(var t="",n=!1,r=!1,o=e.length,i=0;o>i;){if(n=e.charCodeAt(i),n>=32&&126>=n||8==n||9==n||10==n||12==n||13==n||32==n||34==n||47==n||58==n||92==n)r=8==n?"\\b":9==n?"\\t":10==n?"\\n":12==n?"\\f":13==n?"\\r":e.charAt(i);else{for(r=e.charCodeAt(i).toString(16)+"".toUpperCase();4>r.length;)r="0"+r;r="\\u"+r}t+=r,i++}return t}},escape:function(e){var t=e.charCodeAt(0).toString(16).split("");if(3>t.length){for(;2>t.length;)t.unshift("0");t.unshift("x")}else{for(;4>t.length;)t.unshift("0");t.unshift("u")}return t.unshift("\\"),t.join("")},unescape:function(e){var t=e.lastIndexOf("0");t=-1===t?2:Math.min(t,2);var n=e.substring(t),r=parseInt(n,16);return String.fromCharCode(r)},escapeText:function(e,t){void 0===t&&(t=["[","]","'",","]);for(var n,r,o=[],i=0,s=e.length;s>i;++i)n=e[i],r=n.charCodeAt(0),(32>r||r>126&&-1===t.indexOf(n))&&(n=InkUtilString.escape(n)),o.push(n);return o.join("")},escapedCharRegex:/(\\x[0-9a-fA-F]{2})|(\\u[0-9a-fA-F]{4})/g,unescapeText:function(e){for(var t;t=InkUtilString.escapedCharRegex.exec(e);)t=t[0],e=e.replace(t,InkUtilString.unescape(t)),InkUtilString.escapedCharRegex.lastIndex=0;return e},strcmp:function(e,t){return e===t?0:e>t?1:-1},packetize:function(e,t){for(var n,r=e.length,o=Array(Math.ceil(r/t)),i=e.split(""),s=0;r;)n=Math.min(t,r),o[s++]=i.splice(0,n).join(""),r-=n;return o}};return InkUtilString}); -Ink.createModule("Ink.Util.Json","1",[],function(){"use strict";function twoDigits(e){var t=""+e;return 1===t.length?"0"+t:t}var function_call=Function.prototype.call,cx=/[\u0000\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g,date_toISOString=Date.prototype.toISOString?Ink.bind(function_call,Date.prototype.toISOString):function(e){return e.getUTCFullYear()+"-"+twoDigits(e.getUTCMonth()+1)+"-"+twoDigits(e.getUTCDate())+"T"+twoDigits(e.getUTCHours())+":"+twoDigits(e.getUTCMinutes())+":"+twoDigits(e.getUTCSeconds())+"."+((e.getUTCMilliseconds()/1e3).toFixed(3)+"").slice(2,5)+"Z"},InkJson={_nativeJSON:window.JSON||null,_convertToUnicode:!1,_escape:function(e){var t={"\b":"\\b"," ":"\\t","\n":"\\n","\f":"\\f","\r":"\\r",'"':'\\"',"\\":"\\\\"};return/["\\\x00-\x1f]/.test(e)&&(e=e.replace(/([\x00-\x1f\\"])/g,function(e,n){var r=t[n];return r?r:(r=n.charCodeAt(),"\\u00"+Math.floor(r/16).toString(16)+(r%16).toString(16))})),e},_toUnicode:function(e){if(this._convertToUnicode){for(var t="",n=!1,r=!1,o=0,i=e.length;i>o;){if(n=e.charCodeAt(o),n>=32&&126>=n||8===n||9===n||10===n||12===n||13===n||32===n||34===n||47===n||58===n||92===n)r=34===n||92===n||47===n?"\\"+e.charAt(o):8===n?"\\b":9===n?"\\t":10===n?"\\n":12===n?"\\f":13===n?"\\r":e.charAt(o);else if(this._convertToUnicode){for(r=e.charCodeAt(o).toString(16)+"".toUpperCase();4>r.length;)r="0"+r;r="\\u"+r}else r=e.charAt(o);t+=r,o++}return t}return this._escape(e)},_stringifyValue:function(e){if("string"==typeof e)return'"'+this._toUnicode(e)+'"';if("number"!=typeof e||!isNaN(e)&&isFinite(e)){if(e===void 0||null===e)return"null";if("function"==typeof e.toJSON){var t=e.toJSON();return"string"==typeof t?'"'+this._escape(t)+'"':this._escape(""+t)}if("number"==typeof e||"boolean"==typeof e)return""+e;if("function"==typeof e)return"null";if(e.constructor===Date)throw"";if(e.constructor===Array){for(var n="",r=0,o=e.length;o>r;r++)r>0&&(n+=","),n+=this._stringifyValue(e[r]);return"["+n+"]"}var i="";for(var s in e)({}).hasOwnProperty.call(e,s)&&(""!==i&&(i+=","),i+='"'+this._escape(s)+'": '+this._stringifyValue(e[s]));return"{"+i+"}"}return"null"},stringify:function(e,t){return this._convertToUnicode=!!t,!this._convertToUnicode&&this._nativeJSON?this._nativeJSON.stringify(e):this._stringifyValue(e)},parse:function(text,reviver){function walk(e,t){var n,r,o=e[t];if(o&&"object"==typeof o)for(n in o)Object.prototype.hasOwnProperty.call(o,n)&&(r=walk(o,n),void 0!==r?o[n]=r:delete o[n]);return reviver.call(e,t,o)}var j;if(text+="",cx.lastIndex=0,cx.test(text)&&(text=text.replace(cx,function(e){return"\\u"+("0000"+e.charCodeAt(0).toString(16)).slice(-4)})),/^[\],:{}\s]*$/.test(text.replace(/\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g,"@").replace(/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g,"]").replace(/(?:^|:|,)(?:\s*\[)+/g,"")))return j=eval("("+text+")"),"function"==typeof reviver?walk({"":j},""):j;throw new SyntaxError("JSON.parse")}};return InkJson}); -Ink.createModule("Ink.Util.I18n","1",[],function(){"use strict";var e=/\{(?:(\{.*?})|(?:%s:)?(\d+)|(?:%s)?|([\w-]+))}/g,t=function(e,t){return"function"==typeof e?e.apply(this,t):void 0!==typeof e?e:""},n=function(e,t,r){return this instanceof n?(this.reset().lang(t).testMode(r).append(e||{},t),void 0):new n(e,t,r)};return n.prototype={reset:function(){return this._dicts=[],this._dict={},this._testMode=!1,this._lang=this._gLang,this},append:function(e){return this._dicts.push(e),this._dict=Ink.extendObj(this._dict,e[this._lang]),this},lang:function(e){if(!arguments.length)return this._lang;if(e&&this._lang!==e){this._lang=e,this._dict={};for(var t=0,n=this._dicts.length;n>t;t++)this._dict=Ink.extendObj(this._dict,this._dicts[t][e]||{})}return this},testMode:function(e){return arguments.length?(void 0!==e&&(this._testMode=!!e),this):!!this._testMode},getKey:function(e){var t,r=this._gLang,o=this._lang;return e in this._dict?t=this._dict[e]:(n.lang(o),t=this._gDict[e],n.lang(r)),t},text:function(n){if("string"==typeof n){var r=Array.prototype.slice.call(arguments,1),o=0,i="object"==typeof r[0],s=this.getKey(n);return void 0===s&&(s=this._testMode?"["+n+"]":n),"number"==typeof s&&(s+=""),"string"==typeof s?s=s.replace(e,function(e,n,s,a){var u=n?n:s?r[s-(i?0:1)]:a?r[0][a]||"":r[o++ +(i?1:0)];return t(u,[o].concat(r))}):"function"==typeof s?s.apply(this,r):s instanceof Array?t(s[r[0]],r):"object"==typeof s?t(s[r[0]],r):""}},ntext:function(e,t,n){var r,o=Array.prototype.slice.apply(arguments);if(2===o.length&&"number"==typeof t){if(r=this.getKey(e),!(r instanceof Array))return"";o.splice(0,1),r=r[1===t?0:1]}else o.splice(0,2),r=1===n?e:t;return this.text.apply(this,[r].concat(o))},ordinal:function(e){if(void 0===e)return"";var n=+(""+e).slice(-1),r=this.getKey("_ordinals");if(void 0===r)return"";if("string"==typeof r)return r;var o;return"function"==typeof r&&(o=r(e,n),"string"==typeof o)?o:"exceptions"in r&&(o="function"==typeof r.exceptions?r.exceptions(e,n):e in r.exceptions?t(r.exceptions[e],[e,n]):void 0,"string"==typeof o)?o:"byLastDigit"in r&&(o="function"==typeof r.byLastDigit?r.byLastDigit(n,e):n in r.byLastDigit?t(r.byLastDigit[n],[n,e]):void 0,"string"==typeof o)?o:"default"in r&&(o=t(r["default"],[e,n]),"string"==typeof o)?o:""},alias:function(){var e=Ink.bind(n.prototype.text,this);return e.ntext=Ink.bind(n.prototype.ntext,this),e.append=Ink.bind(n.prototype.append,this),e.ordinal=Ink.bind(n.prototype.ordinal,this),e.testMode=Ink.bind(n.prototype.testMode,this),e}},n.reset=function(){n.prototype._gDicts=[],n.prototype._gDict={},n.prototype._gLang="pt_PT"},n.reset(),n.append=function(e,t){if(t){if(!(t in e)){var r={};r[t]=e,e=r}t!==n.prototype._gLang&&n.lang(t)}n.prototype._gDicts.push(e),Ink.extendObj(n.prototype._gDict,e[n.prototype._gLang])},n.lang=function(e){if(!arguments.length)return n.prototype._gLang;if(e&&n.prototype._gLang!==e){n.prototype._gLang=e,n.prototype._gDict={};for(var t=0,r=n.prototype._gDicts.length;r>t;t++)Ink.extendObj(n.prototype._gDict,n.prototype._gDicts[t][e]||{})}},n}); -Ink.createModule("Ink.Util.Dumper","1",[],function(){"use strict";var e={_tab:"    ",_formatParam:function(e){var t="";switch(typeof e){case"string":t="(string) "+e;break;case"number":t="(number) "+e;break;case"boolean":t="(boolean) "+e;break;case"object":t=null!==e?e.constructor===Array?"Array \n{\n"+this._outputFormat(e,0)+"\n}":"Object \n{\n"+this._outputFormat(e,0)+"\n}":"null";break;default:t=!1}return t},_getTabs:function(e){for(var t="",n=0;e>n;n++)t+=this._tab;return t},_outputFormat:function(e,t){var n="",r=!1;for(var o in e)if(null!==e[o])if("object"!=typeof e[o]||e[o].constructor!==Array&&e[o].constructor!==Object){if(e[o].constructor===Function)continue;n=n+this._tab+this._getTabs(t)+"["+o+"] => "+e[o]+"\n"}else e[o].constructor===Array?r="Array":e[o].constructor===Object&&(r="Object"),n+=this._tab+this._getTabs(t)+"["+o+"] => "+r+"\n",n+=this._tab+this._getTabs(t)+"{\n",n+=this._outputFormat(e[o],t+1)+this._tab+this._getTabs(t)+"}\n";else n=n+this._tab+this._getTabs(t)+"["+o+"] => null \n";return n},printDump:function(e,t){if(t&&t!==void 0)if("string"==typeof t)document.getElementById(t).innerHTML="
    "+this._formatParam(e)+"
    ";else{if("object"!=typeof t)throw"TARGET must be an element or an element ID";t.innerHTML="
    "+this._formatParam(e)+"
    "}else document.write("
    "+this._formatParam(e)+"
    ")},returnDump:function(e){return this._formatParam(e)},alertDump:function(e){window.alert(this._formatParam(e).replace(/()(Array|Object)(<\/b>)/g,"$2"))},windowDump:function(e){var t="dumperwindow_"+1e4*Math.random(),n=window.open("",t,"width=400,height=300,left=50,top=50,status,menubar,scrollbars,resizable");n.document.open(),n.document.write("
    "+this._formatParam(e)+"
    "),n.document.close(),n.focus()}};return e}); -Ink.createModule("Ink.Util.Date","1",[],function(){"use strict";var e={_months:function(e){var t=["Janeiro","Fevereiro","Março","Abril","Maio","Junho","Julho","Agosto","Setembro","Outubro","Novembro","Dezembro"];return t[e]},_iMonth:function(e){return Number(e)?+e-1:{janeiro:0,jan:0,fevereiro:1,fev:1,"março":2,mar:2,abril:3,abr:3,maio:4,mai:4,junho:5,jun:5,julho:6,jul:6,agosto:7,ago:7,setembro:8,set:8,outubro:9,out:9,novembro:10,nov:10,dezembro:11,dez:11}[e.toLowerCase()]},_wDays:function(e){var t=["Domingo","Segunda","Terça","Quarta","Quinta","Sexta","Sábado"];return t[e]},_iWeek:function(e){return Number(e)?+e||7:{segunda:1,seg:1,"terça":2,ter:2,quarta:3,qua:3,quinta:4,qui:4,sexta:5,sex:5,"sábado":6,"sáb":6,domingo:7,dom:7}[e.toLowerCase()]},_daysInMonth:function(e,t){var n;return n=1===e||3===e||5===e||7===e||8===e||10===e||12===e?31:4===e||6===e||9===e||11===e?30:0===t%400||0===t%4&&0!==t%100?29:28},get:function(e,t){(e===void 0||""===e)&&(e="Y-m-d");var n,r=e.split(""),o=Array(r.length),i="\\";n=t===void 0?new Date:"number"==typeof t?new Date(1e3*t):new Date(t);for(var a,s,u,l=0;r.length>l;l++)switch(r[l]){case i:o[l]=r[l+1],l++;break;case"d":var c=n.getDate();o[l]=(c+"").length>1?c:"0"+c;break;case"D":o[l]=this._wDays(n.getDay()).substring(0,3);break;case"j":o[l]=n.getDate();break;case"l":o[l]=this._wDays(n.getDay());break;case"N":o[l]=n.getDay()||7;break;case"S":var d=n.getDate(),f=["st","nd","rd"],h="";o[l]=d>=11&&13>=d?"th":(h=f[(d+"").substr(-1)-1])?h:"th";break;case"w":o[l]=n.getDay();break;case"z":a=Date.UTC(n.getFullYear(),0,0),s=Date.UTC(n.getFullYear(),n.getMonth(),n.getDate()),o[l]=Math.floor((s-a)/864e5);break;case"W":var p=new Date(n.getFullYear(),0,1);a=p.getDay()||7;var m=Math.floor((n-p)/864e5+1);o[l]=Math.ceil((m-(8-a))/7)+1;break;case"F":o[l]=this._months(n.getMonth());break;case"m":var g=n.getMonth()+1+"";o[l]=g.length>1?g:"0"+g;break;case"M":o[l]=this._months(n.getMonth()).substring(0,3);break;case"n":o[l]=n.getMonth()+1;break;case"t":o[l]=this._daysInMonth(n.getMonth()+1,n.getYear());break;case"L":var v=n.getFullYear();o[l]=v%4?!1:v%100?!0:v%400?!1:!0;break;case"o":throw'"o" not implemented!';case"Y":o[l]=n.getFullYear();break;case"y":o[l]=(n.getFullYear()+"").substring(2);break;case"a":o[l]=12>n.getHours()?"am":"pm";break;case"A":o[l]=12>n.getHours?"AM":"PM";break;case"B":throw'"B" not implemented!';case"g":u=n.getHours(),o[l]=12>=u?u:u-12;break;case"G":o[l]=n.getHours()+"";break;case"h":u=n.getHours()+"",u=12>=u?u:u-12,o[l]=u.length>1?u:"0"+u;break;case"H":u=n.getHours()+"",o[l]=u.length>1?u:"0"+u;break;case"i":var y=n.getMinutes()+"";o[l]=y.length>1?y:"0"+y;break;case"s":var b=n.getSeconds()+"";o[l]=b.length>1?b:"0"+b;break;case"u":throw'"u" not implemented!';case"e":throw'"e" not implemented!';case"I":a=new Date(n.getFullYear(),0,1),o[l]=n.getTimezoneOffset()!==a.getTimezoneOffset()?1:0;break;case"O":var w=n.getTimezoneOffset(),k=w%60;u=-1*((w-k)/60)+"","-"!==u.charAt(0)&&(u="+"+u),u=3===u.length?u:u.replace(/([+\-])(\d)/,"$10$2"),o[l]=u+k+"0";break;case"P":throw'"P" not implemented!';case"T":throw'"T" not implemented!';case"Z":o[l]=60*n.getTimezoneOffset();break;case"c":throw'"c" not implemented!';case"r":var E=this._wDays(n.getDay()).substr(0,3),C=this._months(n.getMonth()).substr(0,3);o[l]=E+", "+n.getDate()+" "+C+this.get(" Y H:i:s O",n);break;case"U":o[l]=Math.floor(n.getTime()/1e3);break;default:o[l]=r[l]}return o.join("")},set:function(e,t){if(void 0!==t){(e===void 0||""===e)&&(e="Y-m-d");for(var n,r=e.split(""),o=Array(r.length),i="\\",a={year:void 0,month:void 0,day:void 0,dayY:void 0,dayW:void 0,week:void 0,hour:void 0,hourD:void 0,min:void 0,sec:void 0,msec:void 0,ampm:void 0,diffM:void 0,diffH:void 0,date:void 0},s=0,u=0;r.length>u;u++)switch(r[u]){case i:o[u]=r[u+1],u++;break;case"d":o[u]="(\\d{2})",a.day={original:u,match:s++};break;case"j":o[u]="(\\d{1,2})",a.day={original:u,match:s++};break;case"D":o[u]="([\\wá]{3})",a.dayW={original:u,match:s++};break;case"l":o[u]="([\\wá]{5,7})",a.dayW={original:u,match:s++};break;case"N":o[u]="(\\d)",a.dayW={original:u,match:s++};break;case"w":o[u]="(\\d)",a.dayW={original:u,match:s++};break;case"S":o[u]="\\w{2}";break;case"z":o[u]="(\\d{1,3})",a.dayY={original:u,match:s++};break;case"W":o[u]="(\\d{1,2})",a.week={original:u,match:s++};break;case"F":o[u]="([\\wç]{4,9})",a.month={original:u,match:s++};break;case"M":o[u]="(\\w{3})",a.month={original:u,match:s++};break;case"m":o[u]="(\\d{2})",a.month={original:u,match:s++};break;case"n":o[u]="(\\d{1,2})",a.month={original:u,match:s++};break;case"t":o[u]="\\d{2}";break;case"L":o[u]="\\w{4,5}";break;case"o":throw'"o" not implemented!';case"Y":o[u]="(\\d{4})",a.year={original:u,match:s++};break;case"y":o[u]="(\\d{2})",(a.year===void 0||"Y"!==r[a.year.original])&&(a.year={original:u,match:s++});break;case"a":o[u]="(am|pm)",a.ampm={original:u,match:s++};break;case"A":o[u]="(AM|PM)",a.ampm={original:u,match:s++};break;case"B":throw'"B" not implemented!';case"g":o[u]="(\\d{1,2})",a.hourD={original:u,match:s++};break;case"G":o[u]="(\\d{1,2})",a.hour={original:u,match:s++};break;case"h":o[u]="(\\d{2})",a.hourD={original:u,match:s++};break;case"H":o[u]="(\\d{2})",a.hour={original:u,match:s++};break;case"i":o[u]="(\\d{2})",a.min={original:u,match:s++};break;case"s":o[u]="(\\d{2})",a.sec={original:u,match:s++};break;case"u":throw'"u" not implemented!';case"e":throw'"e" not implemented!';case"I":o[u]="\\d";break;case"O":o[u]="([-+]\\d{4})",a.diffH={original:u,match:s++};break;case"P":throw'"P" not implemented!';case"T":throw'"T" not implemented!';case"Z":o[u]="(\\-?\\d{1,5})",a.diffM={original:u,match:s++};break;case"c":throw'"c" not implemented!';case"r":o[u]="([\\wá]{3}, \\d{1,2} \\w{3} \\d{4} \\d{2}:\\d{2}:\\d{2} [+\\-]\\d{4})",a.date={original:u,match:s++};break;case"U":o[u]="(\\d{1,13})",a.date={original:u,match:s++};break;default:o[u]=r[u]}var l=RegExp(o.join(""));try{if(n=t.match(l),!n)return}catch(c){return}var d,f,h=a.date!==void 0,p=a.year!==void 0,m=a.dayY!==void 0,g=a.day!==void 0,v=a.month!==void 0,y=v&&g,b=!v&&g,w=a.dayW!==void 0,k=a.week!==void 0,E=k&&w,C=!k&&w,x=m||y||!p&&b||E||!p&&C,S=!(p||m||g||v||w||k),T=a.hourD!==void 0&&a.ampm!==void 0,I=a.hour!==void 0,_=T||I,N=a.min!==void 0,O=a.sec!==void 0,D=a.msec!==void 0,A=!S||_,R=A||N,M=a.diffM!==void 0,L=a.diffH!==void 0;if(h){if("U"===r[a.date.original])return new Date(1e3*+n[a.date.match+1]);var H=n[a.date.match+1].match(/\w{3}, (\d{1,2}) (\w{3}) (\d{4}) (\d{2}):(\d{2}):(\d{2}) ([+\-]\d{4})/);return d=+H[4]+ +H[7].slice(0,3),f=+H[5]+60*((H[7].slice(0,1)+H[7].slice(3))/100),new Date(H[3],this._iMonth(H[2]),H[1],d,f,H[6])}var P,j,U,F,q,B,$,W=new Date;if(x||S){if(x){if(p){var J=W.getFullYear()-50+"";P=n[a.year.match+1],"y"===r[a.year.original]&&(P=+J.slice(0,2)+(P>=J.slice(2)?0:1)+P)}else P=W.getFullYear();if(m)j=0,U=n[a.dayY.match+1];else if(g)j=v?this._iMonth(n[a.month.match+1]):W.getMonth(),U=n[a.day.match+1];else{j=0;var Y;Y=k?n[a.week.match+1]:this.get("W",W),U=7*(Y-2)+(8-(new Date(P,0,1).getDay()||7))+this._iWeek(n[a.week.match+1])}if(0===j&&U>31){var X=new Date(P,j,U);j=X.getMonth(),U=X.getDate()}}else P=W.getFullYear(),j=W.getMonth(),U=W.getDate();return F=P+"-"+(j+1)+"-"+U+" ",d=T?+n[a.hourD.match+1]+("pm"===n[a.ampm.match+1]?12:0):I?n[a.hour.match+1]:S?W.getHours():"00",f=N?n[a.min.match+1]:A?"00":W.getMinutes(),q=O?n[a.sec.match+1]:R?"00":W.getSeconds(),B=D?n[a.msec.match+1]:"000",$=L?n[a.diffH.match+1]:M?(100*(-1*n[a.diffM.match+1]/60)+"").replace(/^(\d)/,"+$1").replace(/(^[\-+])(\d{3}$)/,"$10$2"):"+0000",new Date(F+d+":"+f+":"+q+"."+B+$)}}}};return e}); -Ink.createModule("Ink.Util.Cookie","1",[],function(){"use strict";var e={get:function(e){var t=document.cookie||!1,n={};if(t){t=t.replace(RegExp("; ","g"),";");var r=t.split(";"),o=[];if(r.length>0)for(var i=0;r.length>i;i++)o=r[i].split("="),2===o.length&&(n[o[0]]=decodeURIComponent(o[1])),o=[]}return e?n[e]!==void 0?n[e]:null:n},set:function(e,t,n,r,o,i){var a;if(!e||t===!1||void 0===e||void 0===t)return!1;a=e+"="+encodeURIComponent(t);var s=!1,u=!1,l=!1,c=!1;if(n&&n!==void 0&&!isNaN(n)){var d=new Date,f=parseInt(Number(d.valueOf()),10)+1e3*Number(parseInt(n,10)),h=new Date(f),p=h.toGMTString(),m=RegExp("([^\\s]+)(\\s\\d\\d)\\s(\\w\\w\\w)\\s(.*)");p=p.replace(m,"$1$2-$3-$4"),s="expires="+p}else s=void 0===n||isNaN(n)||0!==Number(parseInt(n,10))?"expires=Thu, 01-Jan-2037 00:00:01 GMT":"";if(u=r&&r!==void 0?"path="+r:"path=/",o&&o!==void 0)l="domain="+o;else{var g=RegExp(":(.*)");l="domain="+window.location.host,l=l.replace(g,"")}c=i&&i!==void 0?i:!1,document.cookie=a+"; "+s+"; "+u+"; "+l+"; "+c},remove:function(e,t,n){var r=!1,o=!1,i=-999999999;r=t&&t!==void 0?t:"/",o=n&&n!==void 0?n:window.location.host,this.set(e,"deleted",i,r,o)}};return e}); -Ink.createModule("Ink.Util.BinPack","1",[],function(){"use strict";var e=function(e,t){this.init(e,t)};e.prototype={init:function(e,t){this.root={x:0,y:0,w:e,h:t}},fit:function(e){var t,n,r;for(t=0;e.length>t;++t)r=e[t],(n=this.findNode(this.root,r.w,r.h))&&(r.fit=this.splitNode(n,r.w,r.h))},findNode:function(e,t,n){return e.used?this.findNode(e.right,t,n)||this.findNode(e.down,t,n):e.w>=t&&e.h>=n?e:null},splitNode:function(e,t,n){return e.used=!0,e.down={x:e.x,y:e.y+n,w:e.w,h:e.h-n},e.right={x:e.x+t,y:e.y,w:e.w-t,h:n},e}};var t=function(){};t.prototype={fit:function(e){var t,n,r,o=e.length,i=o>0?e[0].w:0,a=o>0?e[0].h:0;for(this.root={x:0,y:0,w:i,h:a},t=0;o>t;t++)r=e[t],r.fit=(n=this.findNode(this.root,r.w,r.h))?this.splitNode(n,r.w,r.h):this.growNode(r.w,r.h)},findNode:function(e,t,n){return e.used?this.findNode(e.right,t,n)||this.findNode(e.down,t,n):e.w>=t&&e.h>=n?e:null},splitNode:function(e,t,n){return e.used=!0,e.down={x:e.x,y:e.y+n,w:e.w,h:e.h-n},e.right={x:e.x+t,y:e.y,w:e.w-t,h:n},e},growNode:function(e,t){var n=this.root.w>=e,r=this.root.h>=t,o=r&&this.root.h>=this.root.w+e,i=n&&this.root.w>=this.root.h+t;return o?this.growRight(e,t):i?this.growDown(e,t):r?this.growRight(e,t):n?this.growDown(e,t):null},growRight:function(e,t){this.root={used:!0,x:0,y:0,w:this.root.w+e,h:this.root.h,down:this.root,right:{x:this.root.w,y:0,w:e,h:this.root.h}};var n;return(n=this.findNode(this.root,e,t))?this.splitNode(n,e,t):null},growDown:function(e,t){this.root={used:!0,x:0,y:0,w:this.root.w,h:this.root.h+t,down:{x:0,y:this.root.h,w:this.root.w,h:t},right:this.root};var n;return(n=this.findNode(this.root,e,t))?this.splitNode(n,e,t):null}};var n={random:function(){return Math.random()-.5},w:function(e,t){return t.w-e.w},h:function(e,t){return t.h-e.h},a:function(e,t){return t.area-e.area},max:function(e,t){return Math.max(t.w,t.h)-Math.max(e.w,e.h)},min:function(e,t){return Math.min(t.w,t.h)-Math.min(e.w,e.h)},height:function(e,t){return n.msort(e,t,["h","w"])},width:function(e,t){return n.msort(e,t,["w","h"])},area:function(e,t){return n.msort(e,t,["a","h","w"])},maxside:function(e,t){return n.msort(e,t,["max","min","h","w"])},msort:function(e,t,r){var o,i;for(i=0;r.length>i;++i)if(o=n[r[i]](e,t),0!==o)return o;return 0}},r=function(){return[this.w," x ",this.h].join("")},o={binPack:function(o){var i,a,s;for(i=0,a=o.blocks.length;a>i;++i)s=o.blocks[i],"area"in s||(s.area=s.w*s.h);var u=o.dimensions?new e(o.dimensions[0],o.dimensions[1]):new t;o.sorter||(o.sorter="maxside"),o.blocks.sort(n[o.sorter]),u.fit(o.blocks);var l=[u.root.w,u.root.h],c=[],d=[];for(i=0,a=o.blocks.length;a>i;++i)s=o.blocks[i],s.fit?c.push(s):(s.toString=r,d.push(s));var h=l[0]*l[1],f=0;for(i=0,a=c.length;a>i;++i)s=c[i],f+=s.area;return{dimensions:l,filled:f/h,blocks:o.blocks,fitted:c,unfitted:d}}};return o}); -Ink.createModule("Ink.Util.Array","1",[],function(){"use strict";var e=Array.prototype,t={inArray:function(e,t){if("object"==typeof t)for(var n=0,r=t.length;r>n;++n)if(t[n]===e)return!0;return!1},sortMulti:function(e,t){if(e===void 0||e.constructor!==Array)return!1;if("string"!=typeof t)return e.sort();if(e.length>0){if(e[0][t]===void 0)return!1;e.sort(function(e,n){var r=e[t],o=n[t];return o>r?-1:r>o?1:0})}return e},keyValue:function(e,t,n){if(e!==void 0&&"object"==typeof t&&this.inArray(e,t)){for(var r=[],o=0,i=t.length;i>o;++o)if(t[o]===e){if(n!==void 0&&n===!0)return o;r.push(o)}return r}return!1},shuffle:function(e){if(e!==void 0&&e.constructor!==Array)return!1;for(var t=e.length,n=!1,r=!1;t--;)r=Math.floor(Math.random()*(t+1)),n=e[t],e[t]=e[r],e[r]=n;return e},forEach:function(t,n,r){if(e.forEach)return e.forEach.call(t,n,r);for(var o=0,i=t.length>>>0;i>o;o++)n.call(r,t[o],o,t)},each:function(){t.forEach.apply(t,[].slice.call(arguments))},map:function(t,n,r){if(e.map)return e.map.call(t,n,r);for(var o=Array(a),i=0,a=t.length>>>0;a>i;i++)o[i]=n.call(r,t[i],i,t);return o},filter:function(t,n,r){if(e.filter)return e.filter.call(t,n,r);for(var o=[],i=null,a=0,s=t.length;s>a;a++)i=t[a],n.call(r,i,a,t)&&o.push(i);return o},some:function(e,t,n){if(null===e)throw new TypeError("First argument is invalid.");var r=Object(e),o=r.length>>>0;if("function"!=typeof t)throw new TypeError("Second argument must be a function.");for(var i=0;o>i;i++)if(i in r&&t.call(n,r[i],i,r))return!0;return!1},intersect:function(e,t){if(!e||!t||e instanceof Array==!1||t instanceof Array==!1)return[];for(var n=[],r=0,o=e.length;o>r;++r)for(var i=0,a=t.length;a>i;++i)e[r]===t[i]&&n.push(e[r]);return n},convert:function(t){return e.slice.call(t||[],0)},insert:function(e,t,n){e.splice(t,0,n)},remove:function(e,t,n){for(var r=[],o=0,i=e.length;i>o;o++)o>=t&&t+n>o||r.push(e[o]);return r}};return t}); -Ink.createModule("Ink.Util.Validator","1",[],function(){"use strict";var e={_countryCodes:["AO","CV","MZ","PT"],_internacionalPT:351,_indicativosPT:{21:"lisboa",22:"porto",231:"mealhada",232:"viseu",233:"figueira da foz",234:"aveiro",235:"arganil",236:"pombal",238:"seia",239:"coimbra",241:"abrantes",242:"ponte de sôr",243:"santarém",244:"leiria",245:"portalegre",249:"torres novas",251:"valença",252:"vila nova de famalicão",253:"braga",254:"peso da régua",255:"penafiel",256:"são joão da madeira",258:"viana do castelo",259:"vila real",261:"torres vedras",262:"caldas da raínha",263:"vila franca de xira",265:"setúbal",266:"évora",268:"estremoz",269:"santiago do cacém",271:"guarda",272:"castelo branco",273:"bragança",274:"proença-a-nova",275:"covilhã",276:"chaves",277:"idanha-a-nova",278:"mirandela",279:"moncorvo",281:"tavira",282:"portimão",283:"odemira",284:"beja",285:"moura",286:"castro verde",289:"faro",291:"funchal, porto santo",292:"corvo, faial, flores, horta, pico",295:"angra do heroísmo, graciosa, são jorge, terceira",296:"ponta delgada, são miguel, santa maria",91:"rede móvel 91 (Vodafone / Yorn)",93:"rede móvel 93 (Optimus)",96:"rede móvel 96 (TMN)",92:"rede móvel 92 (TODOS)",707:"número único",760:"número único",800:"número grátis",808:"chamada local",30:"voip"},_internacionalCV:238,_indicativosCV:{2:"fixo",91:"móvel 91",95:"móvel 95",97:"móvel 97",98:"móvel 98",99:"móvel 99"},_internacionalAO:244,_indicativosAO:{2:"fixo",91:"móvel 91",92:"móvel 92"},_internacionalMZ:258,_indicativosMZ:{2:"fixo",82:"móvel 82",84:"móvel 84"},_internacionalTL:670,_indicativosTL:{3:"fixo",7:"móvel 7"},_characterGroups:{numbers:["0-9"],asciiAlpha:["a-zA-Z"],latin1Alpha:["a-zA-Z","À-ÿ"],unicodeAlpha:["a-zA-Z","À-ÿ","Ā-῿","Ⰰ-퟿"],space:[" "],dash:["-"],underscore:["_"],nicknamePunctuation:["_.-"],singleLineWhitespace:[" "],newline:["\n"],whitespace:[" \n \f\r  "],asciiPunctuation:["!-/",":-@","[-`","{-~"],latin1Punctuation:["!-/",":-@","[-`","{-~","¡-¿","×","÷"],unicodePunctuation:["!-/",":-@","[-`","{-~","¡-¿","×","÷"," -","⸀-⹿"," -〿"]},createRegExp:function(t){var n="^[";for(var r in t)if(t.hasOwnProperty(r)){if(!(r in e._characterGroups))throw Error("group "+r+" is not a valid character group");t[r]&&(n+=e._characterGroups[r].join(""))}return RegExp(n+"]*?$")},checkCharacterGroups:function(t,n){return e.createRegExp(n).test(t)},unicode:function(t,n){return e.checkCharacterGroups(t,Ink.extendObj({unicodeAlpha:!0},n))},latin1:function(t,n){return e.checkCharacterGroups(t,Ink.extendObj({latin1Alpha:!0},n))},ascii:function(t,n){return e.checkCharacterGroups(t,Ink.extendObj({asciiAlpha:!0},n))},number:function(t,n){t+="";var r=Ink.extendObj({decimalSep:".",thousandSep:"",negative:!0,decimalPlaces:null,maxDigits:null,max:null,min:null,returnNumber:!1},n||{});if(r.thousandSep)return t=t.replace(RegExp("\\"+r.thousandSep,"g"),""),r.thousandSep="",e.number(t,r);if(r.negative===!1)return r.min=0,r.negative=!0,e.number(t,r);if("."!==r.decimalSep&&(t=t.replace(RegExp("\\"+r.decimalSep,"g"),".")),!/^(-)?(\d+)?(\.\d+)?$/.test(t)||""===t)return!1;var i;if(r.decimalSep&&-1!==t.indexOf(r.decimalSep)){if(i=t.split(r.decimalSep),null!==r.decimalPlaces&&i[1].length>r.decimalPlaces)return!1}else i=[""+t,""];if(null!==r.maxDigits&&i[0].replace(/-/g,"").length>r.maxDigits)return i;var o=parseFloat(t);return null!==r.maxExcl&&o>=r.maxExcl||null!==r.minExcl&&r.minExcl>=o?!1:null!==r.max&&o>r.max||null!==r.min&&r.min>o?!1:r.returnNumber?o:!0},_isLeapYear:function(e){var t=/^\d{4}$/;return t.test(e)?e%4?!1:e%100?!0:e%400?!1:!0:!1},_dateParsers:{"yyyy-mm-dd":{day:5,month:3,year:1,sep:"-",parser:/^(\d{4})(\-)(\d{1,2})(\-)(\d{1,2})$/},"yyyy/mm/dd":{day:5,month:3,year:1,sep:"/",parser:/^(\d{4})(\/)(\d{1,2})(\/)(\d{1,2})$/},"yy-mm-dd":{day:5,month:3,year:1,sep:"-",parser:/^(\d{2})(\-)(\d{1,2})(\-)(\d{1,2})$/},"yy/mm/dd":{day:5,month:3,year:1,sep:"/",parser:/^(\d{2})(\/)(\d{1,2})(\/)(\d{1,2})$/},"dd-mm-yyyy":{day:1,month:3,year:5,sep:"-",parser:/^(\d{1,2})(\-)(\d{1,2})(\-)(\d{4})$/},"dd/mm/yyyy":{day:1,month:3,year:5,sep:"/",parser:/^(\d{1,2})(\/)(\d{1,2})(\/)(\d{4})$/},"dd-mm-yy":{day:1,month:3,year:5,sep:"-",parser:/^(\d{1,2})(\-)(\d{1,2})(\-)(\d{2})$/},"dd/mm/yy":{day:1,month:3,year:5,sep:"/",parser:/^(\d{1,2})(\/)(\d{1,2})(\/)(\d{2})$/}},_daysInMonth:function(e,t){var n=0;return n=1===e||3===e||5===e||7===e||8===e||10===e||12===e?31:4===e||6===e||9===e||11===e?30:0===t%400||0===t%4&&0!==t%100?29:28},_isValidDate:function(e,t,n){var r=/^\d{4}$/,i=/^\d{1,2}$/;return r.test(e)&&i.test(t)&&i.test(n)&&t>=1&&12>=t&&n>=1&&this._daysInMonth(t,e)>=n?!0:!1},email:function(e){var t=RegExp("^[_a-z0-9-]+((\\.|\\+)[_a-z0-9-]+)*@([\\w]*-?[\\w]*\\.)+[a-z]{2,4}$","i");return t.test(e)?!0:!1},mail:function(t){return e.email(t)},url:function(e,t){if(t===void 0||t===!1){var n=RegExp("(^(http\\:\\/\\/|https\\:\\/\\/)(.+))","i");n.test(e)===!1&&(e="http://"+e)}var r=RegExp("^(http:\\/\\/|https:\\/\\/)([\\w]*(-?[\\w]*)*\\.)+[a-z]{2,4}","i");return r.test(e)===!1?!1:!0},isPTPhone:function(e){e=""+e;var t=[];for(var n in this._indicativosPT)"string"==typeof this._indicativosPT[n]&&t.push(n);var r=t.join("|"),i=/^(00351|\+351)/;i.test(e)&&(e=e.replace(i,""));var o=/(\s|\-|\.)+/g;e=e.replace(o,"");var a=/[\d]{9}/i;if(9===e.length&&a.test(e)){var s=RegExp("^("+r+")");if(s.test(e))return!0}return!1},isPortuguesePhone:function(e){return this.isPTPhone(e)},isCVPhone:function(e){e=""+e;var t=[];for(var n in this._indicativosCV)"string"==typeof this._indicativosCV[n]&&t.push(n);var r=t.join("|"),i=/^(00238|\+238)/;i.test(e)&&(e=e.replace(i,""));var o=/(\s|\-|\.)+/g;e=e.replace(o,"");var a=/[\d]{7}/i;if(7===e.length&&a.test(e)){var s=RegExp("^("+r+")");if(s.test(e))return!0}return!1},isAOPhone:function(e){e=""+e;var t=[];for(var n in this._indicativosAO)"string"==typeof this._indicativosAO[n]&&t.push(n);var r=t.join("|"),i=/^(00244|\+244)/;i.test(e)&&(e=e.replace(i,""));var o=/(\s|\-|\.)+/g;e=e.replace(o,"");var a=/[\d]{9}/i;if(9===e.length&&a.test(e)){var s=RegExp("^("+r+")");if(s.test(e))return!0}return!1},isMZPhone:function(e){e=""+e;var t=[];for(var n in this._indicativosMZ)"string"==typeof this._indicativosMZ[n]&&t.push(n);var r=t.join("|"),i=/^(00258|\+258)/;i.test(e)&&(e=e.replace(i,""));var o=/(\s|\-|\.)+/g;e=e.replace(o,"");var a=/[\d]{8,9}/i;if((9===e.length||8===e.length)&&a.test(e)){var s=RegExp("^("+r+")");if(s.test(e)){if(0===e.indexOf("2")&&8===e.length)return!0;if(0===e.indexOf("8")&&9===e.length)return!0}}return!1},isTLPhone:function(e){e=""+e;var t=[];for(var n in this._indicativosTL)"string"==typeof this._indicativosTL[n]&&t.push(n);var r=t.join("|"),i=/^(00670|\+670)/;i.test(e)&&(e=e.replace(i,""));var o=/(\s|\-|\.)+/g;e=e.replace(o,"");var a=/[\d]{7}/i;if(7===e.length&&a.test(e)){var s=RegExp("^("+r+")");if(s.test(e))return!0}return!1},isPhone:function(){var e;if(0===arguments.length)return!1;var t=arguments[0];if(arguments.length>1){if(arguments[1].constructor!==Array){if("function"==typeof this["is"+arguments[1].toUpperCase()+"Phone"])return this["is"+arguments[1].toUpperCase()+"Phone"](t);throw"Invalid Country Code!"}var n;for(e=0;arguments[1].length>e;e++){if("function"!=typeof(n=this["is"+arguments[1][e].toUpperCase()+"Phone"]))throw"Invalid Country Code!";if(n(t))return!0}}else for(e=0;this._countryCodes.length>e;e++)if(this["is"+this._countryCodes[e]+"Phone"](t))return!0;return!1},codPostal:function(e,t,n){var r=/^(\s*\-\s*|\s+)$/,i=/^\s+|\s+$/g,o=/^[1-9]\d{3}$/,a=/^\d{3}$/,s=/^(.{4})(.*)(.{3})$/;if(n=!!n,e=e.replace(i,""),t!==void 0){if(t=t.replace(i,""),o.test(e)&&a.test(t))return n===!0?[!0,!0]:!0}else{if(o.test(e))return n===!0?[!0,!1]:!0;var u=e.match(s);if(null!==u&&o.test(u[1])&&r.test(u[2])&&a.test(u[3]))return n===!0?[!0,!1]:!0}return n===!0?[!1,!1]:!1},isDate:function(e,t){if(this._dateParsers[e]===void 0)return!1;var n=this._dateParsers[e].year,r=this._dateParsers[e].month,i=this._dateParsers[e].day,o=this._dateParsers[e].parser,a=this._dateParsers[e].sep,s=t.match(o);if(null!==s&&s[2]===s[4]&&s[2]===a){var u=2===s[n].length?"20"+(""+s[n]):s[n];if(this._isValidDate(u,""+s[r],""+s[i]))return!0}return!1},isColor:function(e){var t,n=!1,r=/^[a-zA-Z]+$/,i=/^#([0-9a-fA-F]{3}|[0-9a-fA-F]{6})$/,o=/^rgb\(\s*([0-9]{1,3})(%)?\s*,\s*([0-9]{1,3})(%)?\s*,\s*([0-9]{1,3})(%)?\s*\)$/,a=/^rgba\(\s*([0-9]{1,3})(%)?\s*,\s*([0-9]{1,3})(%)?\s*,\s*([0-9]{1,3})(%)?\s*,\s*(1(\.0)?|0(\.[0-9])?)\s*\)$/,s=/^hsl\(\s*([0-9]{1,3})\s*,\s*([0-9]{1,3})(%)?\s*,\s*([0-9]{1,3})(%)?\s*\)$/,u=/^hsla\(\s*([0-9]{1,3})\s*,\s*([0-9]{1,3})(%)?\s*,\s*([0-9]{1,3})(%)?\s*,\s*(1(\.0)?|0(\.[0-9])?)\s*\)$/;if(r.test(e)||i.test(e))return!0;var l;if(null!==(t=o.exec(e))||null!==(t=a.exec(e)))for(l=t.length;l--;){if((2===l||4===l||6===l)&&t[l]!==void 0&&""!==t[l]){if(!(t[l-1]!==void 0&&t[l-1]>=0&&100>=t[l-1]))return!1;n=!0}if(1===l||3===l||5===l&&(t[l+1]===void 0||""===t[l+1])){if(!(t[l]!==void 0&&t[l]>=0&&255>=t[l]))return!1;n=!0}}if(null!==(t=s.exec(e))||null!==(t=u.exec(e)))for(l=t.length;l--;){if(3===l||5===l){if(!(t[l-1]!==void 0&&t[l]!==void 0&&""!==t[l]&&t[l-1]>=0&&100>=t[l-1]))return!1;n=!0}if(1===l){if(!(t[l]!==void 0&&t[l]>=0&&360>=t[l]))return!1;n=!0}}return n},isIP:function(e,t){if("string"!=typeof e)return!1;switch(t=(t||"ipv4").toLowerCase()){case"ipv4":return/^(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$/.test(e);case"ipv6":return/^\s*((([0-9A-Fa-f]{1,4}:){7}([0-9A-Fa-f]{1,4}|:))|(([0-9A-Fa-f]{1,4}:){6}(:[0-9A-Fa-f]{1,4}|((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3})|:))|(([0-9A-Fa-f]{1,4}:){5}(((:[0-9A-Fa-f]{1,4}){1,2})|:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3})|:))|(([0-9A-Fa-f]{1,4}:){4}(((:[0-9A-Fa-f]{1,4}){1,3})|((:[0-9A-Fa-f]{1,4})?:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){3}(((:[0-9A-Fa-f]{1,4}){1,4})|((:[0-9A-Fa-f]{1,4}){0,2}:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){2}(((:[0-9A-Fa-f]{1,4}){1,5})|((:[0-9A-Fa-f]{1,4}){0,3}:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){1}(((:[0-9A-Fa-f]{1,4}){1,6})|((:[0-9A-Fa-f]{1,4}){0,4}:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(:(((:[0-9A-Fa-f]{1,4}){1,7})|((:[0-9A-Fa-f]{1,4}){0,5}:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:)))(%.+)?\s*$/.test(e);default:return!1}},_creditCardSpecs:{"default":{length:"13,14,15,16,17,18,19",prefix:/^.+/,luhn:!0},"american express":{length:"15",prefix:/^3[47]/,luhn:!0},"diners club":{length:"14,16",prefix:/^36|55|30[0-5]/,luhn:!0},discover:{length:"16",prefix:/^6(?:5|011)/,luhn:!0},jcb:{length:"15,16",prefix:/^3|1800|2131/,luhn:!0},maestro:{length:"16,18",prefix:/^50(?:20|38)|6(?:304|759)/,luhn:!0},mastercard:{length:"16",prefix:/^5[1-5]/,luhn:!0},visa:{length:"13,16",prefix:/^4/,luhn:!0}},_luhn:function(e){if(e=parseInt(e,10),"number"!=typeof e&&0!==e%1)return!1;e+="";var t,n=e.length,r=0;for(t=n-1;t>=0;t-=2)r+=parseInt(e.substr(t,1),10);for(t=n-2;t>=0;t-=2){var i=parseInt(2*e.substr(t,1),10);r+=i>=10?i-9:i}return 0===r%10},isCreditCard:function(e,t){if(/\d+/.test(e)===!1)return!1;if(t===void 0)t="default";else if("array"==typeof t){var n,r=t.length;for(n=0;r>n;n++)if(this.isCreditCard(e,t[n]))return!0;return!1}if(t=t.toLowerCase(),this._creditCardSpecs[t]===void 0)return!1;var i=e.length+"";return-1===this._creditCardSpecs[t].length.split(",").indexOf(i)?!1:this._creditCardSpecs[t].prefix.test(e)?this._creditCardSpecs[t].luhn===!1?!0:this._luhn(e):!1}};return e}); \ No newline at end of file diff --git a/public/js/vendor/notification.js b/public/js/vendor/notification.js deleted file mode 100644 index 214c584..0000000 --- a/public/js/vendor/notification.js +++ /dev/null @@ -1,52 +0,0 @@ -var Notification = window.Notification || window.mozNotification || window.webkitNotification; -var enabledNotifications, - grantedPermission; - -function askPermission () { - Notification.requestPermission(function (permission) { - // console.log(permission); - if (permission == "granted") { - grantedPermission = true; - } - else { - grantedPermission = false; - } - }); -} - -function toggleNotifications() { - if (enabledNotifications === true) { - enabledNotifications = false; - } else if (!enabledNotifications && grantedPermission === true){ - enabledNotifications = true; - } else { - askPermission(); - } -} - - -function showNotification(name, body, icon, timeout) { - if (enabledNotifications) { - var instance = new Notification( - name, { - body: body, - icon: icon - } - ); - - instance.onclick = function () { - // Something to do - }; - instance.onerror = function () { - // Something to do - }; - instance.onshow = function () { - setTimeout(function(){ - instance.close(); - }, timeout * 1000); - }; - instance.onclose = function () { - // Something to do - }; - } -} diff --git a/public/js/vendor/rickshaw.js b/public/js/vendor/rickshaw.js deleted file mode 100644 index a64c941..0000000 --- a/public/js/vendor/rickshaw.js +++ /dev/null @@ -1,3388 +0,0 @@ -var Rickshaw = { - - namespace: function(namespace, obj) { - - var parts = namespace.split('.'); - - var parent = Rickshaw; - - for(var i = 1, length = parts.length; i < length; i++) { - var currentPart = parts[i]; - parent[currentPart] = parent[currentPart] || {}; - parent = parent[currentPart]; - } - return parent; - }, - - keys: function(obj) { - var keys = []; - for (var key in obj) keys.push(key); - return keys; - }, - - extend: function(destination, source) { - - for (var property in source) { - destination[property] = source[property]; - } - return destination; - }, - - clone: function(obj) { - return JSON.parse(JSON.stringify(obj)); - } -}; - -if (typeof module !== 'undefined' && module.exports) { - var d3 = require('d3'); - module.exports = Rickshaw; -} - -/* Adapted from https://github.com/Jakobo/PTClass */ - -/* -Copyright (c) 2005-2010 Sam Stephenson - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. -*/ -/* Based on Alex Arnell's inheritance implementation. */ -/** section: Language - * class Class - * - * Manages Prototype's class-based OOP system. - * - * Refer to Prototype's web site for a [tutorial on classes and - * inheritance](http://prototypejs.org/learn/class-inheritance). -**/ -(function(globalContext) { -/* ------------------------------------ */ -/* Import from object.js */ -/* ------------------------------------ */ -var _toString = Object.prototype.toString, - NULL_TYPE = 'Null', - UNDEFINED_TYPE = 'Undefined', - BOOLEAN_TYPE = 'Boolean', - NUMBER_TYPE = 'Number', - STRING_TYPE = 'String', - OBJECT_TYPE = 'Object', - FUNCTION_CLASS = '[object Function]'; -function isFunction(object) { - return _toString.call(object) === FUNCTION_CLASS; -} -function extend(destination, source) { - for (var property in source) if (source.hasOwnProperty(property)) // modify protect primitive slaughter - destination[property] = source[property]; - return destination; -} -function keys(object) { - if (Type(object) !== OBJECT_TYPE) { throw new TypeError(); } - var results = []; - for (var property in object) { - if (object.hasOwnProperty(property)) { - results.push(property); - } - } - return results; -} -function Type(o) { - switch(o) { - case null: return NULL_TYPE; - case (void 0): return UNDEFINED_TYPE; - } - var type = typeof o; - switch(type) { - case 'boolean': return BOOLEAN_TYPE; - case 'number': return NUMBER_TYPE; - case 'string': return STRING_TYPE; - } - return OBJECT_TYPE; -} -function isUndefined(object) { - return typeof object === "undefined"; -} -/* ------------------------------------ */ -/* Import from Function.js */ -/* ------------------------------------ */ -var slice = Array.prototype.slice; -function argumentNames(fn) { - var names = fn.toString().match(/^[\s\(]*function[^(]*\(([^)]*)\)/)[1] - .replace(/\/\/.*?[\r\n]|\/\*(?:.|[\r\n])*?\*\//g, '') - .replace(/\s+/g, '').split(','); - return names.length == 1 && !names[0] ? [] : names; -} -function wrap(fn, wrapper) { - var __method = fn; - return function() { - var a = update([bind(__method, this)], arguments); - return wrapper.apply(this, a); - } -} -function update(array, args) { - var arrayLength = array.length, length = args.length; - while (length--) array[arrayLength + length] = args[length]; - return array; -} -function merge(array, args) { - array = slice.call(array, 0); - return update(array, args); -} -function bind(fn, context) { - if (arguments.length < 2 && isUndefined(arguments[0])) return this; - var __method = fn, args = slice.call(arguments, 2); - return function() { - var a = merge(args, arguments); - return __method.apply(context, a); - } -} - -/* ------------------------------------ */ -/* Import from Prototype.js */ -/* ------------------------------------ */ -var emptyFunction = function(){}; - -var Class = (function() { - - // Some versions of JScript fail to enumerate over properties, names of which - // correspond to non-enumerable properties in the prototype chain - var IS_DONTENUM_BUGGY = (function(){ - for (var p in { toString: 1 }) { - // check actual property name, so that it works with augmented Object.prototype - if (p === 'toString') return false; - } - return true; - })(); - - function subclass() {}; - function create() { - var parent = null, properties = [].slice.apply(arguments); - if (isFunction(properties[0])) - parent = properties.shift(); - - function klass() { - this.initialize.apply(this, arguments); - } - - extend(klass, Class.Methods); - klass.superclass = parent; - klass.subclasses = []; - - if (parent) { - subclass.prototype = parent.prototype; - klass.prototype = new subclass; - try { parent.subclasses.push(klass) } catch(e) {} - } - - for (var i = 0, length = properties.length; i < length; i++) - klass.addMethods(properties[i]); - - if (!klass.prototype.initialize) - klass.prototype.initialize = emptyFunction; - - klass.prototype.constructor = klass; - return klass; - } - - function addMethods(source) { - var ancestor = this.superclass && this.superclass.prototype, - properties = keys(source); - - // IE6 doesn't enumerate `toString` and `valueOf` (among other built-in `Object.prototype`) properties, - // Force copy if they're not Object.prototype ones. - // Do not copy other Object.prototype.* for performance reasons - if (IS_DONTENUM_BUGGY) { - if (source.toString != Object.prototype.toString) - properties.push("toString"); - if (source.valueOf != Object.prototype.valueOf) - properties.push("valueOf"); - } - - for (var i = 0, length = properties.length; i < length; i++) { - var property = properties[i], value = source[property]; - if (ancestor && isFunction(value) && - argumentNames(value)[0] == "$super") { - var method = value; - value = wrap((function(m) { - return function() { return ancestor[m].apply(this, arguments); }; - })(property), method); - - value.valueOf = bind(method.valueOf, method); - value.toString = bind(method.toString, method); - } - this.prototype[property] = value; - } - - return this; - } - - return { - create: create, - Methods: { - addMethods: addMethods - } - }; -})(); - -if (globalContext.exports) { - globalContext.exports.Class = Class; -} -else { - globalContext.Class = Class; -} -})(Rickshaw); -Rickshaw.namespace('Rickshaw.Compat.ClassList'); - -Rickshaw.Compat.ClassList = function() { - - /* adapted from http://purl.eligrey.com/github/classList.js/blob/master/classList.js */ - - if (typeof document !== "undefined" && !("classList" in document.createElement("a"))) { - - (function (view) { - - "use strict"; - - var - classListProp = "classList" - , protoProp = "prototype" - , elemCtrProto = (view.HTMLElement || view.Element)[protoProp] - , objCtr = Object - , strTrim = String[protoProp].trim || function () { - return this.replace(/^\s+|\s+$/g, ""); - } - , arrIndexOf = Array[protoProp].indexOf || function (item) { - var - i = 0 - , len = this.length - ; - for (; i < len; i++) { - if (i in this && this[i] === item) { - return i; - } - } - return -1; - } - // Vendors: please allow content code to instantiate DOMExceptions - , DOMEx = function (type, message) { - this.name = type; - this.code = DOMException[type]; - this.message = message; - } - , checkTokenAndGetIndex = function (classList, token) { - if (token === "") { - throw new DOMEx( - "SYNTAX_ERR" - , "An invalid or illegal string was specified" - ); - } - if (/\s/.test(token)) { - throw new DOMEx( - "INVALID_CHARACTER_ERR" - , "String contains an invalid character" - ); - } - return arrIndexOf.call(classList, token); - } - , ClassList = function (elem) { - var - trimmedClasses = strTrim.call(elem.className) - , classes = trimmedClasses ? trimmedClasses.split(/\s+/) : [] - , i = 0 - , len = classes.length - ; - for (; i < len; i++) { - this.push(classes[i]); - } - this._updateClassName = function () { - elem.className = this.toString(); - }; - } - , classListProto = ClassList[protoProp] = [] - , classListGetter = function () { - return new ClassList(this); - } - ; - // Most DOMException implementations don't allow calling DOMException's toString() - // on non-DOMExceptions. Error's toString() is sufficient here. - DOMEx[protoProp] = Error[protoProp]; - classListProto.item = function (i) { - return this[i] || null; - }; - classListProto.contains = function (token) { - token += ""; - return checkTokenAndGetIndex(this, token) !== -1; - }; - classListProto.add = function (token) { - token += ""; - if (checkTokenAndGetIndex(this, token) === -1) { - this.push(token); - this._updateClassName(); - } - }; - classListProto.remove = function (token) { - token += ""; - var index = checkTokenAndGetIndex(this, token); - if (index !== -1) { - this.splice(index, 1); - this._updateClassName(); - } - }; - classListProto.toggle = function (token) { - token += ""; - if (checkTokenAndGetIndex(this, token) === -1) { - this.add(token); - } else { - this.remove(token); - } - }; - classListProto.toString = function () { - return this.join(" "); - }; - - if (objCtr.defineProperty) { - var classListPropDesc = { - get: classListGetter - , enumerable: true - , configurable: true - }; - try { - objCtr.defineProperty(elemCtrProto, classListProp, classListPropDesc); - } catch (ex) { // IE 8 doesn't support enumerable:true - if (ex.number === -0x7FF5EC54) { - classListPropDesc.enumerable = false; - objCtr.defineProperty(elemCtrProto, classListProp, classListPropDesc); - } - } - } else if (objCtr[protoProp].__defineGetter__) { - elemCtrProto.__defineGetter__(classListProp, classListGetter); - } - - }(window)); - - } -}; - -if ( (typeof RICKSHAW_NO_COMPAT !== "undefined" && !RICKSHAW_NO_COMPAT) || typeof RICKSHAW_NO_COMPAT === "undefined") { - new Rickshaw.Compat.ClassList(); -} -Rickshaw.namespace('Rickshaw.Graph'); - -Rickshaw.Graph = function(args) { - - if (!args.element) throw "Rickshaw.Graph needs a reference to an element"; - - this.element = args.element; - this.series = args.series; - - this.defaults = { - interpolation: 'cardinal', - offset: 'zero', - min: undefined, - max: undefined, - preserve: false - }; - - Rickshaw.keys(this.defaults).forEach( function(k) { - this[k] = args[k] || this.defaults[k]; - }, this ); - - this.window = {}; - - this.updateCallbacks = []; - - var self = this; - - this.initialize = function(args) { - - this.validateSeries(args.series); - - this.series.active = function() { return self.series.filter( function(s) { return !s.disabled } ) }; - - this.setSize({ width: args.width, height: args.height }); - - this.element.classList.add('rickshaw_graph'); - this.vis = d3.select(this.element) - .append("svg:svg") - .attr('width', this.width) - .attr('height', this.height); - - for (var name in Rickshaw.Graph.Renderer) { - if (!name || !Rickshaw.Graph.Renderer.hasOwnProperty(name)) continue; - var r = Rickshaw.Graph.Renderer[name]; - if (!r || !r.prototype || !r.prototype.render) continue; - self.registerRenderer(new r( { graph: self } )); - } - - this.setRenderer(args.renderer || 'stack', args); - this.discoverRange(); - }; - - this.validateSeries = function(series) { - - if (!Array.isArray(series) && !(series instanceof Rickshaw.Series)) { - var seriesSignature = Object.prototype.toString.apply(series); - throw "series is not an array: " + seriesSignature; - } - - var pointsCount; - - series.forEach( function(s) { - - if (!(s instanceof Object)) { - throw "series element is not an object: " + s; - } - if (!(s.data)) { - throw "series has no data: " + JSON.stringify(s); - } - if (!Array.isArray(s.data)) { - throw "series data is not an array: " + JSON.stringify(s.data); - } - - var x = s.data[0].x; - var y = s.data[0].y; - - if (typeof x != 'number' || ( typeof y != 'number' && y !== null ) ) { - throw "x and y properties of points should be numbers instead of " + - (typeof x) + " and " + (typeof y); - } - - if (s.data.length >= 3) { - // probe to sanity check sort order - if (s.data[2].x < s.data[1].x || s.data[1].x < s.data[0].x || s.data[s.data.length - 1].x < s.data[0].x) { - throw "series data needs to be sorted on x values for series name: " + s.name; - } - } - - }, this ); - }; - - this.dataDomain = function() { - - var data = this.series.map( function(s) { return s.data } ); - - var min = d3.min( data.map( function(d) { return d[0].x } ) ); - var max = d3.max( data.map( function(d) { return d[d.length - 1].x } ) ); - - return [min, max]; - }; - - this.discoverRange = function() { - - var domain = this.renderer.domain(); - - this.x = d3.scale.linear().domain(domain.x).range([0, this.width]); - - this.y = d3.scale.linear().domain(domain.y).range([this.height, 0]); - - this.y.magnitude = d3.scale.linear() - .domain([domain.y[0] - domain.y[0], domain.y[1] - domain.y[0]]) - .range([0, this.height]); - }; - - this.render = function() { - - var stackedData = this.stackData(); - this.discoverRange(); - - this.renderer.render(); - - this.updateCallbacks.forEach( function(callback) { - callback(); - } ); - }; - - this.update = this.render; - - this.stackData = function() { - - var data = this.series.active() - .map( function(d) { return d.data } ) - .map( function(d) { return d.filter( function(d) { return this._slice(d) }, this ) }, this); - - var preserve = this.preserve; - if (!preserve) { - this.series.forEach( function(series) { - if (series.scale) { - // data must be preserved when a scale is used - preserve = true; - } - } ); - } - - data = preserve ? Rickshaw.clone(data) : data; - - this.series.active().forEach( function(series, index) { - if (series.scale) { - // apply scale to each series - var seriesData = data[index]; - if(seriesData) { - seriesData.forEach( function(d) { - d.y = series.scale(d.y); - } ); - } - } - } ); - - this.stackData.hooks.data.forEach( function(entry) { - data = entry.f.apply(self, [data]); - } ); - - var stackedData; - - if (!this.renderer.unstack) { - - this._validateStackable(); - - var layout = d3.layout.stack(); - layout.offset( self.offset ); - stackedData = layout(data); - } - - stackedData = stackedData || data; - - this.stackData.hooks.after.forEach( function(entry) { - stackedData = entry.f.apply(self, [data]); - } ); - - - var i = 0; - this.series.forEach( function(series) { - if (series.disabled) return; - series.stack = stackedData[i++]; - } ); - - this.stackedData = stackedData; - return stackedData; - }; - - this._validateStackable = function() { - - var series = this.series; - var pointsCount; - - series.forEach( function(s) { - - pointsCount = pointsCount || s.data.length; - - if (pointsCount && s.data.length != pointsCount) { - throw "stacked series cannot have differing numbers of points: " + - pointsCount + " vs " + s.data.length + "; see Rickshaw.Series.fill()"; - } - - }, this ); - }; - - this.stackData.hooks = { data: [], after: [] }; - - this._slice = function(d) { - - if (this.window.xMin || this.window.xMax) { - - var isInRange = true; - - if (this.window.xMin && d.x < this.window.xMin) isInRange = false; - if (this.window.xMax && d.x > this.window.xMax) isInRange = false; - - return isInRange; - } - - return true; - }; - - this.onUpdate = function(callback) { - this.updateCallbacks.push(callback); - }; - - this.registerRenderer = function(renderer) { - this._renderers = this._renderers || {}; - this._renderers[renderer.name] = renderer; - }; - - this.configure = function(args) { - - if (args.width || args.height) { - this.setSize(args); - } - - Rickshaw.keys(this.defaults).forEach( function(k) { - this[k] = k in args ? args[k] - : k in this ? this[k] - : this.defaults[k]; - }, this ); - - this.setRenderer(args.renderer || this.renderer.name, args); - }; - - this.setRenderer = function(r, args) { - if (typeof r == 'function') { - this.renderer = new r( { graph: self } ); - this.registerRenderer(this.renderer); - } else { - if (!this._renderers[r]) { - throw "couldn't find renderer " + r; - } - this.renderer = this._renderers[r]; - } - - if (typeof args == 'object') { - this.renderer.configure(args); - } - }; - - this.setSize = function(args) { - - args = args || {}; - - if (typeof window !== undefined) { - var style = window.getComputedStyle(this.element, null); - var elementWidth = parseInt(style.getPropertyValue('width'), 10); - var elementHeight = parseInt(style.getPropertyValue('height'), 10); - } - - this.width = args.width || elementWidth || 400; - this.height = args.height || elementHeight || 250; - - this.vis && this.vis - .attr('width', this.width) - .attr('height', this.height); - }; - - this.initialize(args); -}; -Rickshaw.namespace('Rickshaw.Fixtures.Color'); - -Rickshaw.Fixtures.Color = function() { - - this.schemes = {}; - - this.schemes.spectrum14 = [ - '#ecb796', - '#dc8f70', - '#b2a470', - '#92875a', - '#716c49', - '#d2ed82', - '#bbe468', - '#a1d05d', - '#e7cbe6', - '#d8aad6', - '#a888c2', - '#9dc2d3', - '#649eb9', - '#387aa3' - ].reverse(); - - this.schemes.spectrum2000 = [ - '#57306f', - '#514c76', - '#646583', - '#738394', - '#6b9c7d', - '#84b665', - '#a7ca50', - '#bfe746', - '#e2f528', - '#fff726', - '#ecdd00', - '#d4b11d', - '#de8800', - '#de4800', - '#c91515', - '#9a0000', - '#7b0429', - '#580839', - '#31082b' - ]; - - this.schemes.spectrum2001 = [ - '#2f243f', - '#3c2c55', - '#4a3768', - '#565270', - '#6b6b7c', - '#72957f', - '#86ad6e', - '#a1bc5e', - '#b8d954', - '#d3e04e', - '#ccad2a', - '#cc8412', - '#c1521d', - '#ad3821', - '#8a1010', - '#681717', - '#531e1e', - '#3d1818', - '#320a1b' - ]; - - this.schemes.classic9 = [ - '#423d4f', - '#4a6860', - '#848f39', - '#a2b73c', - '#ddcb53', - '#c5a32f', - '#7d5836', - '#963b20', - '#7c2626', - '#491d37', - '#2f254a' - ].reverse(); - - this.schemes.httpStatus = { - 503: '#ea5029', - 502: '#d23f14', - 500: '#bf3613', - 410: '#efacea', - 409: '#e291dc', - 403: '#f457e8', - 408: '#e121d2', - 401: '#b92dae', - 405: '#f47ceb', - 404: '#a82a9f', - 400: '#b263c6', - 301: '#6fa024', - 302: '#87c32b', - 307: '#a0d84c', - 304: '#28b55c', - 200: '#1a4f74', - 206: '#27839f', - 201: '#52adc9', - 202: '#7c979f', - 203: '#a5b8bd', - 204: '#c1cdd1' - }; - - this.schemes.colorwheel = [ - '#b5b6a9', - '#858772', - '#785f43', - '#96557e', - '#4682b4', - '#65b9ac', - '#73c03a', - '#cb513a' - ].reverse(); - - this.schemes.cool = [ - '#5e9d2f', - '#73c03a', - '#4682b4', - '#7bc3b8', - '#a9884e', - '#c1b266', - '#a47493', - '#c09fb5' - ]; - - this.schemes.munin = [ - '#00cc00', - '#0066b3', - '#ff8000', - '#ffcc00', - '#330099', - '#990099', - '#ccff00', - '#ff0000', - '#808080', - '#008f00', - '#00487d', - '#b35a00', - '#b38f00', - '#6b006b', - '#8fb300', - '#b30000', - '#bebebe', - '#80ff80', - '#80c9ff', - '#ffc080', - '#ffe680', - '#aa80ff', - '#ee00cc', - '#ff8080', - '#666600', - '#ffbfff', - '#00ffcc', - '#cc6699', - '#999900' - ]; -}; -Rickshaw.namespace('Rickshaw.Fixtures.RandomData'); - -Rickshaw.Fixtures.RandomData = function(timeInterval) { - - var addData; - timeInterval = timeInterval || 1; - - var lastRandomValue = 200; - - var timeBase = Math.floor(new Date().getTime() / 1000); - - this.addData = function(data) { - - var randomValue = Math.random() * 100 + 15 + lastRandomValue; - var index = data[0].length; - - var counter = 1; - - data.forEach( function(series) { - var randomVariance = Math.random() * 20; - var v = randomValue / 25 + counter++ + - (Math.cos((index * counter * 11) / 960) + 2) * 15 + - (Math.cos(index / 7) + 2) * 7 + - (Math.cos(index / 17) + 2) * 1; - - series.push( { x: (index * timeInterval) + timeBase, y: v + randomVariance } ); - } ); - - lastRandomValue = randomValue * 0.85; - }; - - this.removeData = function(data) { - data.forEach( function(series) { - series.shift(); - } ); - timeBase += timeInterval; - }; -}; - -Rickshaw.namespace('Rickshaw.Fixtures.Time'); - -Rickshaw.Fixtures.Time = function() { - - var tzOffset = new Date().getTimezoneOffset() * 60; - - var self = this; - - this.months = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec']; - - this.units = [ - { - name: 'decade', - seconds: 86400 * 365.25 * 10, - formatter: function(d) { return (parseInt(d.getUTCFullYear() / 10, 10) * 10) } - }, { - name: 'year', - seconds: 86400 * 365.25, - formatter: function(d) { return d.getUTCFullYear() } - }, { - name: 'month', - seconds: 86400 * 30.5, - formatter: function(d) { return self.months[d.getUTCMonth()] } - }, { - name: 'week', - seconds: 86400, - formatter: function(d) { return d.getUTCDate() } - }, { - name: 'day', - seconds: 86400, - formatter: function(d) { return d.getUTCDate() } - }, { - name: '6 hour', - seconds: 3600 * 6, - formatter: function(d) { return self.formatTime(d) } - }, { - name: 'hour', - seconds: 3600, - formatter: function(d) { return self.formatTime(d) } - }, { - name: '15 minute', - seconds: 60 * 15, - formatter: function(d) { return self.formatTime(d) } - }, { - name: 'minute', - seconds: 60, - formatter: function(d) { return d.getUTCMinutes() } - }, { - name: '15 second', - seconds: 15, - formatter: function(d) { return d.getUTCSeconds() + 's' } - }, { - name: 'second', - seconds: 1, - formatter: function(d) { return d.getUTCSeconds() + 's' } - } - ]; - - this.unit = function(unitName) { - return this.units.filter( function(unit) { return unitName == unit.name } ).shift(); - }; - - this.formatDate = function(d) { - return d3.time.format('%b %e')(d); - }; - - this.formatTime = function(d) { - return d.toUTCString().match(/(\d+:\d+):/)[1]; - }; - - this.ceil = function(time, unit) { - - var nearFuture; - var rounded; - - if (unit.name == 'month') { - - nearFuture = new Date((time + unit.seconds - 1) * 1000); - - rounded = new Date(0); - rounded.setUTCFullYear(nearFuture.getUTCFullYear()); - rounded.setUTCMonth(nearFuture.getUTCMonth()); - rounded.setUTCDate(1); - rounded.setUTCHours(0); - rounded.setUTCMinutes(0); - rounded.setUTCSeconds(0); - rounded.setUTCMilliseconds(0); - - return rounded.getTime() / 1000; - } - - if (unit.name == 'year') { - - nearFuture = new Date((time + unit.seconds - 1) * 1000); - - rounded = new Date(0); - rounded.setUTCFullYear(nearFuture.getUTCFullYear()); - rounded.setUTCMonth(0); - rounded.setUTCDate(1); - rounded.setUTCHours(0); - rounded.setUTCMinutes(0); - rounded.setUTCSeconds(0); - rounded.setUTCMilliseconds(0); - - return rounded.getTime() / 1000; - } - - return Math.ceil(time / unit.seconds) * unit.seconds; - }; -}; -Rickshaw.namespace('Rickshaw.Fixtures.Time.Local'); - -Rickshaw.Fixtures.Time.Local = function() { - - var tzOffset = new Date().getTimezoneOffset() * 60; - - var self = this; - - this.months = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec']; - - this.units = [ - { - name: 'decade', - seconds: 86400 * 365.25 * 10, - formatter: function(d) { return (parseInt(d.getFullYear() / 10, 10) * 10) } - }, { - name: 'year', - seconds: 86400 * 365.25, - formatter: function(d) { return d.getFullYear() } - }, { - name: 'month', - seconds: 86400 * 30.5, - formatter: function(d) { return self.months[d.getMonth()] } - }, { - name: 'week', - seconds: 86400 * 7, - formatter: function(d) { return self.formatDate(d) } - }, { - name: 'day', - seconds: 86400, - formatter: function(d) { return d.getDate() } - }, { - name: '6 hour', - seconds: 3600 * 6, - formatter: function(d) { return self.formatTime(d) } - }, { - name: 'hour', - seconds: 3600, - formatter: function(d) { return self.formatTime(d) } - }, { - name: '15 minute', - seconds: 60 * 15, - formatter: function(d) { return self.formatTime(d) } - }, { - name: 'minute', - seconds: 60, - formatter: function(d) { return d.getMinutes() } - }, { - name: '15 second', - seconds: 15, - formatter: function(d) { return d.getSeconds() + 's' } - }, { - name: 'second', - seconds: 1, - formatter: function(d) { return d.getSeconds() + 's' } - } - ]; - - this.unit = function(unitName) { - return this.units.filter( function(unit) { return unitName == unit.name } ).shift(); - }; - - this.formatDate = function(d) { - return d3.time.format('%b %e')(d); - }; - - this.formatTime = function(d) { - return d.toString().match(/(\d+:\d+):/)[1]; - }; - - this.ceil = function(time, unit) { - - var nearFuture; - var rounded; - - if (unit.name == 'day') { - - nearFuture = new Date((time + unit.seconds - 1) * 1000); - - rounded = new Date(0); - rounded.setMilliseconds(0); - rounded.setSeconds(0); - rounded.setMinutes(0); - rounded.setHours(0); - rounded.setDate(nearFuture.getDate()); - rounded.setMonth(nearFuture.getMonth()); - rounded.setFullYear(nearFuture.getFullYear()); - - return rounded.getTime() / 1000; - } - - if (unit.name == 'month') { - - nearFuture = new Date((time + unit.seconds - 1) * 1000); - - rounded = new Date(0); - rounded.setMilliseconds(0); - rounded.setSeconds(0); - rounded.setMinutes(0); - rounded.setHours(0); - rounded.setDate(1); - rounded.setMonth(nearFuture.getMonth()); - rounded.setFullYear(nearFuture.getFullYear()); - - return rounded.getTime() / 1000; - } - - if (unit.name == 'year') { - - nearFuture = new Date((time + unit.seconds - 1) * 1000); - - rounded = new Date(0); - rounded.setFullYear(nearFuture.getFullYear()); - rounded.setMilliseconds(0); - rounded.setSeconds(0); - rounded.setMinutes(0); - rounded.setHours(0); - rounded.setDate(1); - rounded.setMonth(0); - - return rounded.getTime() / 1000; - } - - return Math.ceil(time / unit.seconds) * unit.seconds; - }; -}; -Rickshaw.namespace('Rickshaw.Fixtures.Number'); - -Rickshaw.Fixtures.Number.formatKMBT = function(y) { - var abs_y = Math.abs(y); - if (abs_y >= 1000000000000) { return y / 1000000000000 + "T" } - else if (abs_y >= 1000000000) { return y / 1000000000 + "B" } - else if (abs_y >= 1000000) { return y / 1000000 + "M" } - else if (abs_y >= 1000) { return y / 1000 + "K" } - else if (abs_y < 1 && y > 0) { return y.toFixed(2) } - else if (abs_y === 0) { return '' } - else { return y } -}; - -Rickshaw.Fixtures.Number.formatBase1024KMGTP = function(y) { - var abs_y = Math.abs(y); - if (abs_y >= 1125899906842624) { return y / 1125899906842624 + "P" } - else if (abs_y >= 1099511627776){ return y / 1099511627776 + "T" } - else if (abs_y >= 1073741824) { return y / 1073741824 + "G" } - else if (abs_y >= 1048576) { return y / 1048576 + "M" } - else if (abs_y >= 1024) { return y / 1024 + "K" } - else if (abs_y < 1 && y > 0) { return y.toFixed(2) } - else if (abs_y === 0) { return '' } - else { return y } -}; -Rickshaw.namespace("Rickshaw.Color.Palette"); - -Rickshaw.Color.Palette = function(args) { - - var color = new Rickshaw.Fixtures.Color(); - - args = args || {}; - this.schemes = {}; - - this.scheme = color.schemes[args.scheme] || args.scheme || color.schemes.colorwheel; - this.runningIndex = 0; - this.generatorIndex = 0; - - if (args.interpolatedStopCount) { - var schemeCount = this.scheme.length - 1; - var i, j, scheme = []; - for (i = 0; i < schemeCount; i++) { - scheme.push(this.scheme[i]); - var generator = d3.interpolateHsl(this.scheme[i], this.scheme[i + 1]); - for (j = 1; j < args.interpolatedStopCount; j++) { - scheme.push(generator((1 / args.interpolatedStopCount) * j)); - } - } - scheme.push(this.scheme[this.scheme.length - 1]); - this.scheme = scheme; - } - this.rotateCount = this.scheme.length; - - this.color = function(key) { - return this.scheme[key] || this.scheme[this.runningIndex++] || this.interpolateColor() || '#808080'; - }; - - this.interpolateColor = function() { - if (!Array.isArray(this.scheme)) return; - var color; - if (this.generatorIndex == this.rotateCount * 2 - 1) { - color = d3.interpolateHsl(this.scheme[this.generatorIndex], this.scheme[0])(0.5); - this.generatorIndex = 0; - this.rotateCount *= 2; - } else { - color = d3.interpolateHsl(this.scheme[this.generatorIndex], this.scheme[this.generatorIndex + 1])(0.5); - this.generatorIndex++; - } - this.scheme.push(color); - return color; - }; - -}; -Rickshaw.namespace('Rickshaw.Graph.Ajax'); - -Rickshaw.Graph.Ajax = Rickshaw.Class.create( { - - initialize: function(args) { - - this.dataURL = args.dataURL; - - this.onData = args.onData || function(d) { return d }; - this.onComplete = args.onComplete || function() {}; - this.onError = args.onError || function() {}; - - this.args = args; // pass through to Rickshaw.Graph - - this.request(); - }, - - request: function() { - - $.ajax( { - url: this.dataURL, - dataType: 'json', - success: this.success.bind(this), - error: this.error.bind(this) - } ); - }, - - error: function() { - - console.log("error loading dataURL: " + this.dataURL); - this.onError(this); - }, - - success: function(data, status) { - - data = this.onData(data); - this.args.series = this._splice({ data: data, series: this.args.series }); - - this.graph = this.graph || new Rickshaw.Graph(this.args); - this.graph.render(); - - this.onComplete(this); - }, - - _splice: function(args) { - - var data = args.data; - var series = args.series; - - if (!args.series) return data; - - series.forEach( function(s) { - - var seriesKey = s.key || s.name; - if (!seriesKey) throw "series needs a key or a name"; - - data.forEach( function(d) { - - var dataKey = d.key || d.name; - if (!dataKey) throw "data needs a key or a name"; - - if (seriesKey == dataKey) { - var properties = ['color', 'name', 'data']; - properties.forEach( function(p) { - if (d[p]) s[p] = d[p]; - } ); - } - } ); - } ); - - return series; - } -} ); - -Rickshaw.namespace('Rickshaw.Graph.Annotate'); - -Rickshaw.Graph.Annotate = function(args) { - - var graph = this.graph = args.graph; - this.elements = { timeline: args.element }; - - var self = this; - - this.data = {}; - - this.elements.timeline.classList.add('rickshaw_annotation_timeline'); - - this.add = function(time, content, end_time) { - self.data[time] = self.data[time] || {'boxes': []}; - self.data[time].boxes.push({content: content, end: end_time}); - }; - - this.update = function() { - - Rickshaw.keys(self.data).forEach( function(time) { - - var annotation = self.data[time]; - var left = self.graph.x(time); - - if (left < 0 || left > self.graph.x.range()[1]) { - if (annotation.element) { - annotation.line.classList.add('offscreen'); - annotation.element.style.display = 'none'; - } - - annotation.boxes.forEach( function(box) { - if ( box.rangeElement ) box.rangeElement.classList.add('offscreen'); - }); - - return; - } - - if (!annotation.element) { - var element = annotation.element = document.createElement('div'); - element.classList.add('annotation'); - this.elements.timeline.appendChild(element); - element.addEventListener('click', function(e) { - element.classList.toggle('active'); - annotation.line.classList.toggle('active'); - annotation.boxes.forEach( function(box) { - if ( box.rangeElement ) box.rangeElement.classList.toggle('active'); - }); - }, false); - - } - - annotation.element.style.left = left + 'px'; - annotation.element.style.display = 'block'; - - annotation.boxes.forEach( function(box) { - - - var element = box.element; - - if (!element) { - element = box.element = document.createElement('div'); - element.classList.add('content'); - element.innerHTML = box.content; - annotation.element.appendChild(element); - - annotation.line = document.createElement('div'); - annotation.line.classList.add('annotation_line'); - self.graph.element.appendChild(annotation.line); - - if ( box.end ) { - box.rangeElement = document.createElement('div'); - box.rangeElement.classList.add('annotation_range'); - self.graph.element.appendChild(box.rangeElement); - } - - } - - if ( box.end ) { - - var annotationRangeStart = left; - var annotationRangeEnd = Math.min( self.graph.x(box.end), self.graph.x.range()[1] ); - - // annotation makes more sense at end - if ( annotationRangeStart > annotationRangeEnd ) { - annotationRangeEnd = left; - annotationRangeStart = Math.max( self.graph.x(box.end), self.graph.x.range()[0] ); - } - - var annotationRangeWidth = annotationRangeEnd - annotationRangeStart; - - box.rangeElement.style.left = annotationRangeStart + 'px'; - box.rangeElement.style.width = annotationRangeWidth + 'px'; - - box.rangeElement.classList.remove('offscreen'); - } - - annotation.line.classList.remove('offscreen'); - annotation.line.style.left = left + 'px'; - } ); - }, this ); - }; - - this.graph.onUpdate( function() { self.update() } ); -}; -Rickshaw.namespace('Rickshaw.Graph.Axis.Time'); - -Rickshaw.Graph.Axis.Time = function(args) { - - var self = this; - - this.graph = args.graph; - this.elements = []; - this.ticksTreatment = args.ticksTreatment || 'plain'; - this.fixedTimeUnit = args.timeUnit; - - var time = args.timeFixture || new Rickshaw.Fixtures.Time(); - - this.appropriateTimeUnit = function() { - - var unit; - var units = time.units; - - var domain = this.graph.x.domain(); - var rangeSeconds = domain[1] - domain[0]; - - units.forEach( function(u) { - if (Math.floor(rangeSeconds / u.seconds) >= 2) { - unit = unit || u; - } - } ); - - return (unit || time.units[time.units.length - 1]); - }; - - this.tickOffsets = function() { - - var domain = this.graph.x.domain(); - - var unit = this.fixedTimeUnit || this.appropriateTimeUnit(); - var count = Math.ceil((domain[1] - domain[0]) / unit.seconds); - - var runningTick = domain[0]; - - var offsets = []; - - for (var i = 0; i < count; i++) { - - var tickValue = time.ceil(runningTick, unit); - runningTick = tickValue + unit.seconds / 2; - - offsets.push( { value: tickValue, unit: unit } ); - } - - return offsets; - }; - - this.render = function() { - - this.elements.forEach( function(e) { - e.parentNode.removeChild(e); - } ); - - this.elements = []; - - var offsets = this.tickOffsets(); - - offsets.forEach( function(o) { - - if (self.graph.x(o.value) > self.graph.x.range()[1]) return; - - var element = document.createElement('div'); - element.style.left = self.graph.x(o.value) + 'px'; - element.classList.add('x_tick'); - element.classList.add(self.ticksTreatment); - - var title = document.createElement('div'); - title.classList.add('title'); - title.innerHTML = o.unit.formatter(new Date(o.value * 1000)); - element.appendChild(title); - - self.graph.element.appendChild(element); - self.elements.push(element); - - } ); - }; - - this.graph.onUpdate( function() { self.render() } ); -}; - -Rickshaw.namespace('Rickshaw.Graph.Axis.X'); - -Rickshaw.Graph.Axis.X = function(args) { - - var self = this; - var berthRate = 0.10; - - this.initialize = function(args) { - - this.graph = args.graph; - this.orientation = args.orientation || 'top'; - - this.pixelsPerTick = args.pixelsPerTick || 75; - if (args.ticks) this.staticTicks = args.ticks; - if (args.tickValues) this.tickValues = args.tickValues; - - this.tickSize = args.tickSize || 4; - this.ticksTreatment = args.ticksTreatment || 'plain'; - - if (args.element) { - - this.element = args.element; - this._discoverSize(args.element, args); - - this.vis = d3.select(args.element) - .append("svg:svg") - .attr('height', this.height) - .attr('width', this.width) - .attr('class', 'rickshaw_graph x_axis_d3'); - - this.element = this.vis[0][0]; - this.element.style.position = 'relative'; - - this.setSize({ width: args.width, height: args.height }); - - } else { - this.vis = this.graph.vis; - } - - this.graph.onUpdate( function() { self.render() } ); - }; - - this.setSize = function(args) { - - args = args || {}; - if (!this.element) return; - - this._discoverSize(this.element.parentNode, args); - - this.vis - .attr('height', this.height) - .attr('width', this.width * (1 + berthRate)); - - var berth = Math.floor(this.width * berthRate / 2); - this.element.style.left = -1 * berth + 'px'; - }; - - this.render = function() { - - if (this.graph.width !== this._renderWidth) this.setSize({ auto: true }); - - var axis = d3.svg.axis().scale(this.graph.x).orient(this.orientation); - axis.tickFormat( args.tickFormat || function(x) { return x } ); - if (this.tickValues) axis.tickValues(this.tickValues); - - this.ticks = this.staticTicks || Math.floor(this.graph.width / this.pixelsPerTick); - - var berth = Math.floor(this.width * berthRate / 2) || 0; - var transform; - - if (this.orientation == 'top') { - var yOffset = this.height || this.graph.height; - transform = 'translate(' + berth + ',' + yOffset + ')'; - } else { - transform = 'translate(' + berth + ', 0)'; - } - - if (this.element) { - this.vis.selectAll('*').remove(); - } - - this.vis - .append("svg:g") - .attr("class", ["x_ticks_d3", this.ticksTreatment].join(" ")) - .attr("transform", transform) - .call(axis.ticks(this.ticks).tickSubdivide(0).tickSize(this.tickSize)); - - var gridSize = (this.orientation == 'bottom' ? 1 : -1) * this.graph.height; - - this.graph.vis - .append("svg:g") - .attr("class", "x_grid_d3") - .call(axis.ticks(this.ticks).tickSubdivide(0).tickSize(gridSize)); - - this._renderHeight = this.graph.height; - }; - - this._discoverSize = function(element, args) { - - if (typeof window !== 'undefined') { - - var style = window.getComputedStyle(element, null); - var elementHeight = parseInt(style.getPropertyValue('height'), 10); - - if (!args.auto) { - var elementWidth = parseInt(style.getPropertyValue('width'), 10); - } - } - - this.width = (args.width || elementWidth || this.graph.width) * (1 + berthRate); - this.height = args.height || elementHeight || 40; - }; - - this.initialize(args); -}; - -Rickshaw.namespace('Rickshaw.Graph.Axis.Y'); - -Rickshaw.Graph.Axis.Y = Rickshaw.Class.create( { - - initialize: function(args) { - - this.graph = args.graph; - this.orientation = args.orientation || 'right'; - - this.pixelsPerTick = args.pixelsPerTick || 75; - if (args.ticks) this.staticTicks = args.ticks; - if (args.tickValues) this.tickValues = args.tickValues; - - this.tickSize = args.tickSize || 4; - this.ticksTreatment = args.ticksTreatment || 'plain'; - - this.tickFormat = args.tickFormat || function(y) { return y }; - - this.berthRate = 0.10; - - if (args.element) { - - this.element = args.element; - this.vis = d3.select(args.element) - .append("svg:svg") - .attr('class', 'rickshaw_graph y_axis'); - - this.element = this.vis[0][0]; - this.element.style.position = 'relative'; - - this.setSize({ width: args.width, height: args.height }); - - } else { - this.vis = this.graph.vis; - } - - var self = this; - this.graph.onUpdate( function() { self.render() } ); - }, - - setSize: function(args) { - - args = args || {}; - - if (!this.element) return; - - if (typeof window !== 'undefined') { - - var style = window.getComputedStyle(this.element.parentNode, null); - var elementWidth = parseInt(style.getPropertyValue('width'), 10); - - if (!args.auto) { - var elementHeight = parseInt(style.getPropertyValue('height'), 10); - } - } - - this.width = args.width || elementWidth || this.graph.width * this.berthRate; - this.height = args.height || elementHeight || this.graph.height; - - this.vis - .attr('width', this.width) - .attr('height', this.height * (1 + this.berthRate)); - - var berth = this.height * this.berthRate; - - if (this.orientation == 'left') { - this.element.style.top = -1 * berth + 'px'; - } - }, - - render: function() { - - if (this.graph.height !== this._renderHeight) this.setSize({ auto: true }); - - this.ticks = this.staticTicks || Math.floor(this.graph.height / this.pixelsPerTick); - - var axis = this._drawAxis(this.graph.y); - - this._drawGrid(axis); - - this._renderHeight = this.graph.height; - }, - - _drawAxis: function(scale) { - var axis = d3.svg.axis().scale(scale).orient(this.orientation); - axis.tickFormat(this.tickFormat); - if (this.tickValues) axis.tickValues(this.tickValues); - - if (this.orientation == 'left') { - var berth = this.height * this.berthRate; - var transform = 'translate(' + this.width + ', ' + berth + ')'; - } - - if (this.element) { - this.vis.selectAll('*').remove(); - } - - this.vis - .append("svg:g") - .attr("class", ["y_ticks", this.ticksTreatment].join(" ")) - .attr("transform", transform) - .call(axis.ticks(this.ticks).tickSubdivide(0).tickSize(this.tickSize)); - - return axis; - }, - - _drawGrid: function(axis) { - var gridSize = (this.orientation == 'right' ? 1 : -1) * this.graph.width; - - this.graph.vis - .append("svg:g") - .attr("class", "y_grid") - .call(axis.ticks(this.ticks).tickSubdivide(0).tickSize(gridSize)); - } -} ); -Rickshaw.namespace('Rickshaw.Graph.Axis.Y.Scaled'); - -Rickshaw.Graph.Axis.Y.Scaled = Rickshaw.Class.create( Rickshaw.Graph.Axis.Y, { - - initialize: function($super, args) { - - if (typeof(args.scale) === 'undefined') { - throw new Error('Scaled requires scale'); - } - - this.scale = args.scale; - - if (typeof(args.grid) === 'undefined') { - this.grid = true; - } else { - this.grid = args.grid; - } - - $super(args); - - }, - - _drawAxis: function($super, scale) { - // make a copy of the custom scale, adjust the range to match the graph's scale - var adjustedScale = this.scale.copy().range(scale.range()); - - return $super(adjustedScale); - }, - - _drawGrid: function($super, axis) { - if (this.grid) { - // only draw the axis if the grid option is true - $super(axis); - } - } -} ); -Rickshaw.namespace('Rickshaw.Graph.Behavior.Series.Highlight'); - -Rickshaw.Graph.Behavior.Series.Highlight = function(args) { - - this.graph = args.graph; - this.legend = args.legend; - - var self = this; - - var colorSafe = {}; - var activeLine = null; - - var disabledColor = args.disabledColor || function(seriesColor) { - return d3.interpolateRgb(seriesColor, d3.rgb('#d8d8d8'))(0.8).toString(); - }; - - this.addHighlightEvents = function (l) { - - l.element.addEventListener( 'mouseover', function(e) { - - if (activeLine) return; - else activeLine = l; - - self.legend.lines.forEach( function(line, index) { - - if (l === line) { - - // if we're not in a stacked renderer bring active line to the top - if (index > 0 && self.graph.renderer.unstack && (line.series.renderer ? line.series.renderer.unstack : true)) { - - var seriesIndex = self.graph.series.length - index - 1; - line.originalIndex = seriesIndex; - - var series = self.graph.series.splice(seriesIndex, 1)[0]; - self.graph.series.push(series); - } - return; - } - - colorSafe[line.series.name] = colorSafe[line.series.name] || line.series.color; - line.series.color = disabledColor(line.series.color); - - } ); - - self.graph.update(); - - }, false ); - - l.element.addEventListener( 'mouseout', function(e) { - - if (!activeLine) return; - else activeLine = null; - - self.legend.lines.forEach( function(line) { - - // return reordered series to its original place - if (l === line && line.hasOwnProperty('originalIndex')) { - - var series = self.graph.series.pop(); - self.graph.series.splice(line.originalIndex, 0, series); - delete line.originalIndex; - } - - if (colorSafe[line.series.name]) { - line.series.color = colorSafe[line.series.name]; - } - } ); - - self.graph.update(); - - }, false ); - }; - - if (this.legend) { - this.legend.lines.forEach( function(l) { - self.addHighlightEvents(l); - } ); - } - -}; -Rickshaw.namespace('Rickshaw.Graph.Behavior.Series.Order'); - -Rickshaw.Graph.Behavior.Series.Order = function(args) { - - this.graph = args.graph; - this.legend = args.legend; - - var self = this; - - if (typeof window.$ == 'undefined') { - throw "couldn't find jQuery at window.$"; - } - - if (typeof window.$.ui == 'undefined') { - throw "couldn't find jQuery UI at window.$.ui"; - } - - $(function() { - $(self.legend.list).sortable( { - containment: 'parent', - tolerance: 'pointer', - update: function( event, ui ) { - var series = []; - $(self.legend.list).find('li').each( function(index, item) { - if (!item.series) return; - series.push(item.series); - } ); - - for (var i = self.graph.series.length - 1; i >= 0; i--) { - self.graph.series[i] = series.shift(); - } - - self.graph.update(); - } - } ); - $(self.legend.list).disableSelection(); - }); - - //hack to make jquery-ui sortable behave - this.graph.onUpdate( function() { - var h = window.getComputedStyle(self.legend.element).height; - self.legend.element.style.height = h; - } ); -}; -Rickshaw.namespace('Rickshaw.Graph.Behavior.Series.Toggle'); - -Rickshaw.Graph.Behavior.Series.Toggle = function(args) { - - this.graph = args.graph; - this.legend = args.legend; - - var self = this; - - this.addAnchor = function(line) { - var anchor = document.createElement('a'); - anchor.innerHTML = '✔'; - anchor.classList.add('action'); - line.element.insertBefore(anchor, line.element.firstChild); - - anchor.onclick = function(e) { - if (line.series.disabled) { - line.series.enable(); - line.element.classList.remove('disabled'); - } else { - if (this.graph.series.filter(function(s) { return !s.disabled }).length <= 1) return; - line.series.disable(); - line.element.classList.add('disabled'); - } - - }.bind(this); - - var label = line.element.getElementsByTagName('span')[0]; - label.onclick = function(e){ - - var disableAllOtherLines = line.series.disabled; - if ( ! disableAllOtherLines ) { - for ( var i = 0; i < self.legend.lines.length; i++ ) { - var l = self.legend.lines[i]; - if ( line.series === l.series ) { - // noop - } else if ( l.series.disabled ) { - // noop - } else { - disableAllOtherLines = true; - break; - } - } - } - - // show all or none - if ( disableAllOtherLines ) { - - // these must happen first or else we try ( and probably fail ) to make a no line graph - line.series.enable(); - line.element.classList.remove('disabled'); - - self.legend.lines.forEach(function(l){ - if ( line.series === l.series ) { - // noop - } else { - l.series.disable(); - l.element.classList.add('disabled'); - } - }); - - } else { - - self.legend.lines.forEach(function(l){ - l.series.enable(); - l.element.classList.remove('disabled'); - }); - - } - - }; - - }; - - if (this.legend) { - - if (typeof $ != 'undefined' && $(this.legend.list).sortable) { - - $(this.legend.list).sortable( { - start: function(event, ui) { - ui.item.bind('no.onclick', - function(event) { - event.preventDefault(); - } - ); - }, - stop: function(event, ui) { - setTimeout(function(){ - ui.item.unbind('no.onclick'); - }, 250); - } - }); - } - - this.legend.lines.forEach( function(l) { - self.addAnchor(l); - } ); - } - - this._addBehavior = function() { - - this.graph.series.forEach( function(s) { - - s.disable = function() { - - if (self.graph.series.length <= 1) { - throw('only one series left'); - } - - s.disabled = true; - self.graph.update(); - }; - - s.enable = function() { - s.disabled = false; - self.graph.update(); - }; - } ); - }; - this._addBehavior(); - - this.updateBehaviour = function () { this._addBehavior() }; - -}; -Rickshaw.namespace('Rickshaw.Graph.HoverDetail'); - -Rickshaw.Graph.HoverDetail = Rickshaw.Class.create({ - - initialize: function(args) { - - var graph = this.graph = args.graph; - - this.xFormatter = args.xFormatter || function(x) { - return new Date( x * 1000 ).toUTCString(); - }; - - this.yFormatter = args.yFormatter || function(y) { - return y === null ? y : y.toFixed(2); - }; - - var element = this.element = document.createElement('div'); - element.className = 'detail'; - - this.visible = true; - graph.element.appendChild(element); - - this.lastEvent = null; - this._addListeners(); - - this.onShow = args.onShow; - this.onHide = args.onHide; - this.onRender = args.onRender; - - this.formatter = args.formatter || this.formatter; - - }, - - formatter: function(series, x, y, formattedX, formattedY, d) { - return series.name + ': ' + formattedY; - }, - - update: function(e) { - - e = e || this.lastEvent; - if (!e) return; - this.lastEvent = e; - - if (!e.target.nodeName.match(/^(path|svg|rect|circle)$/)) return; - - var graph = this.graph; - - var eventX = e.offsetX || e.layerX; - var eventY = e.offsetY || e.layerY; - - var j = 0; - var points = []; - var nearestPoint; - - this.graph.series.active().forEach( function(series) { - - var data = this.graph.stackedData[j++]; - - if (!data.length) - return; - - var domainX = graph.x.invert(eventX); - - var domainIndexScale = d3.scale.linear() - .domain([data[0].x, data.slice(-1)[0].x]) - .range([0, data.length - 1]); - - var approximateIndex = Math.round(domainIndexScale(domainX)); - if (approximateIndex == data.length - 1) approximateIndex--; - - var dataIndex = Math.min(approximateIndex || 0, data.length - 1); - - for (var i = approximateIndex; i < data.length - 1;) { - - if (!data[i] || !data[i + 1]) break; - - if (data[i].x <= domainX && data[i + 1].x > domainX) { - dataIndex = Math.abs(domainX - data[i].x) < Math.abs(domainX - data[i + 1].x) ? i : i + 1; - break; - } - - if (data[i + 1].x <= domainX) { i++ } else { i-- } - } - - if (dataIndex < 0) dataIndex = 0; - var value = data[dataIndex]; - - var distance = Math.sqrt( - Math.pow(Math.abs(graph.x(value.x) - eventX), 2) + - Math.pow(Math.abs(graph.y(value.y + value.y0) - eventY), 2) - ); - - var xFormatter = series.xFormatter || this.xFormatter; - var yFormatter = series.yFormatter || this.yFormatter; - - var point = { - formattedXValue: xFormatter(value.x), - formattedYValue: yFormatter(series.scale ? series.scale.invert(value.y) : value.y), - series: series, - value: value, - distance: distance, - order: j, - name: series.name - }; - - if (!nearestPoint || distance < nearestPoint.distance) { - nearestPoint = point; - } - - points.push(point); - - }, this ); - - if (!nearestPoint) - return; - - nearestPoint.active = true; - - var domainX = nearestPoint.value.x; - var formattedXValue = nearestPoint.formattedXValue; - - this.element.innerHTML = ''; - this.element.style.left = graph.x(domainX) + 'px'; - - this.visible && this.render( { - points: points, - detail: points, // for backwards compatibility - mouseX: eventX, - mouseY: eventY, - formattedXValue: formattedXValue, - domainX: domainX - } ); - }, - - hide: function() { - this.visible = false; - this.element.classList.add('inactive'); - - if (typeof this.onHide == 'function') { - this.onHide(); - } - }, - - show: function() { - this.visible = true; - this.element.classList.remove('inactive'); - - if (typeof this.onShow == 'function') { - this.onShow(); - } - }, - - render: function(args) { - - var graph = this.graph; - var points = args.points; - var point = points.filter( function(p) { return p.active } ).shift(); - - if (point.value.y === null) return; - - var formattedXValue = point.formattedXValue; - var formattedYValue = point.formattedYValue; - - this.element.innerHTML = ''; - this.element.style.left = graph.x(point.value.x) + 'px'; - - var xLabel = document.createElement('div'); - - xLabel.className = 'x_label'; - xLabel.innerHTML = formattedXValue; - this.element.appendChild(xLabel); - - var item = document.createElement('div'); - - item.className = 'item'; - - // invert the scale if this series displays using a scale - var series = point.series; - var actualY = series.scale ? series.scale.invert(point.value.y) : point.value.y; - - item.innerHTML = this.formatter(series, point.value.x, actualY, formattedXValue, formattedYValue, point); - item.style.top = this.graph.y(point.value.y0 + point.value.y) + 'px'; - - this.element.appendChild(item); - - var dot = document.createElement('div'); - - dot.className = 'dot'; - dot.style.top = item.style.top; - dot.style.borderColor = series.color; - - this.element.appendChild(dot); - - if (point.active) { - item.className = 'item active'; - dot.className = 'dot active'; - } - - this.show(); - - if (typeof this.onRender == 'function') { - this.onRender(args); - } - }, - - _addListeners: function() { - - this.graph.element.addEventListener( - 'mousemove', - function(e) { - this.visible = true; - this.update(e); - }.bind(this), - false - ); - - this.graph.onUpdate( function() { this.update() }.bind(this) ); - - this.graph.element.addEventListener( - 'mouseout', - function(e) { - if (e.relatedTarget && !(e.relatedTarget.compareDocumentPosition(this.graph.element) & Node.DOCUMENT_POSITION_CONTAINS)) { - this.hide(); - } - }.bind(this), - false - ); - } -}); - -Rickshaw.namespace('Rickshaw.Graph.JSONP'); - -Rickshaw.Graph.JSONP = Rickshaw.Class.create( Rickshaw.Graph.Ajax, { - - request: function() { - - $.ajax( { - url: this.dataURL, - dataType: 'jsonp', - success: this.success.bind(this), - error: this.error.bind(this) - } ); - } -} ); -Rickshaw.namespace('Rickshaw.Graph.Legend'); - -Rickshaw.Graph.Legend = function(args) { - - var element = this.element = args.element; - var graph = this.graph = args.graph; - - var self = this; - - element.classList.add('rickshaw_legend'); - - var list = this.list = document.createElement('ul'); - element.appendChild(list); - - var series = graph.series - .map( function(s) { return s } ); - - if (!args.naturalOrder) { - series = series.reverse(); - } - - this.lines = []; - - this.addLine = function (series) { - var line = document.createElement('li'); - line.className = 'line'; - if (series.disabled) { - line.className += ' disabled'; - } - - var swatch = document.createElement('div'); - swatch.className = 'swatch'; - swatch.style.backgroundColor = series.color; - - line.appendChild(swatch); - - var label = document.createElement('span'); - label.className = 'label'; - label.innerHTML = series.name; - - line.appendChild(label); - list.appendChild(line); - - line.series = series; - - if (series.noLegend) { - line.style.display = 'none'; - } - - var _line = { element: line, series: series }; - if (self.shelving) { - self.shelving.addAnchor(_line); - self.shelving.updateBehaviour(); - } - if (self.highlighter) { - self.highlighter.addHighlightEvents(_line); - } - self.lines.push(_line); - }; - - series.forEach( function(s) { - self.addLine(s); - } ); - - graph.onUpdate( function() {} ); -}; -Rickshaw.namespace('Rickshaw.Graph.RangeSlider'); - -Rickshaw.Graph.RangeSlider = Rickshaw.Class.create({ - - initialize: function(args) { - - var element = this.element = args.element; - var graph = this.graph = args.graph; - - this.build(); - - graph.onUpdate( function() { this.update() }.bind(this) ); - }, - - build: function() { - - var element = this.element; - var graph = this.graph; - - var domain = graph.dataDomain(); - - $( function() { - $(element).slider( { - range: true, - min: domain[0], - max: domain[1], - values: [ - domain[0], - domain[1] - ], - slide: function( event, ui ) { - - if (ui.values[1] <= ui.values[0]) return; - - graph.window.xMin = ui.values[0]; - graph.window.xMax = ui.values[1]; - graph.update(); - - var domain = graph.dataDomain(); - - // if we're at an extreme, stick there - if (domain[0] == ui.values[0]) { - graph.window.xMin = undefined; - } - if (domain[1] == ui.values[1]) { - graph.window.xMax = undefined; - } - } - } ); - } ); - - element[0].style.width = graph.width + 'px'; - }, - - update: function() { - - var element = this.element; - var graph = this.graph; - - var values = $(element).slider('option', 'values'); - - var domain = graph.dataDomain(); - - $(element).slider('option', 'min', domain[0]); - $(element).slider('option', 'max', domain[1]); - - if (graph.window.xMin == null) { - values[0] = domain[0]; - } - if (graph.window.xMax == null) { - values[1] = domain[1]; - } - - $(element).slider('option', 'values', values); - } -}); - -Rickshaw.namespace("Rickshaw.Graph.Renderer"); - -Rickshaw.Graph.Renderer = Rickshaw.Class.create( { - - initialize: function(args) { - this.graph = args.graph; - this.tension = args.tension || this.tension; - this.graph.unstacker = this.graph.unstacker || new Rickshaw.Graph.Unstacker( { graph: this.graph } ); - this.configure(args); - }, - - seriesPathFactory: function() { - //implement in subclass - }, - - seriesStrokeFactory: function() { - // implement in subclass - }, - - defaults: function() { - return { - tension: 0.8, - strokeWidth: 2, - unstack: true, - padding: { top: 0.01, right: 0, bottom: 0.01, left: 0 }, - stroke: false, - fill: false - }; - }, - - domain: function(data) { - - var stackedData = data || this.graph.stackedData || this.graph.stackData(); - var firstPoint = stackedData[0][0]; - - if (firstPoint === undefined) { - return { x: [null, null], y: [null, null] }; - } - - var xMin = firstPoint.x; - var xMax = firstPoint.x; - - var yMin = firstPoint.y + firstPoint.y0; - var yMax = firstPoint.y + firstPoint.y0; - - stackedData.forEach( function(series) { - - series.forEach( function(d) { - - if (d.y == null) return; - - var y = d.y + d.y0; - - if (y < yMin) yMin = y; - if (y > yMax) yMax = y; - } ); - - if (series[0].x < xMin) xMin = series[0].x; - if (series[series.length - 1].x > xMax) xMax = series[series.length - 1].x; - } ); - - xMin -= (xMax - xMin) * this.padding.left; - xMax += (xMax - xMin) * this.padding.right; - - yMin = this.graph.min === 'auto' ? yMin : this.graph.min || 0; - yMax = this.graph.max === undefined ? yMax : this.graph.max; - - if (this.graph.min === 'auto' || yMin < 0) { - yMin -= (yMax - yMin) * this.padding.bottom; - } - - if (this.graph.max === undefined) { - yMax += (yMax - yMin) * this.padding.top; - } - - return { x: [xMin, xMax], y: [yMin, yMax] }; - }, - - render: function(args) { - - args = args || {}; - - var graph = this.graph; - var series = args.series || graph.series; - - var vis = args.vis || graph.vis; - vis.selectAll('*').remove(); - - var data = series - .filter(function(s) { return !s.disabled }) - .map(function(s) { return s.stack }); - - var nodes = vis.selectAll("path") - .data(data) - .enter().append("svg:path") - .attr("d", this.seriesPathFactory()); - - var i = 0; - series.forEach( function(series) { - if (series.disabled) return; - series.path = nodes[0][i++]; - this._styleSeries(series); - }, this ); - }, - - _styleSeries: function(series) { - - var fill = this.fill ? series.color : 'none'; - var stroke = this.stroke ? series.color : 'none'; - - series.path.setAttribute('fill', fill); - series.path.setAttribute('stroke', stroke); - series.path.setAttribute('stroke-width', this.strokeWidth); - series.path.setAttribute('class', series.className); - }, - - configure: function(args) { - - args = args || {}; - - Rickshaw.keys(this.defaults()).forEach( function(key) { - - if (!args.hasOwnProperty(key)) { - this[key] = this[key] || this.graph[key] || this.defaults()[key]; - return; - } - - if (typeof this.defaults()[key] == 'object') { - - Rickshaw.keys(this.defaults()[key]).forEach( function(k) { - - this[key][k] = - args[key][k] !== undefined ? args[key][k] : - this[key][k] !== undefined ? this[key][k] : - this.defaults()[key][k]; - }, this ); - - } else { - this[key] = - args[key] !== undefined ? args[key] : - this[key] !== undefined ? this[key] : - this.graph[key] !== undefined ? this.graph[key] : - this.defaults()[key]; - } - - }, this ); - }, - - setStrokeWidth: function(strokeWidth) { - if (strokeWidth !== undefined) { - this.strokeWidth = strokeWidth; - } - }, - - setTension: function(tension) { - if (tension !== undefined) { - this.tension = tension; - } - } -} ); - -Rickshaw.namespace('Rickshaw.Graph.Renderer.Line'); - -Rickshaw.Graph.Renderer.Line = Rickshaw.Class.create( Rickshaw.Graph.Renderer, { - - name: 'line', - - defaults: function($super) { - - return Rickshaw.extend( $super(), { - unstack: true, - fill: false, - stroke: true - } ); - }, - - seriesPathFactory: function() { - - var graph = this.graph; - - var factory = d3.svg.line() - .x( function(d) { return graph.x(d.x) } ) - .y( function(d) { return graph.y(d.y) } ) - .interpolate(this.graph.interpolation).tension(this.tension); - - factory.defined && factory.defined( function(d) { return d.y !== null } ); - return factory; - } -} ); - -Rickshaw.namespace('Rickshaw.Graph.Renderer.Stack'); - -Rickshaw.Graph.Renderer.Stack = Rickshaw.Class.create( Rickshaw.Graph.Renderer, { - - name: 'stack', - - defaults: function($super) { - - return Rickshaw.extend( $super(), { - fill: true, - stroke: false, - unstack: false - } ); - }, - - seriesPathFactory: function() { - - var graph = this.graph; - - var factory = d3.svg.area() - .x( function(d) { return graph.x(d.x) } ) - .y0( function(d) { return graph.y(d.y0) } ) - .y1( function(d) { return graph.y(d.y + d.y0) } ) - .interpolate(this.graph.interpolation).tension(this.tension); - - factory.defined && factory.defined( function(d) { return d.y !== null } ); - return factory; - } -} ); - -Rickshaw.namespace('Rickshaw.Graph.Renderer.Bar'); - -Rickshaw.Graph.Renderer.Bar = Rickshaw.Class.create( Rickshaw.Graph.Renderer, { - - name: 'bar', - - defaults: function($super) { - - var defaults = Rickshaw.extend( $super(), { - gapSize: 0.05, - unstack: false - } ); - - delete defaults.tension; - return defaults; - }, - - initialize: function($super, args) { - args = args || {}; - this.gapSize = args.gapSize || this.gapSize; - $super(args); - }, - - domain: function($super) { - - var domain = $super(); - - var frequentInterval = this._frequentInterval(this.graph.stackedData.slice(-1).shift()); - domain.x[1] += Number(frequentInterval.magnitude); - - return domain; - }, - - barWidth: function(series) { - - var frequentInterval = this._frequentInterval(series.stack); - var barWidth = this.graph.x(series.stack[0].x + frequentInterval.magnitude * (1 - this.gapSize)); - - return barWidth; - }, - - render: function(args) { - - args = args || {}; - - var graph = this.graph; - var series = args.series || graph.series; - - var vis = args.vis || graph.vis; - vis.selectAll('*').remove(); - - var barWidth = this.barWidth(series.active()[0]); - var barXOffset = 0; - - var activeSeriesCount = series.filter( function(s) { return !s.disabled; } ).length; - var seriesBarWidth = this.unstack ? barWidth / activeSeriesCount : barWidth; - - var transform = function(d) { - // add a matrix transform for negative values - var matrix = [ 1, 0, 0, (d.y < 0 ? -1 : 1), 0, (d.y < 0 ? graph.y.magnitude(Math.abs(d.y)) * 2 : 0) ]; - return "matrix(" + matrix.join(',') + ")"; - }; - - series.forEach( function(series) { - - if (series.disabled) return; - - var barWidth = this.barWidth(series); - - var nodes = vis.selectAll("path") - .data(series.stack.filter( function(d) { return d.y !== null } )) - .enter().append("svg:rect") - .attr("x", function(d) { return graph.x(d.x) + barXOffset }) - .attr("y", function(d) { return (graph.y(d.y0 + Math.abs(d.y))) * (d.y < 0 ? -1 : 1 ) }) - .attr("width", seriesBarWidth) - .attr("height", function(d) { return graph.y.magnitude(Math.abs(d.y)) }) - .attr("transform", transform); - - Array.prototype.forEach.call(nodes[0], function(n) { - n.setAttribute('fill', series.color); - } ); - - if (this.unstack) barXOffset += seriesBarWidth; - - }, this ); - }, - - _frequentInterval: function(data) { - - var intervalCounts = {}; - - for (var i = 0; i < data.length - 1; i++) { - var interval = data[i + 1].x - data[i].x; - intervalCounts[interval] = intervalCounts[interval] || 0; - intervalCounts[interval]++; - } - - var frequentInterval = { count: 0, magnitude: 1 }; - - Rickshaw.keys(intervalCounts).forEach( function(i) { - if (frequentInterval.count < intervalCounts[i]) { - frequentInterval = { - count: intervalCounts[i], - magnitude: i - }; - } - } ); - - return frequentInterval; - } -} ); - -Rickshaw.namespace('Rickshaw.Graph.Renderer.Area'); - -Rickshaw.Graph.Renderer.Area = Rickshaw.Class.create( Rickshaw.Graph.Renderer, { - - name: 'area', - - defaults: function($super) { - - return Rickshaw.extend( $super(), { - unstack: false, - fill: false, - stroke: false - } ); - }, - - seriesPathFactory: function() { - - var graph = this.graph; - - var factory = d3.svg.area() - .x( function(d) { return graph.x(d.x) } ) - .y0( function(d) { return graph.y(d.y0) } ) - .y1( function(d) { return graph.y(d.y + d.y0) } ) - .interpolate(graph.interpolation).tension(this.tension); - - factory.defined && factory.defined( function(d) { return d.y !== null } ); - return factory; - }, - - seriesStrokeFactory: function() { - - var graph = this.graph; - - var factory = d3.svg.line() - .x( function(d) { return graph.x(d.x) } ) - .y( function(d) { return graph.y(d.y + d.y0) } ) - .interpolate(graph.interpolation).tension(this.tension); - - factory.defined && factory.defined( function(d) { return d.y !== null } ); - return factory; - }, - - render: function() { - - var graph = this.graph; - - graph.vis.selectAll('*').remove(); - - // insert or stacked areas so strokes lay on top of areas - var method = this.unstack ? 'append' : 'insert'; - - var nodes = graph.vis.selectAll("path") - .data(this.graph.stackedData) - .enter()[method]("svg:g", 'g'); - - nodes.append("svg:path") - .attr("d", this.seriesPathFactory()) - .attr("class", 'area'); - - if (this.stroke) { - nodes.append("svg:path") - .attr("d", this.seriesStrokeFactory()) - .attr("class", 'line'); - } - - var i = 0; - graph.series.forEach( function(series) { - if (series.disabled) return; - series.path = nodes[0][i++]; - this._styleSeries(series); - }, this ); - }, - - _styleSeries: function(series) { - - if (!series.path) return; - - d3.select(series.path).select('.area') - .attr('fill', series.color); - - if (this.stroke) { - d3.select(series.path).select('.line') - .attr('fill', 'none') - .attr('stroke', series.stroke || d3.interpolateRgb(series.color, 'black')(0.125)) - .attr('stroke-width', this.strokeWidth); - } - - if (series.className) { - series.path.setAttribute('class', series.className); - } - } -} ); - -Rickshaw.namespace('Rickshaw.Graph.Renderer.ScatterPlot'); - -Rickshaw.Graph.Renderer.ScatterPlot = Rickshaw.Class.create( Rickshaw.Graph.Renderer, { - - name: 'scatterplot', - - defaults: function($super) { - - return Rickshaw.extend( $super(), { - unstack: true, - fill: true, - stroke: false, - padding:{ top: 0.01, right: 0.01, bottom: 0.01, left: 0.01 }, - dotSize: 4 - } ); - }, - - initialize: function($super, args) { - $super(args); - }, - - render: function(args) { - - args = args || {}; - - var graph = this.graph; - - var series = args.series || graph.series; - var vis = args.vis || graph.vis; - - var dotSize = this.dotSize; - - vis.selectAll('*').remove(); - - series.forEach( function(series) { - - if (series.disabled) return; - - var nodes = vis.selectAll("path") - .data(series.stack.filter( function(d) { return d.y !== null } )) - .enter().append("svg:circle") - .attr("cx", function(d) { return graph.x(d.x) }) - .attr("cy", function(d) { return graph.y(d.y) }) - .attr("r", function(d) { return ("r" in d) ? d.r : dotSize}); - - Array.prototype.forEach.call(nodes[0], function(n) { - n.setAttribute('fill', series.color); - } ); - - }, this ); - } -} ); -Rickshaw.namespace('Rickshaw.Graph.Renderer.Multi'); - -Rickshaw.Graph.Renderer.Multi = Rickshaw.Class.create( Rickshaw.Graph.Renderer, { - - name: 'multi', - - initialize: function($super, args) { - - $super(args); - }, - - defaults: function($super) { - - return Rickshaw.extend( $super(), { - unstack: true, - fill: false, - stroke: true - } ); - }, - - domain: function($super) { - - this.graph.stackData(); - - var domains = []; - - var groups = this._groups(); - this._stack(groups); - - groups.forEach( function(group) { - - var data = group.series - .filter( function(s) { return !s.disabled } ) - .map( function(s) { return s.stack }); - - if (!data.length) return; - - var domain = $super(data); - domains.push(domain); - }); - - var xMin = d3.min(domains.map( function(d) { return d.x[0] } )); - var xMax = d3.max(domains.map( function(d) { return d.x[1] } )); - var yMin = d3.min(domains.map( function(d) { return d.y[0] } )); - var yMax = d3.max(domains.map( function(d) { return d.y[1] } )); - - return { x: [xMin, xMax], y: [yMin, yMax] }; - }, - - _groups: function() { - - var graph = this.graph; - - var renderGroups = {}; - - graph.series.forEach( function(series) { - - if (series.disabled) return; - - if (!renderGroups[series.renderer]) { - - var ns = "http://www.w3.org/2000/svg"; - var vis = document.createElementNS(ns, 'g'); - - graph.vis[0][0].appendChild(vis); - - var renderer = graph._renderers[series.renderer]; - - renderGroups[series.renderer] = { - renderer: renderer, - series: [], - vis: d3.select(vis) - }; - } - - renderGroups[series.renderer].series.push(series); - - }, this); - - var groups = []; - - Object.keys(renderGroups).forEach( function(key) { - var group = renderGroups[key]; - groups.push(group); - }); - - return groups; - }, - - _stack: function(groups) { - - groups.forEach( function(group) { - - var series = group.series - .filter( function(series) { return !series.disabled } ); - - var data = series - .map( function(series) { return series.stack } ); - - if (!group.renderer.unstack) { - - var layout = d3.layout.stack(); - var stackedData = Rickshaw.clone(layout(data)); - - series.forEach( function(series, index) { - series._stack = Rickshaw.clone(stackedData[index]); - }); - } - - }, this ); - - return groups; - - }, - - render: function() { - - this.graph.series.forEach( function(series) { - if (!series.renderer) { - throw new Error("Each series needs a renderer for graph 'multi' renderer"); - } - }); - - this.graph.vis.selectAll('*').remove(); - - var groups = this._groups(); - groups = this._stack(groups); - - groups.forEach( function(group) { - - var series = group.series - .filter( function(series) { return !series.disabled } ); - - group.renderer.render({ series: series, vis: group.vis }); - series.forEach(function(s) { s.stack = s._stack || s.stack || s.data; }); - }); - } - -} ); -Rickshaw.namespace('Rickshaw.Graph.Renderer.LinePlot'); - -Rickshaw.Graph.Renderer.LinePlot = Rickshaw.Class.create( Rickshaw.Graph.Renderer, { - - name: 'lineplot', - - defaults: function($super) { - - return Rickshaw.extend( $super(), { - unstack: true, - fill: false, - stroke: true, - padding:{ top: 0.01, right: 0.01, bottom: 0.01, left: 0.01 }, - dotSize: 3, - strokeWidth: 2 - } ); - }, - - initialize: function($super, args) { - $super(args); - }, - - seriesPathFactory: function() { - - var graph = this.graph; - - var factory = d3.svg.line() - .x( function(d) { return graph.x(d.x) } ) - .y( function(d) { return graph.y(d.y) } ) - .interpolate(this.graph.interpolation).tension(this.tension); - - factory.defined && factory.defined( function(d) { return d.y !== null } ); - return factory; - }, - - _renderDots: function() { - - var graph = this.graph; - - graph.series.forEach(function(series) { - - if (series.disabled) return; - - var nodes = graph.vis.selectAll("x") - .data(series.stack.filter( function(d) { return d.y !== null } )) - .enter().append("svg:circle") - .attr("cx", function(d) { return graph.x(d.x) }) - .attr("cy", function(d) { return graph.y(d.y) }) - .attr("r", function(d) { return ("r" in d) ? d.r : graph.renderer.dotSize}); - - Array.prototype.forEach.call(nodes[0], function(n) { - if (!n) return; - n.setAttribute('data-color', series.color); - n.setAttribute('fill', 'white'); - n.setAttribute('stroke', series.color); - n.setAttribute('stroke-width', this.strokeWidth); - - }.bind(this)); - - }, this); - }, - - _renderLines: function() { - - var graph = this.graph; - - var nodes = graph.vis.selectAll("path") - .data(this.graph.stackedData) - .enter().append("svg:path") - .attr("d", this.seriesPathFactory()); - - var i = 0; - graph.series.forEach(function(series) { - if (series.disabled) return; - series.path = nodes[0][i++]; - this._styleSeries(series); - }, this); - }, - - render: function() { - - var graph = this.graph; - - graph.vis.selectAll('*').remove(); - - this._renderLines(); - this._renderDots(); - } -} ); - -Rickshaw.namespace('Rickshaw.Graph.Smoother'); - -Rickshaw.Graph.Smoother = Rickshaw.Class.create({ - - initialize: function(args) { - - this.graph = args.graph; - this.element = args.element; - this.aggregationScale = 1; - - this.build(); - - this.graph.stackData.hooks.data.push( { - name: 'smoother', - orderPosition: 50, - f: this.transformer.bind(this) - } ); - }, - - build: function() { - - var self = this; - - if (this.element) { - $( function() { - $(self.element).slider( { - min: 1, - max: 100, - slide: function( event, ui ) { - self.setScale(ui.value); - self.graph.update(); - } - } ); - } ); - } - }, - - setScale: function(scale) { - - if (scale < 1) { - throw "scale out of range: " + scale; - } - - this.aggregationScale = scale; - this.graph.update(); - }, - - transformer: function(data) { - - if (this.aggregationScale == 1) return data; - - var aggregatedData = []; - - data.forEach( function(seriesData) { - - var aggregatedSeriesData = []; - - while (seriesData.length) { - - var avgX = 0, avgY = 0; - var slice = seriesData.splice(0, this.aggregationScale); - - slice.forEach( function(d) { - avgX += d.x / slice.length; - avgY += d.y / slice.length; - } ); - - aggregatedSeriesData.push( { x: avgX, y: avgY } ); - } - - aggregatedData.push(aggregatedSeriesData); - - }.bind(this) ); - - return aggregatedData; - } -}); - -Rickshaw.namespace('Rickshaw.Graph.Unstacker'); - -Rickshaw.Graph.Unstacker = function(args) { - - this.graph = args.graph; - var self = this; - - this.graph.stackData.hooks.after.push( { - name: 'unstacker', - f: function(data) { - - if (!self.graph.renderer.unstack) return data; - - data.forEach( function(seriesData) { - seriesData.forEach( function(d) { - d.y0 = 0; - } ); - } ); - - return data; - } - } ); -}; - -Rickshaw.namespace('Rickshaw.Series'); - -Rickshaw.Series = Rickshaw.Class.create( Array, { - - initialize: function (data, palette, options) { - - options = options || {}; - - this.palette = new Rickshaw.Color.Palette(palette); - - this.timeBase = typeof(options.timeBase) === 'undefined' ? - Math.floor(new Date().getTime() / 1000) : - options.timeBase; - - var timeInterval = typeof(options.timeInterval) == 'undefined' ? - 1000 : - options.timeInterval; - - this.setTimeInterval(timeInterval); - - if (data && (typeof(data) == "object") && Array.isArray(data)) { - data.forEach( function(item) { this.addItem(item) }, this ); - } - }, - - addItem: function(item) { - - if (typeof(item.name) === 'undefined') { - throw('addItem() needs a name'); - } - - item.color = (item.color || this.palette.color(item.name)); - item.data = (item.data || []); - - // backfill, if necessary - if ((item.data.length === 0) && this.length && (this.getIndex() > 0)) { - this[0].data.forEach( function(plot) { - item.data.push({ x: plot.x, y: 0 }); - } ); - } else if (item.data.length === 0) { - item.data.push({ x: this.timeBase - (this.timeInterval || 0), y: 0 }); - } - - this.push(item); - - if (this.legend) { - this.legend.addLine(this.itemByName(item.name)); - } - }, - - addData: function(data, x) { - - var index = this.getIndex(); - - Rickshaw.keys(data).forEach( function(name) { - if (! this.itemByName(name)) { - this.addItem({ name: name }); - } - }, this ); - - this.forEach( function(item) { - item.data.push({ - x: x || (index * this.timeInterval || 1) + this.timeBase, - y: (data[item.name] || 0) - }); - }, this ); - }, - - getIndex: function () { - return (this[0] && this[0].data && this[0].data.length) ? this[0].data.length : 0; - }, - - itemByName: function(name) { - - for (var i = 0; i < this.length; i++) { - if (this[i].name == name) - return this[i]; - } - }, - - setTimeInterval: function(iv) { - this.timeInterval = iv / 1000; - }, - - setTimeBase: function (t) { - this.timeBase = t; - }, - - dump: function() { - - var data = { - timeBase: this.timeBase, - timeInterval: this.timeInterval, - items: [] - }; - - this.forEach( function(item) { - - var newItem = { - color: item.color, - name: item.name, - data: [] - }; - - item.data.forEach( function(plot) { - newItem.data.push({ x: plot.x, y: plot.y }); - } ); - - data.items.push(newItem); - } ); - - return data; - }, - - load: function(data) { - - if (data.timeInterval) { - this.timeInterval = data.timeInterval; - } - - if (data.timeBase) { - this.timeBase = data.timeBase; - } - - if (data.items) { - data.items.forEach( function(item) { - this.push(item); - if (this.legend) { - this.legend.addLine(this.itemByName(item.name)); - } - - }, this ); - } - } -} ); - -Rickshaw.Series.zeroFill = function(series) { - Rickshaw.Series.fill(series, 0); -}; - -Rickshaw.Series.fill = function(series, fill) { - - var x; - var i = 0; - - var data = series.map( function(s) { return s.data } ); - - while ( i < Math.max.apply(null, data.map( function(d) { return d.length } )) ) { - - x = Math.min.apply( null, - data - .filter(function(d) { return d[i] }) - .map(function(d) { return d[i].x }) - ); - - data.forEach( function(d) { - if (!d[i] || d[i].x != x) { - d.splice(i, 0, { x: x, y: fill }); - } - } ); - - i++; - } -}; - -Rickshaw.namespace('Rickshaw.Series.FixedDuration'); - -Rickshaw.Series.FixedDuration = Rickshaw.Class.create(Rickshaw.Series, { - - initialize: function (data, palette, options) { - - options = options || {}; - - if (typeof(options.timeInterval) === 'undefined') { - throw new Error('FixedDuration series requires timeInterval'); - } - - if (typeof(options.maxDataPoints) === 'undefined') { - throw new Error('FixedDuration series requires maxDataPoints'); - } - - this.palette = new Rickshaw.Color.Palette(palette); - this.timeBase = typeof(options.timeBase) === 'undefined' ? Math.floor(new Date().getTime() / 1000) : options.timeBase; - this.setTimeInterval(options.timeInterval); - - if (this[0] && this[0].data && this[0].data.length) { - this.currentSize = this[0].data.length; - this.currentIndex = this[0].data.length; - } else { - this.currentSize = 0; - this.currentIndex = 0; - } - - this.maxDataPoints = options.maxDataPoints; - - - if (data && (typeof(data) == "object") && Array.isArray(data)) { - data.forEach( function (item) { this.addItem(item) }, this ); - this.currentSize += 1; - this.currentIndex += 1; - } - - // reset timeBase for zero-filled values if needed - this.timeBase -= (this.maxDataPoints - this.currentSize) * this.timeInterval; - - // zero-fill up to maxDataPoints size if we don't have that much data yet - if ((typeof(this.maxDataPoints) !== 'undefined') && (this.currentSize < this.maxDataPoints)) { - for (var i = this.maxDataPoints - this.currentSize - 1; i > 1; i--) { - this.currentSize += 1; - this.currentIndex += 1; - this.forEach( function (item) { - item.data.unshift({ x: ((i-1) * this.timeInterval || 1) + this.timeBase, y: 0, i: i }); - }, this ); - } - } - }, - - addData: function($super, data, x) { - - $super(data, x); - - this.currentSize += 1; - this.currentIndex += 1; - - if (this.maxDataPoints !== undefined) { - while (this.currentSize > this.maxDataPoints) { - this.dropData(); - } - } - }, - - dropData: function() { - - this.forEach(function(item) { - item.data.splice(0, 1); - } ); - - this.currentSize -= 1; - }, - - getIndex: function () { - return this.currentIndex; - } -} ); - diff --git a/views/database.jade b/views/database.jade deleted file mode 100644 index a8be535..0000000 --- a/views/database.jade +++ /dev/null @@ -1,45 +0,0 @@ -extend layout - -block content - p - | Hier kannst du die MAC Adressen deiner Geräte eintragen. - | Durch die Eintragung erscheinst du automatisch im Statusbot als anwesend - | wenn deine MAC im Chaostreff-Netz zu sehen ist. - - p - | Das entfernen von MAC Adressen kannst du analog hier im Formular erledigen. - - p - | Bitte respektiere die Privatsphäre anderer und trage nur deine eigenen MAC Adressen ein. - - form(action='/form',method='post',onsubmit='return Ink.UI.FormValidator_1.validate(this);').ink-form - fieldset - .control-group.required.validation - label(for='mac') MAC Adresse - .control - input(id='mac',type='text',value='',placeholder='',name='mac').ink-fv-required - - .control-group.required.validation - label(for='label') Label (Nickname) - .control - input(id='label',type='text',value='',placeholder='',name='label') - - fieldset.column-group.gutters - .control-group.large-50.medium-50.small-100 - label(for='action') Aktion - .control - select(id='action',name='action') - option add - option remove - - .control-group.large-50.medium-50.small-100 - label(for='sndbtn')   - - .control - button(id='sndbtn').ink-button Mach es - - .status #{status} - -block scripts - script(type="text/javascript",src="/js/vendor/ink.formvalidator.js") - script(type="text/javascript",src="/js/vendor/ink-ui.min.js") diff --git a/views/layout.jade b/views/layout.jade index 1438de6..87d6d46 100644 --- a/views/layout.jade +++ b/views/layout.jade @@ -8,8 +8,6 @@ html(ng-app="roomstateapp") script(type="text/javascript", src="/js/vendor/angular.min.js") script(type="text/javascript", src="/socket.io/socket.io.js") - link(rel='stylesheet', href='/css/ink-min.css') - link(rel='stylesheet', href='/css/rickshaw.min.css') link(rel='stylesheet', href='/css/style.css') meta(name="viewport", content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=0") body @@ -35,12 +33,10 @@ html(ng-app="roomstateapp") script(type="text/javascript", src="/js/vendor/jquery-1.9.1.min.js") - script(type="text/javascript", src="/js/vendor/ink.min.js") script(type="text/javascript", src="/js/vendor/autoload.js") script(type="text/javascript", src="/js/vendor/html5shiv.js") script(type="text/javascript", src="/js/vendor/prettify.js") script(type="text/javascript", src="/js/vendor/modernizr.js") script(type="text/javascript", src="/js/app.js") - script(type="text/javascript", src="/js/vendor/notification.js") block scripts