From f50f223bd3afd5d98ce757d040e1fc2616e840a1 Mon Sep 17 00:00:00 2001 From: "William J. Edney" Date: Mon, 6 Oct 2014 10:01:01 -0500 Subject: [PATCH 1/3] Fix JS error when computing tab wrapping. --- src/key.js | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/src/key.js b/src/key.js index f2ecc039..740567d8 100644 --- a/src/key.js +++ b/src/key.js @@ -592,13 +592,11 @@ steal('./synthetic.js', './typeable.js', './browsers.js', function (Syn) { el = orders[i][0]; if (this === el) { if (!Syn.key.shiftKey) { - current = orders[i + 1][0]; - if (!current) { + if (i === orders.length - 1 || !(current = orders[i + 1][0])) { current = orders[0][0]; } } else { - current = orders[i - 1][0]; - if (!current) { + if (i === 0 || !(current = orders[i - 1][0])) { current = orders[focusEls.length - 1][0]; } } From 1bcce10c0fee45f4f17efe8ba1b0376f8f7d6cfe Mon Sep 17 00:00:00 2001 From: "William J. Edney" Date: Mon, 6 Oct 2014 13:25:53 -0500 Subject: [PATCH 2/3] Updated forward tabbing test to show wraparound --- test/qunit/key_test.js | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/test/qunit/key_test.js b/test/qunit/key_test.js index 23f7ed97..934c5273 100644 --- a/test/qunit/key_test.js +++ b/test/qunit/key_test.js @@ -331,7 +331,7 @@ steal("src/synthetic.js", function (Syn) { stop(); //give ie a second to focus setTimeout(function () { - Syn.type('\r\tSecond\tThird\tFourth', 'first', function () { + Syn.type('\r\tSecond\tThird\tFourth\t', 'first', function () { equal(clicked, 1, "clickd first"); equal(st.g('second') .value, "Second", "moved to second"); @@ -339,6 +339,8 @@ steal("src/synthetic.js", function (Syn) { .value, "Third", "moved to Third"); equal(st.g('fourth') .value, "Fourth", "moved to Fourth"); + equal(st.g('third') + .value, "Third", "moved to Third"); start(); }); }, 1); From 942a75000cae9ea9ae71e3401aeb7e7f6f6f529a Mon Sep 17 00:00:00 2001 From: "William J. Edney" Date: Wed, 12 Nov 2014 18:10:54 -0700 Subject: [PATCH 3/3] Fixed problem with main build file not bringing in 'mouse support' and 'key support' --- dist/syn.js | 190 ++++++++++++++++++++++++++++++++++++++++++++---- dist/syn.min.js | 4 +- src/syn.js | 2 + 3 files changed, 181 insertions(+), 15 deletions(-) diff --git a/dist/syn.js b/dist/syn.js index 640572fb..20b9528d 100644 --- a/dist/syn.js +++ b/dist/syn.js @@ -2,7 +2,7 @@ * Syn - 0.0.2 * * @copyright 2014 Bitovi - * Mon, 30 Jun 2014 22:44:59 GMT + * Thu, 13 Nov 2014 00:56:49 GMT * @license MIT */ @@ -907,7 +907,7 @@ var __m2 = (function () { })(); // ## src/mouse.js -var __m3 = (function (Syn) { +var __m4 = (function (Syn) { //handles mosue events var h = Syn.helpers, @@ -1123,8 +1123,84 @@ var __m3 = (function (Syn) { return Syn; })(__m2); +// ## src/mouse.support.js +var __m3 = (function checkSupport(Syn) { + + if (!document.body) { + Syn.schedule(function () { + checkSupport(Syn); + }, 1); + return; + } + + window.__synthTest = function () { + Syn.support.linkHrefJS = true; + }; + + var div = document.createElement("div"), + checkbox, submit, form, select; + + div.innerHTML = "
" + "" + "" + "" + "" + "" + "" + "" + "" + "
"; + document.documentElement.appendChild(div); + form = div.firstChild; + checkbox = form.childNodes[0]; + submit = form.childNodes[2]; + select = form.getElementsByTagName('select')[0]; + + //trigger click for linkHrefJS support, childNodes[6] === anchor + Syn.trigger('click', {}, form.childNodes[6]); + + checkbox.checked = false; + checkbox.onchange = function () { + Syn.support.clickChanges = true; + }; + + Syn.trigger("click", {}, checkbox); + Syn.support.clickChecks = checkbox.checked; + + checkbox.checked = false; + + Syn.trigger("change", {}, checkbox); + + Syn.support.changeChecks = checkbox.checked; + + form.onsubmit = function (ev) { + if (ev.preventDefault) { + ev.preventDefault(); + } + Syn.support.clickSubmits = true; + return false; + }; + Syn.trigger("click", {}, submit); + + form.childNodes[1].onchange = function () { + Syn.support.radioClickChanges = true; + }; + Syn.trigger("click", {}, form.childNodes[1]); + + Syn.bind(div, 'click', function onclick() { + Syn.support.optionClickBubbles = true; + Syn.unbind(div, 'click', onclick); + }); + Syn.trigger("click", {}, select.firstChild); + + Syn.support.changeBubbles = Syn.eventSupported('change'); + + //test if mousedown followed by mouseup causes click (opera), make sure there are no clicks after this + div.onclick = function () { + Syn.support.mouseDownUpClicks = true; + }; + Syn.trigger("mousedown", {}, div); + Syn.trigger("mouseup", {}, div); + + document.documentElement.removeChild(div); + + //check stuff + Syn.support.ready++; +})(__m2, __m4); + // ## src/browsers.js -var __m4 = (function (Syn) { +var __m5 = (function (Syn) { Syn.key.browsers = { webkit: { 'prevent': { @@ -1549,10 +1625,10 @@ var __m4 = (function (Syn) { return Syn.mouse.browsers.gecko; })(); return Syn; -})(__m2, __m3); +})(__m2, __m4); // ## src/typeable.js -var __m6 = (function (Syn) { +var __m8 = (function (Syn) { // Holds functions that test for typeability var typeables = []; @@ -1619,7 +1695,7 @@ var __m6 = (function (Syn) { })(__m2); // ## src/key.js -var __m5 = (function (Syn) { +var __m7 = (function (Syn) { var h = Syn.helpers, // gets the selection of an input or textarea @@ -2213,13 +2289,11 @@ var __m5 = (function (Syn) { el = orders[i][0]; if (this === el) { if (!Syn.key.shiftKey) { - current = orders[i + 1][0]; - if (!current) { + if (i === orders.length - 1 || !(current = orders[i + 1][0])) { current = orders[0][0]; } } else { - current = orders[i - 1][0]; - if (!current) { + if (i === 0 || !(current = orders[i - 1][0])) { current = orders[focusEls.length - 1][0]; } } @@ -2517,10 +2591,100 @@ var __m5 = (function (Syn) { }); return Syn; -})(__m2, __m6, __m4); +})(__m2, __m8, __m5); + +// ## src/key.support.js +var __m6 = (function (Syn) { + + if (!Syn.config.support) { + //do support code + (function checkForSupport() { + if (!document.body) { + return Syn.schedule(checkForSupport, 1); + } + + var div = document.createElement("div"), + checkbox, submit, form, anchor, textarea, inputter, one, doc; + + doc = document.documentElement; + + div.innerHTML = "
" + + "" + + "" + + "" + + "" + + "" + + "" + + "" + + "" + + "
"; + + doc.insertBefore(div, doc.firstElementChild || doc.children[0]); + form = div.firstChild; + checkbox = form.childNodes[0]; + submit = form.childNodes[2]; + anchor = form.getElementsByTagName("a")[0]; + textarea = form.getElementsByTagName("textarea")[0]; + inputter = form.childNodes[3]; + one = form.childNodes[4]; + + form.onsubmit = function (ev) { + if (ev.preventDefault) { + ev.preventDefault(); + } + Syn.support.keypressSubmits = true; + ev.returnValue = false; + return false; + }; + // Firefox 4 won't write key events if the element isn't focused + Syn.__tryFocus(inputter); + Syn.trigger("keypress", "\r", inputter); + + Syn.trigger("keypress", "a", inputter); + Syn.support.keyCharacters = inputter.value === "a"; + + inputter.value = "a"; + Syn.trigger("keypress", "\b", inputter); + Syn.support.backspaceWorks = inputter.value === ""; + + inputter.onchange = function () { + Syn.support.focusChanges = true; + }; + Syn.__tryFocus(inputter); + Syn.trigger("keypress", "a", inputter); + Syn.__tryFocus(form.childNodes[5]); // this will throw a change event + Syn.trigger("keypress", "b", inputter); + Syn.support.keysOnNotFocused = inputter.value === "ab"; + + //test keypress \r on anchor submits + Syn.bind(anchor, "click", function (ev) { + if (ev.preventDefault) { + ev.preventDefault(); + } + Syn.support.keypressOnAnchorClicks = true; + ev.returnValue = false; + return false; + }); + Syn.trigger("keypress", "\r", anchor); + + Syn.support.textareaCarriage = textarea.value.length === 4; + + // IE only, oninput event. + Syn.support.oninput = 'oninput' in one; + + doc.removeChild(div); + + Syn.support.ready++; + })(); + } else { + Syn.helpers.extend(Syn.support, Syn.config.support); + } + + return Syn; +})(__m2, __m7); // ## src/drag/drag.js -var __m7 = (function (Syn) { +var __m9 = (function (Syn) { // check if elementFromPageExists (function dragSupport() { @@ -2853,6 +3017,6 @@ var __m1 = (function (Syn) { window.Syn = Syn; return Syn; - })(__m2, __m3, __m4, __m5, __m7); + })(__m2, __m3, __m4, __m5, __m6, __m7, __m9); }(window); \ No newline at end of file diff --git a/dist/syn.min.js b/dist/syn.min.js index 995cc44a..a61a3353 100644 --- a/dist/syn.min.js +++ b/dist/syn.min.js @@ -2,7 +2,7 @@ * Syn - 0.0.2 * * @copyright 2014 Bitovi - * Mon, 30 Jun 2014 22:44:59 GMT + * Thu, 13 Nov 2014 00:56:49 GMT * @license MIT */ -!function(window){var __m2=function(){var a,b,c,d,e=window.Syn?window.Syn:{},f=function(a,b){var c;for(c in b)a[c]=b[c];return a},g={msie:!(!window.attachEvent||window.opera),opera:!!window.opera,webkit:navigator.userAgent.indexOf("AppleWebKit/")>-1,safari:navigator.userAgent.indexOf("AppleWebKit/")>-1&&-1===navigator.userAgent.indexOf("Chrome/"),gecko:navigator.userAgent.indexOf("Gecko")>-1,mobilesafari:!!navigator.userAgent.match(/Apple.*Mobile.*Safari/),rhino:navigator.userAgent.match(/Rhino/)&&!0},h=function(a,b,c){var d=c.ownerDocument.createEventObject();return f(d,b)},i={},j=1,k="_synthetic"+(new Date).getTime(),l=/keypress|keyup|keydown/,m=/load|unload|abort|error|select|change|submit|reset|focus|blur|resize|scroll/,n=function(a,b,c,d){return new n.init(a,b,c,d)};n.config=e,n.__tryFocus=function(a){try{a.focus()}catch(b){}},a=function(a,b,c){return a.addEventListener?a.addEventListener(b,c,!1):a.attachEvent("on"+b,c)},b=function(a,b,c){return a.addEventListener?a.removeEventListener(b,c,!1):a.detachEvent("on"+b,c)},c=n.config.schedule||function(a,b){setTimeout(a,b)},f(n,{init:function(a,b,c,d){var e=n.args(b,c,d),f=this;this.queue=[],this.element=e.element,"function"==typeof this[a]?this[a](e.options,e.element,function(){e.callback&&e.callback.apply(f,arguments),f.done.apply(f,arguments)}):(this.result=n.trigger(a,e.options,e.element),e.callback&&e.callback.call(this,e.element,this.result))},jquery:function(a){return window.FuncUnit&&window.FuncUnit.jQuery?window.FuncUnit.jQuery:a?n.helpers.getWindow(a).jQuery||window.jQuery:window.jQuery},args:function(){for(var a={},b=0;b0&&g.apply(this,[])},d.dispatchEvent(c),0>=h}try{window.event=c}catch(i){}return d.sourceIndex<=0||d.fireEvent&&d.fireEvent("on"+e,c)},create:{page:{event:function(a,b,c){var d,e=n.helpers.getWindow(c).document||document;if(e.createEvent)return d=e.createEvent("Events"),d.initEvent(a,!0,!0),d;try{d=h(a,b,c)}catch(f){}return d}},focus:{event:function(a,b,c){return n.onParents(c,function(a){if(n.isFocusable(a)){if("html"!==a.nodeName.toLowerCase())n.__tryFocus(a),d=a;else if(d){var b=n.helpers.getWindow(c).document;if(b!==window.document)return!1;b.activeElement?(b.activeElement.blur(),d=null):(d.blur(),d=null)}return!1}}),!0}}},support:{clickChanges:!1,clickSubmits:!1,keypressSubmits:!1,mouseupSubmits:!1,radioClickChanges:!1,focusChanges:!1,linkHrefJS:!1,keyCharacters:!1,backspaceWorks:!1,mouseDownUpClicks:!1,tabKeyTabs:!1,keypressOnAnchorClicks:!1,optionClickBubbles:!1,ready:0},trigger:function(a,b,c){b||(b={});var d,e,f,g=n.create,h=g[a]&&g[a].setup,i=l.test(a)?"key":m.test(a)?"page":"mouse",j=g[a]||{},k=g[i],o=c;return 2===n.support.ready&&h&&h(a,b,c),f=b._autoPrevent,delete b._autoPrevent,j.event?e=j.event(a,b,c):(b=k.options?k.options(a,b,c):b,!n.support.changeBubbles&&/option/i.test(c.nodeName)&&(o=c.parentNode),d=k.event(a,b,o),e=n.dispatch(d,o,a,f)),e&&2===n.support.ready&&n.defaults[a]&&n.defaults[a].call(c,b,f),e},eventSupported:function(a){var b=document.createElement("div");a="on"+a;var c=a in b;return c||(b.setAttribute(a,"return;"),c="function"==typeof b[a]),b=null,c}}),f(n.init.prototype,{then:function(a,b,c,d){n.autoDelay&&this.delay();var e=n.args(b,c,d),f=this;return this.queue.unshift(function(b){return"function"!=typeof this[a]?(this.result=n.trigger(a,e.options,e.element),e.callback&&e.callback.call(this,e.element,this.result),this):(this.element=e.element||b,void this[a](e.options,this.element,function(){e.callback&&e.callback.apply(f,arguments),f.done.apply(f,arguments)}))}),this},delay:function(a,b){"function"==typeof a&&(b=a,a=null),a=a||600;var d=this;return this.queue.unshift(function(){c(function(){b&&b.apply(d,[]),d.done.apply(d,arguments)},a)}),this},done:function(a,b){b&&(this.element=b),this.queue.length&&this.queue.pop().call(this,this.element,a)},_click:function(a,b,d,e){n.helpers.addOffset(a,b),n.trigger("mousedown",a,b),c(function(){n.trigger("mouseup",a,b),!n.support.mouseDownUpClicks||e?(n.trigger("click",a,b),d(!0)):(n.create.click.setup("click",a,b),n.defaults.click.call(b),c(function(){d(!0)},1))},1)},_rightClick:function(a,b,d){n.helpers.addOffset(a,b);var e=f(f({},n.mouse.browser.right.mouseup),a);n.trigger("mousedown",e,b),c(function(){n.trigger("mouseup",e,b),n.mouse.browser.right.contextmenu&&n.trigger("contextmenu",f(f({},n.mouse.browser.right.contextmenu),a),b),d(!0)},1)},_dblclick:function(a,b,d){n.helpers.addOffset(a,b);var e=this;this._click(a,b,function(){c(function(){e._click(a,b,function(){n.trigger("dblclick",a,b),d(!0)},!0)},2)})}});for(var o=["click","dblclick","move","drag","key","type","rightClick"],p=function(a){n[a]=function(b,c,d){return n("_"+a,b,c,d)},n.init.prototype[a]=function(b,c,d){return this.then("_"+a,b,c,d)}},q=0;qb;b++)if(b in this&&this[b]===a)return b;return-1};a.typeable=function(a){-1===c.call(b,a)&&b.push(a)},a.typeable.test=function(a){for(var c=0,d=b.length;d>c;c++)if(b[c](a))return!0;return!1};var d=a.typeable,e=/input|textarea/i;return d(function(a){return e.test(a.nodeName)}),d(function(a){return-1!==c.call(["","true"],a.getAttribute("contenteditable"))}),a}(__m2),__m5=function(a){var b=a.helpers,c=function(a){var c,d,f;if(void 0!==a.selectionStart)return document.activeElement&&document.activeElement!==a&&a.selectionStart===a.selectionEnd&&0===a.selectionStart?{start:a.value.length,end:a.value.length}:{start:a.selectionStart,end:a.selectionEnd};try{if("input"===a.nodeName.toLowerCase())return c=b.getWindow(a).document.selection.createRange(),d=a.createTextRange(),d.setEndPoint("EndToStart",c),f=d.text.length,{start:f,end:f+c.text.length};c=b.getWindow(a).document.selection.createRange(),d=c.duplicate();var g=c.duplicate(),h=c.duplicate();g.collapse(),h.collapse(!1),g.moveStart("character",-1),h.moveStart("character",-1),d.moveToElementText(a),d.setEndPoint("EndToEnd",c),f=d.text.length-c.text.length;var i=d.text.length;return 0!==f&&""===g.text&&(f+=2),0!==i&&""===h.text&&(i+=2),{start:f,end:i}}catch(j){var k=e.test(a.nodeName)?"value":"textContent";return{start:a[k].length,end:a[k].length}}},d=function(c){for(var d=b.getWindow(c).document,e=[],f=d.getElementsByTagName("*"),g=f.length,h=0;g>h;h++)a.isFocusable(f[h])&&f[h]!==d.documentElement&&e.push(f[h]);return e},e=/input|textarea/i,f=function(){var a=document.createElement("span");return null!=a.textContent?"textContent":"innerText"}(),g=function(a){return e.test(a.nodeName)?a.value:a[f]},h=function(a,b){e.test(a.nodeName)?a.value=b:a[f]=b};b.extend(a,{keycodes:{"\b":8," ":9,"\r":13,shift:16,ctrl:17,alt:18,"pause-break":19,caps:20,escape:27,"num-lock":144,"scroll-lock":145,print:44,"page-up":33,"page-down":34,end:35,home:36,left:37,up:38,right:39,down:40,insert:45,"delete":46," ":32,0:48,1:49,2:50,3:51,4:52,5:53,6:54,7:55,8:56,9:57,a:65,b:66,c:67,d:68,e:69,f:70,g:71,h:72,i:73,j:74,k:75,l:76,m:77,n:78,o:79,p:80,q:81,r:82,s:83,t:84,u:85,v:86,w:87,x:88,y:89,z:90,num0:96,num1:97,num2:98,num3:99,num4:100,num5:101,num6:102,num7:103,num8:104,num9:105,"*":106,"+":107,subtract:109,decimal:110,divide:111,";":186,"=":187,",":188,dash:189,"-":189,period:190,".":190,"forward-slash":191,"/":191,"`":192,"[":219,"\\":220,"]":221,"'":222,"left window key":91,"right window key":92,"select key":93,f1:112,f2:113,f3:114,f4:115,f5:116,f6:117,f7:118,f8:119,f9:120,f10:121,f11:122,f12:123},selectText:function(b,c,d){if(b.setSelectionRange)d?(b.selectionStart=c,b.selectionEnd=d):(a.__tryFocus(b),b.setSelectionRange(c,c));else if(b.createTextRange){var e=b.createTextRange();e.moveStart("character",c),d=d||c,e.moveEnd("character",d-b.value.length),e.select()}},getText:function(b){if(a.typeable.test(b)){var d=c(b);return b.value.substring(d.start,d.end)}var e=a.helpers.getWindow(b);return e.getSelection?e.getSelection().toString():e.document.getSelection?e.document.getSelection().toString():e.document.selection.createRange().text},getSelection:c}),b.extend(a.key,{data:function(c){if(a.key.browser[c])return a.key.browser[c];for(var d in a.key.kinds)if(b.inArray(c,a.key.kinds[d])>-1)return a.key.browser[d];return a.key.browser.character},isSpecial:function(b){for(var c=a.key.kinds.special,d=0;d-1&&a.key.defaults[d])return a.key.defaults[d];return a.key.defaults.character},defaults:{character:function(b,c,d,e,f){if(/num\d+/.test(d)&&(d=d.match(/\d+/)[0]),e||!a.support.keyCharacters&&a.typeable.test(this)){var i=g(this),j=i.substr(0,f.start),k=i.substr(f.end),l=d;h(this,j+l+k);var m="\n"===l&&a.support.textareaCarriage?2:l.length;a.selectText(this,j.length+m)}},c:function(){a.key.ctrlKey?a.key.clipboard=a.getText(this):a.key.defaults.character.apply(this,arguments)},v:function(b,c,d,e,f){a.key.ctrlKey?a.key.defaults.character.call(this,b,c,a.key.clipboard,!0,f):a.key.defaults.character.apply(this,arguments)},a:function(){a.key.ctrlKey?a.selectText(this,0,g(this).length):a.key.defaults.character.apply(this,arguments)},home:function(){a.onParents(this,function(a){return a.scrollHeight!==a.clientHeight?(a.scrollTop=0,!1):void 0})},end:function(){a.onParents(this,function(a){return a.scrollHeight!==a.clientHeight?(a.scrollTop=a.scrollHeight,!1):void 0})},"page-down":function(){a.onParents(this,function(a){if(a.scrollHeight!==a.clientHeight){var b=a.clientHeight;return a.scrollTop+=b,!1}})},"page-up":function(){a.onParents(this,function(a){if(a.scrollHeight!==a.clientHeight){var b=a.clientHeight;return a.scrollTop-=b,!1}})},"\b":function(b,c,d,e,f){if(!a.support.backspaceWorks&&a.typeable.test(this)){var i=g(this),j=i.substr(0,f.start),k=i.substr(f.end);f.start===f.end&&f.start>0?(h(this,j.substring(0,j.length-1)+k),a.selectText(this,f.start-1)):(h(this,j+k),a.selectText(this,f.start))}},"delete":function(b,c,d,e,f){if(!a.support.backspaceWorks&&a.typeable.test(this)){var i=g(this),j=i.substr(0,f.start),k=i.substr(f.end);f.start===f.end&&f.start<=g(this).length-1?h(this,j+k.substring(1)):h(this,j+k),a.selectText(this,f.start)}},"\r":function(b,c,d,e,f){var g=this.nodeName.toLowerCase();if("input"===g&&a.trigger("change",{},this),!a.support.keypressSubmits&&"input"===g){var h=a.closest(this,"form");h&&a.trigger("submit",{},h)}a.support.keyCharacters||"textarea"!==g||a.key.defaults.character.call(this,b,c,"\n",void 0,f),a.support.keypressOnAnchorClicks||"a"!==g||a.trigger("click",{},this)}," ":function(){for(var b,c,e=d(this),f=null,g=0,h=[];gg(this).length?g(this).length:f.end+1):a.selectText(this,f.end+1>g(this).length?g(this).length:f.end+1))},up:function(){/select/i.test(this.nodeName)&&(this.selectedIndex=this.selectedIndex?this.selectedIndex-1:0)},down:function(){/select/i.test(this.nodeName)&&(a.changeOnBlur(this,"selectedIndex",this.selectedIndex),this.selectedIndex=this.selectedIndex+1)},shift:function(){return null},ctrl:function(){return null}}}),b.extend(a.create,{keydown:{setup:function(c,d,e){-1!==b.inArray(d,a.key.kinds.special)&&(a.key[d+"Key"]=e)}},keypress:{setup:function(b,c,d){a.support.keyCharacters&&!a.support.keysOnNotFocused&&a.__tryFocus(d)}},keyup:{setup:function(c,d){-1!==b.inArray(d,a.key.kinds.special)&&(a.key[d+"Key"]=null)}},key:{options:function(c,d){return d="object"!=typeof d?{character:d}:d,d=b.extend({},d),d.character&&(b.extend(d,a.key.options(d.character,c)),delete d.character),d=b.extend({ctrlKey:!!a.key.ctrlKey,altKey:!!a.key.altKey,shiftKey:!!a.key.shiftKey,metaKey:!!a.key.metaKey},d)},event:function(a,c,d){var e,f=b.getWindow(d).document||document;if(f.createEvent){try{e=f.createEvent("KeyEvents"),e.initKeyEvent(a,!0,!0,window,c.ctrlKey,c.altKey,c.shiftKey,c.metaKey,c.keyCode,c.charCode)}catch(g){e=b.createBasicStandardEvent(a,c,f)}return e.synthetic=!0,e}try{e=b.createEventObject.apply(this,arguments),b.extend(e,c)}catch(g){}return e}}});var i={enter:"\r",backspace:"\b",tab:" ",space:" "};return b.extend(a.init.prototype,{_key:function(d,e,f){if(/-up$/.test(d)&&-1!==b.inArray(d.replace("-up",""),a.key.kinds.special))return a.trigger("keyup",d.replace("-up",""),e),f(!0,e);var g,h=b.getWindow(e).document.activeElement,j=a.typeable.test(e)&&c(e),k=i[d]||d,l=a.trigger("keydown",k,e),m=a.key.getDefault,n=a.key.browser.prevent,o=a.key.options(k,"keypress");return l?o?(h!==b.getWindow(e).document.activeElement&&(e=b.getWindow(e).document.activeElement),l=a.trigger("keypress",o,e),l&&(g=m(k).call(e,o,b.getWindow(e),k,void 0,j))):g=m(k).call(e,o,b.getWindow(e),k,void 0,j):o&&-1===b.inArray("keypress",n.keydown)&&(h!==b.getWindow(e).document.activeElement&&(e=b.getWindow(e).document.activeElement),a.trigger("keypress",o,e)),g&&g.nodeName&&(e=g),null!==g?a.schedule(function(){a.support.oninput&&a.trigger("input",a.key.options(k,"input"),e),a.trigger("keyup",a.key.options(k,"keyup"),e),f(l,e)},1):f(l,e),e},_type:function(a,b,c){var d=(a+"").match(/(\[[^\]]+\])|([^\[])/g),e=this,f=function(a,g){var h=d.shift();return h?(g=g||b,h.length>1&&(h=h.substr(1,h.length-2)),void e._key(h,g,f)):void c(a,g)};f()}}),a}(__m2,__m6,__m4),__m7=function(a){!function j(){if(!document.body)return void a.schedule(j,1);var b=document.createElement("div");if(document.body.appendChild(b),a.helpers.extend(b.style,{width:"100px",height:"10000px",backgroundColor:"blue",position:"absolute",top:"10px",left:"0px",zIndex:19999}),document.body.scrollTop=11,document.elementFromPoint){var c=document.elementFromPoint(3,1);c===b?a.support.elementFromClient=!0:a.support.elementFromPage=!0,document.body.removeChild(b),document.body.scrollTop=0}}();var b=function(b,c){var d,e=b.clientX,f=b.clientY,g=a.helpers.getWindow(c);if(a.support.elementFromPage){var h=a.helpers.scrollOffset(g);e+=h.left,f+=h.top}return d=g.document.elementFromPoint?g.document.elementFromPoint(e,f):c,d===g.document.documentElement&&(b.clientY<0||b.clientX<0)?c:d},c=function(c,d,e){var f=b(d,e);return a.trigger(c,d,f||e),f},d=function(c,d,e){var f=b(c,d);if(e!==f&&f&&e){var g=a.helpers.extend({},c);g.relatedTarget=f,a.trigger("mouseout",g,e),g.relatedTarget=e,a.trigger("mouseover",g,f)}return a.trigger("mousemove",c,f||d),f},e=function(c,e,f,g,h){var i,j=new Date,k=e.clientX-c.clientX,l=e.clientY-c.clientY,m=a.helpers.getWindow(g),n=b(c,g),o=m.document.createElement("div"),p=0;i=function q(){var b=new Date,i=a.helpers.scrollOffset(m),r=(0===p?0:b-j)/f,s={clientX:k*r+c.clientX,clientY:l*r+c.clientY};p++,1>r?(a.helpers.extend(o.style,{left:s.clientX+i.left+2+"px",top:s.clientY+i.top+2+"px"}),n=d(s,g,n),a.schedule(q,15)):(n=d(e,g,n),m.document.body.removeChild(o),h())},a.helpers.extend(o.style,{height:"5px",width:"5px",backgroundColor:"red",position:"absolute",zIndex:19999,fontSize:"1px"}),m.document.body.appendChild(o),i()},f=function(a,b,d,f,g){c("mousedown",a,f),e(a,b,d,f,function(){c("mouseup",b,f),g()})},g=function(b){var c=a.jquery()(b),d=c.offset();return{pageX:d.left+c.outerWidth()/2,pageY:d.top+c.outerHeight()/2}},h=function(b,c,d){var e,f=/(\d+)[x ](\d+)/,h=/(\d+)X(\d+)/,i=/([+-]\d+)[xX ]([+-]\d+)/;if("string"==typeof b&&i.test(b)&&d){var j=g(d);e=b.match(i),b={pageX:j.pageX+parseInt(e[1]),pageY:j.pageY+parseInt(e[2])}}if("string"==typeof b&&f.test(b)&&(e=b.match(f),b={pageX:parseInt(e[1]),pageY:parseInt(e[2])}),"string"==typeof b&&h.test(b)&&(e=b.match(h),b={clientX:parseInt(e[1]),clientY:parseInt(e[2])}),"string"==typeof b&&(b=a.jquery()(b,c.document)[0]),b.nodeName&&(b=g(b)),b.pageX){var k=a.helpers.scrollOffset(c);b={clientX:b.pageX-k.left,clientY:b.pageY-k.top}}return b},i=function(b,c,d){if(b.clientY<0){var e=a.helpers.scrollOffset(d),f=e.top+b.clientY-100,g=f-e.top;f>0||(f=0,g=-e.top),b.clientY=b.clientY-g,c.clientY=c.clientY-g,a.helpers.scrollOffset(d,{top:f,left:e.left})}};return a.helpers.extend(a.init.prototype,{_move:function(b,c,d){var f=a.helpers.getWindow(c),g=h(b.from||c,f,c),j=h(b.to||b,f,c);b.adjust!==!1&&i(g,j,f),e(g,j,b.duration||500,c,d)},_drag:function(b,c,d){var e=a.helpers.getWindow(c),g=h(b.from||c,e,c),j=h(b.to||b,e,c);b.adjust!==!1&&i(g,j,e),f(g,j,b.duration||500,c,d)}}),a}(__m2),__m1=function(a){return window.Syn=a,a}(__m2,__m3,__m4,__m5,__m7)}(window); \ No newline at end of file +!function(window){var __m2=function(){var a,b,c,d,e=window.Syn?window.Syn:{},f=function(a,b){var c;for(c in b)a[c]=b[c];return a},g={msie:!(!window.attachEvent||window.opera),opera:!!window.opera,webkit:navigator.userAgent.indexOf("AppleWebKit/")>-1,safari:navigator.userAgent.indexOf("AppleWebKit/")>-1&&-1===navigator.userAgent.indexOf("Chrome/"),gecko:navigator.userAgent.indexOf("Gecko")>-1,mobilesafari:!!navigator.userAgent.match(/Apple.*Mobile.*Safari/),rhino:navigator.userAgent.match(/Rhino/)&&!0},h=function(a,b,c){var d=c.ownerDocument.createEventObject();return f(d,b)},i={},j=1,k="_synthetic"+(new Date).getTime(),l=/keypress|keyup|keydown/,m=/load|unload|abort|error|select|change|submit|reset|focus|blur|resize|scroll/,n=function(a,b,c,d){return new n.init(a,b,c,d)};n.config=e,n.__tryFocus=function(a){try{a.focus()}catch(b){}},a=function(a,b,c){return a.addEventListener?a.addEventListener(b,c,!1):a.attachEvent("on"+b,c)},b=function(a,b,c){return a.addEventListener?a.removeEventListener(b,c,!1):a.detachEvent("on"+b,c)},c=n.config.schedule||function(a,b){setTimeout(a,b)},f(n,{init:function(a,b,c,d){var e=n.args(b,c,d),f=this;this.queue=[],this.element=e.element,"function"==typeof this[a]?this[a](e.options,e.element,function(){e.callback&&e.callback.apply(f,arguments),f.done.apply(f,arguments)}):(this.result=n.trigger(a,e.options,e.element),e.callback&&e.callback.call(this,e.element,this.result))},jquery:function(a){return window.FuncUnit&&window.FuncUnit.jQuery?window.FuncUnit.jQuery:a?n.helpers.getWindow(a).jQuery||window.jQuery:window.jQuery},args:function(){for(var a={},b=0;b0&&g.apply(this,[])},d.dispatchEvent(c),0>=h}try{window.event=c}catch(i){}return d.sourceIndex<=0||d.fireEvent&&d.fireEvent("on"+e,c)},create:{page:{event:function(a,b,c){var d,e=n.helpers.getWindow(c).document||document;if(e.createEvent)return d=e.createEvent("Events"),d.initEvent(a,!0,!0),d;try{d=h(a,b,c)}catch(f){}return d}},focus:{event:function(a,b,c){return n.onParents(c,function(a){if(n.isFocusable(a)){if("html"!==a.nodeName.toLowerCase())n.__tryFocus(a),d=a;else if(d){var b=n.helpers.getWindow(c).document;if(b!==window.document)return!1;b.activeElement?(b.activeElement.blur(),d=null):(d.blur(),d=null)}return!1}}),!0}}},support:{clickChanges:!1,clickSubmits:!1,keypressSubmits:!1,mouseupSubmits:!1,radioClickChanges:!1,focusChanges:!1,linkHrefJS:!1,keyCharacters:!1,backspaceWorks:!1,mouseDownUpClicks:!1,tabKeyTabs:!1,keypressOnAnchorClicks:!1,optionClickBubbles:!1,ready:0},trigger:function(a,b,c){b||(b={});var d,e,f,g=n.create,h=g[a]&&g[a].setup,i=l.test(a)?"key":m.test(a)?"page":"mouse",j=g[a]||{},k=g[i],o=c;return 2===n.support.ready&&h&&h(a,b,c),f=b._autoPrevent,delete b._autoPrevent,j.event?e=j.event(a,b,c):(b=k.options?k.options(a,b,c):b,!n.support.changeBubbles&&/option/i.test(c.nodeName)&&(o=c.parentNode),d=k.event(a,b,o),e=n.dispatch(d,o,a,f)),e&&2===n.support.ready&&n.defaults[a]&&n.defaults[a].call(c,b,f),e},eventSupported:function(a){var b=document.createElement("div");a="on"+a;var c=a in b;return c||(b.setAttribute(a,"return;"),c="function"==typeof b[a]),b=null,c}}),f(n.init.prototype,{then:function(a,b,c,d){n.autoDelay&&this.delay();var e=n.args(b,c,d),f=this;return this.queue.unshift(function(b){return"function"!=typeof this[a]?(this.result=n.trigger(a,e.options,e.element),e.callback&&e.callback.call(this,e.element,this.result),this):(this.element=e.element||b,void this[a](e.options,this.element,function(){e.callback&&e.callback.apply(f,arguments),f.done.apply(f,arguments)}))}),this},delay:function(a,b){"function"==typeof a&&(b=a,a=null),a=a||600;var d=this;return this.queue.unshift(function(){c(function(){b&&b.apply(d,[]),d.done.apply(d,arguments)},a)}),this},done:function(a,b){b&&(this.element=b),this.queue.length&&this.queue.pop().call(this,this.element,a)},_click:function(a,b,d,e){n.helpers.addOffset(a,b),n.trigger("mousedown",a,b),c(function(){n.trigger("mouseup",a,b),!n.support.mouseDownUpClicks||e?(n.trigger("click",a,b),d(!0)):(n.create.click.setup("click",a,b),n.defaults.click.call(b),c(function(){d(!0)},1))},1)},_rightClick:function(a,b,d){n.helpers.addOffset(a,b);var e=f(f({},n.mouse.browser.right.mouseup),a);n.trigger("mousedown",e,b),c(function(){n.trigger("mouseup",e,b),n.mouse.browser.right.contextmenu&&n.trigger("contextmenu",f(f({},n.mouse.browser.right.contextmenu),a),b),d(!0)},1)},_dblclick:function(a,b,d){n.helpers.addOffset(a,b);var e=this;this._click(a,b,function(){c(function(){e._click(a,b,function(){n.trigger("dblclick",a,b),d(!0)},!0)},2)})}});for(var o=["click","dblclick","move","drag","key","type","rightClick"],p=function(a){n[a]=function(b,c,d){return n("_"+a,b,c,d)},n.init.prototype[a]=function(b,c,d){return this.then("_"+a,b,c,d)}},q=0;q",document.documentElement.appendChild(g),e=g.firstChild,c=e.childNodes[0],d=e.childNodes[2],f=e.getElementsByTagName("select")[0],b.trigger("click",{},e.childNodes[6]),c.checked=!1,c.onchange=function(){b.support.clickChanges=!0},b.trigger("click",{},c),b.support.clickChecks=c.checked,c.checked=!1,b.trigger("change",{},c),b.support.changeChecks=c.checked,e.onsubmit=function(a){return a.preventDefault&&a.preventDefault(),b.support.clickSubmits=!0,!1},b.trigger("click",{},d),e.childNodes[1].onchange=function(){b.support.radioClickChanges=!0},b.trigger("click",{},e.childNodes[1]),b.bind(g,"click",function h(){b.support.optionClickBubbles=!0,b.unbind(g,"click",h)}),b.trigger("click",{},f.firstChild),b.support.changeBubbles=b.eventSupported("change"),g.onclick=function(){b.support.mouseDownUpClicks=!0},b.trigger("mousedown",{},g),b.trigger("mouseup",{},g),document.documentElement.removeChild(g),b.support.ready++}(__m2,__m4),__m5=function(a){return a.key.browsers={webkit:{prevent:{keyup:[],keydown:["char","keypress"],keypress:["char"]},character:{keydown:[0,"key"],keypress:["char","char"],keyup:[0,"key"]},specialChars:{keydown:[0,"char"],keyup:[0,"char"]},navigation:{keydown:[0,"key"],keyup:[0,"key"]},special:{keydown:[0,"key"],keyup:[0,"key"]},tab:{keydown:[0,"char"],keyup:[0,"char"]},"pause-break":{keydown:[0,"key"],keyup:[0,"key"]},caps:{keydown:[0,"key"],keyup:[0,"key"]},escape:{keydown:[0,"key"],keyup:[0,"key"]},"num-lock":{keydown:[0,"key"],keyup:[0,"key"]},"scroll-lock":{keydown:[0,"key"],keyup:[0,"key"]},print:{keyup:[0,"key"]},"function":{keydown:[0,"key"],keyup:[0,"key"]},"\r":{keydown:[0,"key"],keypress:["char","key"],keyup:[0,"key"]}},gecko:{prevent:{keyup:[],keydown:["char"],keypress:["char"]},character:{keydown:[0,"key"],keypress:["char",0],keyup:[0,"key"]},specialChars:{keydown:[0,"key"],keypress:[0,"key"],keyup:[0,"key"]},navigation:{keydown:[0,"key"],keypress:[0,"key"],keyup:[0,"key"]},special:{keydown:[0,"key"],keyup:[0,"key"]}," ":{keydown:[0,"key"],keypress:[0,"key"],keyup:[0,"key"]},"pause-break":{keydown:[0,"key"],keypress:[0,"key"],keyup:[0,"key"]},caps:{keydown:[0,"key"],keyup:[0,"key"]},escape:{keydown:[0,"key"],keypress:[0,"key"],keyup:[0,"key"]},"num-lock":{keydown:[0,"key"],keyup:[0,"key"]},"scroll-lock":{keydown:[0,"key"],keyup:[0,"key"]},print:{keyup:[0,"key"]},"function":{keydown:[0,"key"],keyup:[0,"key"]},"\r":{keydown:[0,"key"],keypress:[0,"key"],keyup:[0,"key"]}},msie:{prevent:{keyup:[],keydown:["char","keypress"],keypress:["char"]},character:{keydown:[null,"key"],keypress:[null,"char"],keyup:[null,"key"]},specialChars:{keydown:[null,"char"],keyup:[null,"char"]},navigation:{keydown:[null,"key"],keyup:[null,"key"]},special:{keydown:[null,"key"],keyup:[null,"key"]},tab:{keydown:[null,"char"],keyup:[null,"char"]},"pause-break":{keydown:[null,"key"],keyup:[null,"key"]},caps:{keydown:[null,"key"],keyup:[null,"key"]},escape:{keydown:[null,"key"],keypress:[null,"key"],keyup:[null,"key"]},"num-lock":{keydown:[null,"key"],keyup:[null,"key"]},"scroll-lock":{keydown:[null,"key"],keyup:[null,"key"]},print:{keyup:[null,"key"]},"function":{keydown:[null,"key"],keyup:[null,"key"]},"\r":{keydown:[null,"key"],keypress:[null,"key"],keyup:[null,"key"]}},opera:{prevent:{keyup:[],keydown:[],keypress:["char"]},character:{keydown:[null,"key"],keypress:[null,"char"],keyup:[null,"key"]},specialChars:{keydown:[null,"char"],keypress:[null,"char"],keyup:[null,"char"]},navigation:{keydown:[null,"key"],keypress:[null,"key"]},special:{keydown:[null,"key"],keypress:[null,"key"],keyup:[null,"key"]},tab:{keydown:[null,"char"],keypress:[null,"char"],keyup:[null,"char"]},"pause-break":{keydown:[null,"key"],keypress:[null,"key"],keyup:[null,"key"]},caps:{keydown:[null,"key"],keyup:[null,"key"]},escape:{keydown:[null,"key"],keypress:[null,"key"]},"num-lock":{keyup:[null,"key"],keydown:[null,"key"],keypress:[null,"key"]},"scroll-lock":{keydown:[null,"key"],keypress:[null,"key"],keyup:[null,"key"]},print:{},"function":{keydown:[null,"key"],keypress:[null,"key"],keyup:[null,"key"]},"\r":{keydown:[null,"key"],keypress:[null,"key"],keyup:[null,"key"]}}},a.mouse.browsers={webkit:{right:{mousedown:{button:2,which:3},mouseup:{button:2,which:3},contextmenu:{button:2,which:3}},left:{mousedown:{button:0,which:1},mouseup:{button:0,which:1},click:{button:0,which:1}}},opera:{right:{mousedown:{button:2,which:3},mouseup:{button:2,which:3}},left:{mousedown:{button:0,which:1},mouseup:{button:0,which:1},click:{button:0,which:1}}},msie:{right:{mousedown:{button:2},mouseup:{button:2},contextmenu:{button:0}},left:{mousedown:{button:1},mouseup:{button:1},click:{button:0}}},chrome:{right:{mousedown:{button:2,which:3},mouseup:{button:2,which:3},contextmenu:{button:2,which:3}},left:{mousedown:{button:0,which:1},mouseup:{button:0,which:1},click:{button:0,which:1}}},gecko:{left:{mousedown:{button:0,which:1},mouseup:{button:0,which:1},click:{button:0,which:1}},right:{mousedown:{button:2,which:3},mouseup:{button:2,which:3},contextmenu:{button:2,which:3}}}},a.key.browser=function(){if(a.key.browsers[window.navigator.userAgent])return a.key.browsers[window.navigator.userAgent];for(var b in a.browser)if(a.browser[b]&&a.key.browsers[b])return a.key.browsers[b];return a.key.browsers.gecko}(),a.mouse.browser=function(){if(a.mouse.browsers[window.navigator.userAgent])return a.mouse.browsers[window.navigator.userAgent];for(var b in a.browser)if(a.browser[b]&&a.mouse.browsers[b])return a.mouse.browsers[b];return a.mouse.browsers.gecko}(),a}(__m2,__m4),__m8=function(a){var b=[],c=[].indexOf||function(a){for(var b=0,c=this.length;c>b;b++)if(b in this&&this[b]===a)return b;return-1};a.typeable=function(a){-1===c.call(b,a)&&b.push(a)},a.typeable.test=function(a){for(var c=0,d=b.length;d>c;c++)if(b[c](a))return!0;return!1};var d=a.typeable,e=/input|textarea/i;return d(function(a){return e.test(a.nodeName)}),d(function(a){return-1!==c.call(["","true"],a.getAttribute("contenteditable"))}),a}(__m2),__m7=function(a){var b=a.helpers,c=function(a){var c,d,f;if(void 0!==a.selectionStart)return document.activeElement&&document.activeElement!==a&&a.selectionStart===a.selectionEnd&&0===a.selectionStart?{start:a.value.length,end:a.value.length}:{start:a.selectionStart,end:a.selectionEnd};try{if("input"===a.nodeName.toLowerCase())return c=b.getWindow(a).document.selection.createRange(),d=a.createTextRange(),d.setEndPoint("EndToStart",c),f=d.text.length,{start:f,end:f+c.text.length};c=b.getWindow(a).document.selection.createRange(),d=c.duplicate();var g=c.duplicate(),h=c.duplicate();g.collapse(),h.collapse(!1),g.moveStart("character",-1),h.moveStart("character",-1),d.moveToElementText(a),d.setEndPoint("EndToEnd",c),f=d.text.length-c.text.length;var i=d.text.length;return 0!==f&&""===g.text&&(f+=2),0!==i&&""===h.text&&(i+=2),{start:f,end:i}}catch(j){var k=e.test(a.nodeName)?"value":"textContent";return{start:a[k].length,end:a[k].length}}},d=function(c){for(var d=b.getWindow(c).document,e=[],f=d.getElementsByTagName("*"),g=f.length,h=0;g>h;h++)a.isFocusable(f[h])&&f[h]!==d.documentElement&&e.push(f[h]);return e},e=/input|textarea/i,f=function(){var a=document.createElement("span");return null!=a.textContent?"textContent":"innerText"}(),g=function(a){return e.test(a.nodeName)?a.value:a[f]},h=function(a,b){e.test(a.nodeName)?a.value=b:a[f]=b};b.extend(a,{keycodes:{"\b":8," ":9,"\r":13,shift:16,ctrl:17,alt:18,"pause-break":19,caps:20,escape:27,"num-lock":144,"scroll-lock":145,print:44,"page-up":33,"page-down":34,end:35,home:36,left:37,up:38,right:39,down:40,insert:45,"delete":46," ":32,0:48,1:49,2:50,3:51,4:52,5:53,6:54,7:55,8:56,9:57,a:65,b:66,c:67,d:68,e:69,f:70,g:71,h:72,i:73,j:74,k:75,l:76,m:77,n:78,o:79,p:80,q:81,r:82,s:83,t:84,u:85,v:86,w:87,x:88,y:89,z:90,num0:96,num1:97,num2:98,num3:99,num4:100,num5:101,num6:102,num7:103,num8:104,num9:105,"*":106,"+":107,subtract:109,decimal:110,divide:111,";":186,"=":187,",":188,dash:189,"-":189,period:190,".":190,"forward-slash":191,"/":191,"`":192,"[":219,"\\":220,"]":221,"'":222,"left window key":91,"right window key":92,"select key":93,f1:112,f2:113,f3:114,f4:115,f5:116,f6:117,f7:118,f8:119,f9:120,f10:121,f11:122,f12:123},selectText:function(b,c,d){if(b.setSelectionRange)d?(b.selectionStart=c,b.selectionEnd=d):(a.__tryFocus(b),b.setSelectionRange(c,c));else if(b.createTextRange){var e=b.createTextRange();e.moveStart("character",c),d=d||c,e.moveEnd("character",d-b.value.length),e.select()}},getText:function(b){if(a.typeable.test(b)){var d=c(b);return b.value.substring(d.start,d.end)}var e=a.helpers.getWindow(b);return e.getSelection?e.getSelection().toString():e.document.getSelection?e.document.getSelection().toString():e.document.selection.createRange().text},getSelection:c}),b.extend(a.key,{data:function(c){if(a.key.browser[c])return a.key.browser[c];for(var d in a.key.kinds)if(b.inArray(c,a.key.kinds[d])>-1)return a.key.browser[d];return a.key.browser.character},isSpecial:function(b){for(var c=a.key.kinds.special,d=0;d-1&&a.key.defaults[d])return a.key.defaults[d];return a.key.defaults.character},defaults:{character:function(b,c,d,e,f){if(/num\d+/.test(d)&&(d=d.match(/\d+/)[0]),e||!a.support.keyCharacters&&a.typeable.test(this)){var i=g(this),j=i.substr(0,f.start),k=i.substr(f.end),l=d;h(this,j+l+k);var m="\n"===l&&a.support.textareaCarriage?2:l.length;a.selectText(this,j.length+m)}},c:function(){a.key.ctrlKey?a.key.clipboard=a.getText(this):a.key.defaults.character.apply(this,arguments)},v:function(b,c,d,e,f){a.key.ctrlKey?a.key.defaults.character.call(this,b,c,a.key.clipboard,!0,f):a.key.defaults.character.apply(this,arguments)},a:function(){a.key.ctrlKey?a.selectText(this,0,g(this).length):a.key.defaults.character.apply(this,arguments)},home:function(){a.onParents(this,function(a){return a.scrollHeight!==a.clientHeight?(a.scrollTop=0,!1):void 0})},end:function(){a.onParents(this,function(a){return a.scrollHeight!==a.clientHeight?(a.scrollTop=a.scrollHeight,!1):void 0})},"page-down":function(){a.onParents(this,function(a){if(a.scrollHeight!==a.clientHeight){var b=a.clientHeight;return a.scrollTop+=b,!1}})},"page-up":function(){a.onParents(this,function(a){if(a.scrollHeight!==a.clientHeight){var b=a.clientHeight;return a.scrollTop-=b,!1}})},"\b":function(b,c,d,e,f){if(!a.support.backspaceWorks&&a.typeable.test(this)){var i=g(this),j=i.substr(0,f.start),k=i.substr(f.end);f.start===f.end&&f.start>0?(h(this,j.substring(0,j.length-1)+k),a.selectText(this,f.start-1)):(h(this,j+k),a.selectText(this,f.start))}},"delete":function(b,c,d,e,f){if(!a.support.backspaceWorks&&a.typeable.test(this)){var i=g(this),j=i.substr(0,f.start),k=i.substr(f.end);f.start===f.end&&f.start<=g(this).length-1?h(this,j+k.substring(1)):h(this,j+k),a.selectText(this,f.start)}},"\r":function(b,c,d,e,f){var g=this.nodeName.toLowerCase();if("input"===g&&a.trigger("change",{},this),!a.support.keypressSubmits&&"input"===g){var h=a.closest(this,"form");h&&a.trigger("submit",{},h)}a.support.keyCharacters||"textarea"!==g||a.key.defaults.character.call(this,b,c,"\n",void 0,f),a.support.keypressOnAnchorClicks||"a"!==g||a.trigger("click",{},this)}," ":function(){for(var b,c,e=d(this),f=null,g=0,h=[];gg(this).length?g(this).length:f.end+1):a.selectText(this,f.end+1>g(this).length?g(this).length:f.end+1))},up:function(){/select/i.test(this.nodeName)&&(this.selectedIndex=this.selectedIndex?this.selectedIndex-1:0)},down:function(){/select/i.test(this.nodeName)&&(a.changeOnBlur(this,"selectedIndex",this.selectedIndex),this.selectedIndex=this.selectedIndex+1)},shift:function(){return null},ctrl:function(){return null}}}),b.extend(a.create,{keydown:{setup:function(c,d,e){-1!==b.inArray(d,a.key.kinds.special)&&(a.key[d+"Key"]=e)}},keypress:{setup:function(b,c,d){a.support.keyCharacters&&!a.support.keysOnNotFocused&&a.__tryFocus(d)}},keyup:{setup:function(c,d){-1!==b.inArray(d,a.key.kinds.special)&&(a.key[d+"Key"]=null)}},key:{options:function(c,d){return d="object"!=typeof d?{character:d}:d,d=b.extend({},d),d.character&&(b.extend(d,a.key.options(d.character,c)),delete d.character),d=b.extend({ctrlKey:!!a.key.ctrlKey,altKey:!!a.key.altKey,shiftKey:!!a.key.shiftKey,metaKey:!!a.key.metaKey},d)},event:function(a,c,d){var e,f=b.getWindow(d).document||document;if(f.createEvent){try{e=f.createEvent("KeyEvents"),e.initKeyEvent(a,!0,!0,window,c.ctrlKey,c.altKey,c.shiftKey,c.metaKey,c.keyCode,c.charCode)}catch(g){e=b.createBasicStandardEvent(a,c,f)}return e.synthetic=!0,e}try{e=b.createEventObject.apply(this,arguments),b.extend(e,c)}catch(g){}return e}}});var i={enter:"\r",backspace:"\b",tab:" ",space:" "};return b.extend(a.init.prototype,{_key:function(d,e,f){if(/-up$/.test(d)&&-1!==b.inArray(d.replace("-up",""),a.key.kinds.special))return a.trigger("keyup",d.replace("-up",""),e),f(!0,e);var g,h=b.getWindow(e).document.activeElement,j=a.typeable.test(e)&&c(e),k=i[d]||d,l=a.trigger("keydown",k,e),m=a.key.getDefault,n=a.key.browser.prevent,o=a.key.options(k,"keypress");return l?o?(h!==b.getWindow(e).document.activeElement&&(e=b.getWindow(e).document.activeElement),l=a.trigger("keypress",o,e),l&&(g=m(k).call(e,o,b.getWindow(e),k,void 0,j))):g=m(k).call(e,o,b.getWindow(e),k,void 0,j):o&&-1===b.inArray("keypress",n.keydown)&&(h!==b.getWindow(e).document.activeElement&&(e=b.getWindow(e).document.activeElement),a.trigger("keypress",o,e)),g&&g.nodeName&&(e=g),null!==g?a.schedule(function(){a.support.oninput&&a.trigger("input",a.key.options(k,"input"),e),a.trigger("keyup",a.key.options(k,"keyup"),e),f(l,e)},1):f(l,e),e},_type:function(a,b,c){var d=(a+"").match(/(\[[^\]]+\])|([^\[])/g),e=this,f=function(a,g){var h=d.shift();return h?(g=g||b,h.length>1&&(h=h.substr(1,h.length-2)),void e._key(h,g,f)):void c(a,g)};f()}}),a}(__m2,__m8,__m5),__m6=function(a){return a.config.support?a.helpers.extend(a.support,a.config.support):!function b(){if(!document.body)return a.schedule(b,1);var c,d,e,f,g,h,i,j,k=document.createElement("div");j=document.documentElement,k.innerHTML="
",j.insertBefore(k,j.firstElementChild||j.children[0]),e=k.firstChild,c=e.childNodes[0],d=e.childNodes[2],f=e.getElementsByTagName("a")[0],g=e.getElementsByTagName("textarea")[0],h=e.childNodes[3],i=e.childNodes[4],e.onsubmit=function(b){return b.preventDefault&&b.preventDefault(),a.support.keypressSubmits=!0,b.returnValue=!1,!1},a.__tryFocus(h),a.trigger("keypress","\r",h),a.trigger("keypress","a",h),a.support.keyCharacters="a"===h.value,h.value="a",a.trigger("keypress","\b",h),a.support.backspaceWorks=""===h.value,h.onchange=function(){a.support.focusChanges=!0},a.__tryFocus(h),a.trigger("keypress","a",h),a.__tryFocus(e.childNodes[5]),a.trigger("keypress","b",h),a.support.keysOnNotFocused="ab"===h.value,a.bind(f,"click",function(b){return b.preventDefault&&b.preventDefault(),a.support.keypressOnAnchorClicks=!0,b.returnValue=!1,!1}),a.trigger("keypress","\r",f),a.support.textareaCarriage=4===g.value.length,a.support.oninput="oninput"in i,j.removeChild(k),a.support.ready++}(),a}(__m2,__m7),__m9=function(a){!function j(){if(!document.body)return void a.schedule(j,1);var b=document.createElement("div");if(document.body.appendChild(b),a.helpers.extend(b.style,{width:"100px",height:"10000px",backgroundColor:"blue",position:"absolute",top:"10px",left:"0px",zIndex:19999}),document.body.scrollTop=11,document.elementFromPoint){var c=document.elementFromPoint(3,1);c===b?a.support.elementFromClient=!0:a.support.elementFromPage=!0,document.body.removeChild(b),document.body.scrollTop=0}}();var b=function(b,c){var d,e=b.clientX,f=b.clientY,g=a.helpers.getWindow(c);if(a.support.elementFromPage){var h=a.helpers.scrollOffset(g);e+=h.left,f+=h.top}return d=g.document.elementFromPoint?g.document.elementFromPoint(e,f):c,d===g.document.documentElement&&(b.clientY<0||b.clientX<0)?c:d},c=function(c,d,e){var f=b(d,e);return a.trigger(c,d,f||e),f},d=function(c,d,e){var f=b(c,d);if(e!==f&&f&&e){var g=a.helpers.extend({},c);g.relatedTarget=f,a.trigger("mouseout",g,e),g.relatedTarget=e,a.trigger("mouseover",g,f)}return a.trigger("mousemove",c,f||d),f},e=function(c,e,f,g,h){var i,j=new Date,k=e.clientX-c.clientX,l=e.clientY-c.clientY,m=a.helpers.getWindow(g),n=b(c,g),o=m.document.createElement("div"),p=0;i=function q(){var b=new Date,i=a.helpers.scrollOffset(m),r=(0===p?0:b-j)/f,s={clientX:k*r+c.clientX,clientY:l*r+c.clientY};p++,1>r?(a.helpers.extend(o.style,{left:s.clientX+i.left+2+"px",top:s.clientY+i.top+2+"px"}),n=d(s,g,n),a.schedule(q,15)):(n=d(e,g,n),m.document.body.removeChild(o),h())},a.helpers.extend(o.style,{height:"5px",width:"5px",backgroundColor:"red",position:"absolute",zIndex:19999,fontSize:"1px"}),m.document.body.appendChild(o),i()},f=function(a,b,d,f,g){c("mousedown",a,f),e(a,b,d,f,function(){c("mouseup",b,f),g()})},g=function(b){var c=a.jquery()(b),d=c.offset();return{pageX:d.left+c.outerWidth()/2,pageY:d.top+c.outerHeight()/2}},h=function(b,c,d){var e,f=/(\d+)[x ](\d+)/,h=/(\d+)X(\d+)/,i=/([+-]\d+)[xX ]([+-]\d+)/;if("string"==typeof b&&i.test(b)&&d){var j=g(d);e=b.match(i),b={pageX:j.pageX+parseInt(e[1]),pageY:j.pageY+parseInt(e[2])}}if("string"==typeof b&&f.test(b)&&(e=b.match(f),b={pageX:parseInt(e[1]),pageY:parseInt(e[2])}),"string"==typeof b&&h.test(b)&&(e=b.match(h),b={clientX:parseInt(e[1]),clientY:parseInt(e[2])}),"string"==typeof b&&(b=a.jquery()(b,c.document)[0]),b.nodeName&&(b=g(b)),b.pageX){var k=a.helpers.scrollOffset(c);b={clientX:b.pageX-k.left,clientY:b.pageY-k.top}}return b},i=function(b,c,d){if(b.clientY<0){var e=a.helpers.scrollOffset(d),f=e.top+b.clientY-100,g=f-e.top;f>0||(f=0,g=-e.top),b.clientY=b.clientY-g,c.clientY=c.clientY-g,a.helpers.scrollOffset(d,{top:f,left:e.left})}};return a.helpers.extend(a.init.prototype,{_move:function(b,c,d){var f=a.helpers.getWindow(c),g=h(b.from||c,f,c),j=h(b.to||b,f,c);b.adjust!==!1&&i(g,j,f),e(g,j,b.duration||500,c,d)},_drag:function(b,c,d){var e=a.helpers.getWindow(c),g=h(b.from||c,e,c),j=h(b.to||b,e,c);b.adjust!==!1&&i(g,j,e),f(g,j,b.duration||500,c,d)}}),a}(__m2),__m1=function(a){return window.Syn=a,a}(__m2,__m3,__m4,__m5,__m6,__m7,__m9)}(window); \ No newline at end of file diff --git a/src/syn.js b/src/syn.js index 6f3f487a..6ae390c1 100644 --- a/src/syn.js +++ b/src/syn.js @@ -1,6 +1,8 @@ steal('./synthetic.js', + './mouse.support.js', './mouse.js', './browsers.js', + './key.support.js', './key.js', './drag/drag.js', function (Syn) { window.Syn = Syn;