Created
April 27, 2012 21:51
-
-
Save jimevans/2513693 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#This is the addition to $/javascript/webdriver/atoms/build.desc to build the compiled JavaScript | |
js_fragment(name = "synthetic_sendkeys", | |
module = "webdriver.atoms.inputs", | |
function = "webdriver.atoms.inputs.sendKeys", | |
deps = [ ":deps" ], | |
minify = "false") |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// To use this, open IE, navigate to http://www.google.com, open the developer tools, | |
// change to the Script tab, paste this code into the script console, and execute it. | |
// You'll receive "Unable to set value of the property 'Unicode': object is null or undefined". | |
// This is because goog.string is declared in a provides() block, but the object is never | |
// actually instantiated so that the Unicode property can be set on it. This is a larger problem | |
// than just this single provides() call. If you were to manually fix that one, others would exhibit | |
// this problem. | |
var keys_fn=function(){return function(){var COMPILED=false;var goog=goog||{};goog.global=this;goog.DEBUG=true;goog.LOCALE="en";goog.provide=function(name){if(!COMPILED){if(goog.isProvided_(name))throw Error('Namespace "'+name+'" already declared.');delete goog.implicitNamespaces_[name];var namespace=name;while(namespace=namespace.substring(0,namespace.lastIndexOf("."))){if(goog.getObjectByName(namespace))break;goog.implicitNamespaces_[namespace]=true}}goog.exportPath_(name)}; | |
goog.setTestOnly=function(opt_message){if(COMPILED&&!goog.DEBUG){opt_message=opt_message||"";throw Error("Importing test-only code into non-debug environment"+opt_message?": "+opt_message:".");}};if(!COMPILED){goog.isProvided_=function(name){return!goog.implicitNamespaces_[name]&&!!goog.getObjectByName(name)};goog.implicitNamespaces_={}} | |
goog.exportPath_=function(name,opt_object,opt_objectToExportTo){var parts=name.split(".");var cur=opt_objectToExportTo||goog.global;if(!(parts[0]in cur)&&cur.execScript)cur.execScript("var "+parts[0]);for(var part;parts.length&&(part=parts.shift());)if(!parts.length&&goog.isDef(opt_object))cur[part]=opt_object;else if(cur[part])cur=cur[part];else cur=cur[part]={}}; | |
goog.getObjectByName=function(name,opt_obj){var parts=name.split(".");var cur=opt_obj||goog.global;for(var part;part=parts.shift();)if(goog.isDefAndNotNull(cur[part]))cur=cur[part];else return null;return cur};goog.globalize=function(obj,opt_global){var global=opt_global||goog.global;for(var x in obj)global[x]=obj[x]}; | |
goog.addDependency=function(relPath,provides,requires){if(!COMPILED){var provide,require;var path=relPath.replace(/\\/g,"/");var deps=goog.dependencies_;for(var i=0;provide=provides[i];i++){deps.nameToPath[provide]=path;if(!(path in deps.pathToNames))deps.pathToNames[path]={};deps.pathToNames[path][provide]=true}for(var j=0;require=requires[j];j++){if(!(path in deps.requires))deps.requires[path]={};deps.requires[path][require]=true}}};goog.ENABLE_DEBUG_LOADER=true; | |
goog.require=function(name){if(!COMPILED){if(goog.isProvided_(name))return;if(goog.ENABLE_DEBUG_LOADER){var path=goog.getPathFromDeps_(name);if(path){goog.included_[path]=true;goog.writeScripts_();return}}var errorMessage="goog.require could not find: "+name;if(goog.global.console)goog.global.console["error"](errorMessage);throw Error(errorMessage);}};goog.basePath="";goog.global.CLOSURE_BASE_PATH;goog.global.CLOSURE_NO_DEPS;goog.global.CLOSURE_IMPORT_SCRIPT;goog.nullFunction=function(){}; | |
goog.identityFunction=function(var_args){return arguments[0]};goog.abstractMethod=function(){throw Error("unimplemented abstract method");};goog.addSingletonGetter=function(ctor){ctor.getInstance=function(){return ctor.instance_||(ctor.instance_=new ctor)}}; | |
if(!COMPILED&&goog.ENABLE_DEBUG_LOADER){goog.included_={};goog.dependencies_={pathToNames:{},nameToPath:{},requires:{},visited:{},written:{}};goog.inHtmlDocument_=function(){var doc=goog.global.document;return typeof doc!="undefined"&&"write"in doc};goog.findBasePath_=function(){if(goog.global.CLOSURE_BASE_PATH){goog.basePath=goog.global.CLOSURE_BASE_PATH;return}else if(!goog.inHtmlDocument_())return;var doc=goog.global.document;var scripts=doc.getElementsByTagName("script");for(var i=scripts.length- | |
1;i>=0;--i){var src=scripts[i].src;var qmark=src.lastIndexOf("?");var l=qmark==-1?src.length:qmark;if(src.substr(l-7,7)=="base.js"){goog.basePath=src.substr(0,l-7);return}}};goog.importScript_=function(src){var importScript=goog.global.CLOSURE_IMPORT_SCRIPT||goog.writeScriptTag_;if(!goog.dependencies_.written[src]&&importScript(src))goog.dependencies_.written[src]=true};goog.writeScriptTag_=function(src){if(goog.inHtmlDocument_()){var doc=goog.global.document;doc.write('<script type="text/javascript" src="'+ | |
src+'"></'+"script>");return true}else return false};goog.writeScripts_=function(){var scripts=[];var seenScript={};var deps=goog.dependencies_;function visitNode(path){if(path in deps.written)return;if(path in deps.visited){if(!(path in seenScript)){seenScript[path]=true;scripts.push(path)}return}deps.visited[path]=true;if(path in deps.requires)for(var requireName in deps.requires[path])if(!goog.isProvided_(requireName))if(requireName in deps.nameToPath)visitNode(deps.nameToPath[requireName]);else throw Error("Undefined nameToPath for "+ | |
requireName);if(!(path in seenScript)){seenScript[path]=true;scripts.push(path)}}for(var path in goog.included_)if(!deps.written[path])visitNode(path);for(var i=0;i<scripts.length;i++)if(scripts[i])goog.importScript_(goog.basePath+scripts[i]);else throw Error("Undefined script input");};goog.getPathFromDeps_=function(rule){if(rule in goog.dependencies_.nameToPath)return goog.dependencies_.nameToPath[rule];else return null};goog.findBasePath_();if(!goog.global.CLOSURE_NO_DEPS)goog.importScript_(goog.basePath+ | |
"deps.js")} | |
goog.typeOf=function(value){var s=typeof value;if(s=="object")if(value){if(value instanceof Array)return"array";else if(value instanceof Object)return s;var className=Object.prototype.toString.call(value);if(className=="[object Window]")return"object";if(className=="[object Array]"||typeof value.length=="number"&&typeof value.splice!="undefined"&&typeof value.propertyIsEnumerable!="undefined"&&!value.propertyIsEnumerable("splice"))return"array";if(className=="[object Function]"||typeof value.call!="undefined"&& | |
typeof value.propertyIsEnumerable!="undefined"&&!value.propertyIsEnumerable("call"))return"function"}else return"null";else if(s=="function"&&typeof value.call=="undefined")return"object";return s};goog.propertyIsEnumerableCustom_=function(object,propName){if(propName in object)for(var key in object)if(key==propName&&Object.prototype.hasOwnProperty.call(object,propName))return true;return false}; | |
goog.propertyIsEnumerable_=function(object,propName){if(object instanceof Object)return Object.prototype.propertyIsEnumerable.call(object,propName);else return goog.propertyIsEnumerableCustom_(object,propName)};goog.isDef=function(val){return val!==undefined};goog.isNull=function(val){return val===null};goog.isDefAndNotNull=function(val){return val!=null};goog.isArray=function(val){return goog.typeOf(val)=="array"}; | |
goog.isArrayLike=function(val){var type=goog.typeOf(val);return type=="array"||type=="object"&&typeof val.length=="number"};goog.isDateLike=function(val){return goog.isObject(val)&&typeof val.getFullYear=="function"};goog.isString=function(val){return typeof val=="string"};goog.isBoolean=function(val){return typeof val=="boolean"};goog.isNumber=function(val){return typeof val=="number"};goog.isFunction=function(val){return goog.typeOf(val)=="function"}; | |
goog.isObject=function(val){var type=goog.typeOf(val);return type=="object"||type=="array"||type=="function"};goog.getUid=function(obj){return obj[goog.UID_PROPERTY_]||(obj[goog.UID_PROPERTY_]=++goog.uidCounter_)};goog.removeUid=function(obj){if("removeAttribute"in obj)obj.removeAttribute(goog.UID_PROPERTY_);try{delete obj[goog.UID_PROPERTY_]}catch(ex){}};goog.UID_PROPERTY_="closure_uid_"+Math.floor(Math.random()*2147483648).toString(36);goog.uidCounter_=0;goog.getHashCode=goog.getUid; | |
goog.removeHashCode=goog.removeUid;goog.cloneObject=function(obj){var type=goog.typeOf(obj);if(type=="object"||type=="array"){if(obj.clone)return obj.clone();var clone=type=="array"?[]:{};for(var key in obj)clone[key]=goog.cloneObject(obj[key]);return clone}return obj};Object.prototype.clone;goog.bindNative_=function(fn,selfObj,var_args){return fn.call.apply(fn.bind,arguments)}; | |
goog.bindJs_=function(fn,selfObj,var_args){if(!fn)throw new Error;if(arguments.length>2){var boundArgs=Array.prototype.slice.call(arguments,2);return function(){var newArgs=Array.prototype.slice.call(arguments);Array.prototype.unshift.apply(newArgs,boundArgs);return fn.apply(selfObj,newArgs)}}else return function(){return fn.apply(selfObj,arguments)}}; | |
goog.bind=function(fn,selfObj,var_args){if(Function.prototype.bind&&Function.prototype.bind.toString().indexOf("native code")!=-1)goog.bind=goog.bindNative_;else goog.bind=goog.bindJs_;return goog.bind.apply(null,arguments)};goog.partial=function(fn,var_args){var args=Array.prototype.slice.call(arguments,1);return function(){var newArgs=Array.prototype.slice.call(arguments);newArgs.unshift.apply(newArgs,args);return fn.apply(this,newArgs)}}; | |
goog.mixin=function(target,source){for(var x in source)target[x]=source[x]};goog.now=Date.now||function(){return+new Date}; | |
goog.globalEval=function(script){if(goog.global.execScript)goog.global.execScript(script,"JavaScript");else if(goog.global.eval){if(goog.evalWorksForGlobals_==null){goog.global.eval("var _et_ = 1;");if(typeof goog.global["_et_"]!="undefined"){delete goog.global["_et_"];goog.evalWorksForGlobals_=true}else goog.evalWorksForGlobals_=false}if(goog.evalWorksForGlobals_)goog.global.eval(script);else{var doc=goog.global.document;var scriptElt=doc.createElement("script");scriptElt.type="text/javascript"; | |
scriptElt.defer=false;scriptElt.appendChild(doc.createTextNode(script));doc.body.appendChild(scriptElt);doc.body.removeChild(scriptElt)}}else throw Error("goog.globalEval not available");};goog.evalWorksForGlobals_=null;goog.cssNameMapping_;goog.cssNameMappingStyle_; | |
goog.getCssName=function(className,opt_modifier){var getMapping=function(cssName){return goog.cssNameMapping_[cssName]||cssName};var renameByParts=function(cssName){var parts=cssName.split("-");var mapped=[];for(var i=0;i<parts.length;i++)mapped.push(getMapping(parts[i]));return mapped.join("-")};var rename;if(goog.cssNameMapping_)rename=goog.cssNameMappingStyle_=="BY_WHOLE"?getMapping:renameByParts;else rename=function(a){return a};if(opt_modifier)return className+"-"+rename(opt_modifier);else return rename(className)}; | |
goog.setCssNameMapping=function(mapping,opt_style){goog.cssNameMapping_=mapping;goog.cssNameMappingStyle_=opt_style};goog.global.CLOSURE_CSS_NAME_MAPPING;if(!COMPILED&&goog.global.CLOSURE_CSS_NAME_MAPPING)goog.cssNameMapping_=goog.global.CLOSURE_CSS_NAME_MAPPING;goog.getMsg=function(str,opt_values){var values=opt_values||{};for(var key in values){var value=(""+values[key]).replace(/\$/g,"$$$$");str=str.replace(new RegExp("\\{\\$"+key+"\\}","gi"),value)}return str}; | |
goog.exportSymbol=function(publicPath,object,opt_objectToExportTo){goog.exportPath_(publicPath,object,opt_objectToExportTo)};goog.exportProperty=function(object,publicName,symbol){object[publicName]=symbol};goog.inherits=function(childCtor,parentCtor){function tempCtor(){}tempCtor.prototype=parentCtor.prototype;childCtor.superClass_=parentCtor.prototype;childCtor.prototype=new tempCtor;childCtor.prototype.constructor=childCtor}; | |
goog.base=function(me,opt_methodName,var_args){var caller=arguments.callee.caller;if(caller.superClass_)return caller.superClass_.constructor.apply(me,Array.prototype.slice.call(arguments,1));var args=Array.prototype.slice.call(arguments,2);var foundCaller=false;for(var ctor=me.constructor;ctor;ctor=ctor.superClass_&&ctor.superClass_.constructor)if(ctor.prototype[opt_methodName]===caller)foundCaller=true;else if(foundCaller)return ctor.prototype[opt_methodName].apply(me,args);if(me[opt_methodName]=== | |
caller)return me.constructor.prototype[opt_methodName].apply(me,args);else throw Error("goog.base called from a method of one name "+"to a method of a different name");};goog.scope=function(fn){fn.call(goog.global)};goog.provide("goog.string");goog.provide("goog.string.Unicode");goog.string.Unicode={NBSP:"\u00a0"};goog.string.startsWith=function(str,prefix){return str.lastIndexOf(prefix,0)==0};goog.string.endsWith=function(str,suffix){var l=str.length-suffix.length;return l>=0&&str.indexOf(suffix,l)==l};goog.string.caseInsensitiveStartsWith=function(str,prefix){return goog.string.caseInsensitiveCompare(prefix,str.substr(0,prefix.length))==0}; | |
goog.string.caseInsensitiveEndsWith=function(str,suffix){return goog.string.caseInsensitiveCompare(suffix,str.substr(str.length-suffix.length,suffix.length))==0};goog.string.subs=function(str,var_args){for(var i=1;i<arguments.length;i++){var replacement=String(arguments[i]).replace(/\$/g,"$$$$");str=str.replace(/\%s/,replacement)}return str};goog.string.collapseWhitespace=function(str){return str.replace(/[\s\xa0]+/g," ").replace(/^\s+|\s+$/g,"")};goog.string.isEmpty=function(str){return/^[\s\xa0]*$/.test(str)}; | |
goog.string.isEmptySafe=function(str){return goog.string.isEmpty(goog.string.makeSafe(str))};goog.string.isBreakingWhitespace=function(str){return!/[^\t\n\r ]/.test(str)};goog.string.isAlpha=function(str){return!/[^a-zA-Z]/.test(str)};goog.string.isNumeric=function(str){return!/[^0-9]/.test(str)};goog.string.isAlphaNumeric=function(str){return!/[^a-zA-Z0-9]/.test(str)};goog.string.isSpace=function(ch){return ch==" "}; | |
goog.string.isUnicodeChar=function(ch){return ch.length==1&&ch>=" "&&ch<="~"||ch>="\u0080"&&ch<="\ufffd"};goog.string.stripNewlines=function(str){return str.replace(/(\r\n|\r|\n)+/g," ")};goog.string.canonicalizeNewlines=function(str){return str.replace(/(\r\n|\r|\n)/g,"\n")};goog.string.normalizeWhitespace=function(str){return str.replace(/\xa0|\s/g," ")};goog.string.normalizeSpaces=function(str){return str.replace(/\xa0|[ \t]+/g," ")}; | |
goog.string.collapseBreakingSpaces=function(str){return str.replace(/[\t\r\n ]+/g," ").replace(/^[\t\r\n ]+|[\t\r\n ]+$/g,"")};goog.string.trim=function(str){return str.replace(/^[\s\xa0]+|[\s\xa0]+$/g,"")};goog.string.trimLeft=function(str){return str.replace(/^[\s\xa0]+/,"")};goog.string.trimRight=function(str){return str.replace(/[\s\xa0]+$/,"")}; | |
goog.string.caseInsensitiveCompare=function(str1,str2){var test1=String(str1).toLowerCase();var test2=String(str2).toLowerCase();if(test1<test2)return-1;else if(test1==test2)return 0;else return 1};goog.string.numerateCompareRegExp_=/(\.\d+)|(\d+)|(\D+)/g; | |
goog.string.numerateCompare=function(str1,str2){if(str1==str2)return 0;if(!str1)return-1;if(!str2)return 1;var tokens1=str1.toLowerCase().match(goog.string.numerateCompareRegExp_);var tokens2=str2.toLowerCase().match(goog.string.numerateCompareRegExp_);var count=Math.min(tokens1.length,tokens2.length);for(var i=0;i<count;i++){var a=tokens1[i];var b=tokens2[i];if(a!=b){var num1=parseInt(a,10);if(!isNaN(num1)){var num2=parseInt(b,10);if(!isNaN(num2)&&num1-num2)return num1-num2}return a<b?-1:1}}if(tokens1.length!= | |
tokens2.length)return tokens1.length-tokens2.length;return str1<str2?-1:1};goog.string.encodeUriRegExp_=/^[a-zA-Z0-9\-_.!~*'()]*$/;goog.string.urlEncode=function(str){str=String(str);if(!goog.string.encodeUriRegExp_.test(str))return encodeURIComponent(str);return str};goog.string.urlDecode=function(str){return decodeURIComponent(str.replace(/\+/g," "))};goog.string.newLineToBr=function(str,opt_xml){return str.replace(/(\r\n|\r|\n)/g,opt_xml?"<br />":"<br>")}; | |
goog.string.htmlEscape=function(str,opt_isLikelyToContainHtmlChars){if(opt_isLikelyToContainHtmlChars)return str.replace(goog.string.amperRe_,"&").replace(goog.string.ltRe_,"<").replace(goog.string.gtRe_,">").replace(goog.string.quotRe_,""");else{if(!goog.string.allRe_.test(str))return str;if(str.indexOf("&")!=-1)str=str.replace(goog.string.amperRe_,"&");if(str.indexOf("<")!=-1)str=str.replace(goog.string.ltRe_,"<");if(str.indexOf(">")!=-1)str=str.replace(goog.string.gtRe_,">"); | |
if(str.indexOf('"')!=-1)str=str.replace(goog.string.quotRe_,""");return str}};goog.string.amperRe_=/&/g;goog.string.ltRe_=/</g;goog.string.gtRe_=/>/g;goog.string.quotRe_=/\"/g;goog.string.allRe_=/[&<>\"]/;goog.string.unescapeEntities=function(str){if(goog.string.contains(str,"&"))if("document"in goog.global)return goog.string.unescapeEntitiesUsingDom_(str);else return goog.string.unescapePureXmlEntities_(str);return str}; | |
goog.string.unescapeEntitiesUsingDom_=function(str){var seen={"&":"&","<":"<",">":">",""":'"'};var div=document.createElement("div");return str.replace(goog.string.HTML_ENTITY_PATTERN_,function(s,entity){var value=seen[s];if(value)return value;if(entity.charAt(0)=="#"){var n=Number("0"+entity.substr(1));if(!isNaN(n))value=String.fromCharCode(n)}if(!value){div.innerHTML=s+" ";value=div.firstChild.nodeValue.slice(0,-1)}return seen[s]=value})}; | |
goog.string.unescapePureXmlEntities_=function(str){return str.replace(/&([^;]+);/g,function(s,entity){switch(entity){case "amp":return"&";case "lt":return"<";case "gt":return">";case "quot":return'"';default:if(entity.charAt(0)=="#"){var n=Number("0"+entity.substr(1));if(!isNaN(n))return String.fromCharCode(n)}return s}})};goog.string.HTML_ENTITY_PATTERN_=/&([^;\s<&]+);?/g;goog.string.whitespaceEscape=function(str,opt_xml){return goog.string.newLineToBr(str.replace(/ /g,"  "),opt_xml)}; | |
goog.string.stripQuotes=function(str,quoteChars){var length=quoteChars.length;for(var i=0;i<length;i++){var quoteChar=length==1?quoteChars:quoteChars.charAt(i);if(str.charAt(0)==quoteChar&&str.charAt(str.length-1)==quoteChar)return str.substring(1,str.length-1)}return str}; | |
goog.string.truncate=function(str,chars,opt_protectEscapedCharacters){if(opt_protectEscapedCharacters)str=goog.string.unescapeEntities(str);if(str.length>chars)str=str.substring(0,chars-3)+"...";if(opt_protectEscapedCharacters)str=goog.string.htmlEscape(str);return str}; | |
goog.string.truncateMiddle=function(str,chars,opt_protectEscapedCharacters,opt_trailingChars){if(opt_protectEscapedCharacters)str=goog.string.unescapeEntities(str);if(opt_trailingChars&&str.length>chars){if(opt_trailingChars>chars)opt_trailingChars=chars;var endPoint=str.length-opt_trailingChars;var startPoint=chars-opt_trailingChars;str=str.substring(0,startPoint)+"..."+str.substring(endPoint)}else if(str.length>chars){var half=Math.floor(chars/2);var endPos=str.length-half;half+=chars%2;str=str.substring(0, | |
half)+"..."+str.substring(endPos)}if(opt_protectEscapedCharacters)str=goog.string.htmlEscape(str);return str};goog.string.specialEscapeChars_={"\x00":"\\0","\u0008":"\\b","\u000c":"\\f","\n":"\\n","\r":"\\r","\t":"\\t","\x0B":"\\x0B",'"':'\\"',"\\":"\\\\"};goog.string.jsEscapeCache_={"'":"\\'"}; | |
goog.string.quote=function(s){s=String(s);if(s.quote)return s.quote();else{var sb=['"'];for(var i=0;i<s.length;i++){var ch=s.charAt(i);var cc=ch.charCodeAt(0);sb[i+1]=goog.string.specialEscapeChars_[ch]||(cc>31&&cc<127?ch:goog.string.escapeChar(ch))}sb.push('"');return sb.join("")}};goog.string.escapeString=function(str){var sb=[];for(var i=0;i<str.length;i++)sb[i]=goog.string.escapeChar(str.charAt(i));return sb.join("")}; | |
goog.string.escapeChar=function(c){if(c in goog.string.jsEscapeCache_)return goog.string.jsEscapeCache_[c];if(c in goog.string.specialEscapeChars_)return goog.string.jsEscapeCache_[c]=goog.string.specialEscapeChars_[c];var rv=c;var cc=c.charCodeAt(0);if(cc>31&&cc<127)rv=c;else{if(cc<256){rv="\\x";if(cc<16||cc>256)rv+="0"}else{rv="\\u";if(cc<4096)rv+="0"}rv+=cc.toString(16).toUpperCase()}return goog.string.jsEscapeCache_[c]=rv}; | |
goog.string.toMap=function(s){var rv={};for(var i=0;i<s.length;i++)rv[s.charAt(i)]=true;return rv};goog.string.contains=function(s,ss){return s.indexOf(ss)!=-1};goog.string.countOf=function(s,ss){return s&&ss?s.split(ss).length-1:0};goog.string.removeAt=function(s,index,stringLength){var resultStr=s;if(index>=0&&index<s.length&&stringLength>0)resultStr=s.substr(0,index)+s.substr(index+stringLength,s.length-index-stringLength);return resultStr}; | |
goog.string.remove=function(s,ss){var re=new RegExp(goog.string.regExpEscape(ss),"");return s.replace(re,"")};goog.string.removeAll=function(s,ss){var re=new RegExp(goog.string.regExpEscape(ss),"g");return s.replace(re,"")};goog.string.regExpEscape=function(s){return String(s).replace(/([-()\[\]{}+?*.$\^|,:#<!\\])/g,"\\$1").replace(/\x08/g,"\\x08")};goog.string.repeat=function(string,length){return(new Array(length+1)).join(string)}; | |
goog.string.padNumber=function(num,length,opt_precision){var s=goog.isDef(opt_precision)?num.toFixed(opt_precision):String(num);var index=s.indexOf(".");if(index==-1)index=s.length;return goog.string.repeat("0",Math.max(0,length-index))+s};goog.string.makeSafe=function(obj){return obj==null?"":String(obj)};goog.string.buildString=function(var_args){return Array.prototype.join.call(arguments,"")}; | |
goog.string.getRandomString=function(){var x=2147483648;return Math.floor(Math.random()*x).toString(36)+Math.abs(Math.floor(Math.random()*x)^goog.now()).toString(36)}; | |
goog.string.compareVersions=function(version1,version2){var order=0;var v1Subs=goog.string.trim(String(version1)).split(".");var v2Subs=goog.string.trim(String(version2)).split(".");var subCount=Math.max(v1Subs.length,v2Subs.length);for(var subIdx=0;order==0&&subIdx<subCount;subIdx++){var v1Sub=v1Subs[subIdx]||"";var v2Sub=v2Subs[subIdx]||"";var v1CompParser=new RegExp("(\\d*)(\\D*)","g");var v2CompParser=new RegExp("(\\d*)(\\D*)","g");do{var v1Comp=v1CompParser.exec(v1Sub)||["","",""];var v2Comp= | |
v2CompParser.exec(v2Sub)||["","",""];if(v1Comp[0].length==0&&v2Comp[0].length==0)break;var v1CompNum=v1Comp[1].length==0?0:parseInt(v1Comp[1],10);var v2CompNum=v2Comp[1].length==0?0:parseInt(v2Comp[1],10);order=goog.string.compareElements_(v1CompNum,v2CompNum)||goog.string.compareElements_(v1Comp[2].length==0,v2Comp[2].length==0)||goog.string.compareElements_(v1Comp[2],v2Comp[2])}while(order==0)}return order}; | |
goog.string.compareElements_=function(left,right){if(left<right)return-1;else if(left>right)return 1;return 0};goog.string.HASHCODE_MAX_=4294967296;goog.string.hashCode=function(str){var result=0;for(var i=0;i<str.length;++i){result=31*result+str.charCodeAt(i);result%=goog.string.HASHCODE_MAX_}return result};goog.string.uniqueStringCounter_=Math.random()*2147483648|0;goog.string.createUniqueString=function(){return"goog_"+goog.string.uniqueStringCounter_++}; | |
goog.string.toNumber=function(str){var num=Number(str);if(num==0&&goog.string.isEmpty(str))return NaN;return num};goog.string.toCamelCaseCache_={};goog.string.toCamelCase=function(str){return goog.string.toCamelCaseCache_[str]||(goog.string.toCamelCaseCache_[str]=String(str).replace(/\-([a-z])/g,function(all,match){return match.toUpperCase()}))};goog.string.toSelectorCaseCache_={}; | |
goog.string.toSelectorCase=function(str){return goog.string.toSelectorCaseCache_[str]||(goog.string.toSelectorCaseCache_[str]=String(str).replace(/([A-Z])/g,"-$1").toLowerCase())};goog.provide("goog.userAgent");goog.require("goog.string");goog.userAgent.ASSUME_IE=false;goog.userAgent.ASSUME_GECKO=false;goog.userAgent.ASSUME_WEBKIT=false;goog.userAgent.ASSUME_MOBILE_WEBKIT=false;goog.userAgent.ASSUME_OPERA=false;goog.userAgent.ASSUME_ANY_VERSION=false;goog.userAgent.BROWSER_KNOWN_=goog.userAgent.ASSUME_IE||goog.userAgent.ASSUME_GECKO||goog.userAgent.ASSUME_MOBILE_WEBKIT||goog.userAgent.ASSUME_WEBKIT||goog.userAgent.ASSUME_OPERA; | |
goog.userAgent.getUserAgentString=function(){return goog.global["navigator"]?goog.global["navigator"].userAgent:null};goog.userAgent.getNavigator=function(){return goog.global["navigator"]}; | |
goog.userAgent.init_=function(){goog.userAgent.detectedOpera_=false;goog.userAgent.detectedIe_=false;goog.userAgent.detectedWebkit_=false;goog.userAgent.detectedMobile_=false;goog.userAgent.detectedGecko_=false;var ua;if(!goog.userAgent.BROWSER_KNOWN_&&(ua=goog.userAgent.getUserAgentString())){var navigator=goog.userAgent.getNavigator();goog.userAgent.detectedOpera_=ua.indexOf("Opera")==0;goog.userAgent.detectedIe_=!goog.userAgent.detectedOpera_&&ua.indexOf("MSIE")!=-1;goog.userAgent.detectedWebkit_= | |
!goog.userAgent.detectedOpera_&&ua.indexOf("WebKit")!=-1;goog.userAgent.detectedMobile_=goog.userAgent.detectedWebkit_&&ua.indexOf("Mobile")!=-1;goog.userAgent.detectedGecko_=!goog.userAgent.detectedOpera_&&!goog.userAgent.detectedWebkit_&&navigator.product=="Gecko"}};if(!goog.userAgent.BROWSER_KNOWN_)goog.userAgent.init_();goog.userAgent.OPERA=goog.userAgent.BROWSER_KNOWN_?goog.userAgent.ASSUME_OPERA:goog.userAgent.detectedOpera_; | |
goog.userAgent.IE=goog.userAgent.BROWSER_KNOWN_?goog.userAgent.ASSUME_IE:goog.userAgent.detectedIe_;goog.userAgent.GECKO=goog.userAgent.BROWSER_KNOWN_?goog.userAgent.ASSUME_GECKO:goog.userAgent.detectedGecko_;goog.userAgent.WEBKIT=goog.userAgent.BROWSER_KNOWN_?goog.userAgent.ASSUME_WEBKIT||goog.userAgent.ASSUME_MOBILE_WEBKIT:goog.userAgent.detectedWebkit_;goog.userAgent.MOBILE=goog.userAgent.ASSUME_MOBILE_WEBKIT||goog.userAgent.detectedMobile_;goog.userAgent.SAFARI=goog.userAgent.WEBKIT; | |
goog.userAgent.determinePlatform_=function(){var navigator=goog.userAgent.getNavigator();return navigator&&navigator.platform||""};goog.userAgent.PLATFORM=goog.userAgent.determinePlatform_();goog.userAgent.ASSUME_MAC=false;goog.userAgent.ASSUME_WINDOWS=false;goog.userAgent.ASSUME_LINUX=false;goog.userAgent.ASSUME_X11=false;goog.userAgent.PLATFORM_KNOWN_=goog.userAgent.ASSUME_MAC||goog.userAgent.ASSUME_WINDOWS||goog.userAgent.ASSUME_LINUX||goog.userAgent.ASSUME_X11; | |
goog.userAgent.initPlatform_=function(){goog.userAgent.detectedMac_=goog.string.contains(goog.userAgent.PLATFORM,"Mac");goog.userAgent.detectedWindows_=goog.string.contains(goog.userAgent.PLATFORM,"Win");goog.userAgent.detectedLinux_=goog.string.contains(goog.userAgent.PLATFORM,"Linux");goog.userAgent.detectedX11_=!!goog.userAgent.getNavigator()&&goog.string.contains(goog.userAgent.getNavigator()["appVersion"]||"","X11")};if(!goog.userAgent.PLATFORM_KNOWN_)goog.userAgent.initPlatform_(); | |
goog.userAgent.MAC=goog.userAgent.PLATFORM_KNOWN_?goog.userAgent.ASSUME_MAC:goog.userAgent.detectedMac_;goog.userAgent.WINDOWS=goog.userAgent.PLATFORM_KNOWN_?goog.userAgent.ASSUME_WINDOWS:goog.userAgent.detectedWindows_;goog.userAgent.LINUX=goog.userAgent.PLATFORM_KNOWN_?goog.userAgent.ASSUME_LINUX:goog.userAgent.detectedLinux_;goog.userAgent.X11=goog.userAgent.PLATFORM_KNOWN_?goog.userAgent.ASSUME_X11:goog.userAgent.detectedX11_; | |
goog.userAgent.determineVersion_=function(){var version="",re;if(goog.userAgent.OPERA&&goog.global["opera"]){var operaVersion=goog.global["opera"].version;version=typeof operaVersion=="function"?operaVersion():operaVersion}else{if(goog.userAgent.GECKO)re=/rv\:([^\);]+)(\)|;)/;else if(goog.userAgent.IE)re=/MSIE\s+([^\);]+)(\)|;)/;else if(goog.userAgent.WEBKIT)re=/WebKit\/(\S+)/;if(re){var arr=re.exec(goog.userAgent.getUserAgentString());version=arr?arr[1]:""}}if(goog.userAgent.IE){var docMode=goog.userAgent.getDocumentMode_(); | |
if(docMode>parseFloat(version))return String(docMode)}return version};goog.userAgent.getDocumentMode_=function(){var doc=goog.global["document"];return doc?doc["documentMode"]:undefined};goog.userAgent.VERSION=goog.userAgent.determineVersion_();goog.userAgent.compare=function(v1,v2){return goog.string.compareVersions(v1,v2)};goog.userAgent.isVersionCache_={}; | |
goog.userAgent.isVersion=function(version){return goog.userAgent.ASSUME_ANY_VERSION||goog.userAgent.isVersionCache_[version]||(goog.userAgent.isVersionCache_[version]=goog.string.compareVersions(goog.userAgent.VERSION,version)>=0)};goog.userAgent.isDocumentModeCache_={};goog.userAgent.isDocumentMode=function(documentMode){return goog.userAgent.isDocumentModeCache_[documentMode]||(goog.userAgent.isDocumentModeCache_[documentMode]=goog.userAgent.IE&&document.documentMode&&document.documentMode>=documentMode)};goog.provide("bot");goog.require("goog.userAgent");try{bot.window_=window}catch(ignored){bot.window_=goog.global}bot.getWindow=function(){return bot.window_};bot.setWindow=function(win){bot.window_=win};bot.getDocument=function(){return bot.window_.document};goog.provide("goog.object");goog.object.forEach=function(obj,f,opt_obj){for(var key in obj)f.call(opt_obj,obj[key],key,obj)};goog.object.filter=function(obj,f,opt_obj){var res={};for(var key in obj)if(f.call(opt_obj,obj[key],key,obj))res[key]=obj[key];return res};goog.object.map=function(obj,f,opt_obj){var res={};for(var key in obj)res[key]=f.call(opt_obj,obj[key],key,obj);return res};goog.object.some=function(obj,f,opt_obj){for(var key in obj)if(f.call(opt_obj,obj[key],key,obj))return true;return false}; | |
goog.object.every=function(obj,f,opt_obj){for(var key in obj)if(!f.call(opt_obj,obj[key],key,obj))return false;return true};goog.object.getCount=function(obj){var rv=0;for(var key in obj)rv++;return rv};goog.object.getAnyKey=function(obj){for(var key in obj)return key};goog.object.getAnyValue=function(obj){for(var key in obj)return obj[key]};goog.object.contains=function(obj,val){return goog.object.containsValue(obj,val)}; | |
goog.object.getValues=function(obj){var res=[];var i=0;for(var key in obj)res[i++]=obj[key];return res};goog.object.getKeys=function(obj){var res=[];var i=0;for(var key in obj)res[i++]=key;return res};goog.object.getValueByKeys=function(obj,var_args){var isArrayLike=goog.isArrayLike(var_args);var keys=isArrayLike?var_args:arguments;for(var i=isArrayLike?0:1;i<keys.length;i++){obj=obj[keys[i]];if(!goog.isDef(obj))break}return obj};goog.object.containsKey=function(obj,key){return key in obj}; | |
goog.object.containsValue=function(obj,val){for(var key in obj)if(obj[key]==val)return true;return false};goog.object.findKey=function(obj,f,opt_this){for(var key in obj)if(f.call(opt_this,obj[key],key,obj))return key;return undefined};goog.object.findValue=function(obj,f,opt_this){var key=goog.object.findKey(obj,f,opt_this);return key&&obj[key]};goog.object.isEmpty=function(obj){for(var key in obj)return false;return true};goog.object.clear=function(obj){for(var i in obj)delete obj[i]}; | |
goog.object.remove=function(obj,key){var rv;if(rv=key in obj)delete obj[key];return rv};goog.object.add=function(obj,key,val){if(key in obj)throw Error('The object already contains the key "'+key+'"');goog.object.set(obj,key,val)};goog.object.get=function(obj,key,opt_val){if(key in obj)return obj[key];return opt_val};goog.object.set=function(obj,key,value){obj[key]=value};goog.object.setIfUndefined=function(obj,key,value){return key in obj?obj[key]:obj[key]=value}; | |
goog.object.clone=function(obj){var res={};for(var key in obj)res[key]=obj[key];return res};goog.object.unsafeClone=function(obj){var type=goog.typeOf(obj);if(type=="object"||type=="array"){if(obj.clone)return obj.clone();var clone=type=="array"?[]:{};for(var key in obj)clone[key]=goog.object.unsafeClone(obj[key]);return clone}return obj};goog.object.transpose=function(obj){var transposed={};for(var key in obj)transposed[obj[key]]=key;return transposed}; | |
goog.object.PROTOTYPE_FIELDS_=["constructor","hasOwnProperty","isPrototypeOf","propertyIsEnumerable","toLocaleString","toString","valueOf"];goog.object.extend=function(target,var_args){var key,source;for(var i=1;i<arguments.length;i++){source=arguments[i];for(key in source)target[key]=source[key];for(var j=0;j<goog.object.PROTOTYPE_FIELDS_.length;j++){key=goog.object.PROTOTYPE_FIELDS_[j];if(Object.prototype.hasOwnProperty.call(source,key))target[key]=source[key]}}}; | |
goog.object.create=function(var_args){var argLength=arguments.length;if(argLength==1&&goog.isArray(arguments[0]))return goog.object.create.apply(null,arguments[0]);if(argLength%2)throw Error("Uneven number of arguments");var rv={};for(var i=0;i<argLength;i+=2)rv[arguments[i]]=arguments[i+1];return rv}; | |
goog.object.createSet=function(var_args){var argLength=arguments.length;if(argLength==1&&goog.isArray(arguments[0]))return goog.object.createSet.apply(null,arguments[0]);var rv={};for(var i=0;i<argLength;i++)rv[arguments[i]]=true;return rv};goog.provide("bot.Error");goog.provide("bot.ErrorCode");goog.require("goog.object"); | |
bot.ErrorCode={SUCCESS:0,NO_SUCH_ELEMENT:7,NO_SUCH_FRAME:8,UNKNOWN_COMMAND:9,UNSUPPORTED_OPERATION:9,STALE_ELEMENT_REFERENCE:10,ELEMENT_NOT_VISIBLE:11,INVALID_ELEMENT_STATE:12,UNKNOWN_ERROR:13,ELEMENT_NOT_SELECTABLE:15,JAVASCRIPT_ERROR:17,XPATH_LOOKUP_ERROR:19,TIMEOUT:21,NO_SUCH_WINDOW:23,INVALID_COOKIE_DOMAIN:24,UNABLE_TO_SET_COOKIE:25,MODAL_DIALOG_OPENED:26,NO_MODAL_DIALOG_OPEN:27,SCRIPT_TIMEOUT:28,INVALID_ELEMENT_COORDINATES:29,INVALID_SELECTOR_ERROR:32,SQL_DATABASE_ERROR:33,MOVE_TARGET_OUT_OF_BOUNDS:34, | |
IME_ENGINE_ACTIVATION_FAILED:35,IME_NOT_AVAILABLE:36};bot.Error=function(code,opt_message){this.code=code;this.message=opt_message||"";this.name=bot.Error.NAMES_[code]||bot.Error.NAMES_[bot.ErrorCode.UNKNOWN_ERROR];var template=new Error(this.message);template.name=this.name;this.stack=template.stack||""};goog.inherits(bot.Error,Error); | |
bot.Error.NAMES_=goog.object.create(bot.ErrorCode.NO_SUCH_ELEMENT,"NoSuchElementError",bot.ErrorCode.NO_SUCH_FRAME,"NoSuchFrameError",bot.ErrorCode.UNKNOWN_COMMAND,"UnknownCommandError",bot.ErrorCode.STALE_ELEMENT_REFERENCE,"StaleElementReferenceError",bot.ErrorCode.ELEMENT_NOT_VISIBLE,"ElementNotVisibleError",bot.ErrorCode.INVALID_ELEMENT_STATE,"InvalidElementStateError",bot.ErrorCode.UNKNOWN_ERROR,"UnknownError",bot.ErrorCode.ELEMENT_NOT_SELECTABLE,"ElementNotSelectableError",bot.ErrorCode.XPATH_LOOKUP_ERROR, | |
"XPathLookupError",bot.ErrorCode.NO_SUCH_WINDOW,"NoSuchWindowError",bot.ErrorCode.INVALID_COOKIE_DOMAIN,"InvalidCookieDomainError",bot.ErrorCode.UNABLE_TO_SET_COOKIE,"UnableToSetCookieError",bot.ErrorCode.MODAL_DIALOG_OPENED,"ModalDialogOpenedError",bot.ErrorCode.NO_MODAL_DIALOG_OPEN,"NoModalDialogOpenError",bot.ErrorCode.SCRIPT_TIMEOUT,"ScriptTimeoutError",bot.ErrorCode.INVALID_SELECTOR_ERROR,"InvalidSelectorError",bot.ErrorCode.SQL_DATABASE_ERROR,"SqlDatabaseError",bot.ErrorCode.MOVE_TARGET_OUT_OF_BOUNDS, | |
"MoveTargetOutOfBoundsError");bot.Error.prototype.isAutomationError=true;if(goog.DEBUG)bot.Error.prototype.toString=function(){return"["+this.name+"] "+this.message};goog.provide("goog.debug.Error");goog.debug.Error=function(opt_msg){this.stack=(new Error).stack||"";if(opt_msg)this.message=String(opt_msg)};goog.inherits(goog.debug.Error,Error);goog.debug.Error.prototype.name="CustomError";goog.provide("goog.asserts");goog.provide("goog.asserts.AssertionError");goog.require("goog.debug.Error");goog.require("goog.string");goog.asserts.ENABLE_ASSERTS=goog.DEBUG;goog.asserts.AssertionError=function(messagePattern,messageArgs){messageArgs.unshift(messagePattern);goog.debug.Error.call(this,goog.string.subs.apply(null,messageArgs));messageArgs.shift();this.messagePattern=messagePattern};goog.inherits(goog.asserts.AssertionError,goog.debug.Error); | |
goog.asserts.AssertionError.prototype.name="AssertionError";goog.asserts.doAssertFailure_=function(defaultMessage,defaultArgs,givenMessage,givenArgs){var message="Assertion failed";if(givenMessage){message+=": "+givenMessage;var args=givenArgs}else if(defaultMessage){message+=": "+defaultMessage;args=defaultArgs}throw new goog.asserts.AssertionError(""+message,args||[]);}; | |
goog.asserts.assert=function(condition,opt_message,var_args){if(goog.asserts.ENABLE_ASSERTS&&!condition)goog.asserts.doAssertFailure_("",null,opt_message,Array.prototype.slice.call(arguments,2));return condition};goog.asserts.fail=function(opt_message,var_args){if(goog.asserts.ENABLE_ASSERTS)throw new goog.asserts.AssertionError("Failure"+(opt_message?": "+opt_message:""),Array.prototype.slice.call(arguments,1));}; | |
goog.asserts.assertNumber=function(value,opt_message,var_args){if(goog.asserts.ENABLE_ASSERTS&&!goog.isNumber(value))goog.asserts.doAssertFailure_("Expected number but got %s: %s.",[goog.typeOf(value),value],opt_message,Array.prototype.slice.call(arguments,2));return value}; | |
goog.asserts.assertString=function(value,opt_message,var_args){if(goog.asserts.ENABLE_ASSERTS&&!goog.isString(value))goog.asserts.doAssertFailure_("Expected string but got %s: %s.",[goog.typeOf(value),value],opt_message,Array.prototype.slice.call(arguments,2));return value}; | |
goog.asserts.assertFunction=function(value,opt_message,var_args){if(goog.asserts.ENABLE_ASSERTS&&!goog.isFunction(value))goog.asserts.doAssertFailure_("Expected function but got %s: %s.",[goog.typeOf(value),value],opt_message,Array.prototype.slice.call(arguments,2));return value}; | |
goog.asserts.assertObject=function(value,opt_message,var_args){if(goog.asserts.ENABLE_ASSERTS&&!goog.isObject(value))goog.asserts.doAssertFailure_("Expected object but got %s: %s.",[goog.typeOf(value),value],opt_message,Array.prototype.slice.call(arguments,2));return value}; | |
goog.asserts.assertArray=function(value,opt_message,var_args){if(goog.asserts.ENABLE_ASSERTS&&!goog.isArray(value))goog.asserts.doAssertFailure_("Expected array but got %s: %s.",[goog.typeOf(value),value],opt_message,Array.prototype.slice.call(arguments,2));return value}; | |
goog.asserts.assertBoolean=function(value,opt_message,var_args){if(goog.asserts.ENABLE_ASSERTS&&!goog.isBoolean(value))goog.asserts.doAssertFailure_("Expected boolean but got %s: %s.",[goog.typeOf(value),value],opt_message,Array.prototype.slice.call(arguments,2));return value}; | |
goog.asserts.assertInstanceof=function(value,type,opt_message,var_args){if(goog.asserts.ENABLE_ASSERTS&&!(value instanceof type))goog.asserts.doAssertFailure_("instanceof check failed.",null,opt_message,Array.prototype.slice.call(arguments,3))};goog.provide("goog.array");goog.provide("goog.array.ArrayLike");goog.require("goog.asserts");goog.NATIVE_ARRAY_PROTOTYPES=true;goog.array.ArrayLike;goog.array.peek=function(array){return array[array.length-1]};goog.array.ARRAY_PROTOTYPE_=Array.prototype; | |
goog.array.indexOf=goog.NATIVE_ARRAY_PROTOTYPES&&goog.array.ARRAY_PROTOTYPE_.indexOf?function(arr,obj,opt_fromIndex){goog.asserts.assert(arr.length!=null);return goog.array.ARRAY_PROTOTYPE_.indexOf.call(arr,obj,opt_fromIndex)}:function(arr,obj,opt_fromIndex){var fromIndex=opt_fromIndex==null?0:opt_fromIndex<0?Math.max(0,arr.length+opt_fromIndex):opt_fromIndex;if(goog.isString(arr)){if(!goog.isString(obj)||obj.length!=1)return-1;return arr.indexOf(obj,fromIndex)}for(var i=fromIndex;i<arr.length;i++)if(i in | |
arr&&arr[i]===obj)return i;return-1}; | |
goog.array.lastIndexOf=goog.NATIVE_ARRAY_PROTOTYPES&&goog.array.ARRAY_PROTOTYPE_.lastIndexOf?function(arr,obj,opt_fromIndex){goog.asserts.assert(arr.length!=null);var fromIndex=opt_fromIndex==null?arr.length-1:opt_fromIndex;return goog.array.ARRAY_PROTOTYPE_.lastIndexOf.call(arr,obj,fromIndex)}:function(arr,obj,opt_fromIndex){var fromIndex=opt_fromIndex==null?arr.length-1:opt_fromIndex;if(fromIndex<0)fromIndex=Math.max(0,arr.length+fromIndex);if(goog.isString(arr)){if(!goog.isString(obj)||obj.length!= | |
1)return-1;return arr.lastIndexOf(obj,fromIndex)}for(var i=fromIndex;i>=0;i--)if(i in arr&&arr[i]===obj)return i;return-1};goog.array.forEach=goog.NATIVE_ARRAY_PROTOTYPES&&goog.array.ARRAY_PROTOTYPE_.forEach?function(arr,f,opt_obj){goog.asserts.assert(arr.length!=null);goog.array.ARRAY_PROTOTYPE_.forEach.call(arr,f,opt_obj)}:function(arr,f,opt_obj){var l=arr.length;var arr2=goog.isString(arr)?arr.split(""):arr;for(var i=0;i<l;i++)if(i in arr2)f.call(opt_obj,arr2[i],i,arr)}; | |
goog.array.forEachRight=function(arr,f,opt_obj){var l=arr.length;var arr2=goog.isString(arr)?arr.split(""):arr;for(var i=l-1;i>=0;--i)if(i in arr2)f.call(opt_obj,arr2[i],i,arr)}; | |
goog.array.filter=goog.NATIVE_ARRAY_PROTOTYPES&&goog.array.ARRAY_PROTOTYPE_.filter?function(arr,f,opt_obj){goog.asserts.assert(arr.length!=null);return goog.array.ARRAY_PROTOTYPE_.filter.call(arr,f,opt_obj)}:function(arr,f,opt_obj){var l=arr.length;var res=[];var resLength=0;var arr2=goog.isString(arr)?arr.split(""):arr;for(var i=0;i<l;i++)if(i in arr2){var val=arr2[i];if(f.call(opt_obj,val,i,arr))res[resLength++]=val}return res}; | |
goog.array.map=goog.NATIVE_ARRAY_PROTOTYPES&&goog.array.ARRAY_PROTOTYPE_.map?function(arr,f,opt_obj){goog.asserts.assert(arr.length!=null);return goog.array.ARRAY_PROTOTYPE_.map.call(arr,f,opt_obj)}:function(arr,f,opt_obj){var l=arr.length;var res=new Array(l);var arr2=goog.isString(arr)?arr.split(""):arr;for(var i=0;i<l;i++)if(i in arr2)res[i]=f.call(opt_obj,arr2[i],i,arr);return res}; | |
goog.array.reduce=function(arr,f,val,opt_obj){if(arr.reduce)if(opt_obj)return arr.reduce(goog.bind(f,opt_obj),val);else return arr.reduce(f,val);var rval=val;goog.array.forEach(arr,function(val,index){rval=f.call(opt_obj,rval,val,index,arr)});return rval}; | |
goog.array.reduceRight=function(arr,f,val,opt_obj){if(arr.reduceRight)if(opt_obj)return arr.reduceRight(goog.bind(f,opt_obj),val);else return arr.reduceRight(f,val);var rval=val;goog.array.forEachRight(arr,function(val,index){rval=f.call(opt_obj,rval,val,index,arr)});return rval}; | |
goog.array.some=goog.NATIVE_ARRAY_PROTOTYPES&&goog.array.ARRAY_PROTOTYPE_.some?function(arr,f,opt_obj){goog.asserts.assert(arr.length!=null);return goog.array.ARRAY_PROTOTYPE_.some.call(arr,f,opt_obj)}:function(arr,f,opt_obj){var l=arr.length;var arr2=goog.isString(arr)?arr.split(""):arr;for(var i=0;i<l;i++)if(i in arr2&&f.call(opt_obj,arr2[i],i,arr))return true;return false}; | |
goog.array.every=goog.NATIVE_ARRAY_PROTOTYPES&&goog.array.ARRAY_PROTOTYPE_.every?function(arr,f,opt_obj){goog.asserts.assert(arr.length!=null);return goog.array.ARRAY_PROTOTYPE_.every.call(arr,f,opt_obj)}:function(arr,f,opt_obj){var l=arr.length;var arr2=goog.isString(arr)?arr.split(""):arr;for(var i=0;i<l;i++)if(i in arr2&&!f.call(opt_obj,arr2[i],i,arr))return false;return true}; | |
goog.array.find=function(arr,f,opt_obj){var i=goog.array.findIndex(arr,f,opt_obj);return i<0?null:goog.isString(arr)?arr.charAt(i):arr[i]};goog.array.findIndex=function(arr,f,opt_obj){var l=arr.length;var arr2=goog.isString(arr)?arr.split(""):arr;for(var i=0;i<l;i++)if(i in arr2&&f.call(opt_obj,arr2[i],i,arr))return i;return-1};goog.array.findRight=function(arr,f,opt_obj){var i=goog.array.findIndexRight(arr,f,opt_obj);return i<0?null:goog.isString(arr)?arr.charAt(i):arr[i]}; | |
goog.array.findIndexRight=function(arr,f,opt_obj){var l=arr.length;var arr2=goog.isString(arr)?arr.split(""):arr;for(var i=l-1;i>=0;i--)if(i in arr2&&f.call(opt_obj,arr2[i],i,arr))return i;return-1};goog.array.contains=function(arr,obj){return goog.array.indexOf(arr,obj)>=0};goog.array.isEmpty=function(arr){return arr.length==0};goog.array.clear=function(arr){if(!goog.isArray(arr))for(var i=arr.length-1;i>=0;i--)delete arr[i];arr.length=0}; | |
goog.array.insert=function(arr,obj){if(!goog.array.contains(arr,obj))arr.push(obj)};goog.array.insertAt=function(arr,obj,opt_i){goog.array.splice(arr,opt_i,0,obj)};goog.array.insertArrayAt=function(arr,elementsToAdd,opt_i){goog.partial(goog.array.splice,arr,opt_i,0).apply(null,elementsToAdd)};goog.array.insertBefore=function(arr,obj,opt_obj2){var i;if(arguments.length==2||(i=goog.array.indexOf(arr,opt_obj2))<0)arr.push(obj);else goog.array.insertAt(arr,obj,i)}; | |
goog.array.remove=function(arr,obj){var i=goog.array.indexOf(arr,obj);var rv;if(rv=i>=0)goog.array.removeAt(arr,i);return rv};goog.array.removeAt=function(arr,i){goog.asserts.assert(arr.length!=null);return goog.array.ARRAY_PROTOTYPE_.splice.call(arr,i,1).length==1};goog.array.removeIf=function(arr,f,opt_obj){var i=goog.array.findIndex(arr,f,opt_obj);if(i>=0){goog.array.removeAt(arr,i);return true}return false}; | |
goog.array.concat=function(var_args){return goog.array.ARRAY_PROTOTYPE_.concat.apply(goog.array.ARRAY_PROTOTYPE_,arguments)};goog.array.clone=function(arr){if(goog.isArray(arr))return goog.array.concat(arr);else{var rv=[];for(var i=0,len=arr.length;i<len;i++)rv[i]=arr[i];return rv}};goog.array.toArray=function(object){if(goog.isArray(object))return goog.array.concat(object);return goog.array.clone(object)}; | |
goog.array.extend=function(arr1,var_args){for(var i=1;i<arguments.length;i++){var arr2=arguments[i];var isArrayLike;if(goog.isArray(arr2)||(isArrayLike=goog.isArrayLike(arr2))&&arr2.hasOwnProperty("callee"))arr1.push.apply(arr1,arr2);else if(isArrayLike){var len1=arr1.length;var len2=arr2.length;for(var j=0;j<len2;j++)arr1[len1+j]=arr2[j]}else arr1.push(arr2)}}; | |
goog.array.splice=function(arr,index,howMany,var_args){goog.asserts.assert(arr.length!=null);return goog.array.ARRAY_PROTOTYPE_.splice.apply(arr,goog.array.slice(arguments,1))};goog.array.slice=function(arr,start,opt_end){goog.asserts.assert(arr.length!=null);if(arguments.length<=2)return goog.array.ARRAY_PROTOTYPE_.slice.call(arr,start);else return goog.array.ARRAY_PROTOTYPE_.slice.call(arr,start,opt_end)}; | |
goog.array.removeDuplicates=function(arr,opt_rv){var returnArray=opt_rv||arr;var seen={},cursorInsert=0,cursorRead=0;while(cursorRead<arr.length){var current=arr[cursorRead++];var key=goog.isObject(current)?"o"+goog.getUid(current):(typeof current).charAt(0)+current;if(!Object.prototype.hasOwnProperty.call(seen,key)){seen[key]=true;returnArray[cursorInsert++]=current}}returnArray.length=cursorInsert}; | |
goog.array.binarySearch=function(arr,target,opt_compareFn){return goog.array.binarySearch_(arr,opt_compareFn||goog.array.defaultCompare,false,target)};goog.array.binarySelect=function(arr,evaluator,opt_obj){return goog.array.binarySearch_(arr,evaluator,true,undefined,opt_obj)}; | |
goog.array.binarySearch_=function(arr,compareFn,isEvaluator,opt_target,opt_selfObj){var left=0;var right=arr.length;var found;while(left<right){var middle=left+right>>1;var compareResult;if(isEvaluator)compareResult=compareFn.call(opt_selfObj,arr[middle],middle,arr);else compareResult=compareFn(opt_target,arr[middle]);if(compareResult>0)left=middle+1;else{right=middle;found=!compareResult}}return found?left:~left}; | |
goog.array.sort=function(arr,opt_compareFn){goog.asserts.assert(arr.length!=null);goog.array.ARRAY_PROTOTYPE_.sort.call(arr,opt_compareFn||goog.array.defaultCompare)}; | |
goog.array.stableSort=function(arr,opt_compareFn){for(var i=0;i<arr.length;i++)arr[i]={index:i,value:arr[i]};var valueCompareFn=opt_compareFn||goog.array.defaultCompare;function stableCompareFn(obj1,obj2){return valueCompareFn(obj1.value,obj2.value)||obj1.index-obj2.index}goog.array.sort(arr,stableCompareFn);for(var i=0;i<arr.length;i++)arr[i]=arr[i].value}; | |
goog.array.sortObjectsByKey=function(arr,key,opt_compareFn){var compare=opt_compareFn||goog.array.defaultCompare;goog.array.sort(arr,function(a,b){return compare(a[key],b[key])})};goog.array.isSorted=function(arr,opt_compareFn,opt_strict){var compare=opt_compareFn||goog.array.defaultCompare;for(var i=1;i<arr.length;i++){var compareResult=compare(arr[i-1],arr[i]);if(compareResult>0||compareResult==0&&opt_strict)return false}return true}; | |
goog.array.equals=function(arr1,arr2,opt_equalsFn){if(!goog.isArrayLike(arr1)||!goog.isArrayLike(arr2)||arr1.length!=arr2.length)return false;var l=arr1.length;var equalsFn=opt_equalsFn||goog.array.defaultCompareEquality;for(var i=0;i<l;i++)if(!equalsFn(arr1[i],arr2[i]))return false;return true};goog.array.compare=function(arr1,arr2,opt_equalsFn){return goog.array.equals(arr1,arr2,opt_equalsFn)}; | |
goog.array.compare3=function(arr1,arr2,opt_compareFn){var compare=opt_compareFn||goog.array.defaultCompare;var l=Math.min(arr1.length,arr2.length);for(var i=0;i<l;i++){var result=compare(arr1[i],arr2[i]);if(result!=0)return result}return goog.array.defaultCompare(arr1.length,arr2.length)};goog.array.defaultCompare=function(a,b){return a>b?1:a<b?-1:0};goog.array.defaultCompareEquality=function(a,b){return a===b}; | |
goog.array.binaryInsert=function(array,value,opt_compareFn){var index=goog.array.binarySearch(array,value,opt_compareFn);if(index<0){goog.array.insertAt(array,value,-(index+1));return true}return false};goog.array.binaryRemove=function(array,value,opt_compareFn){var index=goog.array.binarySearch(array,value,opt_compareFn);return index>=0?goog.array.removeAt(array,index):false}; | |
goog.array.bucket=function(array,sorter){var buckets={};for(var i=0;i<array.length;i++){var value=array[i];var key=sorter(value,i,array);if(goog.isDef(key)){var bucket=buckets[key]||(buckets[key]=[]);bucket.push(value)}}return buckets};goog.array.repeat=function(value,n){var array=[];for(var i=0;i<n;i++)array[i]=value;return array}; | |
goog.array.flatten=function(var_args){var result=[];for(var i=0;i<arguments.length;i++){var element=arguments[i];if(goog.isArray(element))result.push.apply(result,goog.array.flatten.apply(null,element));else result.push(element)}return result};goog.array.rotate=function(array,n){goog.asserts.assert(array.length!=null);if(array.length){n%=array.length;if(n>0)goog.array.ARRAY_PROTOTYPE_.unshift.apply(array,array.splice(-n,n));else if(n<0)goog.array.ARRAY_PROTOTYPE_.push.apply(array,array.splice(0,-n))}return array}; | |
goog.array.zip=function(var_args){if(!arguments.length)return[];var result=[];for(var i=0;true;i++){var value=[];for(var j=0;j<arguments.length;j++){var arr=arguments[j];if(i>=arr.length)return result;value.push(arr[i])}result.push(value)}};goog.array.shuffle=function(arr,opt_randFn){var randFn=opt_randFn||Math.random;for(var i=arr.length-1;i>0;i--){var j=Math.floor(randFn()*(i+1));var tmp=arr[i];arr[i]=arr[j];arr[j]=tmp}};goog.provide("goog.dom.BrowserFeature");goog.require("goog.userAgent");goog.dom.BrowserFeature={CAN_ADD_NAME_OR_TYPE_ATTRIBUTES:!goog.userAgent.IE||goog.userAgent.isDocumentMode(9),CAN_USE_CHILDREN_ATTRIBUTE:!goog.userAgent.GECKO&&!goog.userAgent.IE||goog.userAgent.IE&&goog.userAgent.isDocumentMode(9)||goog.userAgent.GECKO&&goog.userAgent.isVersion("1.9.1"),CAN_USE_INNER_TEXT:goog.userAgent.IE&&!goog.userAgent.isVersion("9"),INNER_HTML_NEEDS_SCOPED_ELEMENT:goog.userAgent.IE};goog.provide("goog.dom.TagName"); | |
goog.dom.TagName={A:"A",ABBR:"ABBR",ACRONYM:"ACRONYM",ADDRESS:"ADDRESS",APPLET:"APPLET",AREA:"AREA",B:"B",BASE:"BASE",BASEFONT:"BASEFONT",BDO:"BDO",BIG:"BIG",BLOCKQUOTE:"BLOCKQUOTE",BODY:"BODY",BR:"BR",BUTTON:"BUTTON",CANVAS:"CANVAS",CAPTION:"CAPTION",CENTER:"CENTER",CITE:"CITE",CODE:"CODE",COL:"COL",COLGROUP:"COLGROUP",DD:"DD",DEL:"DEL",DFN:"DFN",DIR:"DIR",DIV:"DIV",DL:"DL",DT:"DT",EM:"EM",FIELDSET:"FIELDSET",FONT:"FONT",FORM:"FORM",FRAME:"FRAME",FRAMESET:"FRAMESET",H1:"H1",H2:"H2",H3:"H3",H4:"H4", | |
H5:"H5",H6:"H6",HEAD:"HEAD",HR:"HR",HTML:"HTML",I:"I",IFRAME:"IFRAME",IMG:"IMG",INPUT:"INPUT",INS:"INS",ISINDEX:"ISINDEX",KBD:"KBD",LABEL:"LABEL",LEGEND:"LEGEND",LI:"LI",LINK:"LINK",MAP:"MAP",MENU:"MENU",META:"META",NOFRAMES:"NOFRAMES",NOSCRIPT:"NOSCRIPT",OBJECT:"OBJECT",OL:"OL",OPTGROUP:"OPTGROUP",OPTION:"OPTION",P:"P",PARAM:"PARAM",PRE:"PRE",Q:"Q",S:"S",SAMP:"SAMP",SCRIPT:"SCRIPT",SELECT:"SELECT",SMALL:"SMALL",SPAN:"SPAN",STRIKE:"STRIKE",STRONG:"STRONG",STYLE:"STYLE",SUB:"SUB",SUP:"SUP",TABLE:"TABLE", | |
TBODY:"TBODY",TD:"TD",TEXTAREA:"TEXTAREA",TFOOT:"TFOOT",TH:"TH",THEAD:"THEAD",TITLE:"TITLE",TR:"TR",TT:"TT",U:"U",UL:"UL",VAR:"VAR"};goog.provide("goog.dom.classes");goog.require("goog.array");goog.dom.classes.set=function(element,className){element.className=className};goog.dom.classes.get=function(element){var className=element.className;return className&&typeof className.split=="function"?className.split(/\s+/):[]};goog.dom.classes.add=function(element,var_args){var classes=goog.dom.classes.get(element);var args=goog.array.slice(arguments,1);var b=goog.dom.classes.add_(classes,args);element.className=classes.join(" ");return b}; | |
goog.dom.classes.remove=function(element,var_args){var classes=goog.dom.classes.get(element);var args=goog.array.slice(arguments,1);var b=goog.dom.classes.remove_(classes,args);element.className=classes.join(" ");return b};goog.dom.classes.add_=function(classes,args){var rv=0;for(var i=0;i<args.length;i++)if(!goog.array.contains(classes,args[i])){classes.push(args[i]);rv++}return rv==args.length}; | |
goog.dom.classes.remove_=function(classes,args){var rv=0;for(var i=0;i<classes.length;i++)if(goog.array.contains(args,classes[i])){goog.array.splice(classes,i--,1);rv++}return rv==args.length};goog.dom.classes.swap=function(element,fromClass,toClass){var classes=goog.dom.classes.get(element);var removed=false;for(var i=0;i<classes.length;i++)if(classes[i]==fromClass){goog.array.splice(classes,i--,1);removed=true}if(removed){classes.push(toClass);element.className=classes.join(" ")}return removed}; | |
goog.dom.classes.addRemove=function(element,classesToRemove,classesToAdd){var classes=goog.dom.classes.get(element);if(goog.isString(classesToRemove))goog.array.remove(classes,classesToRemove);else if(goog.isArray(classesToRemove))goog.dom.classes.remove_(classes,classesToRemove);if(goog.isString(classesToAdd)&&!goog.array.contains(classes,classesToAdd))classes.push(classesToAdd);else if(goog.isArray(classesToAdd))goog.dom.classes.add_(classes,classesToAdd);element.className=classes.join(" ")}; | |
goog.dom.classes.has=function(element,className){return goog.array.contains(goog.dom.classes.get(element),className)};goog.dom.classes.enable=function(element,className,enabled){if(enabled)goog.dom.classes.add(element,className);else goog.dom.classes.remove(element,className)};goog.dom.classes.toggle=function(element,className){var add=!goog.dom.classes.has(element,className);goog.dom.classes.enable(element,className,add);return add};goog.provide("goog.math.Coordinate");goog.math.Coordinate=function(opt_x,opt_y){this.x=goog.isDef(opt_x)?opt_x:0;this.y=goog.isDef(opt_y)?opt_y:0};goog.math.Coordinate.prototype.clone=function(){return new goog.math.Coordinate(this.x,this.y)};if(goog.DEBUG)goog.math.Coordinate.prototype.toString=function(){return"("+this.x+", "+this.y+")"};goog.math.Coordinate.equals=function(a,b){if(a==b)return true;if(!a||!b)return false;return a.x==b.x&&a.y==b.y}; | |
goog.math.Coordinate.distance=function(a,b){var dx=a.x-b.x;var dy=a.y-b.y;return Math.sqrt(dx*dx+dy*dy)};goog.math.Coordinate.squaredDistance=function(a,b){var dx=a.x-b.x;var dy=a.y-b.y;return dx*dx+dy*dy};goog.math.Coordinate.difference=function(a,b){return new goog.math.Coordinate(a.x-b.x,a.y-b.y)};goog.math.Coordinate.sum=function(a,b){return new goog.math.Coordinate(a.x+b.x,a.y+b.y)};goog.provide("goog.math.Size");goog.math.Size=function(width,height){this.width=width;this.height=height};goog.math.Size.equals=function(a,b){if(a==b)return true;if(!a||!b)return false;return a.width==b.width&&a.height==b.height};goog.math.Size.prototype.clone=function(){return new goog.math.Size(this.width,this.height)};if(goog.DEBUG)goog.math.Size.prototype.toString=function(){return"("+this.width+" x "+this.height+")"};goog.math.Size.prototype.getLongest=function(){return Math.max(this.width,this.height)}; | |
goog.math.Size.prototype.getShortest=function(){return Math.min(this.width,this.height)};goog.math.Size.prototype.area=function(){return this.width*this.height};goog.math.Size.prototype.perimeter=function(){return(this.width+this.height)*2};goog.math.Size.prototype.aspectRatio=function(){return this.width/this.height};goog.math.Size.prototype.isEmpty=function(){return!this.area()};goog.math.Size.prototype.ceil=function(){this.width=Math.ceil(this.width);this.height=Math.ceil(this.height);return this}; | |
goog.math.Size.prototype.fitsInside=function(target){return this.width<=target.width&&this.height<=target.height};goog.math.Size.prototype.floor=function(){this.width=Math.floor(this.width);this.height=Math.floor(this.height);return this};goog.math.Size.prototype.round=function(){this.width=Math.round(this.width);this.height=Math.round(this.height);return this};goog.math.Size.prototype.scale=function(s){this.width*=s;this.height*=s;return this}; | |
goog.math.Size.prototype.scaleToFit=function(target){var s=this.aspectRatio()>target.aspectRatio()?target.width/this.width:target.height/this.height;return this.scale(s)};goog.provide("goog.dom");goog.provide("goog.dom.DomHelper");goog.provide("goog.dom.NodeType");goog.require("goog.array");goog.require("goog.dom.BrowserFeature");goog.require("goog.dom.TagName");goog.require("goog.dom.classes");goog.require("goog.math.Coordinate");goog.require("goog.math.Size");goog.require("goog.object");goog.require("goog.string");goog.require("goog.userAgent");goog.dom.ASSUME_QUIRKS_MODE=false;goog.dom.ASSUME_STANDARDS_MODE=false; | |
goog.dom.COMPAT_MODE_KNOWN_=goog.dom.ASSUME_QUIRKS_MODE||goog.dom.ASSUME_STANDARDS_MODE;goog.dom.NodeType={ELEMENT:1,ATTRIBUTE:2,TEXT:3,CDATA_SECTION:4,ENTITY_REFERENCE:5,ENTITY:6,PROCESSING_INSTRUCTION:7,COMMENT:8,DOCUMENT:9,DOCUMENT_TYPE:10,DOCUMENT_FRAGMENT:11,NOTATION:12};goog.dom.getDomHelper=function(opt_element){return opt_element?new goog.dom.DomHelper(goog.dom.getOwnerDocument(opt_element)):goog.dom.defaultDomHelper_||(goog.dom.defaultDomHelper_=new goog.dom.DomHelper)};goog.dom.defaultDomHelper_; | |
goog.dom.getDocument=function(){return document};goog.dom.getElement=function(element){return goog.isString(element)?document.getElementById(element):element};goog.dom.$=goog.dom.getElement;goog.dom.getElementsByTagNameAndClass=function(opt_tag,opt_class,opt_el){return goog.dom.getElementsByTagNameAndClass_(document,opt_tag,opt_class,opt_el)}; | |
goog.dom.getElementsByClass=function(className,opt_el){var parent=opt_el||document;if(goog.dom.canUseQuerySelector_(parent))return parent.querySelectorAll("."+className);else if(parent.getElementsByClassName)return parent.getElementsByClassName(className);return goog.dom.getElementsByTagNameAndClass_(document,"*",className,opt_el)}; | |
goog.dom.getElementByClass=function(className,opt_el){var parent=opt_el||document;var retVal=null;if(goog.dom.canUseQuerySelector_(parent))retVal=parent.querySelector("."+className);else retVal=goog.dom.getElementsByClass(className,opt_el)[0];return retVal||null};goog.dom.canUseQuerySelector_=function(parent){return parent.querySelectorAll&&parent.querySelector&&(!goog.userAgent.WEBKIT||goog.dom.isCss1CompatMode_(document)||goog.userAgent.isVersion("528"))}; | |
goog.dom.getElementsByTagNameAndClass_=function(doc,opt_tag,opt_class,opt_el){var parent=opt_el||doc;var tagName=opt_tag&&opt_tag!="*"?opt_tag.toUpperCase():"";if(goog.dom.canUseQuerySelector_(parent)&&(tagName||opt_class)){var query=tagName+(opt_class?"."+opt_class:"");return parent.querySelectorAll(query)}if(opt_class&&parent.getElementsByClassName){var els=parent.getElementsByClassName(opt_class);if(tagName){var arrayLike={};var len=0;for(var i=0,el;el=els[i];i++)if(tagName==el.nodeName)arrayLike[len++]= | |
el;arrayLike.length=len;return arrayLike}else return els}var els=parent.getElementsByTagName(tagName||"*");if(opt_class){var arrayLike={};var len=0;for(var i=0,el;el=els[i];i++){var className=el.className;if(typeof className.split=="function"&&goog.array.contains(className.split(/\s+/),opt_class))arrayLike[len++]=el}arrayLike.length=len;return arrayLike}else return els};goog.dom.$$=goog.dom.getElementsByTagNameAndClass; | |
goog.dom.setProperties=function(element,properties){goog.object.forEach(properties,function(val,key){if(key=="style")element.style.cssText=val;else if(key=="class")element.className=val;else if(key=="for")element.htmlFor=val;else if(key in goog.dom.DIRECT_ATTRIBUTE_MAP_)element.setAttribute(goog.dom.DIRECT_ATTRIBUTE_MAP_[key],val);else if(goog.string.startsWith(key,"aria-"))element.setAttribute(key,val);else element[key]=val})}; | |
goog.dom.DIRECT_ATTRIBUTE_MAP_={"cellpadding":"cellPadding","cellspacing":"cellSpacing","colspan":"colSpan","rowspan":"rowSpan","valign":"vAlign","height":"height","width":"width","usemap":"useMap","frameborder":"frameBorder","maxlength":"maxLength","type":"type"};goog.dom.getViewportSize=function(opt_window){return goog.dom.getViewportSize_(opt_window||window)}; | |
goog.dom.getViewportSize_=function(win){var doc=win.document;if(goog.userAgent.WEBKIT&&!goog.userAgent.isVersion("500")&&!goog.userAgent.MOBILE){if(typeof win.innerHeight=="undefined")win=window;var innerHeight=win.innerHeight;var scrollHeight=win.document.documentElement.scrollHeight;if(win==win.top)if(scrollHeight<innerHeight)innerHeight-=15;return new goog.math.Size(win.innerWidth,innerHeight)}var el=goog.dom.isCss1CompatMode_(doc)?doc.documentElement:doc.body;return new goog.math.Size(el.clientWidth, | |
el.clientHeight)};goog.dom.getDocumentHeight=function(){return goog.dom.getDocumentHeight_(window)}; | |
goog.dom.getDocumentHeight_=function(win){var doc=win.document;var height=0;if(doc){var vh=goog.dom.getViewportSize_(win).height;var body=doc.body;var docEl=doc.documentElement;if(goog.dom.isCss1CompatMode_(doc)&&docEl.scrollHeight)height=docEl.scrollHeight!=vh?docEl.scrollHeight:docEl.offsetHeight;else{var sh=docEl.scrollHeight;var oh=docEl.offsetHeight;if(docEl.clientHeight!=oh){sh=body.scrollHeight;oh=body.offsetHeight}if(sh>vh)height=sh>oh?sh:oh;else height=sh<oh?sh:oh}}return height}; | |
goog.dom.getPageScroll=function(opt_window){var win=opt_window||goog.global||window;return goog.dom.getDomHelper(win.document).getDocumentScroll()};goog.dom.getDocumentScroll=function(){return goog.dom.getDocumentScroll_(document)};goog.dom.getDocumentScroll_=function(doc){var el=goog.dom.getDocumentScrollElement_(doc);var win=goog.dom.getWindow_(doc);return new goog.math.Coordinate(win.pageXOffset||el.scrollLeft,win.pageYOffset||el.scrollTop)};goog.dom.getDocumentScrollElement=function(){return goog.dom.getDocumentScrollElement_(document)}; | |
goog.dom.getDocumentScrollElement_=function(doc){return!goog.userAgent.WEBKIT&&goog.dom.isCss1CompatMode_(doc)?doc.documentElement:doc.body};goog.dom.getWindow=function(opt_doc){return opt_doc?goog.dom.getWindow_(opt_doc):window};goog.dom.getWindow_=function(doc){return doc.parentWindow||doc.defaultView};goog.dom.createDom=function(tagName,opt_attributes,var_args){return goog.dom.createDom_(document,arguments)}; | |
goog.dom.createDom_=function(doc,args){var tagName=args[0];var attributes=args[1];if(!goog.dom.BrowserFeature.CAN_ADD_NAME_OR_TYPE_ATTRIBUTES&&attributes&&(attributes.name||attributes.type)){var tagNameArr=["<",tagName];if(attributes.name)tagNameArr.push(' name="',goog.string.htmlEscape(attributes.name),'"');if(attributes.type){tagNameArr.push(' type="',goog.string.htmlEscape(attributes.type),'"');var clone={};goog.object.extend(clone,attributes);attributes=clone;delete attributes.type}tagNameArr.push(">"); | |
tagName=tagNameArr.join("")}var element=doc.createElement(tagName);if(attributes)if(goog.isString(attributes))element.className=attributes;else if(goog.isArray(attributes))goog.dom.classes.add.apply(null,[element].concat(attributes));else goog.dom.setProperties(element,attributes);if(args.length>2)goog.dom.append_(doc,element,args,2);return element}; | |
goog.dom.append_=function(doc,parent,args,startIndex){function childHandler(child){if(child)parent.appendChild(goog.isString(child)?doc.createTextNode(child):child)}for(var i=startIndex;i<args.length;i++){var arg=args[i];if(goog.isArrayLike(arg)&&!goog.dom.isNodeLike(arg))goog.array.forEach(goog.dom.isNodeList(arg)?goog.array.clone(arg):arg,childHandler);else childHandler(arg)}};goog.dom.$dom=goog.dom.createDom;goog.dom.createElement=function(name){return document.createElement(name)}; | |
goog.dom.createTextNode=function(content){return document.createTextNode(content)};goog.dom.createTable=function(rows,columns,opt_fillWithNbsp){return goog.dom.createTable_(document,rows,columns,!!opt_fillWithNbsp)}; | |
goog.dom.createTable_=function(doc,rows,columns,fillWithNbsp){var rowHtml=["<tr>"];for(var i=0;i<columns;i++)rowHtml.push(fillWithNbsp?"<td> </td>":"<td></td>");rowHtml.push("</tr>");rowHtml=rowHtml.join("");var totalHtml=["<table>"];for(i=0;i<rows;i++)totalHtml.push(rowHtml);totalHtml.push("</table>");var elem=doc.createElement(goog.dom.TagName.DIV);elem.innerHTML=totalHtml.join("");return elem.removeChild(elem.firstChild)}; | |
goog.dom.htmlToDocumentFragment=function(htmlString){return goog.dom.htmlToDocumentFragment_(document,htmlString)}; | |
goog.dom.htmlToDocumentFragment_=function(doc,htmlString){var tempDiv=doc.createElement("div");if(goog.dom.BrowserFeature.INNER_HTML_NEEDS_SCOPED_ELEMENT){tempDiv.innerHTML="<br>"+htmlString;tempDiv.removeChild(tempDiv.firstChild)}else tempDiv.innerHTML=htmlString;if(tempDiv.childNodes.length==1)return tempDiv.removeChild(tempDiv.firstChild);else{var fragment=doc.createDocumentFragment();while(tempDiv.firstChild)fragment.appendChild(tempDiv.firstChild);return fragment}}; | |
goog.dom.getCompatMode=function(){return goog.dom.isCss1CompatMode()?"CSS1Compat":"BackCompat"};goog.dom.isCss1CompatMode=function(){return goog.dom.isCss1CompatMode_(document)};goog.dom.isCss1CompatMode_=function(doc){if(goog.dom.COMPAT_MODE_KNOWN_)return goog.dom.ASSUME_STANDARDS_MODE;return doc.compatMode=="CSS1Compat"};goog.dom.canHaveChildren=function(node){if(node.nodeType!=goog.dom.NodeType.ELEMENT)return false;switch(node.tagName){case goog.dom.TagName.APPLET:case goog.dom.TagName.AREA:case goog.dom.TagName.BASE:case goog.dom.TagName.BR:case goog.dom.TagName.COL:case goog.dom.TagName.FRAME:case goog.dom.TagName.HR:case goog.dom.TagName.IMG:case goog.dom.TagName.INPUT:case goog.dom.TagName.IFRAME:case goog.dom.TagName.ISINDEX:case goog.dom.TagName.LINK:case goog.dom.TagName.NOFRAMES:case goog.dom.TagName.NOSCRIPT:case goog.dom.TagName.META:case goog.dom.TagName.OBJECT:case goog.dom.TagName.PARAM:case goog.dom.TagName.SCRIPT:case goog.dom.TagName.STYLE:return false}return true}; | |
goog.dom.appendChild=function(parent,child){parent.appendChild(child)};goog.dom.append=function(parent,var_args){goog.dom.append_(goog.dom.getOwnerDocument(parent),parent,arguments,1)};goog.dom.removeChildren=function(node){var child;while(child=node.firstChild)node.removeChild(child)};goog.dom.insertSiblingBefore=function(newNode,refNode){if(refNode.parentNode)refNode.parentNode.insertBefore(newNode,refNode)}; | |
goog.dom.insertSiblingAfter=function(newNode,refNode){if(refNode.parentNode)refNode.parentNode.insertBefore(newNode,refNode.nextSibling)};goog.dom.insertChildAt=function(parent,child,index){parent.insertBefore(child,parent.childNodes[index]||null)};goog.dom.removeNode=function(node){return node&&node.parentNode?node.parentNode.removeChild(node):null};goog.dom.replaceNode=function(newNode,oldNode){var parent=oldNode.parentNode;if(parent)parent.replaceChild(newNode,oldNode)}; | |
goog.dom.flattenElement=function(element){var child,parent=element.parentNode;if(parent&&parent.nodeType!=goog.dom.NodeType.DOCUMENT_FRAGMENT)if(element.removeNode)return element.removeNode(false);else{while(child=element.firstChild)parent.insertBefore(child,element);return goog.dom.removeNode(element)}}; | |
goog.dom.getChildren=function(element){if(goog.dom.BrowserFeature.CAN_USE_CHILDREN_ATTRIBUTE&&element.children!=undefined)return element.children;return goog.array.filter(element.childNodes,function(node){return node.nodeType==goog.dom.NodeType.ELEMENT})};goog.dom.getFirstElementChild=function(node){if(node.firstElementChild!=undefined)return node.firstElementChild;return goog.dom.getNextElementNode_(node.firstChild,true)}; | |
goog.dom.getLastElementChild=function(node){if(node.lastElementChild!=undefined)return node.lastElementChild;return goog.dom.getNextElementNode_(node.lastChild,false)};goog.dom.getNextElementSibling=function(node){if(node.nextElementSibling!=undefined)return node.nextElementSibling;return goog.dom.getNextElementNode_(node.nextSibling,true)}; | |
goog.dom.getPreviousElementSibling=function(node){if(node.previousElementSibling!=undefined)return node.previousElementSibling;return goog.dom.getNextElementNode_(node.previousSibling,false)};goog.dom.getNextElementNode_=function(node,forward){while(node&&node.nodeType!=goog.dom.NodeType.ELEMENT)node=forward?node.nextSibling:node.previousSibling;return node}; | |
goog.dom.getNextNode=function(node){if(!node)return null;if(node.firstChild)return node.firstChild;while(node&&!node.nextSibling)node=node.parentNode;return node?node.nextSibling:null};goog.dom.getPreviousNode=function(node){if(!node)return null;if(!node.previousSibling)return node.parentNode;node=node.previousSibling;while(node&&node.lastChild)node=node.lastChild;return node};goog.dom.isNodeLike=function(obj){return goog.isObject(obj)&&obj.nodeType>0}; | |
goog.dom.isElement=function(obj){return goog.isObject(obj)&&obj.nodeType==goog.dom.NodeType.ELEMENT};goog.dom.isWindow=function(obj){return goog.isObject(obj)&&obj["window"]==obj}; | |
goog.dom.contains=function(parent,descendant){if(parent.contains&&descendant.nodeType==goog.dom.NodeType.ELEMENT)return parent==descendant||parent.contains(descendant);if(typeof parent.compareDocumentPosition!="undefined")return parent==descendant||Boolean(parent.compareDocumentPosition(descendant)&16);while(descendant&&parent!=descendant)descendant=descendant.parentNode;return descendant==parent}; | |
goog.dom.compareNodeOrder=function(node1,node2){if(node1==node2)return 0;if(node1.compareDocumentPosition)return node1.compareDocumentPosition(node2)&2?1:-1;if("sourceIndex"in node1||node1.parentNode&&"sourceIndex"in node1.parentNode){var isElement1=node1.nodeType==goog.dom.NodeType.ELEMENT;var isElement2=node2.nodeType==goog.dom.NodeType.ELEMENT;if(isElement1&&isElement2)return node1.sourceIndex-node2.sourceIndex;else{var parent1=node1.parentNode;var parent2=node2.parentNode;if(parent1==parent2)return goog.dom.compareSiblingOrder_(node1, | |
node2);if(!isElement1&&goog.dom.contains(parent1,node2))return-1*goog.dom.compareParentsDescendantNodeIe_(node1,node2);if(!isElement2&&goog.dom.contains(parent2,node1))return goog.dom.compareParentsDescendantNodeIe_(node2,node1);return(isElement1?node1.sourceIndex:parent1.sourceIndex)-(isElement2?node2.sourceIndex:parent2.sourceIndex)}}var doc=goog.dom.getOwnerDocument(node1);var range1,range2;range1=doc.createRange();range1.selectNode(node1);range1.collapse(true);range2=doc.createRange();range2.selectNode(node2); | |
range2.collapse(true);return range1.compareBoundaryPoints(goog.global["Range"].START_TO_END,range2)};goog.dom.compareParentsDescendantNodeIe_=function(textNode,node){var parent=textNode.parentNode;if(parent==node)return-1;var sibling=node;while(sibling.parentNode!=parent)sibling=sibling.parentNode;return goog.dom.compareSiblingOrder_(sibling,textNode)};goog.dom.compareSiblingOrder_=function(node1,node2){var s=node2;while(s=s.previousSibling)if(s==node1)return-1;return 1}; | |
goog.dom.findCommonAncestor=function(var_args){var i,count=arguments.length;if(!count)return null;else if(count==1)return arguments[0];var paths=[];var minLength=Infinity;for(i=0;i<count;i++){var ancestors=[];var node=arguments[i];while(node){ancestors.unshift(node);node=node.parentNode}paths.push(ancestors);minLength=Math.min(minLength,ancestors.length)}var output=null;for(i=0;i<minLength;i++){var first=paths[0][i];for(var j=1;j<count;j++)if(first!=paths[j][i])return output;output=first}return output}; | |
goog.dom.getOwnerDocument=function(node){return node.nodeType==goog.dom.NodeType.DOCUMENT?node:node.ownerDocument||node.document};goog.dom.getFrameContentDocument=function(frame){var doc=frame.contentDocument||frame.contentWindow.document;return doc};goog.dom.getFrameContentWindow=function(frame){return frame.contentWindow||goog.dom.getWindow_(goog.dom.getFrameContentDocument(frame))}; | |
goog.dom.setTextContent=function(element,text){if("textContent"in element)element.textContent=text;else if(element.firstChild&&element.firstChild.nodeType==goog.dom.NodeType.TEXT){while(element.lastChild!=element.firstChild)element.removeChild(element.lastChild);element.firstChild.data=text}else{goog.dom.removeChildren(element);var doc=goog.dom.getOwnerDocument(element);element.appendChild(doc.createTextNode(text))}}; | |
goog.dom.getOuterHtml=function(element){if("outerHTML"in element)return element.outerHTML;else{var doc=goog.dom.getOwnerDocument(element);var div=doc.createElement("div");div.appendChild(element.cloneNode(true));return div.innerHTML}};goog.dom.findNode=function(root,p){var rv=[];var found=goog.dom.findNodes_(root,p,rv,true);return found?rv[0]:undefined};goog.dom.findNodes=function(root,p){var rv=[];goog.dom.findNodes_(root,p,rv,false);return rv}; | |
goog.dom.findNodes_=function(root,p,rv,findOne){if(root!=null){var child=root.firstChild;while(child){if(p(child)){rv.push(child);if(findOne)return true}if(goog.dom.findNodes_(child,p,rv,findOne))return true;child=child.nextSibling}}return false};goog.dom.TAGS_TO_IGNORE_={"SCRIPT":1,"STYLE":1,"HEAD":1,"IFRAME":1,"OBJECT":1};goog.dom.PREDEFINED_TAG_VALUES_={"IMG":" ","BR":"\n"}; | |
goog.dom.isFocusableTabIndex=function(element){var attrNode=element.getAttributeNode("tabindex");if(attrNode&&attrNode.specified){var index=element.tabIndex;return goog.isNumber(index)&&index>=0&&index<32768}return false};goog.dom.setFocusableTabIndex=function(element,enable){if(enable)element.tabIndex=0;else{element.tabIndex=-1;element.removeAttribute("tabIndex")}}; | |
goog.dom.getTextContent=function(node){var textContent;if(goog.dom.BrowserFeature.CAN_USE_INNER_TEXT&&"innerText"in node)textContent=goog.string.canonicalizeNewlines(node.innerText);else{var buf=[];goog.dom.getTextContent_(node,buf,true);textContent=buf.join("")}textContent=textContent.replace(/ \xAD /g," ").replace(/\xAD/g,"");textContent=textContent.replace(/\u200B/g,"");if(!goog.dom.BrowserFeature.CAN_USE_INNER_TEXT)textContent=textContent.replace(/ +/g," ");if(textContent!=" ")textContent=textContent.replace(/^\s*/, | |
"");return textContent};goog.dom.getRawTextContent=function(node){var buf=[];goog.dom.getTextContent_(node,buf,false);return buf.join("")}; | |
goog.dom.getTextContent_=function(node,buf,normalizeWhitespace){if(node.nodeName in goog.dom.TAGS_TO_IGNORE_);else if(node.nodeType==goog.dom.NodeType.TEXT)if(normalizeWhitespace)buf.push(String(node.nodeValue).replace(/(\r\n|\r|\n)/g,""));else buf.push(node.nodeValue);else if(node.nodeName in goog.dom.PREDEFINED_TAG_VALUES_)buf.push(goog.dom.PREDEFINED_TAG_VALUES_[node.nodeName]);else{var child=node.firstChild;while(child){goog.dom.getTextContent_(child,buf,normalizeWhitespace);child=child.nextSibling}}}; | |
goog.dom.getNodeTextLength=function(node){return goog.dom.getTextContent(node).length};goog.dom.getNodeTextOffset=function(node,opt_offsetParent){var root=opt_offsetParent||goog.dom.getOwnerDocument(node).body;var buf=[];while(node&&node!=root){var cur=node;while(cur=cur.previousSibling)buf.unshift(goog.dom.getTextContent(cur));node=node.parentNode}return goog.string.trimLeft(buf.join("")).replace(/ +/g," ").length}; | |
goog.dom.getNodeAtOffset=function(parent,offset,opt_result){var stack=[parent],pos=0,cur;while(stack.length>0&&pos<offset){cur=stack.pop();if(cur.nodeName in goog.dom.TAGS_TO_IGNORE_);else if(cur.nodeType==goog.dom.NodeType.TEXT){var text=cur.nodeValue.replace(/(\r\n|\r|\n)/g,"").replace(/ +/g," ");pos+=text.length}else if(cur.nodeName in goog.dom.PREDEFINED_TAG_VALUES_)pos+=goog.dom.PREDEFINED_TAG_VALUES_[cur.nodeName].length;else for(var i=cur.childNodes.length-1;i>=0;i--)stack.push(cur.childNodes[i])}if(goog.isObject(opt_result)){opt_result.remainder= | |
cur?cur.nodeValue.length+offset-pos-1:0;opt_result.node=cur}return cur};goog.dom.isNodeList=function(val){if(val&&typeof val.length=="number")if(goog.isObject(val))return typeof val.item=="function"||typeof val.item=="string";else if(goog.isFunction(val))return typeof val.item=="function";return false}; | |
goog.dom.getAncestorByTagNameAndClass=function(element,opt_tag,opt_class){var tagName=opt_tag?opt_tag.toUpperCase():null;return goog.dom.getAncestor(element,function(node){return(!tagName||node.nodeName==tagName)&&(!opt_class||goog.dom.classes.has(node,opt_class))},true)};goog.dom.getAncestorByClass=function(element,opt_class){return goog.dom.getAncestorByTagNameAndClass(element,null,opt_class)}; | |
goog.dom.getAncestor=function(element,matcher,opt_includeNode,opt_maxSearchSteps){if(!opt_includeNode)element=element.parentNode;var ignoreSearchSteps=opt_maxSearchSteps==null;var steps=0;while(element&&(ignoreSearchSteps||steps<=opt_maxSearchSteps)){if(matcher(element))return element;element=element.parentNode;steps++}return null};goog.dom.getActiveElement=function(doc){try{return doc&&doc.activeElement}catch(e){}return null}; | |
goog.dom.DomHelper=function(opt_document){this.document_=opt_document||goog.global.document||document};goog.dom.DomHelper.prototype.getDomHelper=goog.dom.getDomHelper;goog.dom.DomHelper.prototype.setDocument=function(document){this.document_=document};goog.dom.DomHelper.prototype.getDocument=function(){return this.document_};goog.dom.DomHelper.prototype.getElement=function(element){if(goog.isString(element))return this.document_.getElementById(element);else return element}; | |
goog.dom.DomHelper.prototype.$=goog.dom.DomHelper.prototype.getElement;goog.dom.DomHelper.prototype.getElementsByTagNameAndClass=function(opt_tag,opt_class,opt_el){return goog.dom.getElementsByTagNameAndClass_(this.document_,opt_tag,opt_class,opt_el)};goog.dom.DomHelper.prototype.getElementsByClass=function(className,opt_el){var doc=opt_el||this.document_;return goog.dom.getElementsByClass(className,doc)}; | |
goog.dom.DomHelper.prototype.getElementByClass=function(className,opt_el){var doc=opt_el||this.document_;return goog.dom.getElementByClass(className,doc)};goog.dom.DomHelper.prototype.$$=goog.dom.DomHelper.prototype.getElementsByTagNameAndClass;goog.dom.DomHelper.prototype.setProperties=goog.dom.setProperties;goog.dom.DomHelper.prototype.getViewportSize=function(opt_window){return goog.dom.getViewportSize(opt_window||this.getWindow())};goog.dom.DomHelper.prototype.getDocumentHeight=function(){return goog.dom.getDocumentHeight_(this.getWindow())}; | |
goog.dom.Appendable;goog.dom.DomHelper.prototype.createDom=function(tagName,opt_attributes,var_args){return goog.dom.createDom_(this.document_,arguments)};goog.dom.DomHelper.prototype.$dom=goog.dom.DomHelper.prototype.createDom;goog.dom.DomHelper.prototype.createElement=function(name){return this.document_.createElement(name)};goog.dom.DomHelper.prototype.createTextNode=function(content){return this.document_.createTextNode(content)}; | |
goog.dom.DomHelper.prototype.createTable=function(rows,columns,opt_fillWithNbsp){return goog.dom.createTable_(this.document_,rows,columns,!!opt_fillWithNbsp)};goog.dom.DomHelper.prototype.htmlToDocumentFragment=function(htmlString){return goog.dom.htmlToDocumentFragment_(this.document_,htmlString)};goog.dom.DomHelper.prototype.getCompatMode=function(){return this.isCss1CompatMode()?"CSS1Compat":"BackCompat"};goog.dom.DomHelper.prototype.isCss1CompatMode=function(){return goog.dom.isCss1CompatMode_(this.document_)}; | |
goog.dom.DomHelper.prototype.getWindow=function(){return goog.dom.getWindow_(this.document_)};goog.dom.DomHelper.prototype.getDocumentScrollElement=function(){return goog.dom.getDocumentScrollElement_(this.document_)};goog.dom.DomHelper.prototype.getDocumentScroll=function(){return goog.dom.getDocumentScroll_(this.document_)};goog.dom.DomHelper.prototype.appendChild=goog.dom.appendChild;goog.dom.DomHelper.prototype.append=goog.dom.append;goog.dom.DomHelper.prototype.removeChildren=goog.dom.removeChildren; | |
goog.dom.DomHelper.prototype.insertSiblingBefore=goog.dom.insertSiblingBefore;goog.dom.DomHelper.prototype.insertSiblingAfter=goog.dom.insertSiblingAfter;goog.dom.DomHelper.prototype.removeNode=goog.dom.removeNode;goog.dom.DomHelper.prototype.replaceNode=goog.dom.replaceNode;goog.dom.DomHelper.prototype.flattenElement=goog.dom.flattenElement;goog.dom.DomHelper.prototype.getFirstElementChild=goog.dom.getFirstElementChild;goog.dom.DomHelper.prototype.getLastElementChild=goog.dom.getLastElementChild; | |
goog.dom.DomHelper.prototype.getNextElementSibling=goog.dom.getNextElementSibling;goog.dom.DomHelper.prototype.getPreviousElementSibling=goog.dom.getPreviousElementSibling;goog.dom.DomHelper.prototype.getNextNode=goog.dom.getNextNode;goog.dom.DomHelper.prototype.getPreviousNode=goog.dom.getPreviousNode;goog.dom.DomHelper.prototype.isNodeLike=goog.dom.isNodeLike;goog.dom.DomHelper.prototype.contains=goog.dom.contains;goog.dom.DomHelper.prototype.getOwnerDocument=goog.dom.getOwnerDocument; | |
goog.dom.DomHelper.prototype.getFrameContentDocument=goog.dom.getFrameContentDocument;goog.dom.DomHelper.prototype.getFrameContentWindow=goog.dom.getFrameContentWindow;goog.dom.DomHelper.prototype.setTextContent=goog.dom.setTextContent;goog.dom.DomHelper.prototype.findNode=goog.dom.findNode;goog.dom.DomHelper.prototype.findNodes=goog.dom.findNodes;goog.dom.DomHelper.prototype.getTextContent=goog.dom.getTextContent;goog.dom.DomHelper.prototype.getNodeTextLength=goog.dom.getNodeTextLength; | |
goog.dom.DomHelper.prototype.getNodeTextOffset=goog.dom.getNodeTextOffset;goog.dom.DomHelper.prototype.getAncestorByTagNameAndClass=goog.dom.getAncestorByTagNameAndClass;goog.dom.DomHelper.prototype.getAncestorByClass=goog.dom.getAncestorByClass;goog.dom.DomHelper.prototype.getAncestor=goog.dom.getAncestor;goog.provide("bot.locators.xpath");goog.require("bot");goog.require("bot.Error");goog.require("bot.ErrorCode");goog.require("goog.array");goog.require("goog.dom");goog.require("goog.dom.NodeType");goog.require("goog.userAgent");bot.locators.XPathResult_={ORDERED_NODE_SNAPSHOT_TYPE:7,FIRST_ORDERED_NODE_TYPE:9};bot.locators.xpath.DEFAULT_RESOLVER_=function(){var namespaces={svg:"http://www.w3.org/2000/svg"};return function(prefix){return namespaces[prefix]||null}}(); | |
bot.locators.xpath.evaluate_=function(node,path,resultType){var doc=goog.dom.getOwnerDocument(node);if(!doc.implementation.hasFeature("XPath","3.0"))return null;try{var resolver=doc.createNSResolver?doc.createNSResolver(doc.documentElement):bot.locators.xpath.DEFAULT_RESOLVER_;return doc.evaluate(path,node,resolver,resultType,null)}catch(ex){if(!(goog.userAgent.GECKO&&ex.name=="NS_ERROR_ILLEGAL_VALUE"))throw new bot.Error(bot.ErrorCode.INVALID_SELECTOR_ERROR,"Unable to locate an element with the xpath expression "+ | |
path+" because of the following error:\n"+ex);}};bot.locators.xpath.checkElement_=function(node,path){if(!node||node.nodeType!=goog.dom.NodeType.ELEMENT)throw new bot.Error(bot.ErrorCode.INVALID_SELECTOR_ERROR,'The result of the xpath expression "'+path+'" is: '+node+". It should be an element.");}; | |
bot.locators.xpath.single=function(target,root){function selectSingleNode(){var result=bot.locators.xpath.evaluate_(root,target,bot.locators.XPathResult_.FIRST_ORDERED_NODE_TYPE);if(result){var node=result.singleNodeValue;return goog.userAgent.OPERA?node:node||null}else if(root.selectSingleNode){var doc=goog.dom.getOwnerDocument(root);if(doc.setProperty)doc.setProperty("SelectionLanguage","XPath");return root.selectSingleNode(target)}return null}var node=selectSingleNode();if(!goog.isNull(node))bot.locators.xpath.checkElement_(node, | |
target);return node}; | |
bot.locators.xpath.many=function(target,root){function selectNodes(){var result=bot.locators.xpath.evaluate_(root,target,bot.locators.XPathResult_.ORDERED_NODE_SNAPSHOT_TYPE);if(result){var count=result.snapshotLength;if(goog.userAgent.OPERA&&!goog.isDef(count))bot.locators.xpath.checkElement_(null,target);var results=[];for(var i=0;i<count;++i)results.push(result.snapshotItem(i));return results}else if(root.selectNodes){var doc=goog.dom.getOwnerDocument(root);if(doc.setProperty)doc.setProperty("SelectionLanguage","XPath"); | |
return root.selectNodes(target)}return[]}var nodes=selectNodes();goog.array.forEach(nodes,function(n){bot.locators.xpath.checkElement_(n,target)});return nodes};goog.provide("goog.userAgent.product");goog.require("goog.userAgent");goog.userAgent.product.ASSUME_FIREFOX=false;goog.userAgent.product.ASSUME_CAMINO=false;goog.userAgent.product.ASSUME_IPHONE=false;goog.userAgent.product.ASSUME_IPAD=false;goog.userAgent.product.ASSUME_ANDROID=false;goog.userAgent.product.ASSUME_CHROME=false;goog.userAgent.product.ASSUME_SAFARI=false; | |
goog.userAgent.product.PRODUCT_KNOWN_=goog.userAgent.ASSUME_IE||goog.userAgent.ASSUME_OPERA||goog.userAgent.product.ASSUME_FIREFOX||goog.userAgent.product.ASSUME_CAMINO||goog.userAgent.product.ASSUME_IPHONE||goog.userAgent.product.ASSUME_IPAD||goog.userAgent.product.ASSUME_ANDROID||goog.userAgent.product.ASSUME_CHROME||goog.userAgent.product.ASSUME_SAFARI; | |
goog.userAgent.product.init_=function(){goog.userAgent.product.detectedFirefox_=false;goog.userAgent.product.detectedCamino_=false;goog.userAgent.product.detectedIphone_=false;goog.userAgent.product.detectedIpad_=false;goog.userAgent.product.detectedAndroid_=false;goog.userAgent.product.detectedChrome_=false;goog.userAgent.product.detectedSafari_=false;var ua=goog.userAgent.getUserAgentString();if(!ua)return;if(ua.indexOf("Firefox")!=-1)goog.userAgent.product.detectedFirefox_=true;else if(ua.indexOf("Camino")!= | |
-1)goog.userAgent.product.detectedCamino_=true;else if(ua.indexOf("iPhone")!=-1||ua.indexOf("iPod")!=-1)goog.userAgent.product.detectedIphone_=true;else if(ua.indexOf("iPad")!=-1)goog.userAgent.product.detectedIpad_=true;else if(ua.indexOf("Android")!=-1)goog.userAgent.product.detectedAndroid_=true;else if(ua.indexOf("Chrome")!=-1)goog.userAgent.product.detectedChrome_=true;else if(ua.indexOf("Safari")!=-1)goog.userAgent.product.detectedSafari_=true};if(!goog.userAgent.product.PRODUCT_KNOWN_)goog.userAgent.product.init_(); | |
goog.userAgent.product.OPERA=goog.userAgent.OPERA;goog.userAgent.product.IE=goog.userAgent.IE;goog.userAgent.product.FIREFOX=goog.userAgent.product.PRODUCT_KNOWN_?goog.userAgent.product.ASSUME_FIREFOX:goog.userAgent.product.detectedFirefox_;goog.userAgent.product.CAMINO=goog.userAgent.product.PRODUCT_KNOWN_?goog.userAgent.product.ASSUME_CAMINO:goog.userAgent.product.detectedCamino_;goog.userAgent.product.IPHONE=goog.userAgent.product.PRODUCT_KNOWN_?goog.userAgent.product.ASSUME_IPHONE:goog.userAgent.product.detectedIphone_; | |
goog.userAgent.product.IPAD=goog.userAgent.product.PRODUCT_KNOWN_?goog.userAgent.product.ASSUME_IPAD:goog.userAgent.product.detectedIpad_;goog.userAgent.product.ANDROID=goog.userAgent.product.PRODUCT_KNOWN_?goog.userAgent.product.ASSUME_ANDROID:goog.userAgent.product.detectedAndroid_;goog.userAgent.product.CHROME=goog.userAgent.product.PRODUCT_KNOWN_?goog.userAgent.product.ASSUME_CHROME:goog.userAgent.product.detectedChrome_; | |
goog.userAgent.product.SAFARI=goog.userAgent.product.PRODUCT_KNOWN_?goog.userAgent.product.ASSUME_SAFARI:goog.userAgent.product.detectedSafari_;goog.provide("goog.userAgent.product.isVersion");goog.require("goog.userAgent.product"); | |
goog.userAgent.product.determineVersion_=function(){var version="",re,combine;if(goog.userAgent.product.FIREFOX)re=/Firefox\/([0-9.]+)/;else if(goog.userAgent.product.IE||goog.userAgent.product.OPERA)return goog.userAgent.VERSION;else if(goog.userAgent.product.CHROME)re=/Chrome\/([0-9.]+)/;else if(goog.userAgent.product.SAFARI)re=/Version\/([0-9.]+)/;else if(goog.userAgent.product.IPHONE||goog.userAgent.product.IPAD){re=/Version\/(\S+).*Mobile\/(\S+)/;combine=true}else if(goog.userAgent.product.ANDROID)re= | |
/Android\s+([0-9.]+)(?:.*Version\/([0-9.]+))?/;else if(goog.userAgent.product.CAMINO)re=/Camino\/([0-9.]+)/;if(re){var arr=re.exec(goog.userAgent.getUserAgentString());if(arr)version=combine?arr[1]+"."+arr[2]:arr[2]||arr[1];else version=""}return version};goog.userAgent.product.VERSION=goog.userAgent.product.determineVersion_();goog.userAgent.product.isVersion=function(version){return goog.string.compareVersions(goog.userAgent.product.VERSION,version)>=0};goog.provide("bot.userAgent");goog.require("goog.string");goog.require("goog.userAgent");goog.require("goog.userAgent.product");goog.require("goog.userAgent.product.isVersion");bot.userAgent.isEngineVersion=function(version){if(bot.userAgent.FIREFOX_EXTENSION)return bot.userAgent.FIREFOX_EXTENSION_IS_ENGINE_VERSION_(version);else if(goog.userAgent.IE)return goog.string.compareVersions(document.documentMode,version)>=0;else return goog.userAgent.isVersion(version)}; | |
bot.userAgent.isProductVersion=function(version){if(bot.userAgent.FIREFOX_EXTENSION)return bot.userAgent.FIREFOX_EXTENSION_IS_PRODUCT_VERSION_(version);else if(goog.userAgent.product.ANDROID)return goog.string.compareVersions(bot.userAgent.ANDROID_VERSION_,version)>=0;else return goog.userAgent.product.isVersion(version)};bot.userAgent.FIREFOX_EXTENSION_IS_ENGINE_VERSION_;bot.userAgent.FIREFOX_EXTENSION_IS_PRODUCT_VERSION_; | |
bot.userAgent.FIREFOX_EXTENSION=function(){if(!goog.userAgent.GECKO)return false;var Components=goog.global.Components;if(!Components)return false;try{if(!Components["classes"])return false}catch(e){return false}var cc=Components["classes"];var ci=Components["interfaces"];var versionComparator=cc["@mozilla.org/xpcom/version-comparator;1"]["getService"](ci["nsIVersionComparator"]);var appInfo=cc["@mozilla.org/xre/app-info;1"]["getService"](ci["nsIXULAppInfo"]);var geckoVersion=appInfo["platformVersion"]; | |
var firefoxVersion=appInfo["version"];bot.userAgent.FIREFOX_EXTENSION_IS_ENGINE_VERSION_=function(version){return versionComparator.compare(geckoVersion,""+version)>=0};bot.userAgent.FIREFOX_EXTENSION_IS_PRODUCT_VERSION_=function(version){return versionComparator.compare(firefoxVersion,""+version)>=0};return true}();bot.userAgent.IOS=goog.userAgent.product.IPAD||goog.userAgent.product.IPHONE;bot.userAgent.MOBILE=bot.userAgent.IOS||goog.userAgent.product.ANDROID; | |
bot.userAgent.ANDROID_VERSION_=function(){if(goog.userAgent.product.ANDROID){var userAgentString=goog.userAgent.getUserAgentString();var match=/Android\s+([0-9\.]+)/.exec(userAgentString);return match?match[1]:"0"}else return"0"}();bot.userAgent.IE_DOC_9=goog.userAgent.IE&&document.documentMode>=9;bot.userAgent.IE_DOC_PRE9=goog.userAgent.IE&&!bot.userAgent.IE_DOC_9;goog.provide("goog.iter");goog.provide("goog.iter.Iterator");goog.provide("goog.iter.StopIteration");goog.require("goog.array");goog.require("goog.asserts");goog.iter.Iterable;if("StopIteration"in goog.global)goog.iter.StopIteration=goog.global["StopIteration"];else goog.iter.StopIteration=Error("StopIteration");goog.iter.Iterator=function(){};goog.iter.Iterator.prototype.next=function(){throw goog.iter.StopIteration;};goog.iter.Iterator.prototype.__iterator__=function(opt_keys){return this}; | |
goog.iter.toIterator=function(iterable){if(iterable instanceof goog.iter.Iterator)return iterable;if(typeof iterable.__iterator__=="function")return iterable.__iterator__(false);if(goog.isArrayLike(iterable)){var i=0;var newIter=new goog.iter.Iterator;newIter.next=function(){while(true){if(i>=iterable.length)throw goog.iter.StopIteration;if(!(i in iterable)){i++;continue}return iterable[i++]}};return newIter}throw Error("Not implemented");}; | |
goog.iter.forEach=function(iterable,f,opt_obj){if(goog.isArrayLike(iterable))try{goog.array.forEach(iterable,f,opt_obj)}catch(ex){if(ex!==goog.iter.StopIteration)throw ex;}else{iterable=goog.iter.toIterator(iterable);try{while(true)f.call(opt_obj,iterable.next(),undefined,iterable)}catch(ex){if(ex!==goog.iter.StopIteration)throw ex;}}}; | |
goog.iter.filter=function(iterable,f,opt_obj){iterable=goog.iter.toIterator(iterable);var newIter=new goog.iter.Iterator;newIter.next=function(){while(true){var val=iterable.next();if(f.call(opt_obj,val,undefined,iterable))return val}};return newIter}; | |
goog.iter.range=function(startOrStop,opt_stop,opt_step){var start=0;var stop=startOrStop;var step=opt_step||1;if(arguments.length>1){start=startOrStop;stop=opt_stop}if(step==0)throw Error("Range step argument must not be zero");var newIter=new goog.iter.Iterator;newIter.next=function(){if(step>0&&start>=stop||step<0&&start<=stop)throw goog.iter.StopIteration;var rv=start;start+=step;return rv};return newIter};goog.iter.join=function(iterable,deliminator){return goog.iter.toArray(iterable).join(deliminator)}; | |
goog.iter.map=function(iterable,f,opt_obj){iterable=goog.iter.toIterator(iterable);var newIter=new goog.iter.Iterator;newIter.next=function(){while(true){var val=iterable.next();return f.call(opt_obj,val,undefined,iterable)}};return newIter};goog.iter.reduce=function(iterable,f,val,opt_obj){var rval=val;goog.iter.forEach(iterable,function(val){rval=f.call(opt_obj,rval,val)});return rval}; | |
goog.iter.some=function(iterable,f,opt_obj){iterable=goog.iter.toIterator(iterable);try{while(true)if(f.call(opt_obj,iterable.next(),undefined,iterable))return true}catch(ex){if(ex!==goog.iter.StopIteration)throw ex;}return false};goog.iter.every=function(iterable,f,opt_obj){iterable=goog.iter.toIterator(iterable);try{while(true)if(!f.call(opt_obj,iterable.next(),undefined,iterable))return false}catch(ex){if(ex!==goog.iter.StopIteration)throw ex;}return true}; | |
goog.iter.chain=function(var_args){var args=arguments;var length=args.length;var i=0;var newIter=new goog.iter.Iterator;newIter.next=function(){try{if(i>=length)throw goog.iter.StopIteration;var current=goog.iter.toIterator(args[i]);return current.next()}catch(ex){if(ex!==goog.iter.StopIteration||i>=length)throw ex;else{i++;return this.next()}}};return newIter}; | |
goog.iter.dropWhile=function(iterable,f,opt_obj){iterable=goog.iter.toIterator(iterable);var newIter=new goog.iter.Iterator;var dropping=true;newIter.next=function(){while(true){var val=iterable.next();if(dropping&&f.call(opt_obj,val,undefined,iterable))continue;else dropping=false;return val}};return newIter}; | |
goog.iter.takeWhile=function(iterable,f,opt_obj){iterable=goog.iter.toIterator(iterable);var newIter=new goog.iter.Iterator;var taking=true;newIter.next=function(){while(true)if(taking){var val=iterable.next();if(f.call(opt_obj,val,undefined,iterable))return val;else taking=false}else throw goog.iter.StopIteration;};return newIter}; | |
goog.iter.toArray=function(iterable){if(goog.isArrayLike(iterable))return goog.array.toArray(iterable);iterable=goog.iter.toIterator(iterable);var array=[];goog.iter.forEach(iterable,function(val){array.push(val)});return array}; | |
goog.iter.equals=function(iterable1,iterable2){iterable1=goog.iter.toIterator(iterable1);iterable2=goog.iter.toIterator(iterable2);var b1,b2;try{while(true){b1=b2=false;var val1=iterable1.next();b1=true;var val2=iterable2.next();b2=true;if(val1!=val2)return false}}catch(ex){if(ex!==goog.iter.StopIteration)throw ex;else{if(b1&&!b2)return false;if(!b2)try{val2=iterable2.next();return false}catch(ex1){if(ex1!==goog.iter.StopIteration)throw ex1;return true}}}return false}; | |
goog.iter.nextOrValue=function(iterable,defaultValue){try{return goog.iter.toIterator(iterable).next()}catch(e){if(e!=goog.iter.StopIteration)throw e;return defaultValue}}; | |
goog.iter.product=function(var_args){var someArrayEmpty=goog.array.some(arguments,function(arr){return!arr.length});if(someArrayEmpty||!arguments.length)return new goog.iter.Iterator;var iter=new goog.iter.Iterator;var arrays=arguments;var indicies=goog.array.repeat(0,arrays.length);iter.next=function(){if(indicies){var retVal=goog.array.map(indicies,function(valueIndex,arrayIndex){return arrays[arrayIndex][valueIndex]});for(var i=indicies.length-1;i>=0;i--){goog.asserts.assert(indicies);if(indicies[i]< | |
arrays[i].length-1){indicies[i]++;break}if(i==0){indicies=null;break}indicies[i]=0}return retVal}throw goog.iter.StopIteration;};return iter}; | |
goog.iter.cycle=function(iterable){var baseIterator=goog.iter.toIterator(iterable);var cache=[];var cacheIndex=0;var iter=new goog.iter.Iterator;var useCache=false;iter.next=function(){var returnElement=null;if(!useCache)try{returnElement=baseIterator.next();cache.push(returnElement);return returnElement}catch(e){if(e!=goog.iter.StopIteration||goog.array.isEmpty(cache))throw e;useCache=true}returnElement=cache[cacheIndex];cacheIndex=(cacheIndex+1)%cache.length;return returnElement};return iter};goog.provide("goog.dom.TagIterator");goog.provide("goog.dom.TagWalkType");goog.require("goog.dom.NodeType");goog.require("goog.iter.Iterator");goog.require("goog.iter.StopIteration");goog.dom.TagWalkType={START_TAG:1,OTHER:0,END_TAG:-1}; | |
goog.dom.TagIterator=function(opt_node,opt_reversed,opt_unconstrained,opt_tagType,opt_depth){this.reversed=!!opt_reversed;if(opt_node)this.setPosition(opt_node,opt_tagType);this.depth=opt_depth!=undefined?opt_depth:this.tagType||0;if(this.reversed)this.depth*=-1;this.constrained=!opt_unconstrained};goog.inherits(goog.dom.TagIterator,goog.iter.Iterator);goog.dom.TagIterator.prototype.node=null;goog.dom.TagIterator.prototype.tagType=goog.dom.TagWalkType.OTHER;goog.dom.TagIterator.prototype.depth;goog.dom.TagIterator.prototype.reversed; | |
goog.dom.TagIterator.prototype.constrained;goog.dom.TagIterator.prototype.started_=false;goog.dom.TagIterator.prototype.setPosition=function(node,opt_tagType,opt_depth){this.node=node;if(node)if(goog.isNumber(opt_tagType))this.tagType=opt_tagType;else this.tagType=this.node.nodeType!=goog.dom.NodeType.ELEMENT?goog.dom.TagWalkType.OTHER:this.reversed?goog.dom.TagWalkType.END_TAG:goog.dom.TagWalkType.START_TAG;if(goog.isNumber(opt_depth))this.depth=opt_depth}; | |
goog.dom.TagIterator.prototype.copyFrom=function(other){this.node=other.node;this.tagType=other.tagType;this.depth=other.depth;this.reversed=other.reversed;this.constrained=other.constrained};goog.dom.TagIterator.prototype.clone=function(){return new goog.dom.TagIterator(this.node,this.reversed,!this.constrained,this.tagType,this.depth)}; | |
goog.dom.TagIterator.prototype.skipTag=function(){var check=this.reversed?goog.dom.TagWalkType.END_TAG:goog.dom.TagWalkType.START_TAG;if(this.tagType==check){this.tagType=check*-1;this.depth+=this.tagType*(this.reversed?-1:1)}};goog.dom.TagIterator.prototype.restartTag=function(){var check=this.reversed?goog.dom.TagWalkType.START_TAG:goog.dom.TagWalkType.END_TAG;if(this.tagType==check){this.tagType=check*-1;this.depth+=this.tagType*(this.reversed?-1:1)}}; | |
goog.dom.TagIterator.prototype.next=function(){var node;if(this.started_){if(!this.node||this.constrained&&this.depth==0)throw goog.iter.StopIteration;node=this.node;var startType=this.reversed?goog.dom.TagWalkType.END_TAG:goog.dom.TagWalkType.START_TAG;if(this.tagType==startType){var child=this.reversed?node.lastChild:node.firstChild;if(child)this.setPosition(child);else this.setPosition(node,startType*-1)}else{var sibling=this.reversed?node.previousSibling:node.nextSibling;if(sibling)this.setPosition(sibling); | |
else this.setPosition(node.parentNode,startType*-1)}this.depth+=this.tagType*(this.reversed?-1:1)}else this.started_=true;node=this.node;if(!this.node)throw goog.iter.StopIteration;return node};goog.dom.TagIterator.prototype.isStarted=function(){return this.started_};goog.dom.TagIterator.prototype.isStartTag=function(){return this.tagType==goog.dom.TagWalkType.START_TAG};goog.dom.TagIterator.prototype.isEndTag=function(){return this.tagType==goog.dom.TagWalkType.END_TAG}; | |
goog.dom.TagIterator.prototype.isNonElement=function(){return this.tagType==goog.dom.TagWalkType.OTHER};goog.dom.TagIterator.prototype.equals=function(other){return other.node==this.node&&(!this.node||other.tagType==this.tagType)}; | |
goog.dom.TagIterator.prototype.splice=function(var_args){var node=this.node;this.restartTag();this.reversed=!this.reversed;goog.dom.TagIterator.prototype.next.call(this);this.reversed=!this.reversed;var arr=goog.isArrayLike(arguments[0])?arguments[0]:arguments;for(var i=arr.length-1;i>=0;i--)goog.dom.insertSiblingAfter(arr[i],node);goog.dom.removeNode(node)};goog.provide("goog.dom.NodeIterator");goog.require("goog.dom.TagIterator");goog.dom.NodeIterator=function(opt_node,opt_reversed,opt_unconstrained,opt_depth){goog.dom.TagIterator.call(this,opt_node,opt_reversed,opt_unconstrained,null,opt_depth)};goog.inherits(goog.dom.NodeIterator,goog.dom.TagIterator);goog.dom.NodeIterator.prototype.next=function(){do goog.dom.NodeIterator.superClass_.next.call(this);while(this.isEndTag());return this.node};goog.provide("goog.math.Box");goog.require("goog.math.Coordinate");goog.math.Box=function(top,right,bottom,left){this.top=top;this.right=right;this.bottom=bottom;this.left=left}; | |
goog.math.Box.boundingBox=function(var_args){var box=new goog.math.Box(arguments[0].y,arguments[0].x,arguments[0].y,arguments[0].x);for(var i=1;i<arguments.length;i++){var coord=arguments[i];box.top=Math.min(box.top,coord.y);box.right=Math.max(box.right,coord.x);box.bottom=Math.max(box.bottom,coord.y);box.left=Math.min(box.left,coord.x)}return box};goog.math.Box.prototype.clone=function(){return new goog.math.Box(this.top,this.right,this.bottom,this.left)}; | |
if(goog.DEBUG)goog.math.Box.prototype.toString=function(){return"("+this.top+"t, "+this.right+"r, "+this.bottom+"b, "+this.left+"l)"};goog.math.Box.prototype.contains=function(other){return goog.math.Box.contains(this,other)};goog.math.Box.prototype.expand=function(top,opt_right,opt_bottom,opt_left){if(goog.isObject(top)){this.top-=top.top;this.right+=top.right;this.bottom+=top.bottom;this.left-=top.left}else{this.top-=top;this.right+=opt_right;this.bottom+=opt_bottom;this.left-=opt_left}return this}; | |
goog.math.Box.prototype.expandToInclude=function(box){this.left=Math.min(this.left,box.left);this.top=Math.min(this.top,box.top);this.right=Math.max(this.right,box.right);this.bottom=Math.max(this.bottom,box.bottom)};goog.math.Box.equals=function(a,b){if(a==b)return true;if(!a||!b)return false;return a.top==b.top&&a.right==b.right&&a.bottom==b.bottom&&a.left==b.left}; | |
goog.math.Box.contains=function(box,other){if(!box||!other)return false;if(other instanceof goog.math.Box)return other.left>=box.left&&other.right<=box.right&&other.top>=box.top&&other.bottom<=box.bottom;return other.x>=box.left&&other.x<=box.right&&other.y>=box.top&&other.y<=box.bottom}; | |
goog.math.Box.distance=function(box,coord){if(coord.x>=box.left&&coord.x<=box.right){if(coord.y>=box.top&&coord.y<=box.bottom)return 0;return coord.y<box.top?box.top-coord.y:coord.y-box.bottom}if(coord.y>=box.top&&coord.y<=box.bottom)return coord.x<box.left?box.left-coord.x:coord.x-box.right;return goog.math.Coordinate.distance(coord,new goog.math.Coordinate(coord.x<box.left?box.left:box.right,coord.y<box.top?box.top:box.bottom))}; | |
goog.math.Box.intersects=function(a,b){return a.left<=b.right&&b.left<=a.right&&a.top<=b.bottom&&b.top<=a.bottom};goog.math.Box.intersectsWithPadding=function(a,b,padding){return a.left<=b.right+padding&&b.left<=a.right+padding&&a.top<=b.bottom+padding&&b.top<=a.bottom+padding};goog.provide("goog.math.Rect");goog.require("goog.math.Box");goog.require("goog.math.Size");goog.math.Rect=function(x,y,w,h){this.left=x;this.top=y;this.width=w;this.height=h};goog.math.Rect.prototype.clone=function(){return new goog.math.Rect(this.left,this.top,this.width,this.height)};goog.math.Rect.prototype.toBox=function(){var right=this.left+this.width;var bottom=this.top+this.height;return new goog.math.Box(this.top,right,bottom,this.left)}; | |
goog.math.Rect.createFromBox=function(box){return new goog.math.Rect(box.left,box.top,box.right-box.left,box.bottom-box.top)};if(goog.DEBUG)goog.math.Rect.prototype.toString=function(){return"("+this.left+", "+this.top+" - "+this.width+"w x "+this.height+"h)"};goog.math.Rect.equals=function(a,b){if(a==b)return true;if(!a||!b)return false;return a.left==b.left&&a.width==b.width&&a.top==b.top&&a.height==b.height}; | |
goog.math.Rect.prototype.intersection=function(rect){var x0=Math.max(this.left,rect.left);var x1=Math.min(this.left+this.width,rect.left+rect.width);if(x0<=x1){var y0=Math.max(this.top,rect.top);var y1=Math.min(this.top+this.height,rect.top+rect.height);if(y0<=y1){this.left=x0;this.top=y0;this.width=x1-x0;this.height=y1-y0;return true}}return false}; | |
goog.math.Rect.intersection=function(a,b){var x0=Math.max(a.left,b.left);var x1=Math.min(a.left+a.width,b.left+b.width);if(x0<=x1){var y0=Math.max(a.top,b.top);var y1=Math.min(a.top+a.height,b.top+b.height);if(y0<=y1)return new goog.math.Rect(x0,y0,x1-x0,y1-y0)}return null};goog.math.Rect.intersects=function(a,b){return a.left<=b.left+b.width&&b.left<=a.left+a.width&&a.top<=b.top+b.height&&b.top<=a.top+a.height}; | |
goog.math.Rect.prototype.intersects=function(rect){return goog.math.Rect.intersects(this,rect)}; | |
goog.math.Rect.difference=function(a,b){var intersection=goog.math.Rect.intersection(a,b);if(!intersection||!intersection.height||!intersection.width)return[a.clone()];var result=[];var top=a.top;var height=a.height;var ar=a.left+a.width;var ab=a.top+a.height;var br=b.left+b.width;var bb=b.top+b.height;if(b.top>a.top){result.push(new goog.math.Rect(a.left,a.top,a.width,b.top-a.top));top=b.top;height-=b.top-a.top}if(bb<ab){result.push(new goog.math.Rect(a.left,bb,a.width,ab-bb));height=bb-top}if(b.left> | |
a.left)result.push(new goog.math.Rect(a.left,top,b.left-a.left,height));if(br<ar)result.push(new goog.math.Rect(br,top,ar-br,height));return result};goog.math.Rect.prototype.difference=function(rect){return goog.math.Rect.difference(this,rect)}; | |
goog.math.Rect.prototype.boundingRect=function(rect){var right=Math.max(this.left+this.width,rect.left+rect.width);var bottom=Math.max(this.top+this.height,rect.top+rect.height);this.left=Math.min(this.left,rect.left);this.top=Math.min(this.top,rect.top);this.width=right-this.left;this.height=bottom-this.top};goog.math.Rect.boundingRect=function(a,b){if(!a||!b)return null;var clone=a.clone();clone.boundingRect(b);return clone}; | |
goog.math.Rect.prototype.contains=function(another){if(another instanceof goog.math.Rect)return this.left<=another.left&&this.left+this.width>=another.left+another.width&&this.top<=another.top&&this.top+this.height>=another.top+another.height;else return another.x>=this.left&&another.x<=this.left+this.width&&another.y>=this.top&&another.y<=this.top+this.height};goog.math.Rect.prototype.getSize=function(){return new goog.math.Size(this.width,this.height)};goog.provide("goog.style");goog.require("goog.array");goog.require("goog.dom");goog.require("goog.math.Box");goog.require("goog.math.Coordinate");goog.require("goog.math.Rect");goog.require("goog.math.Size");goog.require("goog.object");goog.require("goog.string");goog.require("goog.userAgent");goog.style.setStyle=function(element,style,opt_value){if(goog.isString(style))goog.style.setStyle_(element,opt_value,style);else goog.object.forEach(style,goog.partial(goog.style.setStyle_,element))}; | |
goog.style.setStyle_=function(element,value,style){element.style[goog.string.toCamelCase(style)]=value};goog.style.getStyle=function(element,property){return element.style[goog.string.toCamelCase(property)]||""};goog.style.getComputedStyle=function(element,property){var doc=goog.dom.getOwnerDocument(element);if(doc.defaultView&&doc.defaultView.getComputedStyle){var styles=doc.defaultView.getComputedStyle(element,null);if(styles)return styles[property]||styles.getPropertyValue(property)}return""}; | |
goog.style.getCascadedStyle=function(element,style){return element.currentStyle?element.currentStyle[style]:null};goog.style.getStyle_=function(element,style){return goog.style.getComputedStyle(element,style)||goog.style.getCascadedStyle(element,style)||element.style&&element.style[style]};goog.style.getComputedPosition=function(element){return goog.style.getStyle_(element,"position")};goog.style.getBackgroundColor=function(element){return goog.style.getStyle_(element,"backgroundColor")}; | |
goog.style.getComputedOverflowX=function(element){return goog.style.getStyle_(element,"overflowX")};goog.style.getComputedOverflowY=function(element){return goog.style.getStyle_(element,"overflowY")};goog.style.getComputedZIndex=function(element){return goog.style.getStyle_(element,"zIndex")};goog.style.getComputedTextAlign=function(element){return goog.style.getStyle_(element,"textAlign")};goog.style.getComputedCursor=function(element){return goog.style.getStyle_(element,"cursor")}; | |
goog.style.setPosition=function(el,arg1,opt_arg2){var x,y;var buggyGeckoSubPixelPos=goog.userAgent.GECKO&&(goog.userAgent.MAC||goog.userAgent.X11)&&goog.userAgent.isVersion("1.9");if(arg1 instanceof goog.math.Coordinate){x=arg1.x;y=arg1.y}else{x=arg1;y=opt_arg2}el.style.left=goog.style.getPixelStyleValue_(x,buggyGeckoSubPixelPos);el.style.top=goog.style.getPixelStyleValue_(y,buggyGeckoSubPixelPos)};goog.style.getPosition=function(element){return new goog.math.Coordinate(element.offsetLeft,element.offsetTop)}; | |
goog.style.getClientViewportElement=function(opt_node){var doc;if(opt_node)if(opt_node.nodeType==goog.dom.NodeType.DOCUMENT)doc=opt_node;else doc=goog.dom.getOwnerDocument(opt_node);else doc=goog.dom.getDocument();if(goog.userAgent.IE&&!goog.userAgent.isDocumentMode(9)&&!goog.dom.getDomHelper(doc).isCss1CompatMode())return doc.body;return doc.documentElement}; | |
goog.style.getBoundingClientRect_=function(el){var rect=el.getBoundingClientRect();if(goog.userAgent.IE){var doc=el.ownerDocument;rect.left-=doc.documentElement.clientLeft+doc.body.clientLeft;rect.top-=doc.documentElement.clientTop+doc.body.clientTop}return rect}; | |
goog.style.getOffsetParent=function(element){if(goog.userAgent.IE&&!goog.userAgent.isDocumentMode(8))return element.offsetParent;var doc=goog.dom.getOwnerDocument(element);var positionStyle=goog.style.getStyle_(element,"position");var skipStatic=positionStyle=="fixed"||positionStyle=="absolute";for(var parent=element.parentNode;parent&&parent!=doc;parent=parent.parentNode){positionStyle=goog.style.getStyle_(parent,"position");skipStatic=skipStatic&&positionStyle=="static"&&parent!=doc.documentElement&& | |
parent!=doc.body;if(!skipStatic&&(parent.scrollWidth>parent.clientWidth||parent.scrollHeight>parent.clientHeight||positionStyle=="fixed"||positionStyle=="absolute"||positionStyle=="relative"))return parent}return null}; | |
goog.style.getVisibleRectForElement=function(element){var visibleRect=new goog.math.Box(0,Infinity,Infinity,0);var dom=goog.dom.getDomHelper(element);var body=dom.getDocument().body;var documentElement=dom.getDocument().documentElement;var scrollEl=dom.getDocumentScrollElement();for(var el=element;el=goog.style.getOffsetParent(el);)if((!goog.userAgent.IE||el.clientWidth!=0)&&(!goog.userAgent.WEBKIT||el.clientHeight!=0||el!=body)&&el!=body&&el!=documentElement&&goog.style.getStyle_(el,"overflow")!= | |
"visible"){var pos=goog.style.getPageOffset(el);var client=goog.style.getClientLeftTop(el);pos.x+=client.x;pos.y+=client.y;visibleRect.top=Math.max(visibleRect.top,pos.y);visibleRect.right=Math.min(visibleRect.right,pos.x+el.clientWidth);visibleRect.bottom=Math.min(visibleRect.bottom,pos.y+el.clientHeight);visibleRect.left=Math.max(visibleRect.left,pos.x)}var scrollX=scrollEl.scrollLeft,scrollY=scrollEl.scrollTop;visibleRect.left=Math.max(visibleRect.left,scrollX);visibleRect.top=Math.max(visibleRect.top, | |
scrollY);var winSize=dom.getViewportSize();visibleRect.right=Math.min(visibleRect.right,scrollX+winSize.width);visibleRect.bottom=Math.min(visibleRect.bottom,scrollY+winSize.height);return visibleRect.top>=0&&visibleRect.left>=0&&visibleRect.bottom>visibleRect.top&&visibleRect.right>visibleRect.left?visibleRect:null}; | |
goog.style.scrollIntoContainerView=function(element,container,opt_center){var elementPos=goog.style.getPageOffset(element);var containerPos=goog.style.getPageOffset(container);var containerBorder=goog.style.getBorderBox(container);var relX=elementPos.x-containerPos.x-containerBorder.left;var relY=elementPos.y-containerPos.y-containerBorder.top;var spaceX=container.clientWidth-element.offsetWidth;var spaceY=container.clientHeight-element.offsetHeight;if(opt_center){container.scrollLeft+=relX-spaceX/ | |
2;container.scrollTop+=relY-spaceY/2}else{container.scrollLeft+=Math.min(relX,Math.max(relX-spaceX,0));container.scrollTop+=Math.min(relY,Math.max(relY-spaceY,0))}}; | |
goog.style.getClientLeftTop=function(el){if(goog.userAgent.GECKO&&!goog.userAgent.isVersion("1.9")){var left=parseFloat(goog.style.getComputedStyle(el,"borderLeftWidth"));if(goog.style.isRightToLeft(el)){var scrollbarWidth=el.offsetWidth-el.clientWidth-left-parseFloat(goog.style.getComputedStyle(el,"borderRightWidth"));left+=scrollbarWidth}return new goog.math.Coordinate(left,parseFloat(goog.style.getComputedStyle(el,"borderTopWidth")))}return new goog.math.Coordinate(el.clientLeft,el.clientTop)}; | |
goog.style.getPageOffset=function(el){var box,doc=goog.dom.getOwnerDocument(el);var positionStyle=goog.style.getStyle_(el,"position");var BUGGY_GECKO_BOX_OBJECT=goog.userAgent.GECKO&&doc.getBoxObjectFor&&!el.getBoundingClientRect&&positionStyle=="absolute"&&(box=doc.getBoxObjectFor(el))&&(box.screenX<0||box.screenY<0);var pos=new goog.math.Coordinate(0,0);var viewportElement=goog.style.getClientViewportElement(doc);if(el==viewportElement)return pos;if(el.getBoundingClientRect){box=goog.style.getBoundingClientRect_(el); | |
var scrollCoord=goog.dom.getDomHelper(doc).getDocumentScroll();pos.x=box.left+scrollCoord.x;pos.y=box.top+scrollCoord.y}else if(doc.getBoxObjectFor&&!BUGGY_GECKO_BOX_OBJECT){box=doc.getBoxObjectFor(el);var vpBox=doc.getBoxObjectFor(viewportElement);pos.x=box.screenX-vpBox.screenX;pos.y=box.screenY-vpBox.screenY}else{var parent=el;do{pos.x+=parent.offsetLeft;pos.y+=parent.offsetTop;if(parent!=el){pos.x+=parent.clientLeft||0;pos.y+=parent.clientTop||0}if(goog.userAgent.WEBKIT&&goog.style.getComputedPosition(parent)== | |
"fixed"){pos.x+=doc.body.scrollLeft;pos.y+=doc.body.scrollTop;break}parent=parent.offsetParent}while(parent&&parent!=el);if(goog.userAgent.OPERA||goog.userAgent.WEBKIT&&positionStyle=="absolute")pos.y-=doc.body.offsetTop;for(parent=el;(parent=goog.style.getOffsetParent(parent))&&parent!=doc.body&&parent!=viewportElement;){pos.x-=parent.scrollLeft;if(!goog.userAgent.OPERA||parent.tagName!="TR")pos.y-=parent.scrollTop}}return pos};goog.style.getPageOffsetLeft=function(el){return goog.style.getPageOffset(el).x}; | |
goog.style.getPageOffsetTop=function(el){return goog.style.getPageOffset(el).y}; | |
goog.style.getFramedPageOffset=function(el,relativeWin){var position=new goog.math.Coordinate(0,0);var currentWin=goog.dom.getWindow(goog.dom.getOwnerDocument(el));var currentEl=el;do{var offset=currentWin==relativeWin?goog.style.getPageOffset(currentEl):goog.style.getClientPosition(currentEl);position.x+=offset.x;position.y+=offset.y}while(currentWin&¤tWin!=relativeWin&&(currentEl=currentWin.frameElement)&&(currentWin=currentWin.parent));return position}; | |
goog.style.translateRectForAnotherFrame=function(rect,origBase,newBase){if(origBase.getDocument()!=newBase.getDocument()){var body=origBase.getDocument().body;var pos=goog.style.getFramedPageOffset(body,newBase.getWindow());pos=goog.math.Coordinate.difference(pos,goog.style.getPageOffset(body));if(goog.userAgent.IE&&!origBase.isCss1CompatMode())pos=goog.math.Coordinate.difference(pos,origBase.getDocumentScroll());rect.left+=pos.x;rect.top+=pos.y}}; | |
goog.style.getRelativePosition=function(a,b){var ap=goog.style.getClientPosition(a);var bp=goog.style.getClientPosition(b);return new goog.math.Coordinate(ap.x-bp.x,ap.y-bp.y)}; | |
goog.style.getClientPosition=function(el){var pos=new goog.math.Coordinate;if(el.nodeType==goog.dom.NodeType.ELEMENT)if(el.getBoundingClientRect){var box=goog.style.getBoundingClientRect_(el);pos.x=box.left;pos.y=box.top}else{var scrollCoord=goog.dom.getDomHelper(el).getDocumentScroll();var pageCoord=goog.style.getPageOffset(el);pos.x=pageCoord.x-scrollCoord.x;pos.y=pageCoord.y-scrollCoord.y}else{var isAbstractedEvent=goog.isFunction(el.getBrowserEvent);var targetEvent=el;if(el.targetTouches)targetEvent= | |
el.targetTouches[0];else if(isAbstractedEvent&&el.getBrowserEvent().targetTouches)targetEvent=el.getBrowserEvent().targetTouches[0];pos.x=targetEvent.clientX;pos.y=targetEvent.clientY}return pos};goog.style.setPageOffset=function(el,x,opt_y){var cur=goog.style.getPageOffset(el);if(x instanceof goog.math.Coordinate){opt_y=x.y;x=x.x}var dx=x-cur.x;var dy=opt_y-cur.y;goog.style.setPosition(el,el.offsetLeft+dx,el.offsetTop+dy)}; | |
goog.style.setSize=function(element,w,opt_h){var h;if(w instanceof goog.math.Size){h=w.height;w=w.width}else{if(opt_h==undefined)throw Error("missing height argument");h=opt_h}goog.style.setWidth(element,w);goog.style.setHeight(element,h)};goog.style.getPixelStyleValue_=function(value,round){if(typeof value=="number")value=(round?Math.round(value):value)+"px";return value};goog.style.setHeight=function(element,height){element.style.height=goog.style.getPixelStyleValue_(height,true)}; | |
goog.style.setWidth=function(element,width){element.style.width=goog.style.getPixelStyleValue_(width,true)}; | |
goog.style.getSize=function(element){if(goog.style.getStyle_(element,"display")!="none")return goog.style.getSizeWithDisplay_(element);var style=element.style;var originalDisplay=style.display;var originalVisibility=style.visibility;var originalPosition=style.position;style.visibility="hidden";style.position="absolute";style.display="inline";var size=goog.style.getSizeWithDisplay_(element);style.display=originalDisplay;style.position=originalPosition;style.visibility=originalVisibility;return size}; | |
goog.style.getSizeWithDisplay_=function(element){var offsetWidth=element.offsetWidth;var offsetHeight=element.offsetHeight;var webkitOffsetsZero=goog.userAgent.WEBKIT&&!offsetWidth&&!offsetHeight;if((!goog.isDef(offsetWidth)||webkitOffsetsZero)&&element.getBoundingClientRect){var clientRect=goog.style.getBoundingClientRect_(element);return new goog.math.Size(clientRect.right-clientRect.left,clientRect.bottom-clientRect.top)}return new goog.math.Size(offsetWidth,offsetHeight)}; | |
goog.style.getBounds=function(element){var o=goog.style.getPageOffset(element);var s=goog.style.getSize(element);return new goog.math.Rect(o.x,o.y,s.width,s.height)};goog.style.toCamelCase=function(selector){return goog.string.toCamelCase(String(selector))};goog.style.toSelectorCase=function(selector){return goog.string.toSelectorCase(selector)}; | |
goog.style.getOpacity=function(el){var style=el.style;var result="";if("opacity"in style)result=style.opacity;else if("MozOpacity"in style)result=style.MozOpacity;else if("filter"in style){var match=style.filter.match(/alpha\(opacity=([\d.]+)\)/);if(match)result=String(match[1]/100)}return result==""?result:Number(result)}; | |
goog.style.setOpacity=function(el,alpha){var style=el.style;if("opacity"in style)style.opacity=alpha;else if("MozOpacity"in style)style.MozOpacity=alpha;else if("filter"in style)if(alpha==="")style.filter="";else style.filter="alpha(opacity="+alpha*100+")"}; | |
goog.style.setTransparentBackgroundImage=function(el,src){var style=el.style;if(goog.userAgent.IE&&!goog.userAgent.isVersion("8"))style.filter="progid:DXImageTransform.Microsoft.AlphaImageLoader("+'src="'+src+'", sizingMethod="crop")';else{style.backgroundImage="url("+src+")";style.backgroundPosition="top left";style.backgroundRepeat="no-repeat"}};goog.style.clearTransparentBackgroundImage=function(el){var style=el.style;if("filter"in style)style.filter="";else style.backgroundImage="none"}; | |
goog.style.showElement=function(el,display){el.style.display=display?"":"none"};goog.style.isElementShown=function(el){return el.style.display!="none"}; | |
goog.style.installStyles=function(stylesString,opt_node){var dh=goog.dom.getDomHelper(opt_node);var styleSheet=null;if(goog.userAgent.IE){styleSheet=dh.getDocument().createStyleSheet();goog.style.setStyles(styleSheet,stylesString)}else{var head=dh.getElementsByTagNameAndClass("head")[0];if(!head){var body=dh.getElementsByTagNameAndClass("body")[0];head=dh.createDom("head");body.parentNode.insertBefore(head,body)}styleSheet=dh.createDom("style");goog.style.setStyles(styleSheet,stylesString);dh.appendChild(head, | |
styleSheet)}return styleSheet};goog.style.uninstallStyles=function(styleSheet){var node=styleSheet.ownerNode||styleSheet.owningElement||styleSheet;goog.dom.removeNode(node)};goog.style.setStyles=function(element,stylesString){if(goog.userAgent.IE)element.cssText=stylesString;else{var propToSet=goog.userAgent.WEBKIT?"innerText":"innerHTML";element[propToSet]=stylesString}}; | |
goog.style.setPreWrap=function(el){var style=el.style;if(goog.userAgent.IE&&!goog.userAgent.isVersion("8")){style.whiteSpace="pre";style.wordWrap="break-word"}else if(goog.userAgent.GECKO)style.whiteSpace="-moz-pre-wrap";else style.whiteSpace="pre-wrap"}; | |
goog.style.setInlineBlock=function(el){var style=el.style;style.position="relative";if(goog.userAgent.IE&&!goog.userAgent.isVersion("8")){style.zoom="1";style.display="inline"}else if(goog.userAgent.GECKO)style.display=goog.userAgent.isVersion("1.9a")?"inline-block":"-moz-inline-box";else style.display="inline-block"};goog.style.isRightToLeft=function(el){return"rtl"==goog.style.getStyle_(el,"direction")}; | |
goog.style.unselectableStyle_=goog.userAgent.GECKO?"MozUserSelect":goog.userAgent.WEBKIT?"WebkitUserSelect":null;goog.style.isUnselectable=function(el){if(goog.style.unselectableStyle_)return el.style[goog.style.unselectableStyle_].toLowerCase()=="none";else if(goog.userAgent.IE||goog.userAgent.OPERA)return el.getAttribute("unselectable")=="on";return false}; | |
goog.style.setUnselectable=function(el,unselectable,opt_noRecurse){var descendants=!opt_noRecurse?el.getElementsByTagName("*"):null;var name=goog.style.unselectableStyle_;if(name){var value=unselectable?"none":"";el.style[name]=value;if(descendants)for(var i=0,descendant;descendant=descendants[i];i++)descendant.style[name]=value}else if(goog.userAgent.IE||goog.userAgent.OPERA){var value=unselectable?"on":"";el.setAttribute("unselectable",value);if(descendants)for(var i=0,descendant;descendant=descendants[i];i++)descendant.setAttribute("unselectable", | |
value)}};goog.style.getBorderBoxSize=function(element){return new goog.math.Size(element.offsetWidth,element.offsetHeight)}; | |
goog.style.setBorderBoxSize=function(element,size){var doc=goog.dom.getOwnerDocument(element);var isCss1CompatMode=goog.dom.getDomHelper(doc).isCss1CompatMode();if(goog.userAgent.IE&&(!isCss1CompatMode||!goog.userAgent.isVersion("8"))){var style=element.style;if(isCss1CompatMode){var paddingBox=goog.style.getPaddingBox(element);var borderBox=goog.style.getBorderBox(element);style.pixelWidth=size.width-borderBox.left-paddingBox.left-paddingBox.right-borderBox.right;style.pixelHeight=size.height-borderBox.top- | |
paddingBox.top-paddingBox.bottom-borderBox.bottom}else{style.pixelWidth=size.width;style.pixelHeight=size.height}}else goog.style.setBoxSizingSize_(element,size,"border-box")}; | |
goog.style.getContentBoxSize=function(element){var doc=goog.dom.getOwnerDocument(element);var ieCurrentStyle=goog.userAgent.IE&&element.currentStyle;if(ieCurrentStyle&&goog.dom.getDomHelper(doc).isCss1CompatMode()&&ieCurrentStyle.width!="auto"&&ieCurrentStyle.height!="auto"&&!ieCurrentStyle.boxSizing){var width=goog.style.getIePixelValue_(element,ieCurrentStyle.width,"width","pixelWidth");var height=goog.style.getIePixelValue_(element,ieCurrentStyle.height,"height","pixelHeight");return new goog.math.Size(width, | |
height)}else{var borderBoxSize=goog.style.getBorderBoxSize(element);var paddingBox=goog.style.getPaddingBox(element);var borderBox=goog.style.getBorderBox(element);return new goog.math.Size(borderBoxSize.width-borderBox.left-paddingBox.left-paddingBox.right-borderBox.right,borderBoxSize.height-borderBox.top-paddingBox.top-paddingBox.bottom-borderBox.bottom)}}; | |
goog.style.setContentBoxSize=function(element,size){var doc=goog.dom.getOwnerDocument(element);var isCss1CompatMode=goog.dom.getDomHelper(doc).isCss1CompatMode();if(goog.userAgent.IE&&(!isCss1CompatMode||!goog.userAgent.isVersion("8"))){var style=element.style;if(isCss1CompatMode){style.pixelWidth=size.width;style.pixelHeight=size.height}else{var paddingBox=goog.style.getPaddingBox(element);var borderBox=goog.style.getBorderBox(element);style.pixelWidth=size.width+borderBox.left+paddingBox.left+paddingBox.right+ | |
borderBox.right;style.pixelHeight=size.height+borderBox.top+paddingBox.top+paddingBox.bottom+borderBox.bottom}}else goog.style.setBoxSizingSize_(element,size,"content-box")};goog.style.setBoxSizingSize_=function(element,size,boxSizing){var style=element.style;if(goog.userAgent.GECKO)style.MozBoxSizing=boxSizing;else if(goog.userAgent.WEBKIT)style.WebkitBoxSizing=boxSizing;else style.boxSizing=boxSizing;style.width=size.width+"px";style.height=size.height+"px"}; | |
goog.style.getIePixelValue_=function(element,value,name,pixelName){if(/^\d+px?$/.test(value))return parseInt(value,10);else{var oldStyleValue=element.style[name];var oldRuntimeValue=element.runtimeStyle[name];element.runtimeStyle[name]=element.currentStyle[name];element.style[name]=value;var pixelValue=element.style[pixelName];element.style[name]=oldStyleValue;element.runtimeStyle[name]=oldRuntimeValue;return pixelValue}}; | |
goog.style.getIePixelDistance_=function(element,propName){return goog.style.getIePixelValue_(element,goog.style.getCascadedStyle(element,propName),"left","pixelLeft")}; | |
goog.style.getBox_=function(element,stylePrefix){if(goog.userAgent.IE){var left=goog.style.getIePixelDistance_(element,stylePrefix+"Left");var right=goog.style.getIePixelDistance_(element,stylePrefix+"Right");var top=goog.style.getIePixelDistance_(element,stylePrefix+"Top");var bottom=goog.style.getIePixelDistance_(element,stylePrefix+"Bottom");return new goog.math.Box(top,right,bottom,left)}else{var left=goog.style.getComputedStyle(element,stylePrefix+"Left");var right=goog.style.getComputedStyle(element, | |
stylePrefix+"Right");var top=goog.style.getComputedStyle(element,stylePrefix+"Top");var bottom=goog.style.getComputedStyle(element,stylePrefix+"Bottom");return new goog.math.Box(parseFloat(top),parseFloat(right),parseFloat(bottom),parseFloat(left))}};goog.style.getPaddingBox=function(element){return goog.style.getBox_(element,"padding")};goog.style.getMarginBox=function(element){return goog.style.getBox_(element,"margin")};goog.style.ieBorderWidthKeywords_={"thin":2,"medium":4,"thick":6}; | |
goog.style.getIePixelBorder_=function(element,prop){if(goog.style.getCascadedStyle(element,prop+"Style")=="none")return 0;var width=goog.style.getCascadedStyle(element,prop+"Width");if(width in goog.style.ieBorderWidthKeywords_)return goog.style.ieBorderWidthKeywords_[width];return goog.style.getIePixelValue_(element,width,"left","pixelLeft")}; | |
goog.style.getBorderBox=function(element){if(goog.userAgent.IE){var left=goog.style.getIePixelBorder_(element,"borderLeft");var right=goog.style.getIePixelBorder_(element,"borderRight");var top=goog.style.getIePixelBorder_(element,"borderTop");var bottom=goog.style.getIePixelBorder_(element,"borderBottom");return new goog.math.Box(top,right,bottom,left)}else{var left=goog.style.getComputedStyle(element,"borderLeftWidth");var right=goog.style.getComputedStyle(element,"borderRightWidth");var top=goog.style.getComputedStyle(element, | |
"borderTopWidth");var bottom=goog.style.getComputedStyle(element,"borderBottomWidth");return new goog.math.Box(parseFloat(top),parseFloat(right),parseFloat(bottom),parseFloat(left))}}; | |
goog.style.getFontFamily=function(el){var doc=goog.dom.getOwnerDocument(el);var font="";if(doc.body.createTextRange){var range=doc.body.createTextRange();range.moveToElementText(el);try{font=range.queryCommandValue("FontName")}catch(e){font=""}}if(!font)font=goog.style.getStyle_(el,"fontFamily");var fontsArray=font.split(",");if(fontsArray.length>1)font=fontsArray[0];return goog.string.stripQuotes(font,"\"'")};goog.style.lengthUnitRegex_=/[^\d]+$/; | |
goog.style.getLengthUnits=function(value){var units=value.match(goog.style.lengthUnitRegex_);return units&&units[0]||null};goog.style.ABSOLUTE_CSS_LENGTH_UNITS_={"cm":1,"in":1,"mm":1,"pc":1,"pt":1};goog.style.CONVERTIBLE_RELATIVE_CSS_UNITS_={"em":1,"ex":1}; | |
goog.style.getFontSize=function(el){var fontSize=goog.style.getStyle_(el,"fontSize");var sizeUnits=goog.style.getLengthUnits(fontSize);if(fontSize&&"px"==sizeUnits)return parseInt(fontSize,10);if(goog.userAgent.IE)if(sizeUnits in goog.style.ABSOLUTE_CSS_LENGTH_UNITS_)return goog.style.getIePixelValue_(el,fontSize,"left","pixelLeft");else if(el.parentNode&&el.parentNode.nodeType==goog.dom.NodeType.ELEMENT&&sizeUnits in goog.style.CONVERTIBLE_RELATIVE_CSS_UNITS_){var parentElement=el.parentNode;var parentSize= | |
goog.style.getStyle_(parentElement,"fontSize");return goog.style.getIePixelValue_(parentElement,fontSize==parentSize?"1em":fontSize,"left","pixelLeft")}var sizeElement=goog.dom.createDom("span",{"style":"visibility:hidden;position:absolute;"+"line-height:0;padding:0;margin:0;border:0;height:1em;"});goog.dom.appendChild(el,sizeElement);fontSize=sizeElement.offsetHeight;goog.dom.removeNode(sizeElement);return fontSize}; | |
goog.style.parseStyleAttribute=function(value){var result={};goog.array.forEach(value.split(/\s*;\s*/),function(pair){var keyValue=pair.split(/\s*:\s*/);if(keyValue.length==2)result[goog.string.toCamelCase(keyValue[0].toLowerCase())]=keyValue[1]});return result};goog.style.toStyleAttribute=function(obj){var buffer=[];goog.object.forEach(obj,function(value,key){buffer.push(goog.string.toSelectorCase(key),":",value,";")});return buffer.join("")}; | |
goog.style.setFloat=function(el,value){el.style[goog.userAgent.IE?"styleFloat":"cssFloat"]=value};goog.style.getFloat=function(el){return el.style[goog.userAgent.IE?"styleFloat":"cssFloat"]||""}; | |
goog.style.getScrollbarWidth=function(opt_className){var outerDiv=goog.dom.createElement("div");if(opt_className)outerDiv.className=opt_className;outerDiv.style.cssText="visiblity:hidden;overflow:auto;"+"position:absolute;top:0;width:100px;height:100px";var innerDiv=goog.dom.createElement("div");goog.style.setSize(innerDiv,"200px","200px");outerDiv.appendChild(innerDiv);goog.dom.appendChild(goog.dom.getDocument().body,outerDiv);var width=outerDiv.offsetWidth-outerDiv.clientWidth;goog.dom.removeNode(outerDiv); | |
return width};goog.provide("bot.dom");goog.require("bot");goog.require("bot.locators.xpath");goog.require("bot.userAgent");goog.require("goog.array");goog.require("goog.dom");goog.require("goog.dom.NodeIterator");goog.require("goog.dom.NodeType");goog.require("goog.dom.TagName");goog.require("goog.math.Coordinate");goog.require("goog.math.Rect");goog.require("goog.math.Size");goog.require("goog.string");goog.require("goog.style");bot.dom.getActiveElement=function(nodeOrWindow){return goog.dom.getOwnerDocument(nodeOrWindow).activeElement}; | |
bot.dom.isElement=function(node,opt_tagName){return!!node&&node.nodeType==goog.dom.NodeType.ELEMENT&&(!opt_tagName||node.tagName.toUpperCase()==opt_tagName)};bot.dom.isInteractable=function(element){return bot.dom.isShown(element,true)&&bot.dom.isEnabled(element)};bot.dom.isSelectable=function(element){if(bot.dom.isElement(element,goog.dom.TagName.OPTION))return true;if(bot.dom.isElement(element,goog.dom.TagName.INPUT)){var type=element.type.toLowerCase();return type=="checkbox"||type=="radio"}return false}; | |
bot.dom.isSelected=function(element){if(!bot.dom.isSelectable(element))throw new bot.Error(bot.ErrorCode.ELEMENT_NOT_SELECTABLE,"Element is not selectable");var propertyName="selected";var type=element.type&&element.type.toLowerCase();if("checkbox"==type||"radio"==type)propertyName="checked";return!!bot.dom.getProperty(element,propertyName)}; | |
bot.dom.FOCUSABLE_FORM_FIELDS_=[goog.dom.TagName.A,goog.dom.TagName.AREA,goog.dom.TagName.BUTTON,goog.dom.TagName.INPUT,goog.dom.TagName.LABEL,goog.dom.TagName.SELECT,goog.dom.TagName.TEXTAREA];bot.dom.isFocusable=function(element){return goog.array.some(bot.dom.FOCUSABLE_FORM_FIELDS_,function(tagName){return element.tagName.toUpperCase()==tagName})||bot.dom.getAttribute(element,"tabindex")!=null&&Number(bot.dom.getProperty(element,"tabIndex"))>=0};bot.dom.PROPERTY_ALIASES_={"class":"className","readonly":"readOnly"}; | |
bot.dom.BOOLEAN_PROPERTIES_=["checked","disabled","draggable","hidden"];bot.dom.getProperty=function(element,propertyName){var key=bot.dom.PROPERTY_ALIASES_[propertyName]||propertyName;var value=element[key];if(!goog.isDef(value)&&goog.array.contains(bot.dom.BOOLEAN_PROPERTIES_,key))return false;if(propertyName=="value"&&bot.dom.isElement(element,goog.dom.TagName.OPTION)&&!bot.dom.hasAttribute(element,propertyName))value=goog.dom.getRawTextContent(element);return value}; | |
bot.dom.BOOLEAN_ATTRIBUTES_=["async","autofocus","autoplay","checked","compact","complete","controls","declare","defaultchecked","defaultselected","defer","disabled","draggable","ended","formnovalidate","hidden","indeterminate","iscontenteditable","ismap","itemscope","loop","multiple","muted","nohref","noresize","noshade","novalidate","nowrap","open","paused","pubdate","readonly","required","reversed","scoped","seamless","seeking","selected","spellcheck","truespeed","willvalidate"]; | |
bot.dom.splitStyleAttributeOnSemicolonsRe_=/[;]+(?=(?:(?:[^"]*"){2})*[^"]*$)(?=(?:(?:[^']*'){2})*[^']*$)(?=(?:[^()]*\([^()]*\))*[^()]*$)/; | |
bot.dom.standardizeStyleAttribute_=function(value){var styleArray=value.split(bot.dom.splitStyleAttributeOnSemicolonsRe_);var css=[];goog.array.forEach(styleArray,function(pair){var i=pair.indexOf(":");if(i>0){var keyValue=[pair.slice(0,i),pair.slice(i+1)];if(keyValue.length==2)css.push(keyValue[0].toLowerCase(),":",keyValue[1],";")}});css=css.join("");css=css.charAt(css.length-1)==";"?css:css+";";return goog.userAgent.OPERA?css.replace(/\w+:;/g,""):css}; | |
bot.dom.getAttribute=function(element,attributeName){if(goog.dom.NodeType.COMMENT==element.nodeType)return null;attributeName=attributeName.toLowerCase();if(attributeName=="style")return bot.dom.standardizeStyleAttribute_(element.style.cssText);var attr=element.getAttributeNode(attributeName);if(goog.userAgent.IE)if(!attr&&goog.userAgent.isVersion(8)&&goog.array.contains(bot.dom.BOOLEAN_ATTRIBUTES_,attributeName))attr=element[attributeName];if(!attr)return null;if(goog.array.contains(bot.dom.BOOLEAN_ATTRIBUTES_, | |
attributeName))return bot.userAgent.IE_DOC_PRE9&&attr.value=="false"?null:"true";return attr.specified?attr.value:null};bot.dom.hasAttribute=function(element,attributeName){attributeName=attributeName.toLowerCase();if(element.hasAttribute)return element.hasAttribute(attributeName);else try{return element.attributes[attributeName].specified}catch(e){return false}}; | |
bot.dom.DISABLED_ATTRIBUTE_SUPPORTED_=[goog.dom.TagName.BUTTON,goog.dom.TagName.INPUT,goog.dom.TagName.OPTGROUP,goog.dom.TagName.OPTION,goog.dom.TagName.SELECT,goog.dom.TagName.TEXTAREA]; | |
bot.dom.isEnabled=function(el){var tagName=el.tagName.toUpperCase();if(!goog.array.contains(bot.dom.DISABLED_ATTRIBUTE_SUPPORTED_,tagName))return true;if(bot.dom.getProperty(el,"disabled"))return false;if(el.parentNode&&el.parentNode.nodeType==goog.dom.NodeType.ELEMENT&&goog.dom.TagName.OPTGROUP==tagName||goog.dom.TagName.OPTION==tagName)return bot.dom.isEnabled(el.parentNode);return true};bot.dom.TEXTUAL_INPUT_TYPES_=["text","search","tel","url","email","password","number"]; | |
bot.dom.isTextual=function(element){if(bot.dom.isElement(element,goog.dom.TagName.TEXTAREA))return true;if(bot.dom.isElement(element,goog.dom.TagName.INPUT)){var type=element.type.toLowerCase();return goog.array.contains(bot.dom.TEXTUAL_INPUT_TYPES_,type)}if(bot.dom.isContentEditable(element))return true;return false}; | |
bot.dom.isContentEditable=function(element){if(!goog.isDef(element["contentEditable"]))return false;if(!goog.userAgent.IE&&goog.isDef(element["isContentEditable"]))return element.isContentEditable;function legacyIsContentEditable(e){if(e.contentEditable=="inherit"){var parent=bot.dom.getParentElement(e);return parent?legacyIsContentEditable(parent):false}else return e.contentEditable=="true"}return legacyIsContentEditable(element)}; | |
bot.dom.isEditable=function(element){return bot.dom.isTextual(element)&&!bot.dom.getProperty(element,"readOnly")};bot.dom.getParentElement=function(node){var elem=node.parentNode;while(elem&&elem.nodeType!=goog.dom.NodeType.ELEMENT&&elem.nodeType!=goog.dom.NodeType.DOCUMENT&&elem.nodeType!=goog.dom.NodeType.DOCUMENT_FRAGMENT)elem=elem.parentNode;return bot.dom.isElement(elem)?elem:null};bot.dom.getInlineStyle=function(elem,styleName){return goog.style.getStyle(elem,styleName)}; | |
bot.dom.getEffectiveStyle=function(elem,styleName){styleName=goog.string.toCamelCase(styleName);return goog.style.getComputedStyle(elem,styleName)||bot.dom.getCascadedStyle_(elem,styleName)}; | |
bot.dom.getCascadedStyle_=function(elem,styleName){var style=elem.currentStyle||elem.style;var value=style[styleName];if(!goog.isDef(value)&&goog.isFunction(style["getPropertyValue"]))value=style["getPropertyValue"](styleName);if(value!="inherit")return goog.isDef(value)?value:null;var parent=bot.dom.getParentElement(elem);return parent?bot.dom.getCascadedStyle_(parent,styleName):null}; | |
bot.dom.getElementSize=function(element){if(goog.isFunction(element["getBBox"]))try{var bb=element["getBBox"]();if(bb)return bb}catch(e){}return goog.style.getSize(element)}; | |
bot.dom.isShown=function(elem,opt_ignoreOpacity){if(!bot.dom.isElement(elem))throw new Error("Argument to isShown must be of type Element");if(bot.dom.isElement(elem,goog.dom.TagName.OPTION)||bot.dom.isElement(elem,goog.dom.TagName.OPTGROUP)){var select=goog.dom.getAncestor(elem,function(e){return bot.dom.isElement(e,goog.dom.TagName.SELECT)});return!!select&&bot.dom.isShown(select,true)}if(bot.dom.isElement(elem,goog.dom.TagName.MAP)){if(!elem.name)return false;var mapDoc=goog.dom.getOwnerDocument(elem); | |
var mapImage;if(mapDoc["evaluate"]){var imageXpath='/descendant::*[@usemap = "#'+elem.name+'"]';mapImage=bot.locators.xpath.single(imageXpath,mapDoc)}else mapImage=goog.dom.findNode(mapDoc,function(n){return bot.dom.isElement(n)&&bot.dom.getAttribute(n,"usemap")=="#"+elem.name});return!!mapImage&&bot.dom.isShown(mapImage,opt_ignoreOpacity)}if(bot.dom.isElement(elem,goog.dom.TagName.AREA)){var map=goog.dom.getAncestor(elem,function(e){return bot.dom.isElement(e,goog.dom.TagName.MAP)});return!!map&& | |
bot.dom.isShown(map,opt_ignoreOpacity)}if(bot.dom.isElement(elem,goog.dom.TagName.INPUT)&&elem.type.toLowerCase()=="hidden")return false;if(bot.dom.isElement(elem,goog.dom.TagName.NOSCRIPT))return false;if(bot.dom.getEffectiveStyle(elem,"visibility")=="hidden")return false;function displayed(e){if(bot.dom.getEffectiveStyle(e,"display")=="none")return false;var parent=bot.dom.getParentElement(e);return!parent||displayed(parent)}if(!displayed(elem))return false;if(!opt_ignoreOpacity&&bot.dom.getOpacity(elem)== | |
0)return false;function positiveSize(e){var size=bot.dom.getElementSize(e);if(size.height>0&&size.width>0)return true;return goog.array.some(e.childNodes,function(n){return n.nodeType==goog.dom.NodeType.TEXT||bot.dom.isElement(n)&&positiveSize(n)})}if(!positiveSize(elem))return false;function isOverflowHiding(e){var parent=bot.dom.getParentElement(e);if(parent&&bot.dom.getEffectiveStyle(parent,"overflow")=="hidden"){var sizeOfParent=bot.dom.getElementSize(parent);var locOfParent=goog.style.getClientPosition(parent); | |
var locOfElement=goog.style.getClientPosition(e);if(locOfParent.x+sizeOfParent.width<locOfElement.x)return false;if(locOfParent.y+sizeOfParent.height<locOfElement.y)return false;return isOverflowHiding(parent)}return true}if(!isOverflowHiding(elem))return false;return true};bot.dom.trimExcludingNonBreakingSpaceCharacters_=function(str){return str.replace(/^[^\S\xa0]+|[^\S\xa0]+$/g,"")}; | |
bot.dom.getVisibleText=function(elem){var lines=[];bot.dom.appendVisibleTextLinesFromElement_(elem,lines);lines=goog.array.map(lines,bot.dom.trimExcludingNonBreakingSpaceCharacters_);var joined=lines.join("\n");var trimmed=bot.dom.trimExcludingNonBreakingSpaceCharacters_(joined);return trimmed.replace(/\xa0/g," ")}; | |
bot.dom.appendVisibleTextLinesFromElement_=function(elem,lines){function currLine(){return goog.array.peek(lines)||""}if(bot.dom.isElement(elem,goog.dom.TagName.BR))lines.push("");else{var isTD=bot.dom.isElement(elem,goog.dom.TagName.TD);var display=bot.dom.getEffectiveStyle(elem,"display");var isBlock=!isTD&&!goog.array.contains(bot.dom.INLINE_DISPLAY_BOXES_,display);if(isBlock&&!goog.string.isEmpty(currLine()))lines.push("");var shown=bot.dom.isShown(elem);var whitespace=null,textTransform=null; | |
if(shown){whitespace=bot.dom.getEffectiveStyle(elem,"white-space");textTransform=bot.dom.getEffectiveStyle(elem,"text-transform")}goog.array.forEach(elem.childNodes,function(node){if(node.nodeType==goog.dom.NodeType.TEXT&&shown){var textNode=node;bot.dom.appendVisibleTextLinesFromTextNode_(textNode,lines,whitespace,textTransform)}else if(bot.dom.isElement(node)){var castElem=node;bot.dom.appendVisibleTextLinesFromElement_(castElem,lines)}});var line=currLine();if((isTD||display=="table-cell")&&line&& | |
!goog.string.endsWith(line," "))lines[lines.length-1]+=" ";if(isBlock&&!goog.string.isEmpty(line))lines.push("")}};bot.dom.INLINE_DISPLAY_BOXES_=["inline","inline-block","inline-table","none","table-cell","table-column","table-column-group"]; | |
bot.dom.appendVisibleTextLinesFromTextNode_=function(textNode,lines,whitespace,textTransform){var text=textNode.nodeValue.replace(/\u200b/g,"");text=goog.string.canonicalizeNewlines(text);if(whitespace=="normal"||whitespace=="nowrap")text=text.replace(/\n/g," ");if(whitespace=="pre"||whitespace=="pre-wrap")text=text.replace(/[ \f\t\v\u2028\u2029]/g,"\u00a0");else text=text.replace(/[\ \f\t\v\u2028\u2029]+/g," ");if(textTransform=="capitalize")text=text.replace(/(^|\s)(\S)/g,function(){return arguments[1]+ | |
arguments[2].toUpperCase()});else if(textTransform=="uppercase")text=text.toUpperCase();else if(textTransform=="lowercase")text=text.toLowerCase();var currLine=lines.pop()||"";if(goog.string.endsWith(currLine," ")&&goog.string.startsWith(text," "))text=text.substr(1);lines.push(currLine+text)}; | |
bot.dom.getOpacity=function(elem){if(!goog.userAgent.IE)return bot.dom.getOpacityNonIE_(elem);else{if(bot.dom.getEffectiveStyle(elem,"position")=="relative")return 1;var opacityStyle=bot.dom.getEffectiveStyle(elem,"filter");var groups=opacityStyle.match(/^alpha\(opacity=(\d*)\)/)||opacityStyle.match(/^progid:DXImageTransform.Microsoft.Alpha\(Opacity=(\d*)\)/);if(groups)return Number(groups[1])/100;else return 1}}; | |
bot.dom.getOpacityNonIE_=function(elem){var elemOpacity=1;var opacityStyle=bot.dom.getEffectiveStyle(elem,"opacity");if(opacityStyle)elemOpacity=Number(opacityStyle);var parentElement=bot.dom.getParentElement(elem);if(parentElement)elemOpacity=elemOpacity*bot.dom.getOpacityNonIE_(parentElement);return elemOpacity}; | |
bot.dom.calculateViewportScrolling_=function(targetLocation,viewportDimension){if(targetLocation>=viewportDimension)return targetLocation-(viewportDimension-1);if(targetLocation<0)return targetLocation;return 0}; | |
bot.dom.getInViewLocation=function(targetLocation,opt_currentWindow){var currentWindow=opt_currentWindow||bot.getWindow();var viewportSize=goog.dom.getViewportSize(currentWindow);var xScrolling=bot.dom.calculateViewportScrolling_(targetLocation.x,viewportSize.width);var yScrolling=bot.dom.calculateViewportScrolling_(targetLocation.y,viewportSize.height);var scrollOffset=goog.dom.getDomHelper(currentWindow.document).getDocumentScroll();if(xScrolling!=0||yScrolling!=0)currentWindow.scrollBy(xScrolling, | |
yScrolling);var newScrollOffset=goog.dom.getDomHelper(currentWindow.document).getDocumentScroll();if(scrollOffset.x+xScrolling!=newScrollOffset.x||scrollOffset.y+yScrolling!=newScrollOffset.y)throw new bot.Error(bot.ErrorCode.MOVE_TARGET_OUT_OF_BOUNDS,"The target location ("+(targetLocation.x+scrollOffset.x)+", "+(targetLocation.y+scrollOffset.y)+") is not on the "+"webpage.");var inViewLocation=new goog.math.Coordinate(targetLocation.x-xScrolling,targetLocation.y-yScrolling);if(0>inViewLocation.x|| | |
inViewLocation.x>=viewportSize.width)throw new bot.Error(bot.ErrorCode.MOVE_TARGET_OUT_OF_BOUNDS,"The target location ("+inViewLocation.x+", "+inViewLocation.y+") should be within the viewport ("+viewportSize.width+":"+viewportSize.height+") after scrolling.");if(0>inViewLocation.y||inViewLocation.y>=viewportSize.height)throw new bot.Error(bot.ErrorCode.MOVE_TARGET_OUT_OF_BOUNDS,"The target location ("+inViewLocation.x+", "+inViewLocation.y+") should be within the viewport ("+viewportSize.width+":"+ | |
viewportSize.height+") after scrolling.");return inViewLocation};bot.dom.scrollRegionIntoView_=function(region,scrollable){scrollable.scrollLeft+=Math.min(region.left,Math.max(region.left-region.width,0));scrollable.scrollTop+=Math.min(region.top,Math.max(region.top-region.height,0))}; | |
bot.dom.scrollElementRegionIntoContainerView_=function(elem,elemRegion,container){var elemPos=goog.style.getPageOffset(elem);var containerPos=goog.style.getPageOffset(container);var containerBorder=goog.style.getBorderBox(container);var relX=elemPos.x+elemRegion.left-containerPos.x-containerBorder.left;var relY=elemPos.y+elemRegion.top-containerPos.y-containerBorder.top;var spaceX=container.clientWidth-elemRegion.width;var spaceY=container.clientHeight-elemRegion.height;bot.dom.scrollRegionIntoView_(new goog.math.Rect(relX, | |
relY,spaceX,spaceY),container)}; | |
bot.dom.scrollElementRegionIntoClientView=function(elem,elemRegion){var doc=goog.dom.getOwnerDocument(elem);for(var container=bot.dom.getParentElement(elem);container&&container!=doc.body&&container!=doc.documentElement;container=bot.dom.getParentElement(container))bot.dom.scrollElementRegionIntoContainerView_(elem,elemRegion,container);var elemPageOffset=goog.style.getPageOffset(elem);var viewportSize=goog.dom.getDomHelper(doc).getViewportSize();var region=new goog.math.Rect(elemPageOffset.x+elemRegion.left- | |
doc.body.scrollLeft,elemPageOffset.y+elemRegion.top-doc.body.scrollTop,viewportSize.width-elemRegion.width,viewportSize.height-elemRegion.height);bot.dom.scrollRegionIntoView_(region,doc.body||doc.documentElement)}; | |
bot.dom.getLocationInView=function(elem,opt_elemRegion){var elemRegion;if(opt_elemRegion)elemRegion=new goog.math.Rect(opt_elemRegion.left,opt_elemRegion.top,opt_elemRegion.width,opt_elemRegion.height);else elemRegion=new goog.math.Rect(0,0,elem.offsetWidth,elem.offsetHeight);bot.dom.scrollElementRegionIntoClientView(elem,elemRegion);var rect=elem.getClientRects?elem.getClientRects()[0]:null;var elemClientPos=rect?new goog.math.Coordinate(rect.left,rect.top):goog.style.getClientPosition(elem);return new goog.math.Coordinate(elemClientPos.x+ | |
elemRegion.left,elemClientPos.y+elemRegion.top)}; | |
bot.dom.isScrolledIntoView=function(element,opt_coords){var ownerWindow=goog.dom.getWindow(goog.dom.getOwnerDocument(element));var topWindow=ownerWindow.top;var elSize=goog.style.getSize(element);for(var win=ownerWindow;;win=win.parent){var scroll=goog.dom.getDomHelper(win.document).getDocumentScroll();var size=goog.dom.getViewportSize(win);var viewportRect=new goog.math.Rect(scroll.x,scroll.y,size.width,size.height);var elCoords=goog.style.getFramedPageOffset(element,win);var elementRect=new goog.math.Rect(elCoords.x, | |
elCoords.y,elSize.width,elSize.height);if(!goog.math.Rect.intersects(viewportRect,elementRect))return false;if(win==topWindow)break}var visibleBox=goog.style.getVisibleRectForElement(element);if(!visibleBox)return false;if(opt_coords){var elementOffset=goog.style.getPageOffset(element);var desiredPoint=goog.math.Coordinate.sum(elementOffset,opt_coords);return visibleBox.contains(desiredPoint)}else{var elementBox=goog.style.getBounds(element).toBox();return goog.math.Box.intersects(visibleBox,elementBox)}};goog.provide("bot.Device");goog.require("bot");goog.require("bot.dom");goog.require("bot.userAgent");goog.require("goog.userAgent");goog.require("goog.userAgent.product");bot.Device=function(){this.element_=bot.getDocument().documentElement;this.select_=null;var activeElement=bot.dom.getActiveElement(this.element_);if(activeElement)this.setElement(activeElement)};bot.Device.prototype.getElement=function(){return this.element_}; | |
bot.Device.prototype.setElement=function(element){this.element_=element;if(bot.dom.isElement(element,goog.dom.TagName.OPTION))this.select_=goog.dom.getAncestor(element,function(node){return bot.dom.isElement(node,goog.dom.TagName.SELECT)});else this.select_=null};bot.Device.prototype.fireHtmlEvent=function(type){return bot.events.fire(this.element_,type)};bot.Device.prototype.fireKeyboardEvent=function(type,args){return bot.events.fire(this.element_,type,args)}; | |
bot.Device.prototype.fireMouseEvent=function(type,coord,button,opt_related,opt_wheelDelta){if(!bot.dom.isInteractable(this.element_))return false;if(opt_related&&!(bot.events.EventType.MOUSEOVER==type||bot.events.EventType.MOUSEOUT==type))throw new bot.Error(bot.ErrorCode.INVALID_ELEMENT_STATE,"Event type does not allow related target: "+type);var args={clientX:coord.x,clientY:coord.y,button:button,altKey:false,ctrlKey:false,shiftKey:false,metaKey:false,wheelDelta:opt_wheelDelta||0,relatedTarget:opt_related|| | |
null};var target=this.select_?this.getTargetOfOptionMouseEvent_(type):this.element_;return target?bot.events.fire(target,type,args):true}; | |
bot.Device.prototype.fireTouchEvent=function(type,id,coord,opt_id2,opt_coord2){var args={touches:[],targetTouches:[],changedTouches:[],altKey:false,ctrlKey:false,shiftKey:false,metaKey:false,relatedTarget:null,scale:0,rotation:0};function addTouch(identifier,coords){var id=goog.userAgent.product.ANDROID?0:identifier;var touch={identifier:identifier,screenX:coords.x,screenY:coords.y,clientX:coords.x,clientY:coords.y,pageX:coords.x,pageY:coords.y};args.changedTouches.push(touch);if(type==bot.events.EventType.TOUCHSTART|| | |
type==bot.events.EventType.TOUCHMOVE){args.touches.push(touch);args.targetTouches.push(touch)}}addTouch(id,coord);if(goog.isDef(opt_id2))addTouch(opt_id2,opt_coord2);return bot.events.fire(this.element_,type,args)}; | |
bot.Device.prototype.getTargetOfOptionMouseEvent_=function(type){if(goog.userAgent.IE)switch(type){case bot.events.EventType.MOUSEOVER:return null;case bot.events.EventType.CONTEXTMENU:case bot.events.EventType.MOUSEMOVE:return this.select_.multiple?this.select_:null;default:return this.select_}if(goog.userAgent.OPERA)switch(type){case bot.events.EventType.CONTEXTMENU:case bot.events.EventType.MOUSEOVER:return this.select_.multiple?this.element_:null;default:return this.element_}if(goog.userAgent.WEBKIT)switch(type){case bot.events.EventType.CLICK:case bot.events.EventType.MOUSEUP:return this.select_.multiple? | |
this.element_:this.select_;default:return this.select_.multiple?this.element_:null}return this.element_}; | |
bot.Device.prototype.clickElement=function(coord,button){if(!bot.dom.isInteractable(this.element_))return;var targetLink=null;var targetButton=null;if(bot.Device.EXPLICIT_FOLLOW_LINK_)for(var e=this.element_;e;e=e.parentNode)if(bot.dom.isElement(e,goog.dom.TagName.A)){targetLink=e;break}else if(bot.Device.isFormSubmitElement(e)){targetButton=e;break}var selectable=bot.dom.isSelectable(this.element_);var wasSelected=selectable&&bot.dom.isSelected(this.element_);if(this.select_)this.toggleOption_(wasSelected); | |
if(goog.userAgent.IE&&targetButton){targetButton.click();return}var performDefault=this.fireMouseEvent(bot.events.EventType.CLICK,coord,button);if(!performDefault)return;if(targetLink&&bot.Device.shouldFollowHref_(targetLink))bot.Device.followHref_(targetLink);else if(selectable&&!this.select_)this.toggleRadioButtonOrCheckbox_(wasSelected)}; | |
bot.Device.prototype.focusOnElement=function(){var elementToFocus=this.select_||this.element_;var activeElement=bot.dom.getActiveElement(elementToFocus);if(elementToFocus==activeElement)return false;if(activeElement&&(goog.isFunction(activeElement.blur)||goog.userAgent.IE&&goog.isObject(activeElement.blur))){try{activeElement.blur()}catch(e){if(!(goog.userAgent.IE&&e.message=="Unspecified error."))throw e;}if(goog.userAgent.IE&&!bot.userAgent.isEngineVersion(8))goog.dom.getWindow(goog.dom.getOwnerDocument(elementToFocus)).focus()}if(goog.isFunction(elementToFocus.focus)|| | |
goog.userAgent.IE&&goog.isObject(elementToFocus.focus)){if(goog.userAgent.OPERA&&bot.userAgent.isEngineVersion(11)&&!bot.dom.isShown(elementToFocus))bot.events.fire(elementToFocus,bot.events.EventType.FOCUS);else elementToFocus.focus();return true}return false};bot.Device.EXPLICIT_FOLLOW_LINK_=goog.userAgent.IE||goog.userAgent.GECKO&&!bot.userAgent.FIREFOX_EXTENSION||bot.userAgent.FIREFOX_EXTENSION&&!bot.userAgent.isProductVersion(4); | |
bot.Device.CAN_SYNTHESISED_EVENTS_FOLLOW_LINKS_=bot.userAgent.FIREFOX_EXTENSION&&bot.userAgent.isProductVersion(4);bot.Device.SYNTHESISED_EVENTS_CAN_OPEN_JAVASCRIPT_WINDOWS_=bot.userAgent.FIREFOX_EXTENSION;bot.Device.isFormSubmitElement=function(element){if(bot.dom.isElement(element,goog.dom.TagName.INPUT)){var type=element.type.toLowerCase();if(type=="submit"||type=="image")return true}if(bot.dom.isElement(element,goog.dom.TagName.BUTTON)){var type=element.type.toLowerCase();if(type=="submit")return true}return false}; | |
bot.Device.shouldFollowHref_=function(element){if(!element.href)return false;if(goog.userAgent.IE||goog.userAgent.GECKO&&!bot.userAgent.FIREFOX_EXTENSION)return true;if(bot.Device.CAN_SYNTHESISED_EVENTS_FOLLOW_LINKS_)return false;if(element.target||element.href.toLowerCase().indexOf("javascript")==0)return!bot.Device.SYNTHESISED_EVENTS_CAN_OPEN_JAVASCRIPT_WINDOWS_;var owner=goog.dom.getWindow(goog.dom.getOwnerDocument(element));var sourceUrl=owner.location.href;var destinationUrl=bot.Device.resolveUrl_(owner.location, | |
element.href);var isOnlyHashChange=sourceUrl.split("#")[0]===destinationUrl.split("#")[0];return!isOnlyHashChange};bot.Device.followHref_=function(anchorElement){var targetHref=anchorElement.href;var owner=goog.dom.getWindow(goog.dom.getOwnerDocument(anchorElement));if(goog.userAgent.IE&&!bot.userAgent.isEngineVersion(8))targetHref=bot.Device.resolveUrl_(owner.location,targetHref);if(anchorElement.target)owner.open(targetHref,anchorElement.target);else owner.location.href=targetHref}; | |
bot.Device.prototype.toggleOption_=function(wasSelected){var select=this.select_;if(wasSelected&&!select.multiple)return;this.element_.selected=!wasSelected;if(!(goog.userAgent.WEBKIT&&select.multiple)||goog.userAgent.product.ANDROID&&bot.userAgent.isProductVersion(4))bot.events.fire(select,bot.events.EventType.CHANGE)}; | |
bot.Device.prototype.toggleRadioButtonOrCheckbox_=function(wasSelected){if(goog.userAgent.GECKO||goog.userAgent.WEBKIT)return;if(wasSelected&&this.element_.type.toLowerCase()=="radio")return;this.element_.checked=!wasSelected;if(goog.userAgent.OPERA&&!bot.userAgent.isEngineVersion(11))bot.events.fire(this.element_,bot.events.EventType.CHANGE)};bot.Device.findAncestorForm=function(node){return goog.dom.getAncestor(node,bot.Device.isForm_,true)}; | |
bot.Device.isForm_=function(node){return bot.dom.isElement(node,goog.dom.TagName.FORM)}; | |
bot.Device.prototype.submitForm=function(form){if(!bot.Device.isForm_(form))throw new bot.Error(bot.ErrorCode.INVALID_ELEMENT_STATE,"Element was not in a form, so could not submit.");if(bot.events.fire(form,bot.events.EventType.SUBMIT))if(!bot.dom.isElement(form.submit))form.submit();else if(!goog.userAgent.IE||bot.userAgent.isEngineVersion(8))form.constructor.prototype.submit.call(form);else{var idMasks=bot.locators.findElements({"id":"submit"},form);var nameMasks=bot.locators.findElements({"name":"submit"}, | |
form);goog.array.forEach(idMasks,function(m){m.removeAttribute("id")});goog.array.forEach(nameMasks,function(m){m.removeAttribute("name")});var submitFunction=form.submit;goog.array.forEach(idMasks,function(m){m.setAttribute("id","submit")});goog.array.forEach(nameMasks,function(m){m.setAttribute("name","submit")});submitFunction()}};bot.Device.URL_REGEXP_=new RegExp("^"+"([^:/?#.]+:)?"+"(?://([^/]*))?"+"([^?#]+)?"+"(\\?[^#]*)?"+"(#.*)?"+"$"); | |
bot.Device.resolveUrl_=function(base,rel){var m=rel.match(bot.Device.URL_REGEXP_);if(!m)return"";var target={protocol:m[1]||"",host:m[2]||"",pathname:m[3]||"",search:m[4]||"",hash:m[5]||""};if(!target.protocol){target.protocol=base.protocol;if(!target.host){target.host=base.host;if(!target.pathname){target.pathname=base.pathname;target.search=target.search||base.search}else if(target.pathname.charAt(0)!="/"){var lastSlashIndex=base.pathname.lastIndexOf("/");if(lastSlashIndex!=-1){var directory=base.pathname.substr(0, | |
lastSlashIndex+1);target.pathname=directory+target.pathname}}}}return target.protocol+"//"+target.host+target.pathname+target.search+target.hash};goog.provide("bot.events");goog.provide("bot.events.EventArgs");goog.provide("bot.events.EventType");goog.provide("bot.events.KeyboardArgs");goog.provide("bot.events.MouseArgs");goog.provide("bot.events.Touch");goog.provide("bot.events.TouchArgs");goog.require("bot.Error");goog.require("bot.ErrorCode");goog.require("bot.userAgent");goog.require("goog.array");goog.require("goog.dom");goog.require("goog.userAgent");goog.require("goog.userAgent.product"); | |
bot.events.SUPPORTS_TOUCH_EVENTS=!goog.userAgent.IE&&!goog.userAgent.OPERA;bot.events.BROKEN_TOUCH_API_=function(){if(goog.userAgent.product.ANDROID)return!bot.userAgent.isProductVersion(4);return!bot.userAgent.IOS}();bot.events.EventArgs;bot.events.MouseArgs;bot.events.KeyboardArgs;bot.events.TouchArgs;bot.events.Touch;bot.events.EventFactory_=function(type,bubbles,cancelable){this.type_=type;this.bubbles_=bubbles;this.cancelable_=cancelable}; | |
bot.events.EventFactory_.prototype.create=function(target,opt_args){var doc=goog.dom.getOwnerDocument(target);var event;if(bot.userAgent.IE_DOC_PRE9)event=doc.createEventObject();else{event=doc.createEvent("HTMLEvents");event.initEvent(this.type_,this.bubbles_,this.cancelable_)}return event};bot.events.EventFactory_.prototype.toString=function(){return this.type_};bot.events.MouseEventFactory_=function(type,bubbles,cancelable){goog.base(this,type,bubbles,cancelable)}; | |
goog.inherits(bot.events.MouseEventFactory_,bot.events.EventFactory_); | |
bot.events.MouseEventFactory_.prototype.create=function(target,opt_args){if(!goog.userAgent.GECKO&&this==bot.events.EventType.MOUSEPIXELSCROLL)throw new bot.Error(bot.ErrorCode.UNSUPPORTED_OPERATION,"Browser does not support a mouse pixel scroll event.");var args=opt_args;var doc=goog.dom.getOwnerDocument(target);var event;if(bot.userAgent.IE_DOC_PRE9){event=doc.createEventObject();event.altKey=args.altKey;event.ctrlKey=args.ctrlKey;event.metaKey=args.metaKey;event.shiftKey=args.shiftKey;event.button= | |
args.button;event.clientX=args.clientX;event.clientY=args.clientY;function setEventProperty(prop,value){Object.defineProperty(event,prop,{get:function(){return value}})}if(this==bot.events.EventType.MOUSEOUT||this==bot.events.EventType.MOUSEOVER)if(Object.defineProperty){var out=this==bot.events.EventType.MOUSEOUT;setEventProperty("fromElement",out?target:args.relatedTarget);setEventProperty("toElement",out?args.relatedTarget:target)}else event.relatedTarget=args.relatedTarget;if(this==bot.events.EventType.MOUSEWHEEL)if(Object.defineProperty)setEventProperty("wheelDelta", | |
args.wheelDelta);else event.detail=args.wheelDelta}else{var view=goog.dom.getWindow(doc);event=doc.createEvent("MouseEvents");var detail=1;if(this==bot.events.EventType.MOUSEWHEEL){if(!goog.userAgent.GECKO)event.wheelDelta=args.wheelDelta;if(goog.userAgent.GECKO||goog.userAgent.OPERA)detail=args.wheelDelta/-40}if(goog.userAgent.GECKO&&this==bot.events.EventType.MOUSEPIXELSCROLL)detail=args.wheelDelta;event.initMouseEvent(this.type_,this.bubbles_,this.cancelable_,view,detail,0,0,args.clientX,args.clientY, | |
args.ctrlKey,args.altKey,args.shiftKey,args.metaKey,args.button,args.relatedTarget)}return event};bot.events.KeyboardEventFactory_=function(type,bubbles,cancelable){goog.base(this,type,bubbles,cancelable)};goog.inherits(bot.events.KeyboardEventFactory_,bot.events.EventFactory_); | |
bot.events.KeyboardEventFactory_.prototype.create=function(target,opt_args){var args=opt_args;var doc=goog.dom.getOwnerDocument(target);var event;if(goog.userAgent.GECKO){var view=goog.dom.getWindow(doc);var keyCode=args.charCode?0:args.keyCode;event=doc.createEvent("KeyboardEvent");event.initKeyEvent(this.type_,this.bubbles_,this.cancelable_,view,args.ctrlKey,args.altKey,args.shiftKey,args.metaKey,keyCode,args.charCode);if(this.type_==bot.events.EventType.KEYPRESS&&args.preventDefault)event.preventDefault()}else{if(bot.userAgent.IE_DOC_PRE9)event= | |
doc.createEventObject();else{event=doc.createEvent("Events");event.initEvent(this.type_,this.bubbles_,this.cancelable_)}event.altKey=args.altKey;event.ctrlKey=args.ctrlKey;event.metaKey=args.metaKey;event.shiftKey=args.shiftKey;event.keyCode=args.charCode||args.keyCode;if(goog.userAgent.WEBKIT)event.charCode=this==bot.events.EventType.KEYPRESS?event.keyCode:0}return event};bot.events.TouchEventFactory_=function(type,bubbles,cancelable){goog.base(this,type,bubbles,cancelable)}; | |
goog.inherits(bot.events.TouchEventFactory_,bot.events.EventFactory_); | |
bot.events.TouchEventFactory_.prototype.create=function(target,opt_args){if(!bot.events.SUPPORTS_TOUCH_EVENTS)throw new bot.Error(bot.ErrorCode.UNSUPPORTED_OPERATION,"Browser does not support firing touch events.");var args=opt_args;var doc=goog.dom.getOwnerDocument(target);var view=goog.dom.getWindow(doc);function createNativeTouchList(touchListArgs){var touches=goog.array.map(touchListArgs,function(touchArg){return doc.createTouch(view,target,touchArg.identifier,touchArg.pageX,touchArg.pageY,touchArg.screenX, | |
touchArg.screenY)});return doc.createTouchList.apply(doc,touches)}function createGenericTouchList(touchListArgs){var touches=goog.array.map(touchListArgs,function(touchArg){return{identifier:touchArg.identifier,screenX:touchArg.screenX,screenY:touchArg.screenY,clientX:touchArg.clientX,clientY:touchArg.clientY,pageX:touchArg.pageX,pageY:touchArg.pageY,target:target}});touches.item=function(i){return touches[i]};return touches}function createTouchList(touches){return bot.events.BROKEN_TOUCH_API_?createGenericTouchList(touches): | |
createNativeTouchList(touches)}var changedTouches=createTouchList(args.changedTouches);var touches=args.touches==args.changedTouches?changedTouches:createTouchList(args.touches);var targetTouches=args.targetTouches==args.changedTouches?changedTouches:createTouchList(args.targetTouches);var event;if(bot.events.BROKEN_TOUCH_API_){event=doc.createEvent("MouseEvents");event.initMouseEvent(this.type_,this.bubbles_,this.cancelable_,view,1,0,0,args.clientX,args.clientY,args.ctrlKey,args.altKey,args.shiftKey, | |
args.metaKey,0,args.relatedTarget);event.touches=touches;event.targetTouches=targetTouches;event.changedTouches=changedTouches;event.scale=args.scale;event.rotation=args.rotation}else{event=doc.createEvent("TouchEvent");if(goog.userAgent.product.ANDROID)event.initTouchEvent(touches,targetTouches,changedTouches,this.type_,view,0,0,args.clientX,args.clientY,args.ctrlKey,args.altKey,args.shiftKey,args.metaKey);else event.initTouchEvent(this.type_,this.bubbles_,this.cancelable_,view,1,0,0,args.clientX, | |
args.clientY,args.ctrlKey,args.altKey,args.shiftKey,args.metaKey,touches,targetTouches,changedTouches,args.scale,args.rotation);event.relatedTarget=args.relatedTarget}return event}; | |
bot.events.EventType={BLUR:new bot.events.EventFactory_("blur",false,false),CHANGE:new bot.events.EventFactory_("change",true,false),FOCUS:new bot.events.EventFactory_("focus",false,false),INPUT:new bot.events.EventFactory_("input",false,false),PROPERTYCHANGE:new bot.events.EventFactory_("propertychange",false,false),SELECT:new bot.events.EventFactory_("select",true,false),SUBMIT:new bot.events.EventFactory_("submit",true,true),TEXTINPUT:new bot.events.EventFactory_("textInput",true,true),CLICK:new bot.events.MouseEventFactory_("click", | |
true,true),CONTEXTMENU:new bot.events.MouseEventFactory_("contextmenu",true,true),DBLCLICK:new bot.events.MouseEventFactory_("dblclick",true,true),MOUSEDOWN:new bot.events.MouseEventFactory_("mousedown",true,true),MOUSEMOVE:new bot.events.MouseEventFactory_("mousemove",true,false),MOUSEOUT:new bot.events.MouseEventFactory_("mouseout",true,true),MOUSEOVER:new bot.events.MouseEventFactory_("mouseover",true,true),MOUSEUP:new bot.events.MouseEventFactory_("mouseup",true,true),MOUSEWHEEL:new bot.events.MouseEventFactory_(goog.userAgent.GECKO? | |
"DOMMouseScroll":"mousewheel",true,true),MOUSEPIXELSCROLL:new bot.events.MouseEventFactory_("MozMousePixelScroll",true,true),KEYDOWN:new bot.events.KeyboardEventFactory_("keydown",true,true),KEYPRESS:new bot.events.KeyboardEventFactory_("keypress",true,true),KEYUP:new bot.events.KeyboardEventFactory_("keyup",true,true),TOUCHEND:new bot.events.TouchEventFactory_("touchend",true,true),TOUCHMOVE:new bot.events.TouchEventFactory_("touchmove",true,true),TOUCHSTART:new bot.events.TouchEventFactory_("touchstart", | |
true,true)};bot.events.fire=function(target,type,opt_args){var factory=type;var event=factory.create(target,opt_args);if(!("isTrusted"in event))event.isTrusted=false;if(bot.userAgent.IE_DOC_PRE9)return target.fireEvent("on"+factory.type_,event);else return target.dispatchEvent(event)};bot.events.isSynthetic=function(event){var e=event.getBrowserEvent?event.getBrowserEvent():event;return"isTrusted"in e?!e.isTrusted:false};goog.provide("goog.dom.selection");goog.require("goog.string");goog.require("goog.userAgent");goog.dom.selection.setStart=function(textfield,pos){if(goog.dom.selection.useSelectionProperties_(textfield))textfield.selectionStart=pos;else if(goog.userAgent.IE){var tmp=goog.dom.selection.getRangeIe_(textfield);var range=tmp[0];var selectionRange=tmp[1];if(range.inRange(selectionRange)){pos=goog.dom.selection.canonicalizePositionIe_(textfield,pos);range.collapse(true);range.move("character",pos);range.select()}}}; | |
goog.dom.selection.getStart=function(textfield){return goog.dom.selection.getEndPoints_(textfield,true)[0]}; | |
goog.dom.selection.getEndPointsTextareaIe_=function(range,selRange,getOnlyStart){var selectionRange=selRange.duplicate();var beforeSelectionText=range.text;var untrimmedBeforeSelectionText=beforeSelectionText;var selectionText=selectionRange.text;var untrimmedSelectionText=selectionText;var isRangeEndTrimmed=false;while(!isRangeEndTrimmed)if(range.compareEndPoints("StartToEnd",range)==0)isRangeEndTrimmed=true;else{range.moveEnd("character",-1);if(range.text==beforeSelectionText)untrimmedBeforeSelectionText+= | |
"\r\n";else isRangeEndTrimmed=true}if(getOnlyStart)return[untrimmedBeforeSelectionText.length,-1];var isSelectionRangeEndTrimmed=false;while(!isSelectionRangeEndTrimmed)if(selectionRange.compareEndPoints("StartToEnd",selectionRange)==0)isSelectionRangeEndTrimmed=true;else{selectionRange.moveEnd("character",-1);if(selectionRange.text==selectionText)untrimmedSelectionText+="\r\n";else isSelectionRangeEndTrimmed=true}return[untrimmedBeforeSelectionText.length,untrimmedBeforeSelectionText.length+untrimmedSelectionText.length]}; | |
goog.dom.selection.getEndPoints=function(textfield){return goog.dom.selection.getEndPoints_(textfield,false)}; | |
goog.dom.selection.getEndPoints_=function(textfield,getOnlyStart){var startPos=0;var endPos=0;if(goog.dom.selection.useSelectionProperties_(textfield)){startPos=textfield.selectionStart;endPos=getOnlyStart?-1:textfield.selectionEnd}else if(goog.userAgent.IE){var tmp=goog.dom.selection.getRangeIe_(textfield);var range=tmp[0];var selectionRange=tmp[1];if(range.inRange(selectionRange)){range.setEndPoint("EndToStart",selectionRange);if(textfield.type=="textarea")return goog.dom.selection.getEndPointsTextareaIe_(range, | |
selectionRange,getOnlyStart);startPos=range.text.length;if(!getOnlyStart)endPos=range.text.length+selectionRange.text.length;else endPos=-1}}return[startPos,endPos]}; | |
goog.dom.selection.setEnd=function(textfield,pos){if(goog.dom.selection.useSelectionProperties_(textfield))textfield.selectionEnd=pos;else if(goog.userAgent.IE){var tmp=goog.dom.selection.getRangeIe_(textfield);var range=tmp[0];var selectionRange=tmp[1];if(range.inRange(selectionRange)){pos=goog.dom.selection.canonicalizePositionIe_(textfield,pos);var startCursorPos=goog.dom.selection.canonicalizePositionIe_(textfield,goog.dom.selection.getStart(textfield));selectionRange.collapse(true);selectionRange.moveEnd("character", | |
pos-startCursorPos);selectionRange.select()}}};goog.dom.selection.getEnd=function(textfield){return goog.dom.selection.getEndPoints_(textfield,false)[1]};goog.dom.selection.setCursorPosition=function(textfield,pos){if(goog.dom.selection.useSelectionProperties_(textfield)){textfield.selectionStart=pos;textfield.selectionEnd=pos}else if(goog.userAgent.IE){pos=goog.dom.selection.canonicalizePositionIe_(textfield,pos);var sel=textfield.createTextRange();sel.collapse(true);sel.move("character",pos);sel.select()}}; | |
goog.dom.selection.setText=function(textfield,text){if(goog.dom.selection.useSelectionProperties_(textfield)){var value=textfield.value;var oldSelectionStart=textfield.selectionStart;var before=value.substr(0,oldSelectionStart);var after=value.substr(textfield.selectionEnd);textfield.value=before+text+after;textfield.selectionStart=oldSelectionStart;textfield.selectionEnd=oldSelectionStart+text.length}else if(goog.userAgent.IE){var tmp=goog.dom.selection.getRangeIe_(textfield);var range=tmp[0];var selectionRange= | |
tmp[1];if(!range.inRange(selectionRange))return;var range2=selectionRange.duplicate();selectionRange.text=text;selectionRange.setEndPoint("StartToStart",range2);selectionRange.select()}else throw Error("Cannot set the selection end");}; | |
goog.dom.selection.getText=function(textfield){if(goog.dom.selection.useSelectionProperties_(textfield)){var s=textfield.value;return s.substring(textfield.selectionStart,textfield.selectionEnd)}if(goog.userAgent.IE){var tmp=goog.dom.selection.getRangeIe_(textfield);var range=tmp[0];var selectionRange=tmp[1];if(!range.inRange(selectionRange))return"";else if(textfield.type=="textarea")return goog.dom.selection.getSelectionRangeText_(selectionRange);return selectionRange.text}throw Error("Cannot get the selection text"); | |
};goog.dom.selection.getSelectionRangeText_=function(selRange){var selectionRange=selRange.duplicate();var selectionText=selectionRange.text;var untrimmedSelectionText=selectionText;var isSelectionRangeEndTrimmed=false;while(!isSelectionRangeEndTrimmed)if(selectionRange.compareEndPoints("StartToEnd",selectionRange)==0)isSelectionRangeEndTrimmed=true;else{selectionRange.moveEnd("character",-1);if(selectionRange.text==selectionText)untrimmedSelectionText+="\r\n";else isSelectionRangeEndTrimmed=true}return untrimmedSelectionText}; | |
goog.dom.selection.getRangeIe_=function(el){var doc=el.ownerDocument||el.document;var selectionRange=doc.selection.createRange();var range;if(el.type=="textarea"){range=doc.body.createTextRange();range.moveToElementText(el)}else range=el.createTextRange();return[range,selectionRange]};goog.dom.selection.canonicalizePositionIe_=function(textfield,pos){if(textfield.type=="textarea"){var value=textfield.value.substring(0,pos);pos=goog.string.canonicalizeNewlines(value).length}return pos}; | |
goog.dom.selection.useSelectionProperties_=function(el){try{return typeof el.selectionStart=="number"}catch(e){return false}};goog.provide("goog.events.KeyCodes");goog.require("goog.userAgent"); | |
goog.events.KeyCodes={MAC_ENTER:3,BACKSPACE:8,TAB:9,NUM_CENTER:12,ENTER:13,SHIFT:16,CTRL:17,ALT:18,PAUSE:19,CAPS_LOCK:20,ESC:27,SPACE:32,PAGE_UP:33,PAGE_DOWN:34,END:35,HOME:36,LEFT:37,UP:38,RIGHT:39,DOWN:40,PRINT_SCREEN:44,INSERT:45,DELETE:46,ZERO:48,ONE:49,TWO:50,THREE:51,FOUR:52,FIVE:53,SIX:54,SEVEN:55,EIGHT:56,NINE:57,FF_SEMICOLON:59,QUESTION_MARK:63,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,META:91,WIN_KEY_RIGHT:92, | |
CONTEXT_MENU:93,NUM_ZERO:96,NUM_ONE:97,NUM_TWO:98,NUM_THREE:99,NUM_FOUR:100,NUM_FIVE:101,NUM_SIX:102,NUM_SEVEN:103,NUM_EIGHT:104,NUM_NINE:105,NUM_MULTIPLY:106,NUM_PLUS:107,NUM_MINUS:109,NUM_PERIOD:110,NUM_DIVISION:111,F1:112,F2:113,F3:114,F4:115,F5:116,F6:117,F7:118,F8:119,F9:120,F10:121,F11:122,F12:123,NUMLOCK:144,SCROLL_LOCK:145,FIRST_MEDIA_KEY:166,LAST_MEDIA_KEY:183,SEMICOLON:186,DASH:189,EQUALS:187,COMMA:188,PERIOD:190,SLASH:191,APOSTROPHE:192,TILDE:192,SINGLE_QUOTE:222,OPEN_SQUARE_BRACKET:219, | |
BACKSLASH:220,CLOSE_SQUARE_BRACKET:221,WIN_KEY:224,MAC_FF_META:224,WIN_IME:229,PHANTOM:255}; | |
goog.events.KeyCodes.isTextModifyingKeyEvent=function(e){if(e.altKey&&!e.ctrlKey||e.metaKey||e.keyCode>=goog.events.KeyCodes.F1&&e.keyCode<=goog.events.KeyCodes.F12)return false;switch(e.keyCode){case goog.events.KeyCodes.ALT:case goog.events.KeyCodes.CAPS_LOCK:case goog.events.KeyCodes.CONTEXT_MENU:case goog.events.KeyCodes.CTRL:case goog.events.KeyCodes.DOWN:case goog.events.KeyCodes.END:case goog.events.KeyCodes.ESC:case goog.events.KeyCodes.HOME:case goog.events.KeyCodes.INSERT:case goog.events.KeyCodes.LEFT:case goog.events.KeyCodes.MAC_FF_META:case goog.events.KeyCodes.META:case goog.events.KeyCodes.NUMLOCK:case goog.events.KeyCodes.NUM_CENTER:case goog.events.KeyCodes.PAGE_DOWN:case goog.events.KeyCodes.PAGE_UP:case goog.events.KeyCodes.PAUSE:case goog.events.KeyCodes.PHANTOM:case goog.events.KeyCodes.PRINT_SCREEN:case goog.events.KeyCodes.RIGHT:case goog.events.KeyCodes.SCROLL_LOCK:case goog.events.KeyCodes.SHIFT:case goog.events.KeyCodes.UP:case goog.events.KeyCodes.WIN_KEY:case goog.events.KeyCodes.WIN_KEY_RIGHT:return false;default:return e.keyCode< | |
goog.events.KeyCodes.FIRST_MEDIA_KEY||e.keyCode>goog.events.KeyCodes.LAST_MEDIA_KEY}}; | |
goog.events.KeyCodes.firesKeyPressEvent=function(keyCode,opt_heldKeyCode,opt_shiftKey,opt_ctrlKey,opt_altKey){if(!goog.userAgent.IE&&!(goog.userAgent.WEBKIT&&goog.userAgent.isVersion("525")))return true;if(goog.userAgent.MAC&&opt_altKey)return goog.events.KeyCodes.isCharacterKey(keyCode);if(opt_altKey&&!opt_ctrlKey)return false;if(!opt_shiftKey&&(opt_heldKeyCode==goog.events.KeyCodes.CTRL||opt_heldKeyCode==goog.events.KeyCodes.ALT))return false;if(goog.userAgent.IE&&opt_ctrlKey&&opt_heldKeyCode== | |
keyCode)return false;switch(keyCode){case goog.events.KeyCodes.ENTER:return!(goog.userAgent.IE&&goog.userAgent.isDocumentMode(9));case goog.events.KeyCodes.ESC:return!goog.userAgent.WEBKIT}return goog.events.KeyCodes.isCharacterKey(keyCode)}; | |
goog.events.KeyCodes.isCharacterKey=function(keyCode){if(keyCode>=goog.events.KeyCodes.ZERO&&keyCode<=goog.events.KeyCodes.NINE)return true;if(keyCode>=goog.events.KeyCodes.NUM_ZERO&&keyCode<=goog.events.KeyCodes.NUM_MULTIPLY)return true;if(keyCode>=goog.events.KeyCodes.A&&keyCode<=goog.events.KeyCodes.Z)return true;if(goog.userAgent.WEBKIT&&keyCode==0)return true;switch(keyCode){case goog.events.KeyCodes.SPACE:case goog.events.KeyCodes.QUESTION_MARK:case goog.events.KeyCodes.NUM_PLUS:case goog.events.KeyCodes.NUM_MINUS:case goog.events.KeyCodes.NUM_PERIOD:case goog.events.KeyCodes.NUM_DIVISION:case goog.events.KeyCodes.SEMICOLON:case goog.events.KeyCodes.FF_SEMICOLON:case goog.events.KeyCodes.DASH:case goog.events.KeyCodes.EQUALS:case goog.events.KeyCodes.COMMA:case goog.events.KeyCodes.PERIOD:case goog.events.KeyCodes.SLASH:case goog.events.KeyCodes.APOSTROPHE:case goog.events.KeyCodes.SINGLE_QUOTE:case goog.events.KeyCodes.OPEN_SQUARE_BRACKET:case goog.events.KeyCodes.BACKSLASH:case goog.events.KeyCodes.CLOSE_SQUARE_BRACKET:return true; | |
default:return false}};goog.provide("goog.structs");goog.require("goog.array");goog.require("goog.object");goog.structs.getCount=function(col){if(typeof col.getCount=="function")return col.getCount();if(goog.isArrayLike(col)||goog.isString(col))return col.length;return goog.object.getCount(col)}; | |
goog.structs.getValues=function(col){if(typeof col.getValues=="function")return col.getValues();if(goog.isString(col))return col.split("");if(goog.isArrayLike(col)){var rv=[];var l=col.length;for(var i=0;i<l;i++)rv.push(col[i]);return rv}return goog.object.getValues(col)}; | |
goog.structs.getKeys=function(col){if(typeof col.getKeys=="function")return col.getKeys();if(typeof col.getValues=="function")return undefined;if(goog.isArrayLike(col)||goog.isString(col)){var rv=[];var l=col.length;for(var i=0;i<l;i++)rv.push(i);return rv}return goog.object.getKeys(col)}; | |
goog.structs.contains=function(col,val){if(typeof col.contains=="function")return col.contains(val);if(typeof col.containsValue=="function")return col.containsValue(val);if(goog.isArrayLike(col)||goog.isString(col))return goog.array.contains(col,val);return goog.object.containsValue(col,val)};goog.structs.isEmpty=function(col){if(typeof col.isEmpty=="function")return col.isEmpty();if(goog.isArrayLike(col)||goog.isString(col))return goog.array.isEmpty(col);return goog.object.isEmpty(col)}; | |
goog.structs.clear=function(col){if(typeof col.clear=="function")col.clear();else if(goog.isArrayLike(col))goog.array.clear(col);else goog.object.clear(col)}; | |
goog.structs.forEach=function(col,f,opt_obj){if(typeof col.forEach=="function")col.forEach(f,opt_obj);else if(goog.isArrayLike(col)||goog.isString(col))goog.array.forEach(col,f,opt_obj);else{var keys=goog.structs.getKeys(col);var values=goog.structs.getValues(col);var l=values.length;for(var i=0;i<l;i++)f.call(opt_obj,values[i],keys&&keys[i],col)}}; | |
goog.structs.filter=function(col,f,opt_obj){if(typeof col.filter=="function")return col.filter(f,opt_obj);if(goog.isArrayLike(col)||goog.isString(col))return goog.array.filter(col,f,opt_obj);var rv;var keys=goog.structs.getKeys(col);var values=goog.structs.getValues(col);var l=values.length;if(keys){rv={};for(var i=0;i<l;i++)if(f.call(opt_obj,values[i],keys[i],col))rv[keys[i]]=values[i]}else{rv=[];for(var i=0;i<l;i++)if(f.call(opt_obj,values[i],undefined,col))rv.push(values[i])}return rv}; | |
goog.structs.map=function(col,f,opt_obj){if(typeof col.map=="function")return col.map(f,opt_obj);if(goog.isArrayLike(col)||goog.isString(col))return goog.array.map(col,f,opt_obj);var rv;var keys=goog.structs.getKeys(col);var values=goog.structs.getValues(col);var l=values.length;if(keys){rv={};for(var i=0;i<l;i++)rv[keys[i]]=f.call(opt_obj,values[i],keys[i],col)}else{rv=[];for(var i=0;i<l;i++)rv[i]=f.call(opt_obj,values[i],undefined,col)}return rv}; | |
goog.structs.some=function(col,f,opt_obj){if(typeof col.some=="function")return col.some(f,opt_obj);if(goog.isArrayLike(col)||goog.isString(col))return goog.array.some(col,f,opt_obj);var keys=goog.structs.getKeys(col);var values=goog.structs.getValues(col);var l=values.length;for(var i=0;i<l;i++)if(f.call(opt_obj,values[i],keys&&keys[i],col))return true;return false}; | |
goog.structs.every=function(col,f,opt_obj){if(typeof col.every=="function")return col.every(f,opt_obj);if(goog.isArrayLike(col)||goog.isString(col))return goog.array.every(col,f,opt_obj);var keys=goog.structs.getKeys(col);var values=goog.structs.getValues(col);var l=values.length;for(var i=0;i<l;i++)if(!f.call(opt_obj,values[i],keys&&keys[i],col))return false;return true};goog.provide("goog.structs.Collection");goog.structs.Collection=function(){};goog.structs.Collection.prototype.add;goog.structs.Collection.prototype.remove;goog.structs.Collection.prototype.contains;goog.structs.Collection.prototype.getCount;goog.provide("goog.structs.Map");goog.require("goog.iter.Iterator");goog.require("goog.iter.StopIteration");goog.require("goog.object");goog.require("goog.structs");goog.structs.Map=function(opt_map,var_args){this.map_={};if(goog.structs.Map.PRESERVE_NON_STRING_KEYS)this.numericKeyMap_={};var argLength=arguments.length;if(argLength>1){if(argLength%2)throw Error("Uneven number of arguments");for(var i=0;i<argLength;i+=2)this.set(arguments[i],arguments[i+1])}else if(opt_map)this.addAll(opt_map)}; | |
goog.structs.Map.PRESERVE_NON_STRING_KEYS=true;goog.structs.Map.KEY_PREFIX=":";goog.structs.Map.prototype.count_=0;goog.structs.Map.prototype.version_=0;goog.structs.Map.prototype.getCount=function(){return this.count_};goog.structs.Map.prototype.getValues=function(){var rv=[];for(var key in this.map_)if(goog.structs.Map.isKey_(key))rv.push(this.map_[key]);return rv}; | |
goog.structs.Map.prototype.getKeys=function(){var rv=[];for(var key in this.map_)if(goog.structs.Map.isKey_(key))rv.push(this.getKey_(key));return rv};goog.structs.Map.prototype.containsKey=function(key){return goog.structs.Map.makeKey_(key)in this.map_};goog.structs.Map.prototype.containsValue=function(val){for(var key in this.map_)if(goog.structs.Map.isKey_(key)&&this.map_[key]==val)return true;return false}; | |
goog.structs.Map.prototype.equals=function(otherMap,opt_equalityFn){if(this===otherMap)return true;if(this.count_!=otherMap.getCount())return false;var equalityFn=opt_equalityFn||goog.structs.Map.defaultEquals;for(var key in this.map_){key=this.getKey_(key);if(!equalityFn(this.get(key),otherMap.get(key)))return false}return true};goog.structs.Map.defaultEquals=function(a,b){return a===b};goog.structs.Map.prototype.isEmpty=function(){return this.count_==0}; | |
goog.structs.Map.prototype.clear=function(){this.map_={};this.count_=0;this.version_=0;if(goog.structs.Map.PRESERVE_NON_STRING_KEYS)this.numericKeyMap_={}};goog.structs.Map.prototype.remove=function(key){var internalKey=goog.structs.Map.makeKey_(key);if(goog.object.remove(this.map_,internalKey)){if(goog.structs.Map.PRESERVE_NON_STRING_KEYS)delete this.numericKeyMap_[internalKey];this.count_--;this.version_++;return true}return false}; | |
goog.structs.Map.prototype.get=function(key,opt_val){var internalKey=goog.structs.Map.makeKey_(key);if(internalKey in this.map_)return this.map_[internalKey];return opt_val};goog.structs.Map.prototype.set=function(key,value){var internalKey=goog.structs.Map.makeKey_(key);if(!(internalKey in this.map_)){this.version_++;this.count_++;if(goog.structs.Map.PRESERVE_NON_STRING_KEYS&&goog.isNumber(key))this.numericKeyMap_[internalKey]=true}this.map_[internalKey]=value}; | |
goog.structs.Map.prototype.addAll=function(map){var keys,values;if(map instanceof goog.structs.Map){keys=map.getKeys();values=map.getValues()}else{keys=goog.object.getKeys(map);values=goog.object.getValues(map)}for(var i=0;i<keys.length;i++)this.set(keys[i],values[i])};goog.structs.Map.prototype.clone=function(){return new goog.structs.Map(this)}; | |
goog.structs.Map.prototype.transpose=function(){var transposed=new goog.structs.Map;for(var key in this.map_)transposed.set(this.map_[key],this.getKey_(key));return transposed};goog.structs.Map.prototype.toObject=function(){var res={};for(var key in this.map_)if(goog.structs.Map.isKey_(key))res[this.getKey_(key)]=this.map_[key];return res};goog.structs.Map.prototype.getKeyIterator=function(){return this.__iterator__(true)};goog.structs.Map.prototype.getValueIterator=function(){return this.__iterator__(false)}; | |
goog.structs.Map.prototype.__iterator__=function(opt_keys){var i=0;var keys=this.getKeys();var map=this.map_;var version=this.version_;var selfObj=this;var newIter=new goog.iter.Iterator;newIter.next=function(){while(true){if(version!=selfObj.version_)throw Error("The map has changed since the iterator was created");if(i>=keys.length)throw goog.iter.StopIteration;var key=keys[i++];return opt_keys?key:map[goog.structs.Map.makeKey_(key)]}};return newIter}; | |
goog.structs.Map.prototype.getKey_=function(s){var key=s.substring(1);if(goog.structs.Map.PRESERVE_NON_STRING_KEYS)return this.numericKeyMap_[s]?Number(key):key;else return key};goog.structs.Map.isKey_=function(s){return s.charAt(0)==goog.structs.Map.KEY_PREFIX};goog.structs.Map.makeKey_=function(s){return goog.structs.Map.KEY_PREFIX+s};goog.provide("goog.structs.Set");goog.require("goog.structs");goog.require("goog.structs.Collection");goog.require("goog.structs.Map");goog.structs.Set=function(opt_values){this.map_=new goog.structs.Map;if(opt_values)this.addAll(opt_values)};goog.structs.Set.getKey_=function(val){var type=typeof val;if(type=="object"&&val||type=="function")return"o"+goog.getUid(val);else return type.substr(0,1)+val};goog.structs.Set.prototype.getCount=function(){return this.map_.getCount()}; | |
goog.structs.Set.prototype.add=function(element){this.map_.set(goog.structs.Set.getKey_(element),element)};goog.structs.Set.prototype.addAll=function(col){var values=goog.structs.getValues(col);var l=values.length;for(var i=0;i<l;i++)this.add(values[i])};goog.structs.Set.prototype.removeAll=function(col){var values=goog.structs.getValues(col);var l=values.length;for(var i=0;i<l;i++)this.remove(values[i])};goog.structs.Set.prototype.remove=function(element){return this.map_.remove(goog.structs.Set.getKey_(element))}; | |
goog.structs.Set.prototype.clear=function(){this.map_.clear()};goog.structs.Set.prototype.isEmpty=function(){return this.map_.isEmpty()};goog.structs.Set.prototype.contains=function(element){return this.map_.containsKey(goog.structs.Set.getKey_(element))};goog.structs.Set.prototype.containsAll=function(col){return goog.structs.every(col,this.contains,this)}; | |
goog.structs.Set.prototype.intersection=function(col){var result=new goog.structs.Set;var values=goog.structs.getValues(col);for(var i=0;i<values.length;i++){var value=values[i];if(this.contains(value))result.add(value)}return result};goog.structs.Set.prototype.getValues=function(){return this.map_.getValues()};goog.structs.Set.prototype.clone=function(){return new goog.structs.Set(this)};goog.structs.Set.prototype.equals=function(col){return this.getCount()==goog.structs.getCount(col)&&this.isSubsetOf(col)}; | |
goog.structs.Set.prototype.isSubsetOf=function(col){var colCount=goog.structs.getCount(col);if(this.getCount()>colCount)return false;if(!(col instanceof goog.structs.Set)&&colCount>5)col=new goog.structs.Set(col);return goog.structs.every(this,function(value){return goog.structs.contains(col,value)})};goog.structs.Set.prototype.__iterator__=function(opt_keys){return this.map_.__iterator__(false)};goog.provide("bot.Keyboard");goog.provide("bot.Keyboard.Key");goog.provide("bot.Keyboard.Keys");goog.require("bot.Device");goog.require("bot.Error");goog.require("bot.ErrorCode");goog.require("bot.dom");goog.require("bot.events.EventType");goog.require("goog.array");goog.require("goog.dom.selection");goog.require("goog.events.KeyCodes");goog.require("goog.structs.Set");goog.require("goog.userAgent"); | |
bot.Keyboard=function(){goog.base(this);this.editable_=bot.dom.isEditable(this.getElement());this.pressed_=new goog.structs.Set};goog.inherits(bot.Keyboard,bot.Device);bot.Keyboard.CHAR_TO_KEY_={}; | |
bot.Keyboard.newKey_=function(code,opt_char,opt_shiftChar){if(goog.isObject(code))if(goog.userAgent.GECKO)code=code.gecko;else if(goog.userAgent.OPERA)code=code.opera;else code=code.ieWebkit;var key=new bot.Keyboard.Key(code,opt_char,opt_shiftChar);if(opt_char&&(!(opt_char in bot.Keyboard.CHAR_TO_KEY_)||opt_shiftChar)){bot.Keyboard.CHAR_TO_KEY_[opt_char]={key:key,shift:false};if(opt_shiftChar)bot.Keyboard.CHAR_TO_KEY_[opt_shiftChar]={key:key,shift:true}}return key}; | |
bot.Keyboard.Key=function(code,opt_char,opt_shiftChar){this.code=code;this.character=opt_char||null;this.shiftChar=opt_shiftChar||this.character}; | |
bot.Keyboard.Keys={BACKSPACE:bot.Keyboard.newKey_(8),TAB:bot.Keyboard.newKey_(9),ENTER:bot.Keyboard.newKey_(13),SHIFT:bot.Keyboard.newKey_(16),CONTROL:bot.Keyboard.newKey_(17),ALT:bot.Keyboard.newKey_(18),PAUSE:bot.Keyboard.newKey_(19),CAPS_LOCK:bot.Keyboard.newKey_(20),ESC:bot.Keyboard.newKey_(27),SPACE:bot.Keyboard.newKey_(32," "),PAGE_UP:bot.Keyboard.newKey_(33),PAGE_DOWN:bot.Keyboard.newKey_(34),END:bot.Keyboard.newKey_(35),HOME:bot.Keyboard.newKey_(36),LEFT:bot.Keyboard.newKey_(37),UP:bot.Keyboard.newKey_(38), | |
RIGHT:bot.Keyboard.newKey_(39),DOWN:bot.Keyboard.newKey_(40),PRINT_SCREEN:bot.Keyboard.newKey_(44),INSERT:bot.Keyboard.newKey_(45),DELETE:bot.Keyboard.newKey_(46),ZERO:bot.Keyboard.newKey_(48,"0",")"),ONE:bot.Keyboard.newKey_(49,"1","!"),TWO:bot.Keyboard.newKey_(50,"2","@"),THREE:bot.Keyboard.newKey_(51,"3","#"),FOUR:bot.Keyboard.newKey_(52,"4","$"),FIVE:bot.Keyboard.newKey_(53,"5","%"),SIX:bot.Keyboard.newKey_(54,"6","^"),SEVEN:bot.Keyboard.newKey_(55,"7","&"),EIGHT:bot.Keyboard.newKey_(56,"8","*"), | |
NINE:bot.Keyboard.newKey_(57,"9","("),A:bot.Keyboard.newKey_(65,"a","A"),B:bot.Keyboard.newKey_(66,"b","B"),C:bot.Keyboard.newKey_(67,"c","C"),D:bot.Keyboard.newKey_(68,"d","D"),E:bot.Keyboard.newKey_(69,"e","E"),F:bot.Keyboard.newKey_(70,"f","F"),G:bot.Keyboard.newKey_(71,"g","G"),H:bot.Keyboard.newKey_(72,"h","H"),I:bot.Keyboard.newKey_(73,"i","I"),J:bot.Keyboard.newKey_(74,"j","J"),K:bot.Keyboard.newKey_(75,"k","K"),L:bot.Keyboard.newKey_(76,"l","L"),M:bot.Keyboard.newKey_(77,"m","M"),N:bot.Keyboard.newKey_(78, | |
"n","N"),O:bot.Keyboard.newKey_(79,"o","O"),P:bot.Keyboard.newKey_(80,"p","P"),Q:bot.Keyboard.newKey_(81,"q","Q"),R:bot.Keyboard.newKey_(82,"r","R"),S:bot.Keyboard.newKey_(83,"s","S"),T:bot.Keyboard.newKey_(84,"t","T"),U:bot.Keyboard.newKey_(85,"u","U"),V:bot.Keyboard.newKey_(86,"v","V"),W:bot.Keyboard.newKey_(87,"w","W"),X:bot.Keyboard.newKey_(88,"x","X"),Y:bot.Keyboard.newKey_(89,"y","Y"),Z:bot.Keyboard.newKey_(90,"z","Z"),META:bot.Keyboard.newKey_(goog.userAgent.WINDOWS?{gecko:91,ieWebkit:91,opera:219}: | |
goog.userAgent.MAC?{gecko:224,ieWebkit:91,opera:17}:{gecko:0,ieWebkit:91,opera:null}),META_RIGHT:bot.Keyboard.newKey_(goog.userAgent.WINDOWS?{gecko:92,ieWebkit:92,opera:220}:goog.userAgent.MAC?{gecko:224,ieWebkit:93,opera:17}:{gecko:0,ieWebkit:92,opera:null}),CONTEXT_MENU:bot.Keyboard.newKey_(goog.userAgent.WINDOWS?{gecko:93,ieWebkit:93,opera:0}:goog.userAgent.MAC?{gecko:0,ieWebkit:0,opera:16}:{gecko:93,ieWebkit:null,opera:0}),NUM_ZERO:bot.Keyboard.newKey_({gecko:96,ieWebkit:96,opera:48},"0"),NUM_ONE:bot.Keyboard.newKey_({gecko:97, | |
ieWebkit:97,opera:49},"1"),NUM_TWO:bot.Keyboard.newKey_({gecko:98,ieWebkit:98,opera:50},"2"),NUM_THREE:bot.Keyboard.newKey_({gecko:99,ieWebkit:99,opera:51},"3"),NUM_FOUR:bot.Keyboard.newKey_({gecko:100,ieWebkit:100,opera:52},"4"),NUM_FIVE:bot.Keyboard.newKey_({gecko:101,ieWebkit:101,opera:53},"5"),NUM_SIX:bot.Keyboard.newKey_({gecko:102,ieWebkit:102,opera:54},"6"),NUM_SEVEN:bot.Keyboard.newKey_({gecko:103,ieWebkit:103,opera:55},"7"),NUM_EIGHT:bot.Keyboard.newKey_({gecko:104,ieWebkit:104,opera:56}, | |
"8"),NUM_NINE:bot.Keyboard.newKey_({gecko:105,ieWebkit:105,opera:57},"9"),NUM_MULTIPLY:bot.Keyboard.newKey_({gecko:106,ieWebkit:106,opera:goog.userAgent.LINUX?56:42},"*"),NUM_PLUS:bot.Keyboard.newKey_({gecko:107,ieWebkit:107,opera:goog.userAgent.LINUX?61:43},"+"),NUM_MINUS:bot.Keyboard.newKey_({gecko:109,ieWebkit:109,opera:goog.userAgent.LINUX?109:45},"-"),NUM_PERIOD:bot.Keyboard.newKey_({gecko:110,ieWebkit:110,opera:goog.userAgent.LINUX?190:78},"."),NUM_DIVISION:bot.Keyboard.newKey_({gecko:111,ieWebkit:111, | |
opera:goog.userAgent.LINUX?191:47},"/"),NUM_LOCK:bot.Keyboard.newKey_(goog.userAgent.LINUX&&goog.userAgent.OPERA?null:144),F1:bot.Keyboard.newKey_(112),F2:bot.Keyboard.newKey_(113),F3:bot.Keyboard.newKey_(114),F4:bot.Keyboard.newKey_(115),F5:bot.Keyboard.newKey_(116),F6:bot.Keyboard.newKey_(117),F7:bot.Keyboard.newKey_(118),F8:bot.Keyboard.newKey_(119),F9:bot.Keyboard.newKey_(120),F10:bot.Keyboard.newKey_(121),F11:bot.Keyboard.newKey_(122),F12:bot.Keyboard.newKey_(123),EQUALS:bot.Keyboard.newKey_({gecko:107, | |
ieWebkit:187,opera:61},"=","+"),HYPHEN:bot.Keyboard.newKey_({gecko:109,ieWebkit:189,opera:109},"-","_"),COMMA:bot.Keyboard.newKey_(188,",","<"),PERIOD:bot.Keyboard.newKey_(190,".",">"),SLASH:bot.Keyboard.newKey_(191,"/","?"),BACKTICK:bot.Keyboard.newKey_(192,"`","~"),OPEN_BRACKET:bot.Keyboard.newKey_(219,"[","{"),BACKSLASH:bot.Keyboard.newKey_(220,"\\","|"),CLOSE_BRACKET:bot.Keyboard.newKey_(221,"]","}"),SEMICOLON:bot.Keyboard.newKey_({gecko:59,ieWebkit:186,opera:59},";",":"),APOSTROPHE:bot.Keyboard.newKey_(222, | |
"'",'"')};bot.Keyboard.Key.fromChar=function(ch){if(ch.length!=1)throw new bot.Error(bot.ErrorCode.UNKNOWN_ERROR,"Argument not a single character: "+ch);var keyShiftPair=bot.Keyboard.CHAR_TO_KEY_[ch];if(!keyShiftPair){var upperCase=ch.toUpperCase();var keyCode=upperCase.charCodeAt(0);var key=bot.Keyboard.newKey_(keyCode,ch.toLowerCase(),upperCase);keyShiftPair={key:key,shift:ch!=key.character}}return keyShiftPair}; | |
bot.Keyboard.MODIFIERS=[bot.Keyboard.Keys.ALT,bot.Keyboard.Keys.CONTROL,bot.Keyboard.Keys.META,bot.Keyboard.Keys.SHIFT];bot.Keyboard.NEW_LINE_=goog.userAgent.IE||goog.userAgent.OPERA?"\r\n":"\n";bot.Keyboard.prototype.isPressed=function(key){return this.pressed_.contains(key)}; | |
bot.Keyboard.prototype.pressKey=function(key){if(this.isPressed(key)&&goog.array.contains(bot.Keyboard.MODIFIERS,key))throw new bot.Error(bot.ErrorCode.UNKNOWN_ERROR,"Cannot press a modifier key that is already pressed.");var performDefault=!goog.isNull(key.code)&&this.fireKeyEvent_(bot.events.EventType.KEYDOWN,key);if(performDefault||goog.userAgent.GECKO)if(!this.requiresKeyPress_(key)||this.fireKeyEvent_(bot.events.EventType.KEYPRESS,key,!performDefault))if(performDefault){this.maybeSubmitForm_(key); | |
if(this.editable_)this.maybeEditText_(key)}this.pressed_.add(key)}; | |
bot.Keyboard.prototype.requiresKeyPress_=function(key){if(key.character||key==bot.Keyboard.Keys.ENTER)return true;else if(goog.userAgent.WEBKIT)return false;else if(goog.userAgent.IE)return key==bot.Keyboard.Keys.ESC;else switch(key){case bot.Keyboard.Keys.SHIFT:case bot.Keyboard.Keys.CONTROL:case bot.Keyboard.Keys.ALT:return false;case bot.Keyboard.Keys.META:case bot.Keyboard.Keys.META_RIGHT:case bot.Keyboard.Keys.CONTEXT_MENU:return goog.userAgent.GECKO;default:return true}}; | |
bot.Keyboard.prototype.maybeSubmitForm_=function(key){if(key!=bot.Keyboard.Keys.ENTER)return;if(goog.userAgent.GECKO||!bot.dom.isElement(this.getElement(),goog.dom.TagName.INPUT))return;var form=bot.Device.findAncestorForm(this.getElement());if(form){var inputs=form.getElementsByTagName("input");var hasSubmit=goog.array.some(inputs,function(e){return bot.Device.isFormSubmitElement(e)});if(hasSubmit||inputs.length==1||goog.userAgent.WEBKIT&&!bot.userAgent.isEngineVersion(534))this.submitForm(form)}}; | |
bot.Keyboard.prototype.maybeEditText_=function(key){if(key.character)this.updateOnCharacter_(key);else switch(key){case bot.Keyboard.Keys.ENTER:this.updateOnEnter_();break;case bot.Keyboard.Keys.BACKSPACE:case bot.Keyboard.Keys.DELETE:this.updateOnBackspaceOrDelete_(key);break;case bot.Keyboard.Keys.LEFT:case bot.Keyboard.Keys.RIGHT:this.updateOnLeftOrRight_(key);break}}; | |
bot.Keyboard.prototype.releaseKey=function(key){if(!this.isPressed(key))throw new bot.Error(bot.ErrorCode.UNKNOWN_ERROR,"Cannot release a key that is not pressed.");if(!goog.isNull(key.code))this.fireKeyEvent_(bot.events.EventType.KEYUP,key);this.pressed_.remove(key)};bot.Keyboard.prototype.getChar_=function(key){if(!key.character)throw new bot.Error(bot.ErrorCode.UNKNOWN_ERROR,"not a character key");var shiftPressed=this.isPressed(bot.Keyboard.Keys.SHIFT);return shiftPressed?key.shiftChar:key.character}; | |
bot.Keyboard.prototype.updateOnCharacter_=function(key){if(goog.userAgent.GECKO)return;var character=this.getChar_(key);goog.dom.selection.setText(this.getElement(),character);goog.dom.selection.setStart(this.getElement(),goog.dom.selection.getStart(this.getElement())+1);if(goog.userAgent.WEBKIT)this.fireHtmlEvent(bot.events.EventType.TEXTINPUT);if(!bot.userAgent.IE_DOC_PRE9)this.fireHtmlEvent(bot.events.EventType.INPUT)}; | |
bot.Keyboard.prototype.updateOnEnter_=function(){if(goog.userAgent.GECKO)return;if(goog.userAgent.WEBKIT)this.fireHtmlEvent(bot.events.EventType.TEXTINPUT);if(bot.dom.isElement(this.getElement(),goog.dom.TagName.TEXTAREA)){goog.dom.selection.setText(this.getElement(),bot.Keyboard.NEW_LINE_);goog.dom.selection.setStart(this.getElement(),goog.dom.selection.getStart(this.getElement())+bot.Keyboard.NEW_LINE_.length);if(!goog.userAgent.IE)this.fireHtmlEvent(bot.events.EventType.INPUT)}}; | |
bot.Keyboard.prototype.updateOnBackspaceOrDelete_=function(key){if(goog.userAgent.GECKO)return;var endpoints=goog.dom.selection.getEndPoints(this.getElement());if(key==bot.Keyboard.Keys.BACKSPACE&&endpoints[0]==endpoints[1]){goog.dom.selection.setStart(this.getElement(),endpoints[1]-1);goog.dom.selection.setEnd(this.getElement(),endpoints[1])}else goog.dom.selection.setEnd(this.getElement(),endpoints[1]+1);endpoints=goog.dom.selection.getEndPoints(this.getElement());var textChanged=!(endpoints[0]== | |
this.getElement().value.length||endpoints[1]==0);goog.dom.selection.setText(this.getElement(),"");if(!goog.userAgent.IE&&textChanged)this.fireHtmlEvent(bot.events.EventType.INPUT)};bot.Keyboard.prototype.updateOnLeftOrRight_=function(key){var start=goog.dom.selection.getStart(this.getElement());if(key==bot.Keyboard.Keys.LEFT)goog.dom.selection.setCursorPosition(this.getElement(),start-1);else goog.dom.selection.setCursorPosition(this.getElement(),start+1)}; | |
bot.Keyboard.prototype.fireKeyEvent_=function(type,key,opt_preventDefault){if(goog.isNull(key.code))throw new bot.Error(bot.ErrorCode.UNKNOWN_ERROR,"Key must have a keycode to be fired.");var args={altKey:this.isPressed(bot.Keyboard.Keys.ALT),ctrlKey:this.isPressed(bot.Keyboard.Keys.CONTROL),metaKey:this.isPressed(bot.Keyboard.Keys.META),shiftKey:this.isPressed(bot.Keyboard.Keys.SHIFT),keyCode:key.code,charCode:key.character&&type==bot.events.EventType.KEYPRESS?this.getChar_(key).charCodeAt(0):0, | |
preventDefault:!!opt_preventDefault};return this.fireKeyboardEvent(type,args)};bot.Keyboard.prototype.moveCursor=function(element){this.setElement(element);this.editable_=bot.dom.isEditable(element);var focusChanged=this.focusOnElement();if(this.editable_&&focusChanged)goog.dom.selection.setCursorPosition(element,element.value.length)};goog.provide("goog.disposable.IDisposable");goog.disposable.IDisposable=function(){};goog.disposable.IDisposable.prototype.dispose;goog.disposable.IDisposable.prototype.isDisposed;goog.provide("goog.Disposable");goog.provide("goog.dispose");goog.require("goog.disposable.IDisposable");goog.Disposable=function(){if(goog.Disposable.ENABLE_MONITORING)goog.Disposable.instances_[goog.getUid(this)]=this};goog.Disposable.ENABLE_MONITORING=false;goog.Disposable.instances_={};goog.Disposable.getUndisposedObjects=function(){var ret=[];for(var id in goog.Disposable.instances_)if(goog.Disposable.instances_.hasOwnProperty(id))ret.push(goog.Disposable.instances_[Number(id)]);return ret}; | |
goog.Disposable.clearUndisposedObjects=function(){goog.Disposable.instances_={}};goog.Disposable.prototype.disposed_=false;goog.Disposable.prototype.dependentDisposables_;goog.Disposable.prototype.isDisposed=function(){return this.disposed_};goog.Disposable.prototype.getDisposed=goog.Disposable.prototype.isDisposed; | |
goog.Disposable.prototype.dispose=function(){if(!this.disposed_){this.disposed_=true;this.disposeInternal();if(goog.Disposable.ENABLE_MONITORING){var uid=goog.getUid(this);if(!goog.Disposable.instances_.hasOwnProperty(uid))throw Error(this+" did not call the goog.Disposable base "+"constructor or was disposed of after a clearUndisposedObjects "+"call");delete goog.Disposable.instances_[uid]}}}; | |
goog.Disposable.prototype.registerDisposable=function(disposable){if(!this.dependentDisposables_)this.dependentDisposables_=[];this.dependentDisposables_.push(disposable)};goog.Disposable.prototype.disposeInternal=function(){if(this.dependentDisposables_)goog.disposeAll.apply(null,this.dependentDisposables_)};goog.dispose=function(obj){if(obj&&typeof obj.dispose=="function")obj.dispose()}; | |
goog.disposeAll=function(var_args){for(var i=0,len=arguments.length;i<len;++i){var disposable=arguments[i];if(goog.isArrayLike(disposable))goog.disposeAll.apply(null,disposable);else goog.dispose(disposable)}};goog.provide("goog.debug");goog.require("goog.array");goog.require("goog.string");goog.require("goog.structs.Set");goog.require("goog.userAgent");goog.debug.catchErrors=function(logFunc,opt_cancel,opt_target){var target=opt_target||goog.global;var oldErrorHandler=target.onerror;var retVal=goog.userAgent.WEBKIT?!opt_cancel:!!opt_cancel;target.onerror=function(message,url,line){if(oldErrorHandler)oldErrorHandler(message,url,line);logFunc({message:message,fileName:url,line:line});return retVal}}; | |
goog.debug.expose=function(obj,opt_showFn){if(typeof obj=="undefined")return"undefined";if(obj==null)return"NULL";var str=[];for(var x in obj){if(!opt_showFn&&goog.isFunction(obj[x]))continue;var s=x+" = ";try{s+=obj[x]}catch(e){s+="*** "+e+" ***"}str.push(s)}return str.join("\n")}; | |
goog.debug.deepExpose=function(obj,opt_showFn){var previous=new goog.structs.Set;var str=[];var helper=function(obj,space){var nestspace=space+" ";var indentMultiline=function(str){return str.replace(/\n/g,"\n"+space)};try{if(!goog.isDef(obj))str.push("undefined");else if(goog.isNull(obj))str.push("NULL");else if(goog.isString(obj))str.push('"'+indentMultiline(obj)+'"');else if(goog.isFunction(obj))str.push(indentMultiline(String(obj)));else if(goog.isObject(obj))if(previous.contains(obj))str.push("*** reference loop detected ***"); | |
else{previous.add(obj);str.push("{");for(var x in obj){if(!opt_showFn&&goog.isFunction(obj[x]))continue;str.push("\n");str.push(nestspace);str.push(x+" = ");helper(obj[x],nestspace)}str.push("\n"+space+"}")}else str.push(obj)}catch(e){str.push("*** "+e+" ***")}};helper(obj,"");return str.join("")};goog.debug.exposeArray=function(arr){var str=[];for(var i=0;i<arr.length;i++)if(goog.isArray(arr[i]))str.push(goog.debug.exposeArray(arr[i]));else str.push(arr[i]);return"[ "+str.join(", ")+" ]"}; | |
goog.debug.exposeException=function(err,opt_fn){try{var e=goog.debug.normalizeErrorObject(err);var error="Message: "+goog.string.htmlEscape(e.message)+'\nUrl: <a href="view-source:'+e.fileName+'" target="_new">'+e.fileName+"</a>\nLine: "+e.lineNumber+"\n\nBrowser stack:\n"+goog.string.htmlEscape(e.stack+"-> ")+"[end]\n\nJS stack traversal:\n"+goog.string.htmlEscape(goog.debug.getStacktrace(opt_fn)+"-> ");return error}catch(e2){return"Exception trying to expose exception! You win, we lose. "+e2}}; | |
goog.debug.normalizeErrorObject=function(err){var href=goog.getObjectByName("window.location.href");if(goog.isString(err))return{"message":err,"name":"Unknown error","lineNumber":"Not available","fileName":href,"stack":"Not available"};var lineNumber,fileName;var threwError=false;try{lineNumber=err.lineNumber||err.line||"Not available"}catch(e){lineNumber="Not available";threwError=true}try{fileName=err.fileName||err.filename||err.sourceURL||href}catch(e){fileName="Not available";threwError=true}if(threwError|| | |
!err.lineNumber||!err.fileName||!err.stack)return{"message":err.message,"name":err.name,"lineNumber":lineNumber,"fileName":fileName,"stack":err.stack||"Not available"};return err};goog.debug.enhanceError=function(err,opt_message){var error=typeof err=="string"?Error(err):err;if(!error.stack)error.stack=goog.debug.getStacktrace(arguments.callee.caller);if(opt_message){var x=0;while(error["message"+x])++x;error["message"+x]=String(opt_message)}return error}; | |
goog.debug.getStacktraceSimple=function(opt_depth){var sb=[];var fn=arguments.callee.caller;var depth=0;while(fn&&(!opt_depth||depth<opt_depth)){sb.push(goog.debug.getFunctionName(fn));sb.push("()\n");try{fn=fn.caller}catch(e){sb.push("[exception trying to get caller]\n");break}depth++;if(depth>=goog.debug.MAX_STACK_DEPTH){sb.push("[...long stack...]");break}}if(opt_depth&&depth>=opt_depth)sb.push("[...reached max depth limit...]");else sb.push("[end]");return sb.join("")}; | |
goog.debug.MAX_STACK_DEPTH=50;goog.debug.getStacktrace=function(opt_fn){return goog.debug.getStacktraceHelper_(opt_fn||arguments.callee.caller,[])}; | |
goog.debug.getStacktraceHelper_=function(fn,visited){var sb=[];if(goog.array.contains(visited,fn))sb.push("[...circular reference...]");else if(fn&&visited.length<goog.debug.MAX_STACK_DEPTH){sb.push(goog.debug.getFunctionName(fn)+"(");var args=fn.arguments;for(var i=0;i<args.length;i++){if(i>0)sb.push(", ");var argDesc;var arg=args[i];switch(typeof arg){case "object":argDesc=arg?"object":"null";break;case "string":argDesc=arg;break;case "number":argDesc=String(arg);break;case "boolean":argDesc=arg? | |
"true":"false";break;case "function":argDesc=goog.debug.getFunctionName(arg);argDesc=argDesc?argDesc:"[fn]";break;case "undefined":default:argDesc=typeof arg;break}if(argDesc.length>40)argDesc=argDesc.substr(0,40)+"...";sb.push(argDesc)}visited.push(fn);sb.push(")\n");try{sb.push(goog.debug.getStacktraceHelper_(fn.caller,visited))}catch(e){sb.push("[exception trying to get caller]\n")}}else if(fn)sb.push("[...long stack...]");else sb.push("[end]");return sb.join("")}; | |
goog.debug.setFunctionResolver=function(resolver){goog.debug.fnNameResolver_=resolver}; | |
goog.debug.getFunctionName=function(fn){if(goog.debug.fnNameCache_[fn])return goog.debug.fnNameCache_[fn];if(goog.debug.fnNameResolver_){var name=goog.debug.fnNameResolver_(fn);if(name){goog.debug.fnNameCache_[fn]=name;return name}}var functionSource=String(fn);if(!goog.debug.fnNameCache_[functionSource]){var matches=/function ([^\(]+)/.exec(functionSource);if(matches){var method=matches[1];goog.debug.fnNameCache_[functionSource]=method}else goog.debug.fnNameCache_[functionSource]="[Anonymous]"}return goog.debug.fnNameCache_[functionSource]}; | |
goog.debug.makeWhitespaceVisible=function(string){return string.replace(/ /g,"[_]").replace(/\f/g,"[f]").replace(/\n/g,"[n]\n").replace(/\r/g,"[r]").replace(/\t/g,"[t]")};goog.debug.fnNameCache_={};goog.debug.fnNameResolver_;goog.provide("goog.debug.LogRecord");goog.debug.LogRecord=function(level,msg,loggerName,opt_time,opt_sequenceNumber){this.reset(level,msg,loggerName,opt_time,opt_sequenceNumber)};goog.debug.LogRecord.prototype.time_;goog.debug.LogRecord.prototype.level_;goog.debug.LogRecord.prototype.msg_;goog.debug.LogRecord.prototype.loggerName_;goog.debug.LogRecord.prototype.sequenceNumber_=0;goog.debug.LogRecord.prototype.exception_=null;goog.debug.LogRecord.prototype.exceptionText_=null; | |
goog.debug.LogRecord.ENABLE_SEQUENCE_NUMBERS=true;goog.debug.LogRecord.nextSequenceNumber_=0;goog.debug.LogRecord.prototype.reset=function(level,msg,loggerName,opt_time,opt_sequenceNumber){if(goog.debug.LogRecord.ENABLE_SEQUENCE_NUMBERS)this.sequenceNumber_=typeof opt_sequenceNumber=="number"?opt_sequenceNumber:goog.debug.LogRecord.nextSequenceNumber_++;this.time_=opt_time||goog.now();this.level_=level;this.msg_=msg;this.loggerName_=loggerName;delete this.exception_;delete this.exceptionText_}; | |
goog.debug.LogRecord.prototype.getLoggerName=function(){return this.loggerName_};goog.debug.LogRecord.prototype.getException=function(){return this.exception_};goog.debug.LogRecord.prototype.setException=function(exception){this.exception_=exception};goog.debug.LogRecord.prototype.getExceptionText=function(){return this.exceptionText_};goog.debug.LogRecord.prototype.setExceptionText=function(text){this.exceptionText_=text}; | |
goog.debug.LogRecord.prototype.setLoggerName=function(loggerName){this.loggerName_=loggerName};goog.debug.LogRecord.prototype.getLevel=function(){return this.level_};goog.debug.LogRecord.prototype.setLevel=function(level){this.level_=level};goog.debug.LogRecord.prototype.getMessage=function(){return this.msg_};goog.debug.LogRecord.prototype.setMessage=function(msg){this.msg_=msg};goog.debug.LogRecord.prototype.getMillis=function(){return this.time_}; | |
goog.debug.LogRecord.prototype.setMillis=function(time){this.time_=time};goog.debug.LogRecord.prototype.getSequenceNumber=function(){return this.sequenceNumber_};goog.provide("goog.debug.LogBuffer");goog.require("goog.asserts");goog.require("goog.debug.LogRecord");goog.debug.LogBuffer=function(){goog.asserts.assert(goog.debug.LogBuffer.isBufferingEnabled(),"Cannot use goog.debug.LogBuffer without defining "+"goog.debug.LogBuffer.CAPACITY.");this.clear()};goog.debug.LogBuffer.getInstance=function(){if(!goog.debug.LogBuffer.instance_)goog.debug.LogBuffer.instance_=new goog.debug.LogBuffer;return goog.debug.LogBuffer.instance_}; | |
goog.debug.LogBuffer.CAPACITY=0;goog.debug.LogBuffer.prototype.buffer_;goog.debug.LogBuffer.prototype.curIndex_;goog.debug.LogBuffer.prototype.isFull_; | |
goog.debug.LogBuffer.prototype.addRecord=function(level,msg,loggerName){var curIndex=(this.curIndex_+1)%goog.debug.LogBuffer.CAPACITY;this.curIndex_=curIndex;if(this.isFull_){var ret=this.buffer_[curIndex];ret.reset(level,msg,loggerName);return ret}this.isFull_=curIndex==goog.debug.LogBuffer.CAPACITY-1;return this.buffer_[curIndex]=new goog.debug.LogRecord(level,msg,loggerName)};goog.debug.LogBuffer.isBufferingEnabled=function(){return goog.debug.LogBuffer.CAPACITY>0}; | |
goog.debug.LogBuffer.prototype.clear=function(){this.buffer_=new Array(goog.debug.LogBuffer.CAPACITY);this.curIndex_=-1;this.isFull_=false};goog.debug.LogBuffer.prototype.forEachRecord=function(func){var buffer=this.buffer_;if(!buffer[0])return;var curIndex=this.curIndex_;var i=this.isFull_?curIndex:-1;do{i=(i+1)%goog.debug.LogBuffer.CAPACITY;func(buffer[i])}while(i!=curIndex)};goog.provide("goog.debug.LogManager");goog.provide("goog.debug.Logger");goog.provide("goog.debug.Logger.Level");goog.require("goog.array");goog.require("goog.asserts");goog.require("goog.debug");goog.require("goog.debug.LogBuffer");goog.require("goog.debug.LogRecord");goog.debug.Logger=function(name){this.name_=name};goog.debug.Logger.prototype.parent_=null;goog.debug.Logger.prototype.level_=null;goog.debug.Logger.prototype.children_=null;goog.debug.Logger.prototype.handlers_=null; | |
goog.debug.Logger.ENABLE_HIERARCHY=true;if(!goog.debug.Logger.ENABLE_HIERARCHY){goog.debug.Logger.rootHandlers_=[];goog.debug.Logger.rootLevel_}goog.debug.Logger.Level=function(name,value){this.name=name;this.value=value};goog.debug.Logger.Level.prototype.toString=function(){return this.name};goog.debug.Logger.Level.OFF=new goog.debug.Logger.Level("OFF",Infinity);goog.debug.Logger.Level.SHOUT=new goog.debug.Logger.Level("SHOUT",1200); | |
goog.debug.Logger.Level.SEVERE=new goog.debug.Logger.Level("SEVERE",1E3);goog.debug.Logger.Level.WARNING=new goog.debug.Logger.Level("WARNING",900);goog.debug.Logger.Level.INFO=new goog.debug.Logger.Level("INFO",800);goog.debug.Logger.Level.CONFIG=new goog.debug.Logger.Level("CONFIG",700);goog.debug.Logger.Level.FINE=new goog.debug.Logger.Level("FINE",500);goog.debug.Logger.Level.FINER=new goog.debug.Logger.Level("FINER",400);goog.debug.Logger.Level.FINEST=new goog.debug.Logger.Level("FINEST",300); | |
goog.debug.Logger.Level.ALL=new goog.debug.Logger.Level("ALL",0);goog.debug.Logger.Level.PREDEFINED_LEVELS=[goog.debug.Logger.Level.OFF,goog.debug.Logger.Level.SHOUT,goog.debug.Logger.Level.SEVERE,goog.debug.Logger.Level.WARNING,goog.debug.Logger.Level.INFO,goog.debug.Logger.Level.CONFIG,goog.debug.Logger.Level.FINE,goog.debug.Logger.Level.FINER,goog.debug.Logger.Level.FINEST,goog.debug.Logger.Level.ALL];goog.debug.Logger.Level.predefinedLevelsCache_=null; | |
goog.debug.Logger.Level.createPredefinedLevelsCache_=function(){goog.debug.Logger.Level.predefinedLevelsCache_={};for(var i=0,level;level=goog.debug.Logger.Level.PREDEFINED_LEVELS[i];i++){goog.debug.Logger.Level.predefinedLevelsCache_[level.value]=level;goog.debug.Logger.Level.predefinedLevelsCache_[level.name]=level}}; | |
goog.debug.Logger.Level.getPredefinedLevel=function(name){if(!goog.debug.Logger.Level.predefinedLevelsCache_)goog.debug.Logger.Level.createPredefinedLevelsCache_();return goog.debug.Logger.Level.predefinedLevelsCache_[name]||null}; | |
goog.debug.Logger.Level.getPredefinedLevelByValue=function(value){if(!goog.debug.Logger.Level.predefinedLevelsCache_)goog.debug.Logger.Level.createPredefinedLevelsCache_();if(value in goog.debug.Logger.Level.predefinedLevelsCache_)return goog.debug.Logger.Level.predefinedLevelsCache_[value];for(var i=0;i<goog.debug.Logger.Level.PREDEFINED_LEVELS.length;++i){var level=goog.debug.Logger.Level.PREDEFINED_LEVELS[i];if(level.value<=value)return level}return null};goog.debug.Logger.getLogger=function(name){return goog.debug.LogManager.getLogger(name)}; | |
goog.debug.Logger.logToProfilers=function(msg){if(goog.global["console"])if(goog.global["console"]["timeStamp"])goog.global["console"]["timeStamp"](msg);else if(goog.global["console"]["markTimeline"])goog.global["console"]["markTimeline"](msg);if(goog.global["msWriteProfilerMark"])goog.global["msWriteProfilerMark"](msg)};goog.debug.Logger.prototype.getName=function(){return this.name_}; | |
goog.debug.Logger.prototype.addHandler=function(handler){if(goog.debug.Logger.ENABLE_HIERARCHY){if(!this.handlers_)this.handlers_=[];this.handlers_.push(handler)}else{goog.asserts.assert(!this.name_,"Cannot call addHandler on a non-root logger when "+"goog.debug.Logger.ENABLE_HIERARCHY is false.");goog.debug.Logger.rootHandlers_.push(handler)}}; | |
goog.debug.Logger.prototype.removeHandler=function(handler){var handlers=goog.debug.Logger.ENABLE_HIERARCHY?this.handlers_:goog.debug.Logger.rootHandlers_;return!!handlers&&goog.array.remove(handlers,handler)};goog.debug.Logger.prototype.getParent=function(){return this.parent_};goog.debug.Logger.prototype.getChildren=function(){if(!this.children_)this.children_={};return this.children_}; | |
goog.debug.Logger.prototype.setLevel=function(level){if(goog.debug.Logger.ENABLE_HIERARCHY)this.level_=level;else{goog.asserts.assert(!this.name_,"Cannot call setLevel() on a non-root logger when "+"goog.debug.Logger.ENABLE_HIERARCHY is false.");goog.debug.Logger.rootLevel_=level}};goog.debug.Logger.prototype.getLevel=function(){return this.level_}; | |
goog.debug.Logger.prototype.getEffectiveLevel=function(){if(!goog.debug.Logger.ENABLE_HIERARCHY)return goog.debug.Logger.rootLevel_;if(this.level_)return this.level_;if(this.parent_)return this.parent_.getEffectiveLevel();goog.asserts.fail("Root logger has no level set.");return null};goog.debug.Logger.prototype.isLoggable=function(level){return level.value>=this.getEffectiveLevel().value}; | |
goog.debug.Logger.prototype.log=function(level,msg,opt_exception){if(this.isLoggable(level))this.doLogRecord_(this.getLogRecord(level,msg,opt_exception))}; | |
goog.debug.Logger.prototype.getLogRecord=function(level,msg,opt_exception){if(goog.debug.LogBuffer.isBufferingEnabled())var logRecord=goog.debug.LogBuffer.getInstance().addRecord(level,msg,this.name_);else logRecord=new goog.debug.LogRecord(level,String(msg),this.name_);if(opt_exception){logRecord.setException(opt_exception);logRecord.setExceptionText(goog.debug.exposeException(opt_exception,arguments.callee.caller))}return logRecord}; | |
goog.debug.Logger.prototype.shout=function(msg,opt_exception){this.log(goog.debug.Logger.Level.SHOUT,msg,opt_exception)};goog.debug.Logger.prototype.severe=function(msg,opt_exception){this.log(goog.debug.Logger.Level.SEVERE,msg,opt_exception)};goog.debug.Logger.prototype.warning=function(msg,opt_exception){this.log(goog.debug.Logger.Level.WARNING,msg,opt_exception)};goog.debug.Logger.prototype.info=function(msg,opt_exception){this.log(goog.debug.Logger.Level.INFO,msg,opt_exception)}; | |
goog.debug.Logger.prototype.config=function(msg,opt_exception){this.log(goog.debug.Logger.Level.CONFIG,msg,opt_exception)};goog.debug.Logger.prototype.fine=function(msg,opt_exception){this.log(goog.debug.Logger.Level.FINE,msg,opt_exception)};goog.debug.Logger.prototype.finer=function(msg,opt_exception){this.log(goog.debug.Logger.Level.FINER,msg,opt_exception)};goog.debug.Logger.prototype.finest=function(msg,opt_exception){this.log(goog.debug.Logger.Level.FINEST,msg,opt_exception)}; | |
goog.debug.Logger.prototype.logRecord=function(logRecord){if(this.isLoggable(logRecord.getLevel()))this.doLogRecord_(logRecord)};goog.debug.Logger.prototype.doLogRecord_=function(logRecord){goog.debug.Logger.logToProfilers("log:"+logRecord.getMessage());if(goog.debug.Logger.ENABLE_HIERARCHY){var target=this;while(target){target.callPublish_(logRecord);target=target.getParent()}}else for(var i=0,handler;handler=goog.debug.Logger.rootHandlers_[i++];)handler(logRecord)}; | |
goog.debug.Logger.prototype.callPublish_=function(logRecord){if(this.handlers_)for(var i=0,handler;handler=this.handlers_[i];i++)handler(logRecord)};goog.debug.Logger.prototype.setParent_=function(parent){this.parent_=parent};goog.debug.Logger.prototype.addChild_=function(name,logger){this.getChildren()[name]=logger};goog.debug.LogManager={};goog.debug.LogManager.loggers_={};goog.debug.LogManager.rootLogger_=null; | |
goog.debug.LogManager.initialize=function(){if(!goog.debug.LogManager.rootLogger_){goog.debug.LogManager.rootLogger_=new goog.debug.Logger("");goog.debug.LogManager.loggers_[""]=goog.debug.LogManager.rootLogger_;goog.debug.LogManager.rootLogger_.setLevel(goog.debug.Logger.Level.CONFIG)}};goog.debug.LogManager.getLoggers=function(){return goog.debug.LogManager.loggers_};goog.debug.LogManager.getRoot=function(){goog.debug.LogManager.initialize();return goog.debug.LogManager.rootLogger_}; | |
goog.debug.LogManager.getLogger=function(name){goog.debug.LogManager.initialize();var ret=goog.debug.LogManager.loggers_[name];return ret||goog.debug.LogManager.createLogger_(name)};goog.debug.LogManager.createFunctionForCatchErrors=function(opt_logger){return function(info){var logger=opt_logger||goog.debug.LogManager.getRoot();logger.severe("Error: "+info.message+" ("+info.fileName+" @ Line: "+info.line+")")}}; | |
goog.debug.LogManager.createLogger_=function(name){var logger=new goog.debug.Logger(name);if(goog.debug.Logger.ENABLE_HIERARCHY){var lastDotIndex=name.lastIndexOf(".");var parentName=name.substr(0,lastDotIndex);var leafName=name.substr(lastDotIndex+1);var parentLogger=goog.debug.LogManager.getLogger(parentName);parentLogger.addChild_(leafName,logger);logger.setParent_(parentLogger)}goog.debug.LogManager.loggers_[name]=logger;return logger};goog.provide("goog.dom.SavedRange");goog.require("goog.Disposable");goog.require("goog.debug.Logger");goog.dom.SavedRange=function(){goog.Disposable.call(this)};goog.inherits(goog.dom.SavedRange,goog.Disposable);goog.dom.SavedRange.logger_=goog.debug.Logger.getLogger("goog.dom.SavedRange"); | |
goog.dom.SavedRange.prototype.restore=function(opt_stayAlive){if(this.isDisposed())goog.dom.SavedRange.logger_.severe("Disposed SavedRange objects cannot be restored.");var range=this.restoreInternal();if(!opt_stayAlive)this.dispose();return range};goog.dom.SavedRange.prototype.restoreInternal=goog.abstractMethod;goog.provide("goog.dom.SavedCaretRange");goog.require("goog.array");goog.require("goog.dom");goog.require("goog.dom.SavedRange");goog.require("goog.dom.TagName");goog.require("goog.string");goog.dom.SavedCaretRange=function(range){goog.dom.SavedRange.call(this);this.startCaretId_=goog.string.createUniqueString();this.endCaretId_=goog.string.createUniqueString();this.dom_=goog.dom.getDomHelper(range.getDocument());range.surroundWithNodes(this.createCaret_(true),this.createCaret_(false))}; | |
goog.inherits(goog.dom.SavedCaretRange,goog.dom.SavedRange);goog.dom.SavedCaretRange.prototype.toAbstractRange=function(){var range=null;var startCaret=this.getCaret(true);var endCaret=this.getCaret(false);if(startCaret&&endCaret)range=goog.dom.Range.createFromNodes(startCaret,0,endCaret,0);return range};goog.dom.SavedCaretRange.prototype.getCaret=function(start){return this.dom_.getElement(start?this.startCaretId_:this.endCaretId_)}; | |
goog.dom.SavedCaretRange.prototype.removeCarets=function(opt_range){goog.dom.removeNode(this.getCaret(true));goog.dom.removeNode(this.getCaret(false));return opt_range};goog.dom.SavedCaretRange.prototype.setRestorationDocument=function(doc){this.dom_.setDocument(doc)}; | |
goog.dom.SavedCaretRange.prototype.restoreInternal=function(){var range=null;var startCaret=this.getCaret(true);var endCaret=this.getCaret(false);if(startCaret&&endCaret){var startNode=startCaret.parentNode;var startOffset=goog.array.indexOf(startNode.childNodes,startCaret);var endNode=endCaret.parentNode;var endOffset=goog.array.indexOf(endNode.childNodes,endCaret);if(endNode==startNode)endOffset-=1;range=goog.dom.Range.createFromNodes(startNode,startOffset,endNode,endOffset);range=this.removeCarets(range); | |
range.select()}else this.removeCarets();return range};goog.dom.SavedCaretRange.prototype.disposeInternal=function(){this.removeCarets();this.dom_=null};goog.dom.SavedCaretRange.prototype.createCaret_=function(start){return this.dom_.createDom(goog.dom.TagName.SPAN,{"id":start?this.startCaretId_:this.endCaretId_})};goog.dom.SavedCaretRange.CARET_REGEX=/<span\s+id="?goog_\d+"?><\/span>/ig; | |
goog.dom.SavedCaretRange.htmlEqual=function(str1,str2){return str1==str2||str1.replace(goog.dom.SavedCaretRange.CARET_REGEX,"")==str2.replace(goog.dom.SavedCaretRange.CARET_REGEX,"")};goog.provide("goog.dom.AbstractRange");goog.provide("goog.dom.RangeIterator");goog.provide("goog.dom.RangeType");goog.require("goog.dom");goog.require("goog.dom.NodeType");goog.require("goog.dom.SavedCaretRange");goog.require("goog.dom.TagIterator");goog.require("goog.userAgent");goog.dom.RangeType={TEXT:"text",CONTROL:"control",MULTI:"mutli"};goog.dom.AbstractRange=function(){}; | |
goog.dom.AbstractRange.getBrowserSelectionForWindow=function(win){if(win.getSelection)return win.getSelection();else{var doc=win.document;var sel=doc.selection;if(sel){try{var range=sel.createRange();if(range.parentElement){if(range.parentElement().document!=doc)return null}else if(!range.length||range.item(0).document!=doc)return null}catch(e){return null}return sel}return null}};goog.dom.AbstractRange.isNativeControlRange=function(range){return!!range&&!!range.addElement}; | |
goog.dom.AbstractRange.prototype.clone=goog.abstractMethod;goog.dom.AbstractRange.prototype.getType=goog.abstractMethod;goog.dom.AbstractRange.prototype.getBrowserRangeObject=goog.abstractMethod;goog.dom.AbstractRange.prototype.setBrowserRangeObject=function(nativeRange){return false};goog.dom.AbstractRange.prototype.getTextRangeCount=goog.abstractMethod;goog.dom.AbstractRange.prototype.getTextRange=goog.abstractMethod; | |
goog.dom.AbstractRange.prototype.getTextRanges=function(){var output=[];for(var i=0,len=this.getTextRangeCount();i<len;i++)output.push(this.getTextRange(i));return output};goog.dom.AbstractRange.prototype.getContainer=goog.abstractMethod;goog.dom.AbstractRange.prototype.getContainerElement=function(){var node=this.getContainer();return node.nodeType==goog.dom.NodeType.ELEMENT?node:node.parentNode};goog.dom.AbstractRange.prototype.getStartNode=goog.abstractMethod; | |
goog.dom.AbstractRange.prototype.getStartOffset=goog.abstractMethod;goog.dom.AbstractRange.prototype.getEndNode=goog.abstractMethod;goog.dom.AbstractRange.prototype.getEndOffset=goog.abstractMethod;goog.dom.AbstractRange.prototype.getAnchorNode=function(){return this.isReversed()?this.getEndNode():this.getStartNode()};goog.dom.AbstractRange.prototype.getAnchorOffset=function(){return this.isReversed()?this.getEndOffset():this.getStartOffset()}; | |
goog.dom.AbstractRange.prototype.getFocusNode=function(){return this.isReversed()?this.getStartNode():this.getEndNode()};goog.dom.AbstractRange.prototype.getFocusOffset=function(){return this.isReversed()?this.getStartOffset():this.getEndOffset()};goog.dom.AbstractRange.prototype.isReversed=function(){return false};goog.dom.AbstractRange.prototype.getDocument=function(){return goog.dom.getOwnerDocument(goog.userAgent.IE?this.getContainer():this.getStartNode())}; | |
goog.dom.AbstractRange.prototype.getWindow=function(){return goog.dom.getWindow(this.getDocument())};goog.dom.AbstractRange.prototype.containsRange=goog.abstractMethod;goog.dom.AbstractRange.prototype.containsNode=function(node,opt_allowPartial){return this.containsRange(goog.dom.Range.createFromNodeContents(node),opt_allowPartial)};goog.dom.AbstractRange.prototype.isRangeInDocument=goog.abstractMethod;goog.dom.AbstractRange.prototype.isCollapsed=goog.abstractMethod; | |
goog.dom.AbstractRange.prototype.getText=goog.abstractMethod;goog.dom.AbstractRange.prototype.getHtmlFragment=goog.abstractMethod;goog.dom.AbstractRange.prototype.getValidHtml=goog.abstractMethod;goog.dom.AbstractRange.prototype.getPastableHtml=goog.abstractMethod;goog.dom.AbstractRange.prototype.__iterator__=goog.abstractMethod;goog.dom.AbstractRange.prototype.select=goog.abstractMethod;goog.dom.AbstractRange.prototype.removeContents=goog.abstractMethod; | |
goog.dom.AbstractRange.prototype.insertNode=goog.abstractMethod;goog.dom.AbstractRange.prototype.replaceContentsWithNode=function(node){if(!this.isCollapsed())this.removeContents();return this.insertNode(node,true)};goog.dom.AbstractRange.prototype.surroundWithNodes=goog.abstractMethod;goog.dom.AbstractRange.prototype.saveUsingDom=goog.abstractMethod;goog.dom.AbstractRange.prototype.saveUsingCarets=function(){return this.getStartNode()&&this.getEndNode()?new goog.dom.SavedCaretRange(this):null}; | |
goog.dom.AbstractRange.prototype.collapse=goog.abstractMethod;goog.dom.RangeIterator=function(node,opt_reverse){goog.dom.TagIterator.call(this,node,opt_reverse,true)};goog.inherits(goog.dom.RangeIterator,goog.dom.TagIterator);goog.dom.RangeIterator.prototype.getStartTextOffset=goog.abstractMethod;goog.dom.RangeIterator.prototype.getEndTextOffset=goog.abstractMethod;goog.dom.RangeIterator.prototype.getStartNode=goog.abstractMethod;goog.dom.RangeIterator.prototype.getEndNode=goog.abstractMethod; | |
goog.dom.RangeIterator.prototype.isLast=goog.abstractMethod;goog.provide("goog.dom.AbstractMultiRange");goog.require("goog.array");goog.require("goog.dom");goog.require("goog.dom.AbstractRange");goog.dom.AbstractMultiRange=function(){};goog.inherits(goog.dom.AbstractMultiRange,goog.dom.AbstractRange); | |
goog.dom.AbstractMultiRange.prototype.containsRange=function(otherRange,opt_allowPartial){var ranges=this.getTextRanges();var otherRanges=otherRange.getTextRanges();var fn=opt_allowPartial?goog.array.some:goog.array.every;return fn(otherRanges,function(otherRange){return goog.array.some(ranges,function(range){return range.containsRange(otherRange,opt_allowPartial)})})}; | |
goog.dom.AbstractMultiRange.prototype.insertNode=function(node,before){if(before)goog.dom.insertSiblingBefore(node,this.getStartNode());else goog.dom.insertSiblingAfter(node,this.getEndNode());return node};goog.dom.AbstractMultiRange.prototype.surroundWithNodes=function(startNode,endNode){this.insertNode(startNode,true);this.insertNode(endNode,false)};goog.provide("goog.dom.TextRangeIterator");goog.require("goog.array");goog.require("goog.dom.NodeType");goog.require("goog.dom.RangeIterator");goog.require("goog.dom.TagName");goog.require("goog.iter.StopIteration"); | |
goog.dom.TextRangeIterator=function(startNode,startOffset,endNode,endOffset,opt_reverse){var goNext;if(startNode){this.startNode_=startNode;this.startOffset_=startOffset;this.endNode_=endNode;this.endOffset_=endOffset;if(startNode.nodeType==goog.dom.NodeType.ELEMENT&&startNode.tagName!=goog.dom.TagName.BR){var startChildren=startNode.childNodes;var candidate=startChildren[startOffset];if(candidate){this.startNode_=candidate;this.startOffset_=0}else{if(startChildren.length)this.startNode_=goog.array.peek(startChildren); | |
goNext=true}}if(endNode.nodeType==goog.dom.NodeType.ELEMENT){this.endNode_=endNode.childNodes[endOffset];if(this.endNode_)this.endOffset_=0;else this.endNode_=endNode}}goog.dom.RangeIterator.call(this,opt_reverse?this.endNode_:this.startNode_,opt_reverse);if(goNext)try{this.next()}catch(e){if(e!=goog.iter.StopIteration)throw e;}};goog.inherits(goog.dom.TextRangeIterator,goog.dom.RangeIterator);goog.dom.TextRangeIterator.prototype.startNode_=null;goog.dom.TextRangeIterator.prototype.endNode_=null; | |
goog.dom.TextRangeIterator.prototype.startOffset_=0;goog.dom.TextRangeIterator.prototype.endOffset_=0;goog.dom.TextRangeIterator.prototype.getStartTextOffset=function(){return this.node.nodeType!=goog.dom.NodeType.TEXT?-1:this.node==this.startNode_?this.startOffset_:0};goog.dom.TextRangeIterator.prototype.getEndTextOffset=function(){return this.node.nodeType!=goog.dom.NodeType.TEXT?-1:this.node==this.endNode_?this.endOffset_:this.node.nodeValue.length}; | |
goog.dom.TextRangeIterator.prototype.getStartNode=function(){return this.startNode_};goog.dom.TextRangeIterator.prototype.setStartNode=function(node){if(!this.isStarted())this.setPosition(node);this.startNode_=node;this.startOffset_=0};goog.dom.TextRangeIterator.prototype.getEndNode=function(){return this.endNode_};goog.dom.TextRangeIterator.prototype.setEndNode=function(node){this.endNode_=node;this.endOffset_=0}; | |
goog.dom.TextRangeIterator.prototype.isLast=function(){return this.isStarted()&&this.node==this.endNode_&&(!this.endOffset_||!this.isStartTag())};goog.dom.TextRangeIterator.prototype.next=function(){if(this.isLast())throw goog.iter.StopIteration;return goog.dom.TextRangeIterator.superClass_.next.call(this)};goog.dom.TextRangeIterator.prototype.skipTag=function(){goog.dom.TextRangeIterator.superClass_.skipTag.apply(this);if(goog.dom.contains(this.node,this.endNode_))throw goog.iter.StopIteration;}; | |
goog.dom.TextRangeIterator.prototype.copyFrom=function(other){this.startNode_=other.startNode_;this.endNode_=other.endNode_;this.startOffset_=other.startOffset_;this.endOffset_=other.endOffset_;this.isReversed_=other.isReversed_;goog.dom.TextRangeIterator.superClass_.copyFrom.call(this,other)};goog.dom.TextRangeIterator.prototype.clone=function(){var copy=new goog.dom.TextRangeIterator(this.startNode_,this.startOffset_,this.endNode_,this.endOffset_,this.isReversed_);copy.copyFrom(this);return copy};goog.provide("goog.dom.RangeEndpoint");goog.dom.RangeEndpoint={START:1,END:0};goog.provide("goog.userAgent.jscript");goog.require("goog.string");goog.userAgent.jscript.ASSUME_NO_JSCRIPT=false; | |
goog.userAgent.jscript.init_=function(){var hasScriptEngine="ScriptEngine"in goog.global;goog.userAgent.jscript.DETECTED_HAS_JSCRIPT_=hasScriptEngine&&goog.global["ScriptEngine"]()=="JScript";goog.userAgent.jscript.DETECTED_VERSION_=goog.userAgent.jscript.DETECTED_HAS_JSCRIPT_?goog.global["ScriptEngineMajorVersion"]()+"."+goog.global["ScriptEngineMinorVersion"]()+"."+goog.global["ScriptEngineBuildVersion"]():"0"};if(!goog.userAgent.jscript.ASSUME_NO_JSCRIPT)goog.userAgent.jscript.init_(); | |
goog.userAgent.jscript.HAS_JSCRIPT=goog.userAgent.jscript.ASSUME_NO_JSCRIPT?false:goog.userAgent.jscript.DETECTED_HAS_JSCRIPT_;goog.userAgent.jscript.VERSION=goog.userAgent.jscript.ASSUME_NO_JSCRIPT?"0":goog.userAgent.jscript.DETECTED_VERSION_;goog.userAgent.jscript.isVersion=function(version){return goog.string.compareVersions(goog.userAgent.jscript.VERSION,version)>=0};goog.provide("goog.string.StringBuffer");goog.require("goog.userAgent.jscript");goog.string.StringBuffer=function(opt_a1,var_args){this.buffer_=goog.userAgent.jscript.HAS_JSCRIPT?[]:"";if(opt_a1!=null)this.append.apply(this,arguments)};goog.string.StringBuffer.prototype.set=function(s){this.clear();this.append(s)}; | |
if(goog.userAgent.jscript.HAS_JSCRIPT){goog.string.StringBuffer.prototype.bufferLength_=0;goog.string.StringBuffer.prototype.append=function(a1,opt_a2,var_args){if(opt_a2==null)this.buffer_[this.bufferLength_++]=a1;else{this.buffer_.push.apply(this.buffer_,arguments);this.bufferLength_=this.buffer_.length}return this}}else goog.string.StringBuffer.prototype.append=function(a1,opt_a2,var_args){this.buffer_+=a1;if(opt_a2!=null)for(var i=1;i<arguments.length;i++)this.buffer_+=arguments[i];return this}; | |
goog.string.StringBuffer.prototype.clear=function(){if(goog.userAgent.jscript.HAS_JSCRIPT){this.buffer_.length=0;this.bufferLength_=0}else this.buffer_=""};goog.string.StringBuffer.prototype.getLength=function(){return this.toString().length};goog.string.StringBuffer.prototype.toString=function(){if(goog.userAgent.jscript.HAS_JSCRIPT){var str=this.buffer_.join("");this.clear();if(str)this.append(str);return str}else return this.buffer_};goog.provide("goog.dom.browserrange.AbstractRange");goog.require("goog.dom");goog.require("goog.dom.NodeType");goog.require("goog.dom.RangeEndpoint");goog.require("goog.dom.TagName");goog.require("goog.dom.TextRangeIterator");goog.require("goog.iter");goog.require("goog.string");goog.require("goog.string.StringBuffer");goog.require("goog.userAgent");goog.dom.browserrange.AbstractRange=function(){};goog.dom.browserrange.AbstractRange.prototype.clone=goog.abstractMethod; | |
goog.dom.browserrange.AbstractRange.prototype.getBrowserRange=goog.abstractMethod;goog.dom.browserrange.AbstractRange.prototype.getContainer=goog.abstractMethod;goog.dom.browserrange.AbstractRange.prototype.getStartNode=goog.abstractMethod;goog.dom.browserrange.AbstractRange.prototype.getStartOffset=goog.abstractMethod;goog.dom.browserrange.AbstractRange.prototype.getEndNode=goog.abstractMethod;goog.dom.browserrange.AbstractRange.prototype.getEndOffset=goog.abstractMethod; | |
goog.dom.browserrange.AbstractRange.prototype.compareBrowserRangeEndpoints=goog.abstractMethod; | |
goog.dom.browserrange.AbstractRange.prototype.containsRange=function(abstractRange,opt_allowPartial){var checkPartial=opt_allowPartial&&!abstractRange.isCollapsed();var range=abstractRange.getBrowserRange();var start=goog.dom.RangeEndpoint.START,end=goog.dom.RangeEndpoint.END;try{if(checkPartial)return this.compareBrowserRangeEndpoints(range,end,start)>=0&&this.compareBrowserRangeEndpoints(range,start,end)<=0;else return this.compareBrowserRangeEndpoints(range,end,end)>=0&&this.compareBrowserRangeEndpoints(range, | |
start,start)<=0}catch(e){if(!goog.userAgent.IE)throw e;return false}};goog.dom.browserrange.AbstractRange.prototype.containsNode=function(node,opt_allowPartial){return this.containsRange(goog.dom.browserrange.createRangeFromNodeContents(node),opt_allowPartial)};goog.dom.browserrange.AbstractRange.prototype.isCollapsed=goog.abstractMethod;goog.dom.browserrange.AbstractRange.prototype.getText=goog.abstractMethod; | |
goog.dom.browserrange.AbstractRange.prototype.getHtmlFragment=function(){var output=new goog.string.StringBuffer;goog.iter.forEach(this,function(node,ignore,it){if(node.nodeType==goog.dom.NodeType.TEXT)output.append(goog.string.htmlEscape(node.nodeValue.substring(it.getStartTextOffset(),it.getEndTextOffset())));else if(node.nodeType==goog.dom.NodeType.ELEMENT)if(it.isEndTag()){if(goog.dom.canHaveChildren(node))output.append("</"+node.tagName+">")}else{var shallow=node.cloneNode(false);var html=goog.dom.getOuterHtml(shallow); | |
if(goog.userAgent.IE&&node.tagName==goog.dom.TagName.LI)output.append(html);else{var index=html.lastIndexOf("<");output.append(index?html.substr(0,index):html)}}},this);return output.toString()};goog.dom.browserrange.AbstractRange.prototype.getValidHtml=goog.abstractMethod;goog.dom.browserrange.AbstractRange.prototype.__iterator__=function(opt_keys){return new goog.dom.TextRangeIterator(this.getStartNode(),this.getStartOffset(),this.getEndNode(),this.getEndOffset())}; | |
goog.dom.browserrange.AbstractRange.prototype.select=goog.abstractMethod;goog.dom.browserrange.AbstractRange.prototype.removeContents=goog.abstractMethod;goog.dom.browserrange.AbstractRange.prototype.surroundContents=goog.abstractMethod;goog.dom.browserrange.AbstractRange.prototype.insertNode=goog.abstractMethod;goog.dom.browserrange.AbstractRange.prototype.surroundWithNodes=goog.abstractMethod;goog.dom.browserrange.AbstractRange.prototype.collapse=goog.abstractMethod;goog.provide("goog.dom.browserrange.W3cRange");goog.require("goog.dom");goog.require("goog.dom.NodeType");goog.require("goog.dom.RangeEndpoint");goog.require("goog.dom.browserrange.AbstractRange");goog.require("goog.string");goog.dom.browserrange.W3cRange=function(range){this.range_=range};goog.inherits(goog.dom.browserrange.W3cRange,goog.dom.browserrange.AbstractRange); | |
goog.dom.browserrange.W3cRange.getBrowserRangeForNode=function(node){var nodeRange=goog.dom.getOwnerDocument(node).createRange();if(node.nodeType==goog.dom.NodeType.TEXT){nodeRange.setStart(node,0);nodeRange.setEnd(node,node.length)}else if(!goog.dom.browserrange.canContainRangeEndpoint(node)){var rangeParent=node.parentNode;var rangeStartOffset=goog.array.indexOf(rangeParent.childNodes,node);nodeRange.setStart(rangeParent,rangeStartOffset);nodeRange.setEnd(rangeParent,rangeStartOffset+1)}else{var tempNode, | |
leaf=node;while((tempNode=leaf.firstChild)&&goog.dom.browserrange.canContainRangeEndpoint(tempNode))leaf=tempNode;nodeRange.setStart(leaf,0);leaf=node;while((tempNode=leaf.lastChild)&&goog.dom.browserrange.canContainRangeEndpoint(tempNode))leaf=tempNode;nodeRange.setEnd(leaf,leaf.nodeType==goog.dom.NodeType.ELEMENT?leaf.childNodes.length:leaf.length)}return nodeRange}; | |
goog.dom.browserrange.W3cRange.getBrowserRangeForNodes=function(startNode,startOffset,endNode,endOffset){var nodeRange=goog.dom.getOwnerDocument(startNode).createRange();nodeRange.setStart(startNode,startOffset);nodeRange.setEnd(endNode,endOffset);return nodeRange};goog.dom.browserrange.W3cRange.createFromNodeContents=function(node){return new goog.dom.browserrange.W3cRange(goog.dom.browserrange.W3cRange.getBrowserRangeForNode(node))}; | |
goog.dom.browserrange.W3cRange.createFromNodes=function(startNode,startOffset,endNode,endOffset){return new goog.dom.browserrange.W3cRange(goog.dom.browserrange.W3cRange.getBrowserRangeForNodes(startNode,startOffset,endNode,endOffset))};goog.dom.browserrange.W3cRange.prototype.clone=function(){return new this.constructor(this.range_.cloneRange())};goog.dom.browserrange.W3cRange.prototype.getBrowserRange=function(){return this.range_};goog.dom.browserrange.W3cRange.prototype.getContainer=function(){return this.range_.commonAncestorContainer}; | |
goog.dom.browserrange.W3cRange.prototype.getStartNode=function(){return this.range_.startContainer};goog.dom.browserrange.W3cRange.prototype.getStartOffset=function(){return this.range_.startOffset};goog.dom.browserrange.W3cRange.prototype.getEndNode=function(){return this.range_.endContainer};goog.dom.browserrange.W3cRange.prototype.getEndOffset=function(){return this.range_.endOffset}; | |
goog.dom.browserrange.W3cRange.prototype.compareBrowserRangeEndpoints=function(range,thisEndpoint,otherEndpoint){return this.range_.compareBoundaryPoints(otherEndpoint==goog.dom.RangeEndpoint.START?thisEndpoint==goog.dom.RangeEndpoint.START?goog.global["Range"].START_TO_START:goog.global["Range"].START_TO_END:thisEndpoint==goog.dom.RangeEndpoint.START?goog.global["Range"].END_TO_START:goog.global["Range"].END_TO_END,range)};goog.dom.browserrange.W3cRange.prototype.isCollapsed=function(){return this.range_.collapsed}; | |
goog.dom.browserrange.W3cRange.prototype.getText=function(){return this.range_.toString()}; | |
goog.dom.browserrange.W3cRange.prototype.getValidHtml=function(){var div=goog.dom.getDomHelper(this.range_.startContainer).createDom("div");div.appendChild(this.range_.cloneContents());var result=div.innerHTML;if(goog.string.startsWith(result,"<")||!this.isCollapsed()&&!goog.string.contains(result,"<"))return result;var container=this.getContainer();container=container.nodeType==goog.dom.NodeType.ELEMENT?container:container.parentNode;var html=goog.dom.getOuterHtml(container.cloneNode(false));return html.replace(">", | |
">"+result)};goog.dom.browserrange.W3cRange.prototype.select=function(reverse){var win=goog.dom.getWindow(goog.dom.getOwnerDocument(this.getStartNode()));this.selectInternal(win.getSelection(),reverse)};goog.dom.browserrange.W3cRange.prototype.selectInternal=function(selection,reverse){selection.removeAllRanges();selection.addRange(this.range_)}; | |
goog.dom.browserrange.W3cRange.prototype.removeContents=function(){var range=this.range_;range.extractContents();if(range.startContainer.hasChildNodes()){var rangeStartContainer=range.startContainer.childNodes[range.startOffset];if(rangeStartContainer){var rangePrevious=rangeStartContainer.previousSibling;if(goog.dom.getRawTextContent(rangeStartContainer)=="")goog.dom.removeNode(rangeStartContainer);if(rangePrevious&&goog.dom.getRawTextContent(rangePrevious)=="")goog.dom.removeNode(rangePrevious)}}}; | |
goog.dom.browserrange.W3cRange.prototype.surroundContents=function(element){this.range_.surroundContents(element);return element};goog.dom.browserrange.W3cRange.prototype.insertNode=function(node,before){var range=this.range_.cloneRange();range.collapse(before);range.insertNode(node);range.detach();return node}; | |
goog.dom.browserrange.W3cRange.prototype.surroundWithNodes=function(startNode,endNode){var win=goog.dom.getWindow(goog.dom.getOwnerDocument(this.getStartNode()));var selectionRange=goog.dom.Range.createFromWindow(win);if(selectionRange){var sNode=selectionRange.getStartNode();var eNode=selectionRange.getEndNode();var sOffset=selectionRange.getStartOffset();var eOffset=selectionRange.getEndOffset()}var clone1=this.range_.cloneRange();var clone2=this.range_.cloneRange();clone1.collapse(false);clone2.collapse(true); | |
clone1.insertNode(endNode);clone2.insertNode(startNode);clone1.detach();clone2.detach();if(selectionRange){var isInsertedNode=function(n){return n==startNode||n==endNode};if(sNode.nodeType==goog.dom.NodeType.TEXT)while(sOffset>sNode.length){sOffset-=sNode.length;do sNode=sNode.nextSibling;while(isInsertedNode(sNode))}if(eNode.nodeType==goog.dom.NodeType.TEXT)while(eOffset>eNode.length){eOffset-=eNode.length;do eNode=eNode.nextSibling;while(isInsertedNode(eNode))}goog.dom.Range.createFromNodes(sNode, | |
sOffset,eNode,eOffset).select()}};goog.dom.browserrange.W3cRange.prototype.collapse=function(toStart){this.range_.collapse(toStart)};goog.provide("goog.dom.browserrange.GeckoRange");goog.require("goog.dom.browserrange.W3cRange");goog.dom.browserrange.GeckoRange=function(range){goog.dom.browserrange.W3cRange.call(this,range)};goog.inherits(goog.dom.browserrange.GeckoRange,goog.dom.browserrange.W3cRange);goog.dom.browserrange.GeckoRange.createFromNodeContents=function(node){return new goog.dom.browserrange.GeckoRange(goog.dom.browserrange.W3cRange.getBrowserRangeForNode(node))}; | |
goog.dom.browserrange.GeckoRange.createFromNodes=function(startNode,startOffset,endNode,endOffset){return new goog.dom.browserrange.GeckoRange(goog.dom.browserrange.W3cRange.getBrowserRangeForNodes(startNode,startOffset,endNode,endOffset))}; | |
goog.dom.browserrange.GeckoRange.prototype.selectInternal=function(selection,reversed){var anchorNode=reversed?this.getEndNode():this.getStartNode();var anchorOffset=reversed?this.getEndOffset():this.getStartOffset();var focusNode=reversed?this.getStartNode():this.getEndNode();var focusOffset=reversed?this.getStartOffset():this.getEndOffset();selection.collapse(anchorNode,anchorOffset);if(anchorNode!=focusNode||anchorOffset!=focusOffset)selection.extend(focusNode,focusOffset)};goog.provide("goog.dom.browserrange.IeRange");goog.require("goog.array");goog.require("goog.debug.Logger");goog.require("goog.dom");goog.require("goog.dom.NodeIterator");goog.require("goog.dom.NodeType");goog.require("goog.dom.RangeEndpoint");goog.require("goog.dom.TagName");goog.require("goog.dom.browserrange.AbstractRange");goog.require("goog.iter");goog.require("goog.iter.StopIteration");goog.require("goog.string");goog.dom.browserrange.IeRange=function(range,doc){this.range_=range;this.doc_=doc}; | |
goog.inherits(goog.dom.browserrange.IeRange,goog.dom.browserrange.AbstractRange);goog.dom.browserrange.IeRange.logger_=goog.debug.Logger.getLogger("goog.dom.browserrange.IeRange"); | |
goog.dom.browserrange.IeRange.getBrowserRangeForNode_=function(node){var nodeRange=goog.dom.getOwnerDocument(node).body.createTextRange();if(node.nodeType==goog.dom.NodeType.ELEMENT){nodeRange.moveToElementText(node);if(goog.dom.browserrange.canContainRangeEndpoint(node)&&!node.childNodes.length)nodeRange.collapse(false)}else{var offset=0;var sibling=node;while(sibling=sibling.previousSibling){var nodeType=sibling.nodeType;if(nodeType==goog.dom.NodeType.TEXT)offset+=sibling.length;else if(nodeType== | |
goog.dom.NodeType.ELEMENT){nodeRange.moveToElementText(sibling);break}}if(!sibling)nodeRange.moveToElementText(node.parentNode);nodeRange.collapse(!sibling);if(offset)nodeRange.move("character",offset);nodeRange.moveEnd("character",node.length)}return nodeRange}; | |
goog.dom.browserrange.IeRange.getBrowserRangeForNodes_=function(startNode,startOffset,endNode,endOffset){var child,collapse=false;if(startNode.nodeType==goog.dom.NodeType.ELEMENT){if(startOffset>startNode.childNodes.length)goog.dom.browserrange.IeRange.logger_.severe("Cannot have startOffset > startNode child count");child=startNode.childNodes[startOffset];collapse=!child;startNode=child||startNode.lastChild||startNode;startOffset=0}var leftRange=goog.dom.browserrange.IeRange.getBrowserRangeForNode_(startNode); | |
if(startOffset)leftRange.move("character",startOffset);if(startNode==endNode&&startOffset==endOffset){leftRange.collapse(true);return leftRange}if(collapse)leftRange.collapse(false);collapse=false;if(endNode.nodeType==goog.dom.NodeType.ELEMENT){if(endOffset>endNode.childNodes.length)goog.dom.browserrange.IeRange.logger_.severe("Cannot have endOffset > endNode child count");child=endNode.childNodes[endOffset];endNode=child||endNode.lastChild||endNode;endOffset=0;collapse=!child}var rightRange=goog.dom.browserrange.IeRange.getBrowserRangeForNode_(endNode); | |
rightRange.collapse(!collapse);if(endOffset)rightRange.moveEnd("character",endOffset);leftRange.setEndPoint("EndToEnd",rightRange);return leftRange}; | |
goog.dom.browserrange.IeRange.createFromNodeContents=function(node){var range=new goog.dom.browserrange.IeRange(goog.dom.browserrange.IeRange.getBrowserRangeForNode_(node),goog.dom.getOwnerDocument(node));if(!goog.dom.browserrange.canContainRangeEndpoint(node)){range.startNode_=range.endNode_=range.parentNode_=node.parentNode;range.startOffset_=goog.array.indexOf(range.parentNode_.childNodes,node);range.endOffset_=range.startOffset_+1}else{var tempNode,leaf=node;while((tempNode=leaf.firstChild)&& | |
goog.dom.browserrange.canContainRangeEndpoint(tempNode))leaf=tempNode;range.startNode_=leaf;range.startOffset_=0;leaf=node;while((tempNode=leaf.lastChild)&&goog.dom.browserrange.canContainRangeEndpoint(tempNode))leaf=tempNode;range.endNode_=leaf;range.endOffset_=leaf.nodeType==goog.dom.NodeType.ELEMENT?leaf.childNodes.length:leaf.length;range.parentNode_=node}return range}; | |
goog.dom.browserrange.IeRange.createFromNodes=function(startNode,startOffset,endNode,endOffset){var range=new goog.dom.browserrange.IeRange(goog.dom.browserrange.IeRange.getBrowserRangeForNodes_(startNode,startOffset,endNode,endOffset),goog.dom.getOwnerDocument(startNode));range.startNode_=startNode;range.startOffset_=startOffset;range.endNode_=endNode;range.endOffset_=endOffset;return range};goog.dom.browserrange.IeRange.prototype.parentNode_=null; | |
goog.dom.browserrange.IeRange.prototype.startNode_=null;goog.dom.browserrange.IeRange.prototype.endNode_=null;goog.dom.browserrange.IeRange.prototype.startOffset_=-1;goog.dom.browserrange.IeRange.prototype.endOffset_=-1;goog.dom.browserrange.IeRange.prototype.clone=function(){var range=new goog.dom.browserrange.IeRange(this.range_.duplicate(),this.doc_);range.parentNode_=this.parentNode_;range.startNode_=this.startNode_;range.endNode_=this.endNode_;return range}; | |
goog.dom.browserrange.IeRange.prototype.getBrowserRange=function(){return this.range_};goog.dom.browserrange.IeRange.prototype.clearCachedValues_=function(){this.parentNode_=this.startNode_=this.endNode_=null;this.startOffset_=this.endOffset_=-1}; | |
goog.dom.browserrange.IeRange.prototype.getContainer=function(){if(!this.parentNode_){var selectText=this.range_.text;var range=this.range_.duplicate();var rightTrimmedSelectText=selectText.replace(/ +$/,"");var numSpacesAtEnd=selectText.length-rightTrimmedSelectText.length;if(numSpacesAtEnd)range.moveEnd("character",-numSpacesAtEnd);var parent=range.parentElement();var htmlText=range.htmlText;var htmlTextLen=goog.string.stripNewlines(htmlText).length;if(this.isCollapsed()&&htmlTextLen>0)return this.parentNode_= | |
parent;while(htmlTextLen>goog.string.stripNewlines(parent.outerHTML).length)parent=parent.parentNode;while(parent.childNodes.length==1&&parent.innerText==goog.dom.browserrange.IeRange.getNodeText_(parent.firstChild)){if(!goog.dom.browserrange.canContainRangeEndpoint(parent.firstChild))break;parent=parent.firstChild}if(selectText.length==0)parent=this.findDeepestContainer_(parent);this.parentNode_=parent}return this.parentNode_}; | |
goog.dom.browserrange.IeRange.prototype.findDeepestContainer_=function(node){var childNodes=node.childNodes;for(var i=0,len=childNodes.length;i<len;i++){var child=childNodes[i];if(goog.dom.browserrange.canContainRangeEndpoint(child)){var childRange=goog.dom.browserrange.IeRange.getBrowserRangeForNode_(child);var start=goog.dom.RangeEndpoint.START;var end=goog.dom.RangeEndpoint.END;var isChildRangeErratic=childRange.htmlText!=child.outerHTML;var isNativeInRangeErratic=this.isCollapsed()&&isChildRangeErratic; | |
var inChildRange=isNativeInRangeErratic?this.compareBrowserRangeEndpoints(childRange,start,start)>=0&&this.compareBrowserRangeEndpoints(childRange,start,end)<=0:this.range_.inRange(childRange);if(inChildRange)return this.findDeepestContainer_(child)}}return node};goog.dom.browserrange.IeRange.prototype.getStartNode=function(){if(!this.startNode_){this.startNode_=this.getEndpointNode_(goog.dom.RangeEndpoint.START);if(this.isCollapsed())this.endNode_=this.startNode_}return this.startNode_}; | |
goog.dom.browserrange.IeRange.prototype.getStartOffset=function(){if(this.startOffset_<0){this.startOffset_=this.getOffset_(goog.dom.RangeEndpoint.START);if(this.isCollapsed())this.endOffset_=this.startOffset_}return this.startOffset_};goog.dom.browserrange.IeRange.prototype.getEndNode=function(){if(this.isCollapsed())return this.getStartNode();if(!this.endNode_)this.endNode_=this.getEndpointNode_(goog.dom.RangeEndpoint.END);return this.endNode_}; | |
goog.dom.browserrange.IeRange.prototype.getEndOffset=function(){if(this.isCollapsed())return this.getStartOffset();if(this.endOffset_<0){this.endOffset_=this.getOffset_(goog.dom.RangeEndpoint.END);if(this.isCollapsed())this.startOffset_=this.endOffset_}return this.endOffset_}; | |
goog.dom.browserrange.IeRange.prototype.compareBrowserRangeEndpoints=function(range,thisEndpoint,otherEndpoint){return this.range_.compareEndPoints((thisEndpoint==goog.dom.RangeEndpoint.START?"Start":"End")+"To"+(otherEndpoint==goog.dom.RangeEndpoint.START?"Start":"End"),range)}; | |
goog.dom.browserrange.IeRange.prototype.getEndpointNode_=function(endpoint,opt_node){var node=opt_node||this.getContainer();if(!node||!node.firstChild)return node;var start=goog.dom.RangeEndpoint.START,end=goog.dom.RangeEndpoint.END;var isStartEndpoint=endpoint==start;for(var j=0,length=node.childNodes.length;j<length;j++){var i=isStartEndpoint?j:length-j-1;var child=node.childNodes[i];var childRange;try{childRange=goog.dom.browserrange.createRangeFromNodeContents(child)}catch(e){continue}var ieRange= | |
childRange.getBrowserRange();if(this.isCollapsed())if(!goog.dom.browserrange.canContainRangeEndpoint(child)){if(this.compareBrowserRangeEndpoints(ieRange,start,start)==0){this.startOffset_=this.endOffset_=i;return node}}else{if(childRange.containsRange(this))return this.getEndpointNode_(endpoint,child)}else if(this.containsRange(childRange)){if(!goog.dom.browserrange.canContainRangeEndpoint(child)){if(isStartEndpoint)this.startOffset_=i;else this.endOffset_=i+1;return node}return this.getEndpointNode_(endpoint, | |
child)}else if(this.compareBrowserRangeEndpoints(ieRange,start,end)<0&&this.compareBrowserRangeEndpoints(ieRange,end,start)>0)return this.getEndpointNode_(endpoint,child)}return node};goog.dom.browserrange.IeRange.prototype.compareNodeEndpoints_=function(node,thisEndpoint,otherEndpoint){return this.range_.compareEndPoints((thisEndpoint==goog.dom.RangeEndpoint.START?"Start":"End")+"To"+(otherEndpoint==goog.dom.RangeEndpoint.START?"Start":"End"),goog.dom.browserrange.createRangeFromNodeContents(node).getBrowserRange())}; | |
goog.dom.browserrange.IeRange.prototype.getOffset_=function(endpoint,opt_container){var isStartEndpoint=endpoint==goog.dom.RangeEndpoint.START;var container=opt_container||(isStartEndpoint?this.getStartNode():this.getEndNode());if(container.nodeType==goog.dom.NodeType.ELEMENT){var children=container.childNodes;var len=children.length;var edge=isStartEndpoint?0:len-1;var sign=isStartEndpoint?1:-1;for(var i=edge;i>=0&&i<len;i+=sign){var child=children[i];if(goog.dom.browserrange.canContainRangeEndpoint(child))continue; | |
var endPointCompare=this.compareNodeEndpoints_(child,endpoint,endpoint);if(endPointCompare==0)return isStartEndpoint?i:i+1}return i==-1?0:i}else{var range=this.range_.duplicate();var nodeRange=goog.dom.browserrange.IeRange.getBrowserRangeForNode_(container);range.setEndPoint(isStartEndpoint?"EndToEnd":"StartToStart",nodeRange);var rangeLength=range.text.length;return isStartEndpoint?container.length-rangeLength:rangeLength}}; | |
goog.dom.browserrange.IeRange.getNodeText_=function(node){return node.nodeType==goog.dom.NodeType.TEXT?node.nodeValue:node.innerText};goog.dom.browserrange.IeRange.prototype.isRangeInDocument=function(){var range=this.doc_.body.createTextRange();range.moveToElementText(this.doc_.body);return this.containsRange(new goog.dom.browserrange.IeRange(range,this.doc_),true)};goog.dom.browserrange.IeRange.prototype.isCollapsed=function(){return this.range_.compareEndPoints("StartToEnd",this.range_)==0}; | |
goog.dom.browserrange.IeRange.prototype.getText=function(){return this.range_.text};goog.dom.browserrange.IeRange.prototype.getValidHtml=function(){return this.range_.htmlText};goog.dom.browserrange.IeRange.prototype.select=function(opt_reverse){this.range_.select()}; | |
goog.dom.browserrange.IeRange.prototype.removeContents=function(){if(!this.isCollapsed()&&this.range_.htmlText){var startNode=this.getStartNode();var endNode=this.getEndNode();var oldText=this.range_.text;var clone=this.range_.duplicate();clone.moveStart("character",1);clone.moveStart("character",-1);if(clone.text==oldText)this.range_=clone;this.range_.text="";this.clearCachedValues_();var newStartNode=this.getStartNode();var newStartOffset=this.getStartOffset();try{var sibling=startNode.nextSibling; | |
if(startNode==endNode&&startNode.parentNode&&startNode.nodeType==goog.dom.NodeType.TEXT&&sibling&&sibling.nodeType==goog.dom.NodeType.TEXT){startNode.nodeValue+=sibling.nodeValue;goog.dom.removeNode(sibling);this.range_=goog.dom.browserrange.IeRange.getBrowserRangeForNode_(newStartNode);this.range_.move("character",newStartOffset);this.clearCachedValues_()}}catch(e){}}};goog.dom.browserrange.IeRange.getDomHelper_=function(range){return goog.dom.getDomHelper(range.parentElement())}; | |
goog.dom.browserrange.IeRange.pasteElement_=function(range,element,opt_domHelper){opt_domHelper=opt_domHelper||goog.dom.browserrange.IeRange.getDomHelper_(range);var id;var originalId=id=element.id;if(!id)id=element.id=goog.string.createUniqueString();range.pasteHTML(element.outerHTML);element=opt_domHelper.getElement(id);if(element)if(!originalId)element.removeAttribute("id");return element}; | |
goog.dom.browserrange.IeRange.prototype.surroundContents=function(element){goog.dom.removeNode(element);element.innerHTML=this.range_.htmlText;element=goog.dom.browserrange.IeRange.pasteElement_(this.range_,element);if(element)this.range_.moveToElementText(element);this.clearCachedValues_();return element}; | |
goog.dom.browserrange.IeRange.insertNode_=function(clone,node,before,opt_domHelper){opt_domHelper=opt_domHelper||goog.dom.browserrange.IeRange.getDomHelper_(clone);var isNonElement;if(node.nodeType!=goog.dom.NodeType.ELEMENT){isNonElement=true;node=opt_domHelper.createDom(goog.dom.TagName.DIV,null,node)}clone.collapse(before);node=goog.dom.browserrange.IeRange.pasteElement_(clone,node,opt_domHelper);if(isNonElement){var newNonElement=node.firstChild;opt_domHelper.flattenElement(node);node=newNonElement}return node}; | |
goog.dom.browserrange.IeRange.prototype.insertNode=function(node,before){var output=goog.dom.browserrange.IeRange.insertNode_(this.range_.duplicate(),node,before);this.clearCachedValues_();return output};goog.dom.browserrange.IeRange.prototype.surroundWithNodes=function(startNode,endNode){var clone1=this.range_.duplicate();var clone2=this.range_.duplicate();goog.dom.browserrange.IeRange.insertNode_(clone1,startNode,true);goog.dom.browserrange.IeRange.insertNode_(clone2,endNode,false);this.clearCachedValues_()}; | |
goog.dom.browserrange.IeRange.prototype.collapse=function(toStart){this.range_.collapse(toStart);if(toStart){this.endNode_=this.startNode_;this.endOffset_=this.startOffset_}else{this.startNode_=this.endNode_;this.startOffset_=this.endOffset_}};goog.provide("goog.dom.browserrange.OperaRange");goog.require("goog.dom.browserrange.W3cRange");goog.dom.browserrange.OperaRange=function(range){goog.dom.browserrange.W3cRange.call(this,range)};goog.inherits(goog.dom.browserrange.OperaRange,goog.dom.browserrange.W3cRange);goog.dom.browserrange.OperaRange.createFromNodeContents=function(node){return new goog.dom.browserrange.OperaRange(goog.dom.browserrange.W3cRange.getBrowserRangeForNode(node))}; | |
goog.dom.browserrange.OperaRange.createFromNodes=function(startNode,startOffset,endNode,endOffset){return new goog.dom.browserrange.OperaRange(goog.dom.browserrange.W3cRange.getBrowserRangeForNodes(startNode,startOffset,endNode,endOffset))}; | |
goog.dom.browserrange.OperaRange.prototype.selectInternal=function(selection,reversed){selection.collapse(this.getStartNode(),this.getStartOffset());if(this.getEndNode()!=this.getStartNode()||this.getEndOffset()!=this.getStartOffset())selection.extend(this.getEndNode(),this.getEndOffset());if(selection.rangeCount==0)selection.addRange(this.range_)};goog.provide("goog.dom.browserrange.WebKitRange");goog.require("goog.dom.RangeEndpoint");goog.require("goog.dom.browserrange.W3cRange");goog.require("goog.userAgent");goog.dom.browserrange.WebKitRange=function(range){goog.dom.browserrange.W3cRange.call(this,range)};goog.inherits(goog.dom.browserrange.WebKitRange,goog.dom.browserrange.W3cRange);goog.dom.browserrange.WebKitRange.createFromNodeContents=function(node){return new goog.dom.browserrange.WebKitRange(goog.dom.browserrange.W3cRange.getBrowserRangeForNode(node))}; | |
goog.dom.browserrange.WebKitRange.createFromNodes=function(startNode,startOffset,endNode,endOffset){return new goog.dom.browserrange.WebKitRange(goog.dom.browserrange.W3cRange.getBrowserRangeForNodes(startNode,startOffset,endNode,endOffset))}; | |
goog.dom.browserrange.WebKitRange.prototype.compareBrowserRangeEndpoints=function(range,thisEndpoint,otherEndpoint){if(goog.userAgent.isVersion("528"))return goog.dom.browserrange.WebKitRange.superClass_.compareBrowserRangeEndpoints.call(this,range,thisEndpoint,otherEndpoint);return this.range_.compareBoundaryPoints(otherEndpoint==goog.dom.RangeEndpoint.START?thisEndpoint==goog.dom.RangeEndpoint.START?goog.global["Range"].START_TO_START:goog.global["Range"].END_TO_START:thisEndpoint==goog.dom.RangeEndpoint.START? | |
goog.global["Range"].START_TO_END:goog.global["Range"].END_TO_END,range)};goog.dom.browserrange.WebKitRange.prototype.selectInternal=function(selection,reversed){selection.removeAllRanges();if(reversed)selection.setBaseAndExtent(this.getEndNode(),this.getEndOffset(),this.getStartNode(),this.getStartOffset());else selection.setBaseAndExtent(this.getStartNode(),this.getStartOffset(),this.getEndNode(),this.getEndOffset())};goog.provide("goog.dom.browserrange");goog.provide("goog.dom.browserrange.Error");goog.require("goog.dom");goog.require("goog.dom.browserrange.GeckoRange");goog.require("goog.dom.browserrange.IeRange");goog.require("goog.dom.browserrange.OperaRange");goog.require("goog.dom.browserrange.W3cRange");goog.require("goog.dom.browserrange.WebKitRange");goog.require("goog.userAgent");goog.dom.browserrange.Error={NOT_IMPLEMENTED:"Not Implemented"}; | |
goog.dom.browserrange.createRange=function(range){if(goog.userAgent.IE&&!goog.userAgent.isDocumentMode(9))return new goog.dom.browserrange.IeRange(range,goog.dom.getOwnerDocument(range.parentElement()));else if(goog.userAgent.WEBKIT)return new goog.dom.browserrange.WebKitRange(range);else if(goog.userAgent.GECKO)return new goog.dom.browserrange.GeckoRange(range);else if(goog.userAgent.OPERA)return new goog.dom.browserrange.OperaRange(range);else return new goog.dom.browserrange.W3cRange(range)}; | |
goog.dom.browserrange.createRangeFromNodeContents=function(node){if(goog.userAgent.IE&&!goog.userAgent.isDocumentMode(9))return goog.dom.browserrange.IeRange.createFromNodeContents(node);else if(goog.userAgent.WEBKIT)return goog.dom.browserrange.WebKitRange.createFromNodeContents(node);else if(goog.userAgent.GECKO)return goog.dom.browserrange.GeckoRange.createFromNodeContents(node);else if(goog.userAgent.OPERA)return goog.dom.browserrange.OperaRange.createFromNodeContents(node);else return goog.dom.browserrange.W3cRange.createFromNodeContents(node)}; | |
goog.dom.browserrange.createRangeFromNodes=function(startNode,startOffset,endNode,endOffset){if(goog.userAgent.IE&&!goog.userAgent.isDocumentMode(9))return goog.dom.browserrange.IeRange.createFromNodes(startNode,startOffset,endNode,endOffset);else if(goog.userAgent.WEBKIT)return goog.dom.browserrange.WebKitRange.createFromNodes(startNode,startOffset,endNode,endOffset);else if(goog.userAgent.GECKO)return goog.dom.browserrange.GeckoRange.createFromNodes(startNode,startOffset,endNode,endOffset);else if(goog.userAgent.OPERA)return goog.dom.browserrange.OperaRange.createFromNodes(startNode, | |
startOffset,endNode,endOffset);else return goog.dom.browserrange.W3cRange.createFromNodes(startNode,startOffset,endNode,endOffset)};goog.dom.browserrange.canContainRangeEndpoint=function(node){return goog.dom.canHaveChildren(node)||node.nodeType==goog.dom.NodeType.TEXT};goog.provide("goog.dom.TextRange");goog.require("goog.array");goog.require("goog.dom");goog.require("goog.dom.AbstractRange");goog.require("goog.dom.RangeType");goog.require("goog.dom.SavedRange");goog.require("goog.dom.TagName");goog.require("goog.dom.TextRangeIterator");goog.require("goog.dom.browserrange");goog.require("goog.string");goog.require("goog.userAgent");goog.dom.TextRange=function(){};goog.inherits(goog.dom.TextRange,goog.dom.AbstractRange); | |
goog.dom.TextRange.createFromBrowserRange=function(range,opt_isReversed){return goog.dom.TextRange.createFromBrowserRangeWrapper_(goog.dom.browserrange.createRange(range),opt_isReversed)};goog.dom.TextRange.createFromBrowserRangeWrapper_=function(browserRange,opt_isReversed){var range=new goog.dom.TextRange;range.browserRangeWrapper_=browserRange;range.isReversed_=!!opt_isReversed;return range}; | |
goog.dom.TextRange.createFromNodeContents=function(node,opt_isReversed){return goog.dom.TextRange.createFromBrowserRangeWrapper_(goog.dom.browserrange.createRangeFromNodeContents(node),opt_isReversed)}; | |
goog.dom.TextRange.createFromNodes=function(anchorNode,anchorOffset,focusNode,focusOffset){var range=new goog.dom.TextRange;range.isReversed_=goog.dom.Range.isReversed(anchorNode,anchorOffset,focusNode,focusOffset);if(anchorNode.tagName=="BR"){var parent=anchorNode.parentNode;anchorOffset=goog.array.indexOf(parent.childNodes,anchorNode);anchorNode=parent}if(focusNode.tagName=="BR"){var parent=focusNode.parentNode;focusOffset=goog.array.indexOf(parent.childNodes,focusNode);focusNode=parent}if(range.isReversed_){range.startNode_= | |
focusNode;range.startOffset_=focusOffset;range.endNode_=anchorNode;range.endOffset_=anchorOffset}else{range.startNode_=anchorNode;range.startOffset_=anchorOffset;range.endNode_=focusNode;range.endOffset_=focusOffset}return range};goog.dom.TextRange.prototype.browserRangeWrapper_=null;goog.dom.TextRange.prototype.startNode_=null;goog.dom.TextRange.prototype.startOffset_=null;goog.dom.TextRange.prototype.endNode_=null;goog.dom.TextRange.prototype.endOffset_=null; | |
goog.dom.TextRange.prototype.isReversed_=false;goog.dom.TextRange.prototype.clone=function(){var range=new goog.dom.TextRange;range.browserRangeWrapper_=this.browserRangeWrapper_;range.startNode_=this.startNode_;range.startOffset_=this.startOffset_;range.endNode_=this.endNode_;range.endOffset_=this.endOffset_;range.isReversed_=this.isReversed_;return range};goog.dom.TextRange.prototype.getType=function(){return goog.dom.RangeType.TEXT};goog.dom.TextRange.prototype.getBrowserRangeObject=function(){return this.getBrowserRangeWrapper_().getBrowserRange()}; | |
goog.dom.TextRange.prototype.setBrowserRangeObject=function(nativeRange){if(goog.dom.AbstractRange.isNativeControlRange(nativeRange))return false;this.browserRangeWrapper_=goog.dom.browserrange.createRange(nativeRange);this.clearCachedValues_();return true};goog.dom.TextRange.prototype.clearCachedValues_=function(){this.startNode_=this.startOffset_=this.endNode_=this.endOffset_=null};goog.dom.TextRange.prototype.getTextRangeCount=function(){return 1};goog.dom.TextRange.prototype.getTextRange=function(i){return this}; | |
goog.dom.TextRange.prototype.getBrowserRangeWrapper_=function(){return this.browserRangeWrapper_||(this.browserRangeWrapper_=goog.dom.browserrange.createRangeFromNodes(this.getStartNode(),this.getStartOffset(),this.getEndNode(),this.getEndOffset()))};goog.dom.TextRange.prototype.getContainer=function(){return this.getBrowserRangeWrapper_().getContainer()};goog.dom.TextRange.prototype.getStartNode=function(){return this.startNode_||(this.startNode_=this.getBrowserRangeWrapper_().getStartNode())}; | |
goog.dom.TextRange.prototype.getStartOffset=function(){return this.startOffset_!=null?this.startOffset_:this.startOffset_=this.getBrowserRangeWrapper_().getStartOffset()};goog.dom.TextRange.prototype.getEndNode=function(){return this.endNode_||(this.endNode_=this.getBrowserRangeWrapper_().getEndNode())};goog.dom.TextRange.prototype.getEndOffset=function(){return this.endOffset_!=null?this.endOffset_:this.endOffset_=this.getBrowserRangeWrapper_().getEndOffset()}; | |
goog.dom.TextRange.prototype.moveToNodes=function(startNode,startOffset,endNode,endOffset,isReversed){this.startNode_=startNode;this.startOffset_=startOffset;this.endNode_=endNode;this.endOffset_=endOffset;this.isReversed_=isReversed;this.browserRangeWrapper_=null};goog.dom.TextRange.prototype.isReversed=function(){return this.isReversed_}; | |
goog.dom.TextRange.prototype.containsRange=function(otherRange,opt_allowPartial){var otherRangeType=otherRange.getType();if(otherRangeType==goog.dom.RangeType.TEXT)return this.getBrowserRangeWrapper_().containsRange(otherRange.getBrowserRangeWrapper_(),opt_allowPartial);else if(otherRangeType==goog.dom.RangeType.CONTROL){var elements=otherRange.getElements();var fn=opt_allowPartial?goog.array.some:goog.array.every;return fn(elements,function(el){return this.containsNode(el,opt_allowPartial)},this)}return false}; | |
goog.dom.TextRange.isAttachedNode=function(node){if(goog.userAgent.IE&&!goog.userAgent.isDocumentMode(9)){var returnValue=false;try{returnValue=node.parentNode}catch(e){}return!!returnValue}else return goog.dom.contains(node.ownerDocument.body,node)}; | |
goog.dom.TextRange.prototype.isRangeInDocument=function(){return(!this.startNode_||goog.dom.TextRange.isAttachedNode(this.startNode_))&&(!this.endNode_||goog.dom.TextRange.isAttachedNode(this.endNode_))&&(!(goog.userAgent.IE&&!goog.userAgent.isDocumentMode(9))||this.getBrowserRangeWrapper_().isRangeInDocument())};goog.dom.TextRange.prototype.isCollapsed=function(){return this.getBrowserRangeWrapper_().isCollapsed()};goog.dom.TextRange.prototype.getText=function(){return this.getBrowserRangeWrapper_().getText()}; | |
goog.dom.TextRange.prototype.getHtmlFragment=function(){return this.getBrowserRangeWrapper_().getHtmlFragment()};goog.dom.TextRange.prototype.getValidHtml=function(){return this.getBrowserRangeWrapper_().getValidHtml()}; | |
goog.dom.TextRange.prototype.getPastableHtml=function(){var html=this.getValidHtml();if(html.match(/^\s*<td\b/i))html="<table><tbody><tr>"+html+"</tr></tbody></table>";else if(html.match(/^\s*<tr\b/i))html="<table><tbody>"+html+"</tbody></table>";else if(html.match(/^\s*<tbody\b/i))html="<table>"+html+"</table>";else if(html.match(/^\s*<li\b/i)){var container=this.getContainer();var tagType=goog.dom.TagName.UL;while(container){if(container.tagName==goog.dom.TagName.OL){tagType=goog.dom.TagName.OL; | |
break}else if(container.tagName==goog.dom.TagName.UL)break;container=container.parentNode}html=goog.string.buildString("<",tagType,">",html,"</",tagType,">")}return html};goog.dom.TextRange.prototype.__iterator__=function(opt_keys){return new goog.dom.TextRangeIterator(this.getStartNode(),this.getStartOffset(),this.getEndNode(),this.getEndOffset())};goog.dom.TextRange.prototype.select=function(){this.getBrowserRangeWrapper_().select(this.isReversed_)}; | |
goog.dom.TextRange.prototype.removeContents=function(){this.getBrowserRangeWrapper_().removeContents();this.clearCachedValues_()};goog.dom.TextRange.prototype.surroundContents=function(element){var output=this.getBrowserRangeWrapper_().surroundContents(element);this.clearCachedValues_();return output};goog.dom.TextRange.prototype.insertNode=function(node,before){var output=this.getBrowserRangeWrapper_().insertNode(node,before);this.clearCachedValues_();return output}; | |
goog.dom.TextRange.prototype.surroundWithNodes=function(startNode,endNode){this.getBrowserRangeWrapper_().surroundWithNodes(startNode,endNode);this.clearCachedValues_()};goog.dom.TextRange.prototype.saveUsingDom=function(){return new goog.dom.DomSavedTextRange_(this)}; | |
goog.dom.TextRange.prototype.collapse=function(toAnchor){var toStart=this.isReversed()?!toAnchor:toAnchor;if(this.browserRangeWrapper_)this.browserRangeWrapper_.collapse(toStart);if(toStart){this.endNode_=this.startNode_;this.endOffset_=this.startOffset_}else{this.startNode_=this.endNode_;this.startOffset_=this.endOffset_}this.isReversed_=false}; | |
goog.dom.DomSavedTextRange_=function(range){this.anchorNode_=range.getAnchorNode();this.anchorOffset_=range.getAnchorOffset();this.focusNode_=range.getFocusNode();this.focusOffset_=range.getFocusOffset()};goog.inherits(goog.dom.DomSavedTextRange_,goog.dom.SavedRange);goog.dom.DomSavedTextRange_.prototype.restoreInternal=function(){return goog.dom.Range.createFromNodes(this.anchorNode_,this.anchorOffset_,this.focusNode_,this.focusOffset_)}; | |
goog.dom.DomSavedTextRange_.prototype.disposeInternal=function(){goog.dom.DomSavedTextRange_.superClass_.disposeInternal.call(this);this.anchorNode_=null;this.focusNode_=null};goog.provide("goog.dom.ControlRange");goog.provide("goog.dom.ControlRangeIterator");goog.require("goog.array");goog.require("goog.dom");goog.require("goog.dom.AbstractMultiRange");goog.require("goog.dom.AbstractRange");goog.require("goog.dom.RangeIterator");goog.require("goog.dom.RangeType");goog.require("goog.dom.SavedRange");goog.require("goog.dom.TagWalkType");goog.require("goog.dom.TextRange");goog.require("goog.iter.StopIteration");goog.require("goog.userAgent");goog.dom.ControlRange=function(){}; | |
goog.inherits(goog.dom.ControlRange,goog.dom.AbstractMultiRange);goog.dom.ControlRange.createFromBrowserRange=function(controlRange){var range=new goog.dom.ControlRange;range.range_=controlRange;return range};goog.dom.ControlRange.createFromElements=function(var_args){var range=goog.dom.getOwnerDocument(arguments[0]).body.createControlRange();for(var i=0,len=arguments.length;i<len;i++)range.addElement(arguments[i]);return goog.dom.ControlRange.createFromBrowserRange(range)}; | |
goog.dom.ControlRange.prototype.range_=null;goog.dom.ControlRange.prototype.elements_=null;goog.dom.ControlRange.prototype.sortedElements_=null;goog.dom.ControlRange.prototype.clearCachedValues_=function(){this.elements_=null;this.sortedElements_=null};goog.dom.ControlRange.prototype.clone=function(){return goog.dom.ControlRange.createFromElements.apply(this,this.getElements())};goog.dom.ControlRange.prototype.getType=function(){return goog.dom.RangeType.CONTROL}; | |
goog.dom.ControlRange.prototype.getBrowserRangeObject=function(){return this.range_||document.body.createControlRange()};goog.dom.ControlRange.prototype.setBrowserRangeObject=function(nativeRange){if(!goog.dom.AbstractRange.isNativeControlRange(nativeRange))return false;this.range_=nativeRange;return true};goog.dom.ControlRange.prototype.getTextRangeCount=function(){return this.range_?this.range_.length:0};goog.dom.ControlRange.prototype.getTextRange=function(i){return goog.dom.TextRange.createFromNodeContents(this.range_.item(i))}; | |
goog.dom.ControlRange.prototype.getContainer=function(){return goog.dom.findCommonAncestor.apply(null,this.getElements())};goog.dom.ControlRange.prototype.getStartNode=function(){return this.getSortedElements()[0]};goog.dom.ControlRange.prototype.getStartOffset=function(){return 0};goog.dom.ControlRange.prototype.getEndNode=function(){var sorted=this.getSortedElements();var startsLast=goog.array.peek(sorted);return goog.array.find(sorted,function(el){return goog.dom.contains(el,startsLast)})}; | |
goog.dom.ControlRange.prototype.getEndOffset=function(){return this.getEndNode().childNodes.length};goog.dom.ControlRange.prototype.getElements=function(){if(!this.elements_){this.elements_=[];if(this.range_)for(var i=0;i<this.range_.length;i++)this.elements_.push(this.range_.item(i))}return this.elements_}; | |
goog.dom.ControlRange.prototype.getSortedElements=function(){if(!this.sortedElements_){this.sortedElements_=this.getElements().concat();this.sortedElements_.sort(function(a,b){return a.sourceIndex-b.sourceIndex})}return this.sortedElements_};goog.dom.ControlRange.prototype.isRangeInDocument=function(){var returnValue=false;try{returnValue=goog.array.every(this.getElements(),function(element){return goog.userAgent.IE?element.parentNode:goog.dom.contains(element.ownerDocument.body,element)})}catch(e){}return returnValue}; | |
goog.dom.ControlRange.prototype.isCollapsed=function(){return!this.range_||!this.range_.length};goog.dom.ControlRange.prototype.getText=function(){return""};goog.dom.ControlRange.prototype.getHtmlFragment=function(){return goog.array.map(this.getSortedElements(),goog.dom.getOuterHtml).join("")};goog.dom.ControlRange.prototype.getValidHtml=function(){return this.getHtmlFragment()};goog.dom.ControlRange.prototype.getPastableHtml=goog.dom.ControlRange.prototype.getValidHtml; | |
goog.dom.ControlRange.prototype.__iterator__=function(opt_keys){return new goog.dom.ControlRangeIterator(this)};goog.dom.ControlRange.prototype.select=function(){if(this.range_)this.range_.select()};goog.dom.ControlRange.prototype.removeContents=function(){if(this.range_){var nodes=[];for(var i=0,len=this.range_.length;i<len;i++)nodes.push(this.range_.item(i));goog.array.forEach(nodes,goog.dom.removeNode);this.collapse(false)}}; | |
goog.dom.ControlRange.prototype.replaceContentsWithNode=function(node){var result=this.insertNode(node,true);if(!this.isCollapsed())this.removeContents();return result};goog.dom.ControlRange.prototype.saveUsingDom=function(){return new goog.dom.DomSavedControlRange_(this)};goog.dom.ControlRange.prototype.collapse=function(toAnchor){this.range_=null;this.clearCachedValues_()};goog.dom.DomSavedControlRange_=function(range){this.elements_=range.getElements()}; | |
goog.inherits(goog.dom.DomSavedControlRange_,goog.dom.SavedRange);goog.dom.DomSavedControlRange_.prototype.restoreInternal=function(){var doc=this.elements_.length?goog.dom.getOwnerDocument(this.elements_[0]):document;var controlRange=doc.body.createControlRange();for(var i=0,len=this.elements_.length;i<len;i++)controlRange.addElement(this.elements_[i]);return goog.dom.ControlRange.createFromBrowserRange(controlRange)}; | |
goog.dom.DomSavedControlRange_.prototype.disposeInternal=function(){goog.dom.DomSavedControlRange_.superClass_.disposeInternal.call(this);delete this.elements_};goog.dom.ControlRangeIterator=function(range){if(range){this.elements_=range.getSortedElements();this.startNode_=this.elements_.shift();this.endNode_=goog.array.peek(this.elements_)||this.startNode_}goog.dom.RangeIterator.call(this,this.startNode_,false)};goog.inherits(goog.dom.ControlRangeIterator,goog.dom.RangeIterator); | |
goog.dom.ControlRangeIterator.prototype.startNode_=null;goog.dom.ControlRangeIterator.prototype.endNode_=null;goog.dom.ControlRangeIterator.prototype.elements_=null;goog.dom.ControlRangeIterator.prototype.getStartTextOffset=function(){return 0};goog.dom.ControlRangeIterator.prototype.getEndTextOffset=function(){return 0};goog.dom.ControlRangeIterator.prototype.getStartNode=function(){return this.startNode_};goog.dom.ControlRangeIterator.prototype.getEndNode=function(){return this.endNode_}; | |
goog.dom.ControlRangeIterator.prototype.isLast=function(){return!this.depth&&!this.elements_.length};goog.dom.ControlRangeIterator.prototype.next=function(){if(this.isLast())throw goog.iter.StopIteration;else if(!this.depth){var el=this.elements_.shift();this.setPosition(el,goog.dom.TagWalkType.START_TAG,goog.dom.TagWalkType.START_TAG);return el}return goog.dom.ControlRangeIterator.superClass_.next.call(this)}; | |
goog.dom.ControlRangeIterator.prototype.copyFrom=function(other){this.elements_=other.elements_;this.startNode_=other.startNode_;this.endNode_=other.endNode_;goog.dom.ControlRangeIterator.superClass_.copyFrom.call(this,other)};goog.dom.ControlRangeIterator.prototype.clone=function(){var copy=new goog.dom.ControlRangeIterator(null);copy.copyFrom(this);return copy};goog.provide("goog.dom.MultiRange");goog.provide("goog.dom.MultiRangeIterator");goog.require("goog.array");goog.require("goog.debug.Logger");goog.require("goog.dom.AbstractMultiRange");goog.require("goog.dom.AbstractRange");goog.require("goog.dom.RangeIterator");goog.require("goog.dom.RangeType");goog.require("goog.dom.SavedRange");goog.require("goog.dom.TextRange");goog.require("goog.iter.StopIteration"); | |
goog.dom.MultiRange=function(){this.browserRanges_=[];this.ranges_=[];this.sortedRanges_=null;this.container_=null};goog.inherits(goog.dom.MultiRange,goog.dom.AbstractMultiRange);goog.dom.MultiRange.createFromBrowserSelection=function(selection){var range=new goog.dom.MultiRange;for(var i=0,len=selection.rangeCount;i<len;i++)range.browserRanges_.push(selection.getRangeAt(i));return range}; | |
goog.dom.MultiRange.createFromBrowserRanges=function(browserRanges){var range=new goog.dom.MultiRange;range.browserRanges_=goog.array.clone(browserRanges);return range};goog.dom.MultiRange.createFromTextRanges=function(textRanges){var range=new goog.dom.MultiRange;range.ranges_=textRanges;range.browserRanges_=goog.array.map(textRanges,function(range){return range.getBrowserRangeObject()});return range};goog.dom.MultiRange.prototype.logger_=goog.debug.Logger.getLogger("goog.dom.MultiRange"); | |
goog.dom.MultiRange.prototype.clearCachedValues_=function(){this.ranges_=[];this.sortedRanges_=null;this.container_=null};goog.dom.MultiRange.prototype.clone=function(){return goog.dom.MultiRange.createFromBrowserRanges(this.browserRanges_)};goog.dom.MultiRange.prototype.getType=function(){return goog.dom.RangeType.MULTI}; | |
goog.dom.MultiRange.prototype.getBrowserRangeObject=function(){if(this.browserRanges_.length>1)this.logger_.warning("getBrowserRangeObject called on MultiRange with more than 1 range");return this.browserRanges_[0]};goog.dom.MultiRange.prototype.setBrowserRangeObject=function(nativeRange){return false};goog.dom.MultiRange.prototype.getTextRangeCount=function(){return this.browserRanges_.length}; | |
goog.dom.MultiRange.prototype.getTextRange=function(i){if(!this.ranges_[i])this.ranges_[i]=goog.dom.TextRange.createFromBrowserRange(this.browserRanges_[i]);return this.ranges_[i]};goog.dom.MultiRange.prototype.getContainer=function(){if(!this.container_){var nodes=[];for(var i=0,len=this.getTextRangeCount();i<len;i++)nodes.push(this.getTextRange(i).getContainer());this.container_=goog.dom.findCommonAncestor.apply(null,nodes)}return this.container_}; | |
goog.dom.MultiRange.prototype.getSortedRanges=function(){if(!this.sortedRanges_){this.sortedRanges_=this.getTextRanges();this.sortedRanges_.sort(function(a,b){var aStartNode=a.getStartNode();var aStartOffset=a.getStartOffset();var bStartNode=b.getStartNode();var bStartOffset=b.getStartOffset();if(aStartNode==bStartNode&&aStartOffset==bStartOffset)return 0;return goog.dom.Range.isReversed(aStartNode,aStartOffset,bStartNode,bStartOffset)?1:-1})}return this.sortedRanges_}; | |
goog.dom.MultiRange.prototype.getStartNode=function(){return this.getSortedRanges()[0].getStartNode()};goog.dom.MultiRange.prototype.getStartOffset=function(){return this.getSortedRanges()[0].getStartOffset()};goog.dom.MultiRange.prototype.getEndNode=function(){return goog.array.peek(this.getSortedRanges()).getEndNode()};goog.dom.MultiRange.prototype.getEndOffset=function(){return goog.array.peek(this.getSortedRanges()).getEndOffset()}; | |
goog.dom.MultiRange.prototype.isRangeInDocument=function(){return goog.array.every(this.getTextRanges(),function(range){return range.isRangeInDocument()})};goog.dom.MultiRange.prototype.isCollapsed=function(){return this.browserRanges_.length==0||this.browserRanges_.length==1&&this.getTextRange(0).isCollapsed()};goog.dom.MultiRange.prototype.getText=function(){return goog.array.map(this.getTextRanges(),function(range){return range.getText()}).join("")}; | |
goog.dom.MultiRange.prototype.getHtmlFragment=function(){return this.getValidHtml()};goog.dom.MultiRange.prototype.getValidHtml=function(){return goog.array.map(this.getTextRanges(),function(range){return range.getValidHtml()}).join("")};goog.dom.MultiRange.prototype.getPastableHtml=function(){return this.getValidHtml()};goog.dom.MultiRange.prototype.__iterator__=function(opt_keys){return new goog.dom.MultiRangeIterator(this)}; | |
goog.dom.MultiRange.prototype.select=function(){var selection=goog.dom.AbstractRange.getBrowserSelectionForWindow(this.getWindow());selection.removeAllRanges();for(var i=0,len=this.getTextRangeCount();i<len;i++)selection.addRange(this.getTextRange(i).getBrowserRangeObject())};goog.dom.MultiRange.prototype.removeContents=function(){goog.array.forEach(this.getTextRanges(),function(range){range.removeContents()})};goog.dom.MultiRange.prototype.saveUsingDom=function(){return new goog.dom.DomSavedMultiRange_(this)}; | |
goog.dom.MultiRange.prototype.collapse=function(toAnchor){if(!this.isCollapsed()){var range=toAnchor?this.getTextRange(0):this.getTextRange(this.getTextRangeCount()-1);this.clearCachedValues_();range.collapse(toAnchor);this.ranges_=[range];this.sortedRanges_=[range];this.browserRanges_=[range.getBrowserRangeObject()]}};goog.dom.DomSavedMultiRange_=function(range){this.savedRanges_=goog.array.map(range.getTextRanges(),function(range){return range.saveUsingDom()})}; | |
goog.inherits(goog.dom.DomSavedMultiRange_,goog.dom.SavedRange);goog.dom.DomSavedMultiRange_.prototype.restoreInternal=function(){var ranges=goog.array.map(this.savedRanges_,function(savedRange){return savedRange.restore()});return goog.dom.MultiRange.createFromTextRanges(ranges)};goog.dom.DomSavedMultiRange_.prototype.disposeInternal=function(){goog.dom.DomSavedMultiRange_.superClass_.disposeInternal.call(this);goog.array.forEach(this.savedRanges_,function(savedRange){savedRange.dispose()});delete this.savedRanges_}; | |
goog.dom.MultiRangeIterator=function(range){if(range)this.iterators_=goog.array.map(range.getSortedRanges(),function(r){return goog.iter.toIterator(r)});goog.dom.RangeIterator.call(this,range?this.getStartNode():null,false)};goog.inherits(goog.dom.MultiRangeIterator,goog.dom.RangeIterator);goog.dom.MultiRangeIterator.prototype.iterators_=null;goog.dom.MultiRangeIterator.prototype.currentIdx_=0;goog.dom.MultiRangeIterator.prototype.getStartTextOffset=function(){return this.iterators_[this.currentIdx_].getStartTextOffset()}; | |
goog.dom.MultiRangeIterator.prototype.getEndTextOffset=function(){return this.iterators_[this.currentIdx_].getEndTextOffset()};goog.dom.MultiRangeIterator.prototype.getStartNode=function(){return this.iterators_[0].getStartNode()};goog.dom.MultiRangeIterator.prototype.getEndNode=function(){return goog.array.peek(this.iterators_).getEndNode()};goog.dom.MultiRangeIterator.prototype.isLast=function(){return this.iterators_[this.currentIdx_].isLast()}; | |
goog.dom.MultiRangeIterator.prototype.next=function(){try{var it=this.iterators_[this.currentIdx_];var next=it.next();this.setPosition(it.node,it.tagType,it.depth);return next}catch(ex){if(ex!==goog.iter.StopIteration||this.iterators_.length-1==this.currentIdx_)throw ex;else{this.currentIdx_++;return this.next()}}};goog.dom.MultiRangeIterator.prototype.copyFrom=function(other){this.iterators_=goog.array.clone(other.iterators_);goog.dom.MultiRangeIterator.superClass_.copyFrom.call(this,other)}; | |
goog.dom.MultiRangeIterator.prototype.clone=function(){var copy=new goog.dom.MultiRangeIterator(null);copy.copyFrom(this);return copy};goog.provide("goog.dom.Range");goog.require("goog.dom");goog.require("goog.dom.AbstractRange");goog.require("goog.dom.ControlRange");goog.require("goog.dom.MultiRange");goog.require("goog.dom.NodeType");goog.require("goog.dom.TextRange");goog.require("goog.userAgent");goog.dom.Range.createFromWindow=function(opt_win){var sel=goog.dom.AbstractRange.getBrowserSelectionForWindow(opt_win||window);return sel&&goog.dom.Range.createFromBrowserSelection(sel)}; | |
goog.dom.Range.createFromBrowserSelection=function(selection){var range;var isReversed=false;if(selection.createRange)try{range=selection.createRange()}catch(e){return null}else if(selection.rangeCount)if(selection.rangeCount>1)return goog.dom.MultiRange.createFromBrowserSelection(selection);else{range=selection.getRangeAt(0);isReversed=goog.dom.Range.isReversed(selection.anchorNode,selection.anchorOffset,selection.focusNode,selection.focusOffset)}else return null;return goog.dom.Range.createFromBrowserRange(range, | |
isReversed)};goog.dom.Range.createFromBrowserRange=function(range,opt_isReversed){return goog.dom.AbstractRange.isNativeControlRange(range)?goog.dom.ControlRange.createFromBrowserRange(range):goog.dom.TextRange.createFromBrowserRange(range,opt_isReversed)};goog.dom.Range.createFromNodeContents=function(node,opt_isReversed){return goog.dom.TextRange.createFromNodeContents(node,opt_isReversed)}; | |
goog.dom.Range.createCaret=function(node,offset){return goog.dom.TextRange.createFromNodes(node,offset,node,offset)};goog.dom.Range.createFromNodes=function(startNode,startOffset,endNode,endOffset){return goog.dom.TextRange.createFromNodes(startNode,startOffset,endNode,endOffset)};goog.dom.Range.clearSelection=function(opt_win){var sel=goog.dom.AbstractRange.getBrowserSelectionForWindow(opt_win||window);if(!sel)return;if(sel.empty)try{sel.empty()}catch(e){}else try{sel.removeAllRanges()}catch(e){}}; | |
goog.dom.Range.hasSelection=function(opt_win){var sel=goog.dom.AbstractRange.getBrowserSelectionForWindow(opt_win||window);return!!sel&&(goog.userAgent.IE?sel.type!="None":!!sel.rangeCount)}; | |
goog.dom.Range.isReversed=function(anchorNode,anchorOffset,focusNode,focusOffset){if(anchorNode==focusNode)return focusOffset<anchorOffset;var child;if(anchorNode.nodeType==goog.dom.NodeType.ELEMENT&&anchorOffset){child=anchorNode.childNodes[anchorOffset];if(child){anchorNode=child;anchorOffset=0}else if(goog.dom.contains(anchorNode,focusNode))return true}if(focusNode.nodeType==goog.dom.NodeType.ELEMENT&&focusOffset){child=focusNode.childNodes[focusOffset];if(child){focusNode=child;focusOffset=0}else if(goog.dom.contains(focusNode, | |
anchorNode))return false}return(goog.dom.compareNodeOrder(anchorNode,focusNode)||anchorOffset-focusOffset)>0};goog.provide("bot.Mouse");goog.provide("bot.Mouse.Button");goog.require("bot");goog.require("bot.Device");goog.require("bot.Error");goog.require("bot.ErrorCode");goog.require("bot.dom");goog.require("bot.events.EventType");goog.require("bot.userAgent");goog.require("goog.dom");goog.require("goog.dom.Range");goog.require("goog.dom.TagName");goog.require("goog.math.Coordinate");goog.require("goog.style");goog.require("goog.userAgent"); | |
bot.Mouse=function(){goog.base(this);this.buttonPressed_=null;this.elementPressed_=null;this.clientXY_=new goog.math.Coordinate(0,0);this.nextClickIsDoubleClick_=false;this.hasEverInteracted_=false};goog.inherits(bot.Mouse,bot.Device);bot.Mouse.Button={LEFT:0,MIDDLE:1,RIGHT:2};bot.Mouse.NO_BUTTON_VALUE_INDEX_=3; | |
bot.Mouse.MOUSE_BUTTON_VALUE_MAP_=function(){var buttonValueMap={};if(bot.userAgent.IE_DOC_PRE9){buttonValueMap[bot.events.EventType.CLICK]=[0,0,0,null];buttonValueMap[bot.events.EventType.CONTEXTMENU]=[null,null,0,null];buttonValueMap[bot.events.EventType.MOUSEUP]=[1,4,2,null];buttonValueMap[bot.events.EventType.MOUSEOUT]=[0,0,0,0];buttonValueMap[bot.events.EventType.MOUSEMOVE]=[1,4,2,0]}else if(goog.userAgent.WEBKIT||bot.userAgent.IE_DOC_9){buttonValueMap[bot.events.EventType.CLICK]=[0,1,2,null]; | |
buttonValueMap[bot.events.EventType.CONTEXTMENU]=[null,null,2,null];buttonValueMap[bot.events.EventType.MOUSEUP]=[0,1,2,null];buttonValueMap[bot.events.EventType.MOUSEOUT]=[0,1,2,0];buttonValueMap[bot.events.EventType.MOUSEMOVE]=[0,1,2,0]}else{buttonValueMap[bot.events.EventType.CLICK]=[0,1,2,null];buttonValueMap[bot.events.EventType.CONTEXTMENU]=[null,null,2,null];buttonValueMap[bot.events.EventType.MOUSEUP]=[0,1,2,null];buttonValueMap[bot.events.EventType.MOUSEOUT]=[0,0,0,0];buttonValueMap[bot.events.EventType.MOUSEMOVE]= | |
[0,0,0,0]}buttonValueMap[bot.events.EventType.DBLCLICK]=buttonValueMap[bot.events.EventType.CLICK];buttonValueMap[bot.events.EventType.MOUSEDOWN]=buttonValueMap[bot.events.EventType.MOUSEUP];buttonValueMap[bot.events.EventType.MOUSEOVER]=buttonValueMap[bot.events.EventType.MOUSEOUT];return buttonValueMap}(); | |
bot.Mouse.prototype.fireMousedown_=function(){var isFirefox3=goog.userAgent.GECKO&&!bot.userAgent.isProductVersion(4);var blocksOnMousedown=(goog.userAgent.WEBKIT||isFirefox3)&&(bot.dom.isElement(this.getElement(),goog.dom.TagName.OPTION)||bot.dom.isElement(this.getElement(),goog.dom.TagName.SELECT));if(blocksOnMousedown)return true;var beforeActiveElement;var mousedownCanPreemptFocus=goog.userAgent.GECKO||goog.userAgent.IE;if(mousedownCanPreemptFocus)beforeActiveElement=bot.dom.getActiveElement(this.getElement()); | |
var performFocus=this.fireMouseEvent_(bot.events.EventType.MOUSEDOWN);if(performFocus&&mousedownCanPreemptFocus&&beforeActiveElement!=bot.dom.getActiveElement(this.getElement()))return false;return performFocus}; | |
bot.Mouse.prototype.pressButton=function(button){if(!goog.isNull(this.buttonPressed_))throw new bot.Error(bot.ErrorCode.UNKNOWN_ERROR,"Cannot press more then one button or an already pressed button.");this.buttonPressed_=button;this.elementPressed_=this.getElement();var performFocus=this.fireMousedown_();if(performFocus)this.focusOnElement()}; | |
bot.Mouse.prototype.releaseButton=function(){if(goog.isNull(this.buttonPressed_))throw new bot.Error(bot.ErrorCode.UNKNOWN_ERROR,"Cannot release a button when no button is pressed.");this.fireMouseEvent_(bot.events.EventType.MOUSEUP);if(this.buttonPressed_==bot.Mouse.Button.LEFT&&this.getElement()==this.elementPressed_){this.clickElement(this.clientXY_,this.getButtonValue_(bot.events.EventType.CLICK));this.maybeDoubleClickElement_()}else if(this.buttonPressed_==bot.Mouse.Button.RIGHT)this.fireMouseEvent_(bot.events.EventType.CONTEXTMENU); | |
this.buttonPressed_=null;this.elementPressed_=null};bot.Mouse.prototype.maybeDoubleClickElement_=function(){if(this.nextClickIsDoubleClick_)this.fireMouseEvent_(bot.events.EventType.DBLCLICK);this.nextClickIsDoubleClick_=!this.nextClickIsDoubleClick_}; | |
bot.Mouse.prototype.move=function(element,coords){var pos=goog.style.getClientPosition(element);this.clientXY_.x=coords.x+pos.x;this.clientXY_.y=coords.y+pos.y;var fromElement=this.getElement();if(element!=fromElement){try{if(goog.dom.getWindow(goog.dom.getOwnerDocument(fromElement)).closed)fromElement=null}catch(ignore){fromElement=null}if(fromElement){var isRoot=fromElement===bot.getDocument().documentElement||fromElement===bot.getDocument().body;fromElement=!this.hasEverInteracted_&&isRoot?null: | |
fromElement;this.fireMouseEvent_(bot.events.EventType.MOUSEOUT,element)}this.setElement(element);this.fireMouseEvent_(bot.events.EventType.MOUSEOVER,fromElement)}this.fireMouseEvent_(bot.events.EventType.MOUSEMOVE);this.nextClickIsDoubleClick_=false}; | |
bot.Mouse.prototype.scroll=function(ticks){if(ticks==0)throw new bot.Error(bot.ErrorCode.UNKNOWN_ERROR,"Must scroll a non-zero number of ticks.");var wheelDelta=ticks>0?-120:120;var pixelDelta=ticks>0?57:-57;for(var i=0;i<Math.abs(ticks);i++){this.fireMouseEvent_(bot.events.EventType.MOUSEWHEEL,null,wheelDelta);if(goog.userAgent.GECKO)this.fireMouseEvent_(bot.events.EventType.MOUSEPIXELSCROLL,null,pixelDelta)}}; | |
bot.Mouse.prototype.fireMouseEvent_=function(type,opt_related,opt_wheelDelta){this.hasEverInteracted_=true;return this.fireMouseEvent(type,this.clientXY_,this.getButtonValue_(type),opt_related,opt_wheelDelta)}; | |
bot.Mouse.prototype.getButtonValue_=function(eventType){if(!(eventType in bot.Mouse.MOUSE_BUTTON_VALUE_MAP_))return 0;var buttonIndex=goog.isNull(this.buttonPressed_)?bot.Mouse.NO_BUTTON_VALUE_INDEX_:this.buttonPressed_;var buttonValue=bot.Mouse.MOUSE_BUTTON_VALUE_MAP_[eventType][buttonIndex];if(goog.isNull(buttonValue))throw new bot.Error(bot.ErrorCode.UNKNOWN_ERROR,"Event does not permit the specified mouse button.");return buttonValue};goog.provide("bot.Touchscreen");goog.require("bot");goog.require("bot.Device");goog.require("bot.Error");goog.require("bot.ErrorCode");goog.require("bot.events.EventType");goog.require("goog.math.Coordinate");goog.require("goog.style");goog.require("goog.userAgent.product");bot.Touchscreen=function(){goog.base(this);this.clientXY_=new goog.math.Coordinate(0,0);this.clientXY2_=new goog.math.Coordinate(0,0)};goog.inherits(bot.Touchscreen,bot.Device);bot.Touchscreen.prototype.hasMovedAfterPress_=false; | |
bot.Touchscreen.prototype.touchIdentifier_=0;bot.Touchscreen.prototype.touchIdentifier2_=0;bot.Touchscreen.prototype.touchCounter_=1;bot.Touchscreen.prototype.press=function(opt_press2){if(this.isPressed())throw new bot.Error(bot.ErrorCode.UNKNOWN_ERROR,"Cannot press touchscreen when already pressed.");this.hasMovedAfterPress_=false;this.touchIdentifier_=this.touchCounter_++;if(opt_press2)this.touchIdentifier2_=this.touchCounter_++;this.fireTouchEvent_(bot.events.EventType.TOUCHSTART)}; | |
bot.Touchscreen.prototype.release=function(){if(!this.isPressed())throw new bot.Error(bot.ErrorCode.UNKNOWN_ERROR,"Cannot release touchscreen when not already pressed.");this.fireTouchEvent_(bot.events.EventType.TOUCHEND);if(!this.hasMovedAfterPress_){this.fireMouseEvent(bot.events.EventType.MOUSEMOVE,this.clientXY_,0);var performFocus=this.fireMouseEvent(bot.events.EventType.MOUSEDOWN,this.clientXY_,0);if(performFocus)this.focusOnElement();this.fireMouseEvent(bot.events.EventType.MOUSEUP,this.clientXY_, | |
0);this.clickElement(this.clientXY_,0)}this.touchIdentifier_=0;this.touchIdentifier2_=0};bot.Touchscreen.prototype.move=function(element,coords,opt_coords2){if(!this.isPressed())this.setElement(element);var pos=goog.style.getClientPosition(element);this.clientXY_.x=coords.x+pos.x;this.clientXY_.y=coords.y+pos.y;if(goog.isDef(opt_coords2)){this.clientXY2_.x=opt_coords2.x+pos.x;this.clientXY2_.y=opt_coords2.y+pos.y}if(this.isPressed()){this.hasMovedAfterPress_=true;this.fireTouchEvent_(bot.events.EventType.TOUCHMOVE)}}; | |
bot.Touchscreen.prototype.isPressed=function(){return!!this.touchIdentifier_};bot.Touchscreen.prototype.fireTouchEvent_=function(type){if(!this.isPressed())throw new bot.Error(bot.ErrorCode.UNKNOWN_ERROR,"Should never fire event when touchscreen is not pressed.");var touchIdentifier2;var coords2;if(this.touchIdentifier2_){touchIdentifier2=this.touchIdentifier2_;coords2=this.clientXY2_}return this.fireTouchEvent(type,this.touchIdentifier_,this.clientXY_,touchIdentifier2,coords2)};goog.provide("bot.locators.className");goog.require("goog.array");goog.require("goog.dom");goog.require("goog.dom.DomHelper");goog.require("goog.string");bot.locators.className.canUseQuerySelector_=function(root){return!!(root.querySelectorAll&&root.querySelector)}; | |
bot.locators.className.single=function(target,root){if(!target)throw Error("No class name specified");target=goog.string.trim(target);if(target.split(/\s+/).length>1)throw Error("Compound class names not permitted");if(bot.locators.className.canUseQuerySelector_(root))return root.querySelector("."+target.replace(/\./g,"\\."))||null;var elements=goog.dom.getDomHelper(root).getElementsByTagNameAndClass("*",target,root);return elements.length?elements[0]:null}; | |
bot.locators.className.many=function(target,root){if(!target)throw Error("No class name specified");target=goog.string.trim(target);if(target.split(/\s+/).length>1)throw Error("Compound class names not permitted");if(bot.locators.className.canUseQuerySelector_(root))return root.querySelectorAll("."+target.replace(/\./g,"\\."));return goog.dom.getDomHelper(root).getElementsByTagNameAndClass("*",target,root)};goog.provide("bot.locators.css");goog.require("bot.userAgent");goog.require("goog.array");goog.require("goog.dom");goog.require("goog.dom.NodeType");goog.require("goog.object");goog.require("goog.string");goog.require("goog.userAgent"); | |
bot.locators.css.single=function(target,root){if(!goog.isFunction(root["querySelector"])&&goog.userAgent.IE&&bot.userAgent.isEngineVersion(8)&&!goog.isObject(root["querySelector"]))throw Error("CSS selection is not supported");if(!target)throw Error("No selector specified");if(bot.locators.css.containsUnquotedComma_(target))throw Error("Compound selectors not permitted");target=goog.string.trim(target);var element=root.querySelector(target);return element&&element.nodeType==goog.dom.NodeType.ELEMENT? | |
element:null};bot.locators.css.many=function(target,root){if(!goog.isFunction(root["querySelectorAll"])&&goog.userAgent.IE&&bot.userAgent.isEngineVersion(8)&&!goog.isObject(root["querySelector"]))throw Error("CSS selection is not supported");if(!target)throw Error("No selector specified");if(bot.locators.css.containsUnquotedComma_(target))throw Error("Compound selectors not permitted");target=goog.string.trim(target);return root.querySelectorAll(target)}; | |
bot.locators.css.containsUnquotedComma_=function(str){return str.split(/(,)(?=(?:[^']|'[^']*')*$)/).length>1&&str.split(/(,)(?=(?:[^"]|"[^"]*")*$)/).length>1};goog.provide("bot.locators.id");goog.require("bot.dom");goog.require("goog.array");goog.require("goog.dom"); | |
bot.locators.id.single=function(target,root){var dom=goog.dom.getDomHelper(root);var e=dom.getElement(target);if(!e)return null;if(bot.dom.getAttribute(e,"id")==target&&goog.dom.contains(root,e))return e;var elements=dom.getElementsByTagNameAndClass("*");var element=goog.array.find(elements,function(element){return bot.dom.getAttribute(element,"id")==target&&goog.dom.contains(root,element)});return element}; | |
bot.locators.id.many=function(target,root){var dom=goog.dom.getDomHelper(root);var elements=dom.getElementsByTagNameAndClass("*",null,root);return goog.array.filter(elements,function(e){return bot.dom.getAttribute(e,"id")==target})};goog.provide("bot.locators.linkText");goog.provide("bot.locators.partialLinkText");goog.require("bot");goog.require("bot.dom");goog.require("bot.locators.css");goog.require("goog.array");goog.require("goog.dom");goog.require("goog.dom.DomHelper"); | |
bot.locators.linkText.single_=function(target,root,opt_isPartial){var elements;try{elements=bot.locators.css.many("a",root)}catch(e){elements=goog.dom.getDomHelper(root).getElementsByTagNameAndClass(goog.dom.TagName.A,null,root)}var element=goog.array.find(elements,function(element){var text=bot.dom.getVisibleText(element);return opt_isPartial&&text.indexOf(target)!=-1||text==target});return element}; | |
bot.locators.linkText.many_=function(target,root,opt_isPartial){var elements;try{elements=bot.locators.css.many("a",root)}catch(e){elements=goog.dom.getDomHelper(root).getElementsByTagNameAndClass(goog.dom.TagName.A,null,root)}return goog.array.filter(elements,function(element){var text=bot.dom.getVisibleText(element);return opt_isPartial&&text.indexOf(target)!=-1||text==target})};bot.locators.linkText.single=function(target,root){return bot.locators.linkText.single_(target,root,false)}; | |
bot.locators.linkText.many=function(target,root){return bot.locators.linkText.many_(target,root,false)};bot.locators.partialLinkText.single=function(target,root){return bot.locators.linkText.single_(target,root,true)};bot.locators.partialLinkText.many=function(target,root){return bot.locators.linkText.many_(target,root,true)};goog.provide("bot.locators.name");goog.require("bot.dom");goog.require("goog.array");goog.require("goog.dom");bot.locators.name.single=function(target,root){var dom=goog.dom.getDomHelper(root);var allElements=dom.getElementsByTagNameAndClass("*",null,root);var element=goog.array.find(allElements,function(element){return bot.dom.getAttribute(element,"name")==target});return element}; | |
bot.locators.name.many=function(target,root){var dom=goog.dom.getDomHelper(root);var allElements=dom.getElementsByTagNameAndClass("*",null,root);return goog.array.filter(allElements,function(element){return bot.dom.getAttribute(element,"name")==target})};goog.provide("bot.locators.tagName");goog.require("goog.array");bot.locators.tagName.single=function(target,root){return root.getElementsByTagName(target)[0]||null};bot.locators.tagName.many=function(target,root){return root.getElementsByTagName(target)};goog.provide("bot.locators");goog.require("bot");goog.require("bot.locators.className");goog.require("bot.locators.css");goog.require("bot.locators.id");goog.require("bot.locators.linkText");goog.require("bot.locators.name");goog.require("bot.locators.partialLinkText");goog.require("bot.locators.tagName");goog.require("bot.locators.xpath");goog.require("goog.array");goog.require("goog.object");bot.locators.strategy; | |
bot.locators.STRATEGIES_={"className":bot.locators.className,"class name":bot.locators.className,"css":bot.locators.css,"css selector":bot.locators.css,"id":bot.locators.id,"linkText":bot.locators.linkText,"link text":bot.locators.linkText,"name":bot.locators.name,"partialLinkText":bot.locators.partialLinkText,"partial link text":bot.locators.partialLinkText,"tagName":bot.locators.tagName,"tag name":bot.locators.tagName,"xpath":bot.locators.xpath}; | |
bot.locators.add=function(name,strategy){bot.locators.STRATEGIES_[name]=strategy};bot.locators.getOnlyKey=function(target){for(var k in target)if(target.hasOwnProperty(k))return k;return null}; | |
bot.locators.findElement=function(target,opt_root){var key=bot.locators.getOnlyKey(target);if(key){var strategy=bot.locators.STRATEGIES_[key];if(strategy&&goog.isFunction(strategy.single)){var root=opt_root||bot.getDocument();return strategy.single(target[key],root)}}throw Error("Unsupported locator strategy: "+key);}; | |
bot.locators.findElements=function(target,opt_root){var key=bot.locators.getOnlyKey(target);if(key){var strategy=bot.locators.STRATEGIES_[key];if(strategy&&goog.isFunction(strategy.many)){var root=opt_root||bot.getDocument();return strategy.many(target[key],root)}}throw Error("Unsupported locator strategy: "+key);};goog.provide("goog.math");goog.require("goog.array");goog.math.randomInt=function(a){return Math.floor(Math.random()*a)};goog.math.uniformRandom=function(a,b){return a+Math.random()*(b-a)};goog.math.clamp=function(value,min,max){return Math.min(Math.max(value,min),max)};goog.math.modulo=function(a,b){var r=a%b;return r*b<0?r+b:r};goog.math.lerp=function(a,b,x){return a+x*(b-a)};goog.math.nearlyEquals=function(a,b,opt_tolerance){return Math.abs(a-b)<=(opt_tolerance||1.0E-6)}; | |
goog.math.standardAngle=function(angle){return goog.math.modulo(angle,360)};goog.math.toRadians=function(angleDegrees){return angleDegrees*Math.PI/180};goog.math.toDegrees=function(angleRadians){return angleRadians*180/Math.PI};goog.math.angleDx=function(degrees,radius){return radius*Math.cos(goog.math.toRadians(degrees))};goog.math.angleDy=function(degrees,radius){return radius*Math.sin(goog.math.toRadians(degrees))}; | |
goog.math.angle=function(x1,y1,x2,y2){return goog.math.standardAngle(goog.math.toDegrees(Math.atan2(y2-y1,x2-x1)))};goog.math.angleDifference=function(startAngle,endAngle){var d=goog.math.standardAngle(endAngle)-goog.math.standardAngle(startAngle);if(d>180)d=d-360;else if(d<=-180)d=360+d;return d};goog.math.sign=function(x){return x==0?0:x<0?-1:1}; | |
goog.math.longestCommonSubsequence=function(array1,array2,opt_compareFn,opt_collectorFn){var compare=opt_compareFn||function(a,b){return a==b};var collect=opt_collectorFn||function(i1,i2){return array1[i1]};var length1=array1.length;var length2=array2.length;var arr=[];for(var i=0;i<length1+1;i++){arr[i]=[];arr[i][0]=0}for(var j=0;j<length2+1;j++)arr[0][j]=0;for(i=1;i<=length1;i++)for(j=1;j<=length1;j++)if(compare(array1[i-1],array2[j-1]))arr[i][j]=arr[i-1][j-1]+1;else arr[i][j]=Math.max(arr[i-1][j], | |
arr[i][j-1]);var result=[];var i=length1,j=length2;while(i>0&&j>0)if(compare(array1[i-1],array2[j-1])){result.unshift(collect(i-1,j-1));i--;j--}else if(arr[i-1][j]>arr[i][j-1])i--;else j--;return result};goog.math.sum=function(var_args){return goog.array.reduce(arguments,function(sum,value){return sum+value},0)};goog.math.average=function(var_args){return goog.math.sum.apply(null,arguments)/arguments.length}; | |
goog.math.standardDeviation=function(var_args){var sampleSize=arguments.length;if(sampleSize<2)return 0;var mean=goog.math.average.apply(null,arguments);var variance=goog.math.sum.apply(null,goog.array.map(arguments,function(val){return Math.pow(val-mean,2)}))/(sampleSize-1);return Math.sqrt(variance)};goog.math.isInt=function(num){return isFinite(num)&&num%1==0};goog.math.isFiniteNumber=function(num){return isFinite(num)&&!isNaN(num)};goog.provide("goog.math.Vec2");goog.require("goog.math");goog.require("goog.math.Coordinate");goog.math.Vec2=function(x,y){this.x=x;this.y=y};goog.inherits(goog.math.Vec2,goog.math.Coordinate);goog.math.Vec2.randomUnit=function(){var angle=Math.random()*Math.PI*2;return new goog.math.Vec2(Math.cos(angle),Math.sin(angle))};goog.math.Vec2.random=function(){var mag=Math.sqrt(Math.random());var angle=Math.random()*Math.PI*2;return new goog.math.Vec2(Math.cos(angle)*mag,Math.sin(angle)*mag)}; | |
goog.math.Vec2.fromCoordinate=function(a){return new goog.math.Vec2(a.x,a.y)};goog.math.Vec2.prototype.clone=function(){return new goog.math.Vec2(this.x,this.y)};goog.math.Vec2.prototype.magnitude=function(){return Math.sqrt(this.x*this.x+this.y*this.y)};goog.math.Vec2.prototype.squaredMagnitude=function(){return this.x*this.x+this.y*this.y};goog.math.Vec2.prototype.scale=function(s){this.x*=s;this.y*=s;return this};goog.math.Vec2.prototype.invert=function(){this.x=-this.x;this.y=-this.y;return this}; | |
goog.math.Vec2.prototype.normalize=function(){return this.scale(1/this.magnitude())};goog.math.Vec2.prototype.add=function(b){this.x+=b.x;this.y+=b.y;return this};goog.math.Vec2.prototype.subtract=function(b){this.x-=b.x;this.y-=b.y;return this};goog.math.Vec2.prototype.rotate=function(angle){var cos=Math.cos(angle);var sin=Math.sin(angle);var newX=this.x*cos-this.y*sin;var newY=this.y*cos+this.x*sin;this.x=newX;this.y=newY;return this}; | |
goog.math.Vec2.rotateAroundPoint=function(v,axisPoint,angle){var res=v.clone();return res.subtract(axisPoint).rotate(angle).add(axisPoint)};goog.math.Vec2.prototype.equals=function(b){return this==b||!!b&&this.x==b.x&&this.y==b.y};goog.math.Vec2.distance=goog.math.Coordinate.distance;goog.math.Vec2.squaredDistance=goog.math.Coordinate.squaredDistance;goog.math.Vec2.equals=goog.math.Coordinate.equals;goog.math.Vec2.sum=function(a,b){return new goog.math.Vec2(a.x+b.x,a.y+b.y)}; | |
goog.math.Vec2.difference=function(a,b){return new goog.math.Vec2(a.x-b.x,a.y-b.y)};goog.math.Vec2.dot=function(a,b){return a.x*b.x+a.y*b.y};goog.math.Vec2.lerp=function(a,b,x){return new goog.math.Vec2(goog.math.lerp(a.x,b.x,x),goog.math.lerp(a.y,b.y,x))};goog.provide("bot.action");goog.require("bot");goog.require("bot.Device");goog.require("bot.Error");goog.require("bot.ErrorCode");goog.require("bot.Keyboard");goog.require("bot.Mouse");goog.require("bot.Touchscreen");goog.require("bot.dom");goog.require("bot.events");goog.require("bot.events.EventType");goog.require("bot.locators");goog.require("bot.userAgent");goog.require("goog.array");goog.require("goog.dom");goog.require("goog.dom.NodeType");goog.require("goog.dom.TagName");goog.require("goog.math.Coordinate"); | |
goog.require("goog.math.Rect");goog.require("goog.math.Vec2");goog.require("goog.userAgent");bot.action.checkShown_=function(element){if(!bot.dom.isShown(element,true))throw new bot.Error(bot.ErrorCode.ELEMENT_NOT_VISIBLE,"Element is not currently visible and may not be manipulated");};bot.action.checkInteractable_=function(element){if(!bot.dom.isInteractable(element))throw new bot.Error(bot.ErrorCode.INVALID_ELEMENT_STATE,"Element is not currently interactable and may not be manipulated");}; | |
bot.action.clear=function(element){bot.action.checkInteractable_(element);if(!bot.dom.isEditable(element))throw new bot.Error(bot.ErrorCode.INVALID_ELEMENT_STATE,"Element must be user-editable in order to clear it.");bot.action.LegacyDevice_.focusOnElement(element);if(element.value){element.value="";bot.events.fire(element,bot.events.EventType.CHANGE)}if(bot.dom.isContentEditable(element))element.innerHTML=" "};bot.action.focusOnElement=function(element){bot.action.checkInteractable_(element);bot.action.LegacyDevice_.focusOnElement(element)}; | |
bot.action.type=function(element,values,opt_keyboard){bot.action.checkShown_(element);bot.action.checkInteractable_(element);var keyboard=opt_keyboard||new bot.Keyboard;keyboard.moveCursor(element);function typeValue(value){if(goog.isString(value))goog.array.forEach(value.split(""),function(ch){var keyShiftPair=bot.Keyboard.Key.fromChar(ch);if(keyShiftPair.shift)keyboard.pressKey(bot.Keyboard.Keys.SHIFT);keyboard.pressKey(keyShiftPair.key);keyboard.releaseKey(keyShiftPair.key);if(keyShiftPair.shift)keyboard.releaseKey(bot.Keyboard.Keys.SHIFT)}); | |
else if(goog.array.contains(bot.Keyboard.MODIFIERS,value))if(keyboard.isPressed(value))keyboard.releaseKey(value);else keyboard.pressKey(value);else{keyboard.pressKey(value);keyboard.releaseKey(value)}}if(goog.isArray(values))goog.array.forEach(values,typeValue);else typeValue(values);goog.array.forEach(bot.Keyboard.MODIFIERS,function(key){if(keyboard.isPressed(key))keyboard.releaseKey(key)})}; | |
bot.action.submit=function(element){var form=bot.action.LegacyDevice_.findAncestorForm(element);if(!form)throw new bot.Error(bot.ErrorCode.INVALID_ELEMENT_STATE,"Element was not in a form, so could not submit.");bot.action.LegacyDevice_.submitForm(element,form)};bot.action.moveMouse=function(element,opt_coords,opt_mouse){var coords=bot.action.prepareToInteractWith_(element,opt_coords);var mouse=opt_mouse||new bot.Mouse;mouse.move(element,coords)}; | |
bot.action.click=function(element,opt_coords,opt_mouse){var coords=bot.action.prepareToInteractWith_(element,opt_coords);var mouse=opt_mouse||new bot.Mouse;mouse.move(element,coords);mouse.pressButton(bot.Mouse.Button.LEFT);mouse.releaseButton()};bot.action.rightClick=function(element,opt_coords,opt_mouse){var coords=bot.action.prepareToInteractWith_(element,opt_coords);var mouse=opt_mouse||new bot.Mouse;mouse.move(element,coords);mouse.pressButton(bot.Mouse.Button.RIGHT);mouse.releaseButton()}; | |
bot.action.doubleClick=function(element,opt_coords,opt_mouse){var coords=bot.action.prepareToInteractWith_(element,opt_coords);var mouse=opt_mouse||new bot.Mouse;mouse.move(element,coords);mouse.pressButton(bot.Mouse.Button.LEFT);mouse.releaseButton();mouse.pressButton(bot.Mouse.Button.LEFT);mouse.releaseButton()}; | |
bot.action.scrollMouse=function(element,ticks,opt_coords,opt_mouse){var coords=bot.action.prepareToInteractWith_(element,opt_coords);var mouse=opt_mouse||new bot.Mouse;mouse.move(element,coords);mouse.scroll(ticks)}; | |
bot.action.drag=function(element,dx,dy,opt_coords,opt_mouse){var coords=bot.action.prepareToInteractWith_(element,opt_coords);var mouse=opt_mouse||new bot.Mouse;mouse.move(element,coords);mouse.pressButton(bot.Mouse.Button.LEFT);var initPos=goog.style.getClientPosition(element);var midXY=new goog.math.Coordinate(coords.x+Math.floor(dx/2),coords.y+Math.floor(dy/2));mouse.move(element,midXY);var midPos=goog.style.getClientPosition(element);var finalXY=new goog.math.Coordinate(initPos.x+coords.x+dx- | |
midPos.x,initPos.y+coords.y+dy-midPos.y);mouse.move(element,finalXY);mouse.releaseButton()};bot.action.tap=function(element,opt_coords,opt_touchscreen){var coords=bot.action.prepareToInteractWith_(element,opt_coords);var touchscreen=opt_touchscreen||new bot.Touchscreen;touchscreen.move(element,coords);touchscreen.press();touchscreen.release()}; | |
bot.action.swipe=function(element,dx,dy,opt_coords,opt_touchscreen){var coords=bot.action.prepareToInteractWith_(element,opt_coords);var touchscreen=opt_touchscreen||new bot.Touchscreen;touchscreen.move(element,coords);touchscreen.press();var initPos=goog.style.getClientPosition(element);var midXY=new goog.math.Coordinate(coords.x+Math.floor(dx/2),coords.y+Math.floor(dy/2));touchscreen.move(element,midXY);var midPos=goog.style.getClientPosition(element);var finalXY=new goog.math.Coordinate(initPos.x+ | |
coords.x+dx-midPos.x,initPos.y+coords.y+dy-midPos.y);touchscreen.move(element,finalXY);touchscreen.release()}; | |
bot.action.pinch=function(element,distance,opt_coords,opt_touchscreen){if(distance==0)throw new bot.Error(bot.ErrorCode.UNKNOWN_ERROR,"Cannot pinch by a distance of zero.");function startSoThatEndsAtMax(offsetVec){if(distance<0){var magnitude=offsetVec.magnitude();offsetVec.scale(magnitude?(magnitude+distance)/magnitude:0)}}var halfDistance=distance/2;function scaleByHalfDistance(offsetVec){var magnitude=offsetVec.magnitude();offsetVec.scale(magnitude?(magnitude-halfDistance)/magnitude:0)}bot.action.multiTouchAction_(element, | |
startSoThatEndsAtMax,scaleByHalfDistance,opt_coords,opt_touchscreen)};bot.action.rotate=function(element,angle,opt_coords,opt_touchscreen){if(angle==0)throw new bot.Error(bot.ErrorCode.UNKNOWN_ERROR,"Cannot rotate by an angle of zero.");function startHalfwayToMax(offsetVec){offsetVec.scale(0.5)}var halfRadians=Math.PI*(angle/180)/2;function rotateByHalfAngle(offsetVec){offsetVec.rotate(halfRadians)}bot.action.multiTouchAction_(element,startHalfwayToMax,rotateByHalfAngle,opt_coords,opt_touchscreen)}; | |
bot.action.multiTouchAction_=function(element,transformStart,transformHalf,opt_coords,opt_touchscreen){var center=bot.action.prepareToInteractWith_(element,opt_coords);var size=bot.action.getInteractableSize_(element);var offsetVec=new goog.math.Vec2(Math.min(center.x,size.width-center.x),Math.min(center.y,size.height-center.y));var touchScreen=opt_touchscreen||new bot.Touchscreen;transformStart(offsetVec);var start1=goog.math.Vec2.sum(center,offsetVec);var start2=goog.math.Vec2.difference(center, | |
offsetVec);touchScreen.move(element,start1,start2);touchScreen.press(true);var initPos=goog.style.getClientPosition(element);transformHalf(offsetVec);var mid1=goog.math.Vec2.sum(center,offsetVec);var mid2=goog.math.Vec2.difference(center,offsetVec);touchScreen.move(element,mid1,mid2);var movedVec=goog.math.Vec2.difference(goog.style.getClientPosition(element),initPos);transformHalf(offsetVec);var end1=goog.math.Vec2.sum(center,offsetVec).subtract(movedVec);var end2=goog.math.Vec2.difference(center, | |
offsetVec).subtract(movedVec);touchScreen.move(element,end1,end2);touchScreen.release()};bot.action.prepareToInteractWith_=function(element,opt_coords){bot.action.checkShown_(element);var doc=goog.dom.getOwnerDocument(element);goog.style.scrollIntoContainerView(element,goog.userAgent.WEBKIT?doc.body:doc.documentElement);if(opt_coords)return goog.math.Vec2.fromCoordinate(opt_coords);else{var size=bot.action.getInteractableSize_(element);return new goog.math.Vec2(size.width/2,size.height/2)}}; | |
bot.action.getInteractableSize_=function(elem){var size=goog.style.getSize(elem);return size.width>0&&size.height>0||!elem.offsetParent?size:bot.action.getInteractableSize_(elem.offsetParent)};bot.action.LegacyDevice_=function(){goog.base(this)};goog.inherits(bot.action.LegacyDevice_,bot.Device);goog.addSingletonGetter(bot.action.LegacyDevice_);bot.action.LegacyDevice_.focusOnElement=function(element){var instance=bot.action.LegacyDevice_.getInstance();instance.setElement(element);return instance.focusOnElement()}; | |
bot.action.LegacyDevice_.submitForm=function(element,form){var instance=bot.action.LegacyDevice_.getInstance();instance.setElement(element);instance.submitForm(form)};bot.action.LegacyDevice_.findAncestorForm=function(element){return bot.Device.findAncestorForm(element)}; | |
bot.action.scrollIntoView=function(element,opt_coords){if(!bot.dom.isScrolledIntoView(element,opt_coords)){element.scrollIntoView();if(goog.userAgent.OPERA&&!bot.userAgent.isEngineVersion(11)){var win=goog.dom.getWindow(goog.dom.getOwnerDocument(element));for(var frame=win.frameElement;frame;frame=win.frameElement){frame.scrollIntoView();win=goog.dom.getWindow(goog.dom.getOwnerDocument(frame))}}}if(opt_coords){var rect=new goog.math.Rect(opt_coords.x,opt_coords.y,1,1);bot.dom.scrollElementRegionIntoClientView(element, | |
rect)}var isInView=bot.dom.isScrolledIntoView(element,opt_coords);if(!isInView&&opt_coords){var elementCoordsInViewport=goog.style.getClientPosition(element);var desiredPointInViewport=goog.math.Coordinate.sum(elementCoordsInViewport,opt_coords);try{bot.dom.getInViewLocation(desiredPointInViewport,goog.dom.getWindow(goog.dom.getOwnerDocument(element)));isInView=true}catch(ex){isInView=false}}return isInView};goog.provide("webdriver.atoms.inputs");goog.require("bot.Keyboard");goog.require("bot.Mouse");goog.require("bot.action");goog.require("bot.userAgent");goog.require("goog.array");goog.require("goog.string"); | |
webdriver.atoms.inputs.getKeyboard_=function(opt_keyboard){if(opt_keyboard)return opt_keyboard;if(!bot.userAgent.FIREFOX_EXTENSION&&document["__webdriver_keyboard"])return document["__webdriver_keyboard"];var keyboard=new bot.Keyboard;if(!bot.userAgent.FIREFOX_EXTENSION)document["__webdriver_keyboard"]=keyboard;return keyboard}; | |
webdriver.atoms.inputs.getMouse_=function(opt_mouse){if(opt_mouse)return opt_mouse;if(!bot.userAgent.FIREFOX_EXTENSION&&document["__webdriver_mouse"])return document["__webdriver_mouse"];var mouse=new bot.Mouse;if(!bot.userAgent.FIREFOX_EXTENSION)document["__webdriver_mouse"]=mouse;return mouse}; | |
webdriver.atoms.inputs.sendKeys=function(element,var_args,opt_keyboard){var keyboard=webdriver.atoms.inputs.getKeyboard_(opt_keyboard);var to_type=goog.array.slice(arguments,2);var flattened=goog.array.flatten(values);bot.action.type(element,flattened,keyboard)};webdriver.atoms.inputs.click=function(element,opt_mouse){var mouse=webdriver.atoms.inputs.getMouse_(opt_mouse);bot.action.click(element,null,mouse)};goog.require("webdriver.atoms.inputs");goog.exportSymbol("_",webdriver.atoms.inputs.sendKeys);; return this._.apply(null,arguments);}.apply({navigator:typeof window!=undefined?window.navigator:null}, arguments);} | |
keys_fn.apply(null, [document.getElementsByName('q')[0], 'hello']); |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// Copyright 2012 WebDriver committers | |
// Copyright 2012 Software Freedom Conservancy | |
// | |
// Licensed under the Apache License, Version 2.0 (the "License"); | |
// you may not use this file except in compliance with the License. | |
// You may obtain a copy of the License at | |
// | |
// http://www.apache.org/licenses/LICENSE-2.0 | |
// | |
// Unless required by applicable law or agreed to in writing, software | |
// distributed under the License is distributed on an "AS IS" BASIS, | |
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | |
// See the License for the specific language governing permissions and | |
// limitations under the License. | |
/** | |
* @fileoverview Synthetic events for fun and profit. | |
*/ | |
goog.provide('webdriver.atoms.inputs'); | |
goog.require('bot.Keyboard'); | |
goog.require('bot.Mouse'); | |
goog.require('bot.action'); | |
goog.require('bot.userAgent'); | |
goog.require('goog.array'); | |
goog.require('goog.string'); | |
/** | |
* Examines the opt_keyboard parameter, and returns either that or a new | |
* keyboard instance, which is stored on the document for later use. | |
* | |
* @param {bot.Keyboard=} opt_keyboard A mouse to use. | |
* @return {!bot.Keyboard} A mouse instance. | |
*/ | |
webdriver.atoms.inputs.getKeyboard_ = function (opt_keyboard) { | |
if (opt_keyboard) { | |
return opt_keyboard; | |
} | |
if (!bot.userAgent.FIREFOX_EXTENSION && document['__webdriver_keyboard']) { | |
return document['__webdriver_keyboard']; | |
} | |
var keyboard = new bot.Keyboard(); | |
if (!bot.userAgent.FIREFOX_EXTENSION) { | |
document['__webdriver_keyboard'] = keyboard; | |
} | |
return keyboard; | |
}; | |
/** | |
* Examines the opt_mouse parameter, and returns either that or a new mouse | |
* instance, which is stored on the document for later use. | |
* | |
* @param {bot.Mouse=} opt_mouse A mouse to use. | |
* @return {!bot.Mouse} A mouse instance. | |
*/ | |
webdriver.atoms.inputs.getMouse_ = function (opt_mouse) { | |
if (opt_mouse) { | |
return opt_mouse; | |
} | |
if (!bot.userAgent.FIREFOX_EXTENSION && document['__webdriver_mouse']) { | |
return document['__webdriver_mouse']; | |
} | |
var mouse = new bot.Mouse(); | |
if (!bot.userAgent.FIREFOX_EXTENSION) { | |
document['__webdriver_mouse'] = mouse; | |
} | |
return mouse; | |
}; | |
/** | |
* | |
* @param {!Element} element The element to send the keyboard input to. | |
* @param {...(string|!Array.<string>)} var_args What to type. | |
* @param {bot.Keyboard=} opt_keyboard The keyboard to use, or construct one. | |
*/ | |
webdriver.atoms.inputs.sendKeys = function ( | |
element, var_args, opt_keyboard) { | |
var keyboard = webdriver.atoms.inputs.getKeyboard_(opt_keyboard); | |
var to_type = goog.array.slice(arguments, 2); | |
var flattened = goog.array.flatten(values); | |
bot.action.type(element, flattened, keyboard); | |
}; | |
/** | |
* Click on an element. | |
* | |
* @param {!Element} element The element to click. | |
* @param {bot.Mouse=} opt_mouse The mouse to use, or constructs one. | |
*/ | |
webdriver.atoms.inputs.click = function (element, opt_mouse) { | |
var mouse = webdriver.atoms.inputs.getMouse_(opt_mouse); | |
bot.action.click(element, null, mouse); | |
}; |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment