(function(a){SummitVille.KeyMapper=function(){var c={};_areas={};_defConf={catchspecials:false,handlers:{keypress:{},keydown:{},keyup:{}}};var b=function(h){var i=h.target,d=h.which||h.keyCode||h.charCode||0,f=null,j=null,g=null;for(className in _areas){if(_areas.hasOwnProperty(className)&&a(i).hasClass(className)&&(j=_areas[className])){if((d==16||d==17||d==18)&&!j.dospecials){return}if(j.handlers[h.type]&&j.handlers[h.type][d]){g=j.handlers[h.type][d];if(jQuery.isFunction(g.defaultAction)){f=g.defaultAction}if(h.ctrlKey){if(h.altKey){if(h.shiftKey){if(jQuery.isFunction(g.ctrlaltshiftAction)){f=g.ctrlaltshiftAction}}else{if(jQuery.isFunction(g.ctrlaltAction)){f=g.ctrlaltAction}}}else{if(h.shiftKey){if(jQuery.isFunction(g.ctrlshiftAction)){f=g.ctrlshiftAction}}else{if(jQuery.isFunction(g.ctrlAction)){f=g.ctrlAction}}}}else{if(h.shiftKey){if(h.altKey){if(jQuery.isFunction(g.altshiftAction)){f=g.altshiftAction}}else{if(jQuery.isFunction(g.shiftAction)){f=g.shiftAction}}}else{if(h.altKey){if(jQuery.isFunction(g.altAction)){f=g.altAction}}else{if(jQuery.isFunction(g.keyAction)){f=g.keyAction}}}}if(jQuery.isFunction(f)){if(f.apply(i,[h])==true){if(h.preventDefault){h.preventDefault()}if(h.returnValue){h.returnValue=false}if(h.stopPropagation){h.stopPropagation()}if(h.cancelBubble){h.cancelBubble=true}return true}}}else{if(h.type=="keypress"){if(h.preventDefault){h.preventDefault()}if(h.returnValue){h.returnValue=false}if(h.stopPropagation){h.stopPropagation()}if(h.cancelBubble){h.cancelBubble=true}return true}}}}};c.init=function(){if(!c.ready){a(window).keydown(b);a(window).keypress(b);a(window).keyup(b)}c.ready=true};c.add=function(e,d){if((typeof(e)=="string")&&(e!=="")){c.remove(e);d=d||_defConf;d.catchspecials=d.catchspecials||_defConf.catchspecials;d.handlers=d.handlers||_defConf.handlers;_areas[e]=d}};c.remove=function(d){if((typeof(d)=="string")&&(d!=="")&&(_areas[d])){_areas[d]=null}};a(document).ready(c.init);return c}();SummitVille.CharMapper=function(){var d={},c={parent_has_class:false,handlers:{keypress:{},keydown:{},keyup:{}}};function e(i,k){try{if(a.browser.msie){i.focus();sel=document.selection.createRange();var h=document.selection.createRange().text.length;sel.moveStart("character",-i.value.length);var g=sel.text.length-h;var f=sel.text.length;i.value=i.value.substring(0,g)+k+i.value.substring(f,i.value.length);return temptext}else{if(i.selectionStart||i.selectionStart=="0"){var g=i.selectionStart;var f=i.selectionEnd;i.value=i.value.substring(0,g)+k+i.value.substring(f,i.value.length);i.selectionStart=g+1;i.selectionEnd=g+1;return temptext}else{return"narf!"}}}catch(j){return""}}var b=function(j,f,k){var i={altKey:false,ctrlKey:false,shiftKey:false};var g=null,h=null;for(className in k){if(k.hasOwnProperty(className)&&a(j).hasClass(className)&&(k=k[className])){if(k.handlers.keydown&&k.handlers.keydown[f]){h=k.handlers.keydown[f];i.type="keydown"}else{if(k.handlers.keypress&&k.handlers.keypress[f]){h=k.handlers.keypress[f];i.type="keypress"}}if(h){i.keyCode=f;if(jQuery.isFunction(h.defaultAction)){g=h.defaultAction}if(i.ctrlKey){if(i.altKey){if(i.shiftKey){if(jQuery.isFunction(h.ctrlaltshiftAction)){g=h.ctrlaltshiftAction}}else{if(jQuery.isFunction(h.ctrlaltAction)){g=h.ctrlaltAction}}}else{if(i.shiftKey){if(jQuery.isFunction(h.ctrlshiftAction)){g=h.ctrlshiftAction}}else{if(jQuery.isFunction(h.ctrlAction)){g=h.ctrlAction}}}}else{if(i.shiftKey){if(i.altKey){if(jQuery.isFunction(h.altshiftAction)){g=h.altshiftAction}}else{if(jQuery.isFunction(h.shiftAction)){g=h.shiftAction}}}else{if(i.altKey){if(jQuery.isFunction(h.altAction)){g=h.altAction}}else{if(jQuery.isFunction(h.keyAction)){g=h.keyAction}}}}if(jQuery.isFunction(g)){if(g.apply(j,[i])!=true){e(j,String.fromCharCode(f))}return}else{e(j,String.fromCharCode(f));return}}else{e(j,String.fromCharCode(f));return}}}};d.getLastTextElementInSearchlet=function(f){if(f){return a(".selected",f).children(".stackText").get(0)}};d.injectInto=function(f,j,g){f=a(f);if(j&&j.length>0){for(var h=0;h<j.length;h++){b(d.getLastTextElementInSearchlet(f),j.charCodeAt(h),g)}}};return d}()})(jQuery);
