try{if(!this.JSON){this.JSON={};}(function(){function E(J){return J<10?"0"+J:J;}if(typeof Date.prototype.toJSON!=="function"){Date.prototype.toJSON=function(J){return isFinite(this.valueOf())?this.getUTCFullYear()+"-"+E(this.getUTCMonth()+1)+"-"+E(this.getUTCDate())+"T"+E(this.getUTCHours())+":"+E(this.getUTCMinutes())+":"+E(this.getUTCSeconds())+"Z":null;};String.prototype.toJSON=Number.prototype.toJSON=Boolean.prototype.toJSON=function(J){return this.valueOf();};}var D=/[\u0000\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g,B=/[\\\"\x00-\x1f\x7f-\x9f\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g,G,H,F={"\b":"\\b","\t":"\\t","\n":"\\n","\f":"\\f","\r":"\\r",'"':'\\"',"\\":"\\\\"},C;function A(J){B.lastIndex=0;return B.test(J)?'"'+J.replace(B,function(K){var L=F[K];return typeof L==="string"?L:"\\u"+("0000"+K.charCodeAt(0).toString(16)).slice(-4);})+'"':'"'+J+'"';}function I(L,O){var J,K,Q,P,N=G,R,M=O[L];if(M&&typeof M==="object"&&typeof M.toJSON==="function"){M=M.toJSON(L);}if(typeof C==="function"){M=C.call(O,L,M);}switch(typeof M){case"string":return A(M);case"number":return isFinite(M)?String(M):"null";case"boolean":case"null":return String(M);case"object":if(!M){return"null";}G+=H;R=[];if(Object.prototype.toString.apply(M)==="[object Array]"){P=M.length;for(J=0;J<P;J+=1){R[J]=I(J,M)||"null";}Q=R.length===0?"[]":G?"[\n"+G+R.join(",\n"+G)+"\n"+N+"]":"["+R.join(",")+"]";G=N;return Q;}if(C&&typeof C==="object"){P=C.length;for(J=0;J<P;J+=1){K=C[J];if(typeof K==="string"){Q=I(K,M);if(Q){R.push(A(K)+(G?": ":":")+Q);}}}}else{for(K in M){if(Object.hasOwnProperty.call(M,K)){Q=I(K,M);if(Q){R.push(A(K)+(G?": ":":")+Q);}}}}Q=R.length===0?"{}":G?"{\n"+G+R.join(",\n"+G)+"\n"+N+"}":"{"+R.join(",")+"}";G=N;return Q;}}if(typeof JSON.stringify!=="function"){JSON.stringify=function(J,L,K){var M;G="";H="";if(typeof K==="number"){for(M=0;M<K;M+=1){H+=" ";}}else{if(typeof K==="string"){H=K;}}C=L;if(L&&typeof L!=="function"&&(typeof L!=="object"||typeof L.length!=="number")){throw new Error("JSON.stringify");}return I("",{"":J});};}if(typeof JSON.parse!=="function"){JSON.parse=function(M,J){var L;function K(Q,O){var R,P,N=Q[O];if(N&&typeof N==="object"){for(R in N){if(Object.hasOwnProperty.call(N,R)){P=K(N,R);if(P!==undefined){N[R]=P;}else{delete N[R];}}}}return J.call(Q,O,N);}D.lastIndex=0;if(D.test(M)){M=M.replace(D,function(N){return"\\u"+("0000"+N.charCodeAt(0).toString(16)).slice(-4);});}if(/^[\],:{}\s]*$/.test(M.replace(/\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g,"@").replace(/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g,"]").replace(/(?:^|:|,)(?:\s*\[)+/g,""))){L=eval("("+M+")");return typeof J==="function"?K({"":L},""):L;}throw new SyntaxError("JSON.parse");};}}());}catch(ex){}try{if("undefined"===typeof JSON){throw new Error("JsonFx.IO requires JSON");}(function(){var A;if("undefined"===typeof XMLHttpRequest){A=!ActiveXObject?[]:["Msxml2.XMLHTTP.6.0","Msxml2.XMLHttp.5.0","Msxml2.XMLHttp.4.0","MSXML2.XMLHTTP.3.0","MSXML2.XMLHTTP","Microsoft.XMLHTTP"];XMLHttpRequest=function(){while(A.length){try{return new ActiveXObject(A[0]);}catch(B){A.shift();}}return null;};}})();var JsonFx;if("undefined"===typeof JsonFx){JsonFx={};}if("undefined"===typeof JsonFx.jsonReviver){JsonFx.jsonReviver=function(B,A){var C;if("string"===typeof A){C=/^(\d{4})-(\d{2})-(\d{2})T(\d{2}):(\d{2}):(\d{2}(?:\.\d*)?)(Z)?$/.exec(A);if(C){if(C[7]){return new Date(Date.UTC(+C[1],+C[2]-1,+C[3],+C[4],+C[5],+C[6]));}else{return new Date(+C[1],+C[2]-1,+C[3],+C[4],+C[5],+C[6]);}}}return A;};}JsonFx.IO={hasAjax:!!new XMLHttpRequest(),timeout:60000,onCreate:null,onBeginRequest:null,onEndRequest:null,onSuccess:null,onTimeout:null,onComplete:null,onFailure:function(F,D,E){if(E){var A=E.name||"Error",C=E.message||String(E),B=isFinite(E.code)?Number(E.code):Number(E.number);if(isFinite(B)){A+=" ("+B+")";}(onerror||alert)("Request "+A+':\n"'+C+'"',F,E.lineNumber||E.line||1);}},validateOptions:function(A){if("object"!==typeof A){A={};}if("boolean"!==typeof A.async){A.async=true;}if("string"!==typeof A.method){A.method="POST";}else{A.method=A.method.toUpperCase();}if("string"!==typeof A.params){A.params=null;}if("object"!==typeof A.headers){A.headers={};}if(A.method==="POST"&&A.params&&!A.headers["Content-Type"]){A.headers["Content-Type"]="application/x-www-form-urlencoded";}A.headers["If-Modified-Since"]="Sun, 1 Jan 1995 00:00:00 GMT";A.headers["Cache-Control"]="no-cache";A.headers.Pragma="no-cache";if("number"!==typeof A.timeout){A.timeout=JsonFx.IO.timeout;}if("function"!==typeof A.onCreate){A.onCreate=JsonFx.IO.onCreate;}if("function"!==typeof A.onSuccess){A.onSuccess=JsonFx.IO.onSuccess;}if("function"!==typeof A.onFailure){A.onFailure=JsonFx.IO.onFailure;}if("function"!==typeof A.onTimeout){A.onTimeout=JsonFx.IO.onTimeout;}if("function"!==typeof A.onComplete){A.onComplete=JsonFx.IO.onComplete;}if("undefined"===typeof A.context){A.context=JsonFx.IO.context;}return A;},sendRequest:function(D,A){A=JsonFx.IO.validateOptions(A);var B=new XMLHttpRequest();if(A.onCreate){A.onCreate.call(this,B,A.context);}if(!B){if(A.onFailure){A.onFailure.call(this,B,A.context,new Error("XMLHttpRequest not supported"));}if(A.onComplete){A.onComplete.call(this,B,A.context);}return;}var E;if(A.timeout>0){E=setTimeout(function(){if(B){B.onreadystatechange=function(){};B.abort();B=null;}if(A.onTimeout){A.onTimeout.call(this,B,A.context,new Error("Request Timeout"));}else{if(A.onFailure){A.onFailure.call(this,B,A.context,new Error("Request Timeout"));}}if(A.onComplete){A.onComplete.call(this,B,A.context);}},A.timeout);}function G(){var J,K;if(B&&B.readyState===4){clearTimeout(E);J=0;try{J=Number(B.status);}catch(I){}if(J===0){return;}else{if(Math.floor(J/100)===2){if(A.onSuccess){A.onSuccess.call(this,B,A.context);}}else{if(A.onFailure){K=new Error(B.statusText);K.code=J;A.onFailure.call(this,B,A.context,K);}}}if(A.onComplete){A.onComplete.call(this,B,A.context);}B=null;}}try{B.onreadystatechange=G;B.open(A.method,D,A.async);if(A.headers){for(var H in A.headers){if(A.headers.hasOwnProperty(H)&&A.headers[H]){try{B.setRequestHeader(H,A.headers[H]);}catch(C){}}}}if(A.method==="POST"&&!A.params){A.params="";}B.send(A.params);}catch(F){if(A.onFailure){A.onFailure.call(this,B,A.context,F);}}finally{G();}},sendJsonRequest:function(A,B){if("undefined"!==typeof B&&"undefined"!==typeof B.params){if(!B.headers||!B.headers["Content-Type"]){B.params=JSON.stringify(B.params);if(!B.headers){B.headers={};}B.headers["Content-Type"]="application/json";}}B=JsonFx.IO.validateOptions(B);B.headers.Accept="application/json, application/jsonml+json";var C=B.onSuccess;B.onSuccess=function(G,E){var F=G?G.responseText:null;try{F=(F&&"string"===typeof F)?JSON.parse(F,JsonFx.jsonReviver):null;if("function"===typeof C){C.call(this,F,E);}}catch(H){if(B.onFailure){B.onFailure.call(this,G,E,H);}}finally{C=B=null;}};var D=null;if(B.onFailure){D=B.onFailure;B.onFailure=function(F,E,G){D.call(this,(F&&F.responseText),E,G);D=null;};}JsonFx.IO.sendRequest.call(this,A,B);},jsonRpcPathEncode:function(C,E){var B,F=encodeURIComponent,A="/";if(C&&C!=="system.describe"){A+=F(C);}if("object"===typeof E){A+="?";if(E instanceof Array){for(B=0;B<E.length;B++){if(B>0){A+="&";}A+=F(B);A+="=";A+=F(E[B]);}}else{for(var D in E){if(E.hasOwnProperty(D)){A+=F(D);A+="=";A+=F(E[D]);}}}}},sendJsonRpc:function(D,C,H,A){A=JsonFx.IO.validateOptions(A);if(!A.headers.Accept){A.headers.Accept="application/json, application/jsonml+json";}var F=A.onSuccess;var E=A.onFailure;A.onSuccess=function(K,J){var I=K?K.responseText:null;try{I=("string"===typeof I)?JSON.parse(I,JsonFx.jsonReviver):null;if(I.error){if(E){E.call(this,I,J,I.error);}}else{if(F){F.call(this,I.result,J);}}}catch(L){if(E){E.call(this,I,J,L);}}E=F=null;};A.onFailure=function(L,K,M){var J=L?L.responseText:null;try{J=(J&&"string"===typeof J)?JSON.parse(J,JsonFx.jsonReviver):null;if(E){E.call(this,J,K,M);}}catch(I){if(E){E.call(this,J,K,M?M:I);}}E=null;};if("object"!==typeof H){H=[H];}var G;if(A.method==="GET"){D+=JsonFx.IO.jsonRpcPathEncode(C,H);}else{G={jsonrpc:"2.0",method:C,params:H,id:new Date().valueOf()};try{G=JSON.stringify(G,function(J,I){return I===""?"":I;});}catch(B){if(E){E.call(this,G,A.context,B);}return;}A.params=G;A.headers["Content-Type"]="application/json";A.headers["Content-Length"]=G.length;}JsonFx.IO.sendRequest(D,A);},loadScript:function(C,E){if(!C){return;}if(E){var A=document.getElementsByTagName("script");for(var D=0;D<A.length;D++){if(A[D].src===C){return;}}}if(!document.body){document.write("<"+'script src="'+C+'" type="text/javascript"><'+"/script>");}else{var B=document.createElement("script");B.setAttribute("type","text/javascript");B.setAttribute("src",C);document.body.appendChild(B);}}};JsonFx.IO.Service=function(A){this.address=A||"";};JsonFx.IO.Service.appRoot="";JsonFx.IO.Service.setAppRoot=function(A){if(!A){JsonFx.IO.Service.appRoot="";return;}if(A.charAt(A.length-1)==="/"){A=A.substr(0,A.length-1);}JsonFx.IO.Service.appRoot=A;};JsonFx.IO.Service.prototype.onBeginRequest=null;JsonFx.IO.Service.prototype.onEndRequest=null;JsonFx.IO.Service.prototype.onAddCustomHeaders=null;JsonFx.IO.Service.prototype.getAddress=function(){if(JsonFx.IO.Service.appRoot){return JsonFx.IO.Service.appRoot+this.address;}else{return this.address;}};JsonFx.IO.Service.prototype.invoke=function(B,D,E){E=JsonFx.IO.validateOptions(E);if(this.isDebug){E.timeout=-1;}var C=this,A=null;if("function"===typeof this.onEndRequest){A=E.onComplete;E.onComplete=function(F,G){C.onEndRequest(G);if(A){A(F,G);}C=A=null;};}if("function"===typeof this.onAddCustomHeaders){this.onAddCustomHeaders(E.headers);}if("function"===typeof this.onBeginRequest){this.onBeginRequest(E.context);}JsonFx.IO.sendJsonRpc(this.getAddress(),B,D,E);};JsonFx.IO.Service.prototype["system.describe"]=JsonFx.IO.Service.prototype.$describe=function(A){this.invoke("system.describe",null,A);};}catch(ex){}try{var JsonML;if("undefined"===typeof JsonML){JsonML={};}(function(){var D={rowspan:"rowSpan",colspan:"colSpan",cellpadding:"cellPadding",cellspacing:"cellSpacing",tabindex:"tabIndex",accesskey:"accessKey",hidefocus:"hideFocus",usemap:"useMap",maxlength:"maxLength",readonly:"readOnly",contenteditable:"contentEditable"},B={enctype:"encoding",onscroll:"DOMMouseScroll"},I=(function(N){var M={};while(N.length){var L=N.shift();M["on"+L.toLowerCase()]=L;}return M;})("blur,change,click,dblclick,error,focus,keydown,keypress,keyup,load,mousedown,mouseenter,mouseleave,mousemove,mouseout,mouseover,mouseup,resize,scroll,select,submit,unload".split(","));function F(N,L,M){if("string"===typeof M){M=new Function("event",M);}if("function"!==typeof M){return;}N[L]=M;}function C(M,P){if(P.name&&document.attachEvent){try{var Q=document.createElement("<"+M.tagName+" name='"+P.name+"'>");if(M.tagName===Q.tagName){M=Q;}}catch(O){}}for(var L in P){if(P.hasOwnProperty(L)){var N=P[L];if(L&&N){L=D[L.toLowerCase()]||L;if(L==="style"){if("undefined"!==typeof M.style.cssText){M.style.cssText=N;}else{M.style=N;}}else{if(L==="class"){M.className=N;}else{if(I[L]){F(M,L,N);if(B[L]){F(M,B[L],N);}}else{if("string"===typeof N||"number"===typeof N||"boolean"===typeof N){M.setAttribute(L,N);if(B[L]){M.setAttribute(B[L],N);}}else{M[L]=N;if(B[L]){M[B[L]]=N;}}}}}}}}return M;}function K(M,O){if(O){if(M.tagName&&M.tagName.toLowerCase()==="table"&&M.tBodies){if(!O.tagName){if(O.nodeType===11){while(O.firstChild){K(M,O.removeChild(O.firstChild));}}return;}var P=O.tagName.toLowerCase();if(P&&P!=="tbody"&&P!=="thead"){var N=M.tBodies.length>0?M.tBodies[M.tBodies.length-1]:null;if(!N){N=document.createElement(P==="th"?"thead":"tbody");M.appendChild(N);}N.appendChild(O);}else{if(M.canHaveChildren!==false){M.appendChild(O);}}}else{if(M.canHaveChildren!==false){M.appendChild(O);}else{if(M.tagName&&M.tagName.toLowerCase()==="object"&&O.tagName&&O.tagName.toLowerCase()==="param"){try{M.appendChild(O);}catch(Q){}try{if(M.object){M.object[O.name]=O.value;}}catch(L){}}}}}}function G(L){return L&&(L.nodeType===3)&&(!L.nodeValue||!/\S/.exec(L.nodeValue));}function E(L){if(L){while(G(L.firstChild)){L.removeChild(L.firstChild);}while(G(L.lastChild)){L.removeChild(L.lastChild);}}}function J(L){var N=document.createElement("div");N.innerHTML=L;E(N);if(N.childNodes.length===1){return N.firstChild;}var M=document.createDocumentFragment?document.createDocumentFragment():document.createElement("");while(N.firstChild){M.appendChild(N.firstChild);}return M;}function H(L){this.value=L;}JsonML.raw=function(L){return new H(L);};function A(N,L,M){return document.createTextNode("["+N+"]");}JsonML.onerror=null;JsonML.parse=function(U,M){try{if(!U){return null;}if("string"===typeof U){return document.createTextNode(U);}if(U instanceof H){return J(U.value);}if(!JsonML.isElement(U)){throw new SyntaxError("invalid JsonML");}var L;var N=U[0];if(!N){var O=document.createDocumentFragment?document.createDocumentFragment():document.createElement("");for(L=1;L<U.length;L++){K(O,JsonML.parse(U[L],M));}E(O);if(O.childNodes.length===1){return O.firstChild;}return O;}var T=(N.toLowerCase()==="style"&&document.createStyleSheet);var Q=T?document.createStyleSheet():document.createElement(N);for(L=1;L<U.length;L++){if(U[L] instanceof Array||"string"===typeof U[L]){if(T){Q.cssText=U[L];}else{K(Q,JsonML.parse(U[L],M));}}else{if(U[L] instanceof H){K(Q,J(U[L].value));}else{if("object"===typeof U[L]&&U[L]!==null&&Q.nodeType===1){Q=C(Q,U[L]);}}}}if(T){return null;}E(Q);return(Q&&"function"===typeof M)?M(Q):Q;}catch(S){try{var R=("function"===typeof JsonML.onerror)?JsonML.onerror:A;return R(S,U,M);}catch(P){return document.createTextNode("["+P+"]");}}};JsonML.isElement=function(L){return(L instanceof Array)&&("string"===typeof L[0]);};JsonML.isFragment=function(L){return(L instanceof Array)&&(L[0]==="");};JsonML.getTagName=function(L){return L[0]||"";};JsonML.isAttributes=function(L){return !!L&&("object"===typeof L)&&!(L instanceof Array);};JsonML.hasAttributes=function(L){if(!JsonML.isElement(L)){throw new SyntaxError("invalid JsonML");}return JsonML.isAttributes(L[1]);};JsonML.getAttributes=function(O,M){if(JsonML.hasAttributes(O)){return O[1];}if(!M){return undefined;}var L=O.shift();var N={};O.unshift(N);O.unshift(L||"");return N;};JsonML.addAttributes=function(P,O){if(!JsonML.isElement(P)||!JsonML.isAttributes(O)){throw new SyntaxError("invalid JsonML");}if(!JsonML.isAttributes(P[1])){var L=P.shift();P.unshift(O);P.unshift(L||"");return;}var N=P[1];for(var M in O){if(O.hasOwnProperty(M)){N[M]=O[M];}}};JsonML.getAttribute=function(M,L){if(!JsonML.hasAttributes(M)){return undefined;}return M[1][L];};JsonML.setAttribute=function(N,M,L){JsonML.getAttributes(N,true)[M]=L;};JsonML.appendChild=function(L,M){if(M instanceof Array&&M[0]===""){M.shift();while(M.length){JsonML.appendChild(L,M.shift(),arguments[2]);}}else{if(M&&"object"===typeof M){if(M instanceof Array){if(!JsonML.isElement(L)||!JsonML.isElement(M)){throw new SyntaxError("invalid JsonML");}if("function"===typeof arguments[2]){arguments[2](L,M);}L.push(M);}else{if(M instanceof H){if(!JsonML.isElement(L)){throw new SyntaxError("invalid JsonML");}L.push(M);}else{JsonML.addAttributes(L,M);}}}else{if("undefined"!==typeof M&&M!==null){if(!(L instanceof Array)){throw new SyntaxError("invalid JsonML");}M=String(M);if(M&&L.length>1&&"string"===typeof L[L.length-1]){L[L.length-1]+=M;}else{if(M||!L.length){L.push(M);}}}}}};JsonML.getChildren=function(L){if(JsonML.hasAttributes(L)){L.slice(2);}L.slice(1);};})();}catch(ex){}try{var JsonML;if("undefined"===typeof JsonML){JsonML={};}JsonML.BST=(function(){var E="jbst:visible",A="jbst:oninit",G="jbst:onload";function B(L,K){var J=L[K]||null;if(J){if("function"!==typeof J){try{J=new Function(String(J));}catch(M){J=null;}}if(J){L[K.split(":").join("$")]=J;}delete L[K];}return J;}function I(J){return"["+J+"]";}function D(L,K){K=K.split(":").join("$");var J=L[K];if(J){try{delete L[K];}catch(M){L[K]=undefined;}}return J;}function C(K){var J=D(K,A);if("function"===typeof J){J.call(K);}J=D(K,G);if("function"===typeof J){setTimeout(function(){J.call(K);J=K=null;},0);}if(JsonML.BST.filter){return JsonML.BST.filter(K);}return K;}function F(N,P,O,J,L,K,M){try{N.data=("undefined"!==typeof P)?P:null;N.index=isFinite(O)?Number(O):NaN;N.count=isFinite(J)?Number(J):NaN;N.args=("undefined"!==typeof L)?L:null;return K.apply(N,M||[]);}finally{delete N.count;delete N.index;delete N.data;delete N.args;}}function H(K){if("undefined"===typeof K){throw new Error("JBST tree is undefined");}var L=this,M=JsonML.appendChild;function J(T,U,b,N,W){try{if(T){var Y;if("function"===typeof T){Y=F(L,U,b,N,W,T);if(Y instanceof H){return Y.dataBind(U,b,N,W);}return Y;}if(T instanceof Array){var P=("function"===typeof JsonML.BST.onbound)&&JsonML.BST.onbound,S=("function"===typeof JsonML.BST.onappend)&&JsonML.BST.onappend,R=S&&function(e,f){F(L,U,b,N,W,S,[e,f]);};Y=[];for(var V=0;V<T.length;V++){var a=J(T[V],U,b,N,W);M(Y,a,R);if(!V&&!Y[0]){S=R=null;}}if(Y[0]&&P){F(L,U,b,N,W,P,[Y]);}if(JsonML.hasAttributes(Y)){var c=Y[1][E];if("undefined"!==typeof c){if(!c){return"";}delete Y[1][E];}B(Y[1],A);B(Y[1],G);}return Y;}if("object"===typeof T){Y={};for(var O in T){if(T.hasOwnProperty(O)){var X=J(T[O],U,b,N,W);if("undefined"!==typeof X&&X!==null){Y[O]=X;}}}return Y;}}return T;}catch(Q){try{var d=("function"===typeof JsonML.BST.onerror)?JsonML.BST.onerror:I;return F(L,U,b,N,W,d,[Q]);}catch(Z){return"["+Z+"]";}}}L.dataBind=function(S,R,N,O){if(S instanceof Array){var Q=[""];N=S.length;for(var P=0;P<N;P++){M(Q,J(K,S[P],P,N,O));}return Q;}else{return J(K,S,R,N,O);}};L.bind=function(R,Q,N,O){var P=L.dataBind(R,Q,N,O);return JsonML.parse(P,C);};L.replace=function(Q,S,R,N,O){if("string"===typeof Q){Q=document.getElementById(Q);}if(Q&&Q.parentNode){var P=L.bind(S,R,N,O);if(P){Q.parentNode.replaceChild(P,Q);}}};}return function(J){return(J instanceof H)?J:new H(J);};})();JsonML.BST.filter=null;JsonML.BST.onerror=null;JsonML.BST.onappend=null;JsonML.BST.onbound=null;}catch(ex){}try{var JsonFx;if("undefined"===typeof JsonFx){JsonFx={};}JsonFx.userAgent={};JsonFx.UA={parseUserAgent:function(J){var M={};if(!J){return M;}J=J.toLowerCase();var B=/[\w\-\.]+[\/][v]?\d+(\.\d+)*/g;var I=/\b(america online browser|aol)[\s\/]*(\d+(\.\d+)*)/;var L=/(\bmsie|microsoft internet explorer)[\s\/]*(\d+(\.\d+)*)/;var N=/rv[:](\d+(\.\d+)*).*?gecko[\/]\d+/;var C=/\bopera[\s\/]*(\d+(\.\d+)*)/;var O=/\b(mspie|microsoft pocket internet explorer)[\s\/]*(\d+(\.\d+)*)/;var H=/\bicab[\s\/]*(\d+(\.\d+)*)/;var D=/\bblackberry\w+[\s\/]+(\d+(\.\d+)*)/;var E=/(\w*mobile\w*|\w*phone\w*|\bpda\b|\bchtml\b|\bmidp\b|\bcldc\b|blackberry\w*|windows ce\b|palm\w*\b|symbian\w*\b)/;var A,K,F,G=J.match(B);if(G){for(A=0;A<G.length;A++){K=G[A].indexOf("/");F=G[A].substring(0,K);if(F&&F!=="mozilla"){if(F==="applewebkit"){F="webkit";}M[F]=G[A].substr(K+1);}}}if(I.exec(J)){M.aol=RegExp.$2;}if(C.exec(J)){M.opera=RegExp.$1;}else{if(H.exec(J)){M.icab=RegExp.$1;}else{if(L.exec(J)){M.ie=RegExp.$2;}else{if(O.exec(J)){M.mspie=RegExp.$2;}else{if(N.exec(J)){M.gecko=RegExp.$1;}}}}}if(!M.blackberry&&D.exec(J)){M.blackberry=RegExp.$1;}if(!M.mobile&&E.exec(J)){M.mobile=RegExp.$1;}return M;},formatCssUserAgent:function(A){function B(H,G){var E=" ua-";H=H.split(".").join("-");var F=E+H;if(G){G=G.split(".").join("-");var I=G.indexOf("-");while(I>0){F+=E+H+"-"+G.substring(0,I);I=G.indexOf("-",I+1);}F+=E+H+"-"+G;}return F;}var D="";for(var C in A){if(C&&A.hasOwnProperty(C)){D+=B(C,A[C]);}}return D;},encodeUserAgent:function(A){var C="";for(var B in A){if(B&&A.hasOwnProperty(B)){if(C){C+="&";}C+=encodeURIComponent(B)+"="+encodeURIComponent(A[B]);}}return C;},setCssUserAgent:function(){JsonFx.userAgent=JsonFx.UA.parseUserAgent(navigator.userAgent);var A=JsonFx.UA.formatCssUserAgent(JsonFx.userAgent);function B(){if(document.body.className){document.body.className+=A;}else{document.body.className=A.substr(1);}}function C(){if(document.body){B();}else{setTimeout(C,0);}}if(typeof jQuery!=="undefined"){jQuery(B);}else{C();}}};}catch(ex){}try{var JsonFx;if("undefined"===typeof JsonFx){JsonFx={};}if("undefined"===typeof JsonFx.UI){JsonFx.UI={};}if("undefined"===typeof JsonML){throw new Error("JsonFx.UI requires JsonML");}JsonFx.UI.cancelEvent=function(A){A=A||window.event;if(A){if(A.stopPropagation){A.stopPropagation();A.preventDefault();}else{try{A.cancelBubble=true;A.returnValue=false;}catch(B){}}}return false;};JsonFx.UI.addHandler=function(D,A,B){if("string"===typeof B){B=new Function(B);}if("function"!==typeof B){return;}if("undefined"!==typeof jQuery){jQuery(D).bind(A,B);}else{if(D.addEventListener){D.addEventListener(A,B,false);}else{if(D.attachEvent){D.attachEvent("on"+A,B);}else{var C=D["on"+A];D["on"+A]=("function"!==typeof C)?B:function(E){return(C.call(this,E)!==false)&&(B.call(this,E)!==false);};}}}};JsonFx.UI.removeHandler=function(C,A,B){if("function"!==typeof B){C["on"+A]=null;return;}if("undefined"!==typeof jQuery){jQuery(C).unbind(A,B);}else{if(C.addEventListener){C.removeEventListener(A,B,false);}else{if(C.attachEvent){C.detachEvent("on"+A,B);}else{C["on"+A]=null;}}}};JsonFx.UI.clear=function(A){if(!A){return;}if("undefined"!==typeof JsonFx.Bindings){JsonFx.Bindings.unbind(A);}while(A.lastChild){A.removeChild(A.lastChild);}};JsonFx.UI.hasClass=function(C,A){if(!C||!C.className||!A){return false;}var B=C.className.split(" ");for(var D=0;D<B.length;D++){if(B[D]===A){return true;}}return false;};JsonFx.UI.addClass=function(B,A){if(!B||!A){return;}B.className+=" "+A;};JsonFx.UI.removeClass=function(C,A){if(!C||!A){return;}var B=C.className.split(" ");for(var D=0;D<B.length;D++){if(!B[D]||B[D]===A){B.splice(D,1);D--;}}C.className=B.join(" ");};JsonFx.UI.findParent=function(B,A,C){if(!A){return null;}if(C){B=B.parentNode;}while(B){if(JsonFx.UI.hasClass(B,A)){return B;}B=B.parentNode;}return null;};JsonFx.UI.findChild=function(C,B,D){if(!B){return null;}var E,A=[];if(D){if(C&&C.childNodes){for(E=0;E<C.childNodes.length;E++){A.push(C.childNodes[E]);}}}else{A.push(C);}while(A.length){C=A.shift();if(JsonFx.UI.hasClass(C,B)){return C;}if(C&&C.childNodes){for(E=0;E<C.childNodes.length;E++){A.push(C.childNodes[E]);}}}return null;};JsonFx.UI.findPrev=function(B,A,C){if(!A){return null;}if(C){B=B.previousSibling;}while(B){if(JsonFx.UI.hasClass(B,A)){return B;}B=B.previousSibling;}return null;};JsonFx.UI.findNext=function(B,A,C){if(!A){return null;}if(C){B=B.nextSibling;}while(B){if(JsonFx.UI.hasClass(B,A)){return B;}B=B.nextSibling;}return null;};JsonFx.UI.bind=function(B,D,C,A){return JsonML.BST(B).bind(D,C,A);};}catch(ex){}try{JsonFx.UA.setCssUserAgent();window.onerror=function(A,B,C){try{B=B||(document.location||window.location).href;if(A&&"object"===typeof A){A=(A.message||A.description);}else{A=String(A);}if(confirm('Script Error:\n\n"'+A+'"\n\nDo you want to debug?')){alert("Move up the Call Stack to get to the source of the error:\n\n"+B+" ("+C+")");;}}catch(D){}return false;};}catch(ex){}try{var InterNetris;if("undefined"===typeof InterNetris){InterNetris={};}InterNetris.Service=new JsonFx.IO.Service("/Services/GameService.jrpc");InterNetris.Service.getSequence=function(max,length,opt){this.invoke("getSequence",[max,length],opt);};InterNetris.Service.newGame=function(startTime,opt){this.invoke("newGame",[startTime],opt);};InterNetris.Service.getGame=function(id,opt){this.invoke("getGame",[id],opt);};InterNetris.Service.getDemo=function(opt){this.invoke("getDemo",null,opt);};InterNetris.Service.saveMove=function(moveTime,id,type,rot,x,y,drop,opt){this.invoke("saveMove",[moveTime,id,type,rot,x,y,drop],opt);};}catch(ex){}try{var InterNetris;if("undefined"===typeof InterNetris){InterNetris={};}if("undefined"===typeof InterNetris.Model){InterNetris.Model={};}InterNetris.Model.Settings={enablePreview:true,enableStickyDrop:true,enableUp:false,labelCells:false,handicapLines:0,startingLevel:0,previewWidth:6,previewHeight:4,gameWidth:10,gameHeight:20,gameSize:11};}catch(ex){}try{var InterNetris;if("undefined"===typeof InterNetris){InterNetris={};}if("undefined"===typeof InterNetris.Model){InterNetris.Model={};}InterNetris.Model.Score=function(B,A){this.id=B;this.player=A||null;this.reset();};InterNetris.Model.Score.prototype.reset=function(){this.time=new Date().valueOf();this.level=this.baseLevel=InterNetris.Model.Settings.startingLevel;this.drop=0;this.lines=0;this.score=0;this.interval=null;};InterNetris.Model.Score.prototype.getSpeed=function(){var A=850-(50*this.level);return(A>1)?A:1;};InterNetris.Model.Score.prototype.add=function(A){if(this.drop<0){this.drop=0;}else{if(this.drop>InterNetris.Model.Settings.gameHeight){this.drop=InterNetris.Model.Settings.gameHeight;}}if(A<0||A>4){A=0;}this.lines+=A;A=[0,10,25,75,300][A];this.score+=(this.level+1)*4*A+this.drop;this.drop=0;var B=this.level;this.level=this.baseLevel+Math.floor(this.lines/20);return(B!==this.level);};}catch(ex){}try{var InterNetris;if("undefined"===typeof InterNetris){InterNetris={};}if("undefined"===typeof InterNetris.Model){InterNetris.Model={};}InterNetris.Model.Netroid=function(C,B,A){this.pts=C;this.size={x:B,y:A};};InterNetris.Model.Netroid.prototype.isEmpty=false;InterNetris.Model.Netroid.prototype.name="\u00A0\u00A0\u00A0";InterNetris.Model.Netroid.prototype.cssClass="Model-Netroid";InterNetris.Model.Netroid.prototype.rotate=function(A){this.rot+=A;while(this.rot<0){this.rot+=this.pts.length;}this.rot%=this.pts.length;};InterNetris.Model.Netroid.prototype.move=function(A,B){if(this.position&&isFinite(A)&&(null!==A)&&isFinite(B)&&(null!==B)){this.position.x+=Number(A);this.position.y+=Number(B);}};InterNetris.Model.Netroid.prototype.setPosition=function(A,B){if(!this.position){this.position={};}if(!isFinite(A)||(null===A)||!isFinite(B)||(null===B)){this.position.x=null;this.position.y=null;}else{this.position.x=Number(A);this.position.y=Number(B);}};InterNetris.Model.Netroid.prototype.getPosition=function(){if(!this.position||!isFinite(this.position.x)||(null===this.position.x)||!isFinite(this.position.y)||(null===this.position.y)){return null;}return this.position;};InterNetris.Model.Netroid.prototype.getPoints=function(){if(!this.position||!isFinite(this.position.x)||(null===this.position.x)||!isFinite(this.position.y)||(null===this.position.y)){return null;}var A=this.position.x,B=this.position.y,E=this.pts[this.rot];if(!E){throw new Error("Invalid netroid rotation.");}var C=[];C.push({x:A,y:B});for(var D=0;D<E.length;D++){C.push({x:E[D].x+A,y:E[D].y+B});}return C;};InterNetris.Model.Empty=new InterNetris.Model.Netroid([[]],1,1);InterNetris.Model.Empty.isEmpty=true;InterNetris.Model.Netroid.prototype.cssClass="empty";InterNetris.Model.Box=function(){this.rot=0;this.position={x:null,y:null};};InterNetris.Model.Box.prototype=new InterNetris.Model.Netroid([[{x:0,y:1},{x:1,y:0},{x:1,y:1}]],2,2);InterNetris.Model.Box.prototype.name="Box";InterNetris.Model.Box.prototype.cssClass="box";InterNetris.Model.Bar=function(){this.rot=0;this.position={x:null,y:null};};InterNetris.Model.Bar.prototype=new InterNetris.Model.Netroid([[{x:2,y:0},{x:-1,y:0},{x:1,y:0}],[{x:0,y:-1},{x:0,y:1},{x:0,y:-2}]],4,1);InterNetris.Model.Bar.prototype.name="Bar";InterNetris.Model.Bar.prototype.cssClass="bar";InterNetris.Model.Tee=function(){this.rot=0;this.position={x:null,y:null};};InterNetris.Model.Tee.prototype=new InterNetris.Model.Netroid([[{x:-1,y:0},{x:1,y:0},{x:0,y:1}],[{x:0,y:1},{x:0,y:-1},{x:-1,y:0}],[{x:1,y:0},{x:-1,y:0},{x:0,y:-1}],[{x:0,y:-1},{x:0,y:1},{x:1,y:0}]],3,2);InterNetris.Model.Tee.prototype.name="Tee";InterNetris.Model.Tee.prototype.cssClass="tee";InterNetris.Model.Zee=function(){this.rot=0;this.position={x:null,y:null};};InterNetris.Model.Zee.prototype=new InterNetris.Model.Netroid([[{x:0,y:1},{x:1,y:1},{x:-1,y:0}],[{x:0,y:1},{x:1,y:0},{x:1,y:-1}]],3,2);InterNetris.Model.Zee.prototype.name="Zee";InterNetris.Model.Zee.prototype.cssClass="zee";InterNetris.Model.Ess=function(){this.rot=0;this.position={x:null,y:null};};InterNetris.Model.Ess.prototype=new InterNetris.Model.Netroid([[{x:0,y:1},{x:1,y:0},{x:-1,y:1}],[{x:-1,y:0},{x:0,y:1},{x:-1,y:-1}]],3,2);InterNetris.Model.Ess.prototype.name="Ess";InterNetris.Model.Ess.prototype.cssClass="ess";InterNetris.Model.Ell=function(){this.rot=0;this.position={x:null,y:null};};InterNetris.Model.Ell.prototype=new InterNetris.Model.Netroid([[{x:-1,y:0},{x:-1,y:1},{x:1,y:0}],[{x:-1,y:-1},{x:0,y:-1},{x:0,y:1}],[{x:-1,y:0},{x:1,y:-1},{x:1,y:0}],[{x:0,y:1},{x:1,y:1},{x:0,y:-1}]],3,2);InterNetris.Model.Ell.prototype.name="Ell";InterNetris.Model.Ell.prototype.cssClass="ell";InterNetris.Model.Jay=function(){this.rot=0;this.position={x:null,y:null};};InterNetris.Model.Jay.prototype=new InterNetris.Model.Netroid([[{x:-1,y:0},{x:1,y:1},{x:1,y:0}],[{x:-1,y:1},{x:0,y:-1},{x:0,y:1}],[{x:-1,y:0},{x:-1,y:-1},{x:1,y:0}],[{x:0,y:1},{x:1,y:-1},{x:0,y:-1}]],3,2);InterNetris.Model.Jay.prototype.name="Jay";InterNetris.Model.Jay.prototype.cssClass="jay";InterNetris.Model.Netroids=[InterNetris.Model.Box,InterNetris.Model.Bar,InterNetris.Model.Tee,InterNetris.Model.Zee,InterNetris.Model.Ess,InterNetris.Model.Ell,InterNetris.Model.Jay];InterNetris.Model.Netroids.Box=InterNetris.Model.Box;InterNetris.Model.Netroids.Bar=InterNetris.Model.Bar;InterNetris.Model.Netroids.Tee=InterNetris.Model.Tee;InterNetris.Model.Netroids.Zee=InterNetris.Model.Zee;InterNetris.Model.Netroids.Ess=InterNetris.Model.Ess;InterNetris.Model.Netroids.Ell=InterNetris.Model.Ell;InterNetris.Model.Netroids.Jay=InterNetris.Model.Jay;InterNetris.Model.Netroids.next=function(){var A=Math.floor(Math.random()*InterNetris.Model.Netroids.length);return new InterNetris.Model.Netroids[A]();};InterNetris.Model.Netroids.create=function(D,A,B,C){var E=new InterNetris.Model.Netroids[D]();E.rot=A;E.setPosition(B,C);return E;};}catch(ex){}try{var InterNetris;if("undefined"===typeof InterNetris){InterNetris={};}if("undefined"===typeof InterNetris.Model){InterNetris.Model={};}InterNetris.Model.Grid=function(C,B,A){this.id=C;this.width=B;this.height=A;this.score=null;this.reset();};InterNetris.Model.Grid.prototype.reset=function(){this.gameId=null;this.netroid=null;this.grid=[];for(var A=0;A<this.height;A++){this.grid[A]=this.createRow();}};InterNetris.Model.Grid.prototype.createRow=function(){var B=[];B.elem=null;for(var A=0;A<this.width;A++){B[A]={netroid:InterNetris.Model.Empty,elem:null};}return B;};InterNetris.Model.Grid.prototype.getPoint=function(A,B){if(!isFinite(A)||(null===A)||!isFinite(B)||(null===B)||B<0||B>=this.height||A<0||A>=this.width){return null;}return this.grid[B][A].netroid;};InterNetris.Model.Grid.prototype.setPoint=function(A,B,C){if(!isFinite(A)||(null===A)||!isFinite(B)||(null===B)||B<0||B>=this.height||A<0||A>=this.width){return;}if(!C){C=InterNetris.Model.Empty;}var D=this.grid[B][A];D.netroid=C;if(D.elem){InterNetris.View.Cell.updateCell(D.elem,C);}};InterNetris.Model.Grid.prototype.getRowElem=function(A){if(!isFinite(A)||(null===A)||A<0||A>=this.height){return null;}return this.grid[A].elem||null;};InterNetris.Model.Grid.prototype.test=function(D){var E,A,B,F,C=D?D.getPoints():null;if(C){for(E=0;E<C.length;E++){A=C[E].x;B=C[E].y;if(A<0||B>=this.height||A>=this.width){return true;}F=this.getPoint(A,B);if(F&&!F.isEmpty){return true;}}return false;}return true;};InterNetris.Model.Grid.prototype.apply=function(E){if(!E){return false;}var D=E.getPoints();if(!D){throw new Error("Netroid '"+E.name+"' does not have a current position");}var A,B,G,F=false;for(var C=0;C<D.length;C++){A=D[C].x;B=D[C].y;if(A<0||A>=this.width||B>=this.height){F=true;}else{G=this.getPoint(A,B);if(G){if(!G.isEmpty&&G.name!==E.name){F=true;}else{this.setPoint(A,B,E);}}}}return F;};InterNetris.Model.Grid.prototype.remove=function(E){if(!E||E.isEmpty){return false;}var D=E.getPoints();if(!D){throw new Error("Netroid '"+E.name+"' does not have a current position");}var A,B,G,F=false;for(var C=0;C<D.length;C++){A=D[C].x;B=D[C].y;if(A<0||A>=this.width||B>=this.height){F=true;}else{G=this.getPoint(A,B);if(G){if(G.name!==E.name){F=true;}else{this.setPoint(A,B,null);}}}}return F;};InterNetris.Model.Grid.prototype.findLines=function(){var D,A,C,B,E=[];for(B=this.height-1;B>=0;B--){D=this.grid[B];A=false;for(C=this.width-1;C>=0;C--){if(D[C].netroid.isEmpty){A=true;break;}}if(!A){E.push(B);}}return E;};InterNetris.Model.Grid.prototype.spliceRows=function(B){var A;if(B&&B.length){for(A=B.length-1;A>=0;A--){this.grid.splice(B[A],1);this.grid.unshift(this.createRow());}}};InterNetris.Model.Grid.prototype.setNetroid=function(A){if(!A||A.isEmpty){if(this.netroid){this.netroid.setPosition(null,null);}this.netroid=null;return false;}if(!A.getPosition()){A.setPosition(Math.floor(this.width/2-1),0);}if(this.netroid){throw new Error("Grid already has a netroid set.");}this.netroid=A;return this.apply(A);};InterNetris.Model.Grid.prototype.rotate=function(A){if(!this.netroid){return;}this.remove(this.netroid);this.netroid.rotate(A);if(this.test(this.netroid)){this.netroid.rotate(-A);}this.apply(this.netroid);};InterNetris.Model.Grid.prototype.move=function(A,B){if(!this.netroid){return;}this.remove(this.netroid);this.netroid.move(A,B);if(this.test(this.netroid)){this.netroid.move(-A,-B);this.apply(this.netroid);if(this.onland&&A===0&&B===1){this.onland(this,this.score);}}else{this.apply(this.netroid);}};InterNetris.Model.Grid.prototype.drop=function(){if(!this.netroid){return 0;}this.remove(this.netroid);var A=0;while(!this.test(this.netroid)){A++;this.netroid.move(0,1);}A--;this.netroid.move(0,-1);this.apply(this.netroid);if(this.onland&&InterNetris.Model.Settings.enableStickyDrop){this.onland(this,this.score);}return A;};}catch(ex){}try{var InterNetris;if("undefined"===typeof InterNetris){InterNetris={};}if("undefined"===typeof InterNetris.View){InterNetris.View={};}InterNetris.View.FadeOut=function(G,J,N){var K=0,C=1,H=0.15;var L=G.length,B=false,M=[];for(var A=0;A<L;A++){G[A].className+=" "+J;M[A]=G[A].style;if(G[A].filters){B=true;M[A].filter+=" progid:DXImageTransform.Microsoft.Alpha(opacity=100) ";var E;try{E=G[A].filters.item("DXImageTransform.Microsoft.Alpha");}catch(D){E=null;}if(!E){M[A].filter+=" alpha(opacity=100) ";try{E=G[A].filters.item("alpha");}catch(I){E=null;}}if(E){M[A].zoom="1";M[A]=E;}else{B=false;}}}function F(O){if(O<K){if(N){N();}M=null;return;}for(var P=0;P<L;P++){if(B){M[P].opacity=Math.floor(100*O);}else{M[P]["-khtml-opacity"]=1*O;M[P]["-moz-opacity"]=1*O;M[P].opacity=1*O;}}setTimeout(function(){F(O-H);},40);}F(C);G=null;};}catch(ex){}try{var InterNetris;if("undefined"===typeof InterNetris){InterNetris={};}if("undefined"===typeof InterNetris.View){InterNetris.View={};}InterNetris.View.Instructions=JsonML.BST(["div",{"class":"instructions"}," ",["dl"," ",["dt","New Game"],["dd","Escape"]," "]," ",["dl"," ",["dt","Pause / Unpause"],["dd","Enter"]," "]," ",["dl"," ",["dt","Zoom In"],["dd","+"],["dd","Page Up"]," "]," ",["dl"," ",["dt","Zoom Out"],["dd","-"],["dd","Page Down"]," "]," ",["dl"," ",["dt","Rotate Right 90\u00B0"],["dd","X"],["dd","KeyPad 9"],["dd","KeyPad 3"]," "]," ",["dl"," ",["dt","Rotate Left -90\u00B0"],["dd","Z"],["dd","KeyPad 7"],["dd","KeyPad 1"]," "]," ",["dl"," ",["dt","Drop"],["dd","Spacebar"]," "]," ",["dl"," ",["dt","Move Left"],["dd","Left Arrow"],["dd","KeyPad 4"]," "]," ",["dl"," ",["dt","Move Right"],["dd","Right Arrow"],["dd","KeyPad 6"]," "]," ",["dl"," ",["dt","Move Down"],["dd","Down Arrow"],["dd","KeyPad 2"]," "]," ",["dl",{"jbst:visible":function(){return !!InterNetris.Model.Settings.enableUp;}}," ",["dt","Move Up",["dd","Up Arrow"],["dd","KeyPad 8"]," "]]]);}catch(ex){}try{var InterNetris;if("undefined"===typeof InterNetris){InterNetris={};}if("undefined"===typeof InterNetris.View){InterNetris.View={};}InterNetris.View.Score=JsonML.BST(["div",{"class":"view-score",id:function(){return this.data.id;}}," ",["h3"," ",["a",{href:function(){return this.data.playerUrl;},target:"_top","jbst:visible":function(){return !!this.data.playerUrl;}},function(){return this.data.player||this.data.name;}]," ",["span",{"jbst:visible":function(){return !this.data.playerUrl;}},function(){return this.data.player||this.data.name;}]," "]," ",["div",{style:function(){return this.data.playerImg?"min-height:50px;background:right center no-repeat url("+this.data.playerImg+");":null;}}," ",["dl"," ",["dt","Level:"],["dd",function(){return this.data.level;}]," "]," ",["dl"," ",["dt","Score:"],["dd",function(){return this.data.score;}]," "]," ",["dl"," ",["dt","Lines:"],["dd",function(){return this.data.lines;}]," "]," "]," "]);(function(){this.render=function(C){var B=document.getElementById(C.id);if(!B){return;}var A=InterNetris.View.Score.bind(C);B.parentNode.replaceChild(A,B);};}).call(InterNetris.View.Score);}catch(ex){}try{var InterNetris;if("undefined"===typeof InterNetris){InterNetris={};}if("undefined"===typeof InterNetris.View){InterNetris.View={};}InterNetris.View.Cell=JsonML.BST(["td",{"class":function(){return this.getCss(this.data.netroid);},"jbst:oninit":function(){return this.getRegister(this.data);}}," ",function(){return this.getLabel(this.data.netroid);}," "]);(function(){this.getRegister=function(A){return function(){A.elem=this;};};this.getCss=function(A){return"cell "+A.cssClass;};this.getLabel=function(A){if(!InterNetris.Model.Settings.labelCells){return InterNetris.Model.Empty.name;}return A.name;};this.updateCell=function(B,A){B.className=InterNetris.View.Cell.getCss(A);if(InterNetris.Model.Settings.labelCells){while(B.lastChild){B.removeChild(B.lastChild);}B.appendChild(document.createTextNode(InterNetris.View.Cell.getLabel(A)));}};}).call(InterNetris.View.Cell);}catch(ex){}try{var InterNetris;if("undefined"===typeof InterNetris){InterNetris={};}if("undefined"===typeof InterNetris.View){InterNetris.View={};}InterNetris.View.Row=JsonML.BST(["tr",{"class":"row","jbst:oninit":function(){return this.getRegister(this.data);}}," ",function(){return JsonML.BST(InterNetris.View.Cell).dataBind(this.data,this.index,this.count);}," "]);(function(){this.getRegister=function(A){return function(){A.elem=this;};};}).call(InterNetris.View.Row);}catch(ex){}try{var InterNetris;if("undefined"===typeof InterNetris){InterNetris={};}if("undefined"===typeof InterNetris.View){InterNetris.View={};}InterNetris.View.Grid=JsonML.BST(["div",{"class":"view-grid",id:function(){return this.data.id;}}," ",["table",{"class":"grid"}," ",function(){return JsonML.BST(InterNetris.View.Row).dataBind(this.data.grid,this.index,this.count);}," "]," "]);(function(){this.rebuild=function(C){var B=document.getElementById(C.id);if(!B){return;}var A=InterNetris.View.Grid.bind(C);B.parentNode.replaceChild(A,B);};this.hideRows=function(A,D,E){if(!D||!D.length){return;}var B=[];for(var C=0;C<D.length;C++){B[C]=A.getRowElem(D[C]);}InterNetris.View.FadeOut(B,"row-completed",E);};}).call(InterNetris.View.Grid);}catch(ex){}try{var InterNetris;if("undefined"===typeof InterNetris){InterNetris={};}if("undefined"===typeof InterNetris.View){InterNetris.View={};}InterNetris.View.Board=JsonML.BST(["div",{id:"board","jbst:onload":function(){return function(){setTimeout(InterNetris.Controller.zoomAuto,100);};}}," ",["table",["tr",["td",{rowspan:"2",valign:"top",style:"min-width:50px;padding:0.5em"}," ",function(){return JsonML.BST(InterNetris.View.Grid).dataBind(InterNetris.Controller.player,this.index,this.count);}," "],["td",{colspan:"2",style:"padding:0.5em"}," ",["div",{"class":"header"}," ",["h1",["a",{href:"/",target:"_top"},"InterNetris"]]," "]," "]],["tr",["td",{style:"min-width:50px;padding:0.5em;vertical-align:top"}," ",function(){return JsonML.BST(InterNetris.View.Score).dataBind(InterNetris.Controller.score,this.index,this.count);}," ",function(){return JsonML.BST(InterNetris.View.Grid).dataBind(InterNetris.Controller.preview,this.index,this.count);}," ",function(){return JsonML.BST(InterNetris.View.Grid).dataBind(InterNetris.Controller.opponent,this.index,this.count);}," ",function(){return JsonML.BST(InterNetris.View.Score).dataBind(InterNetris.Controller.opponentScore,this.index,this.count);}," "],["td",{style:"padding:0.5em;max-width:50%;vertical-align:top"}," ",["p",{"class":"start-btn"}," ",["a",{"class":"pause-game",href:"#pause",onclick:function(){return InterNetris.Controller.stop;}},"Pause Game"]," ",["a",{"class":"start-game",href:"#start",onclick:function(){return function(){if(!InterNetris.Controller.gameOver){InterNetris.Controller.start();}return false;};}},"Continue Game"]," ",["a",{"class":"reset-game",href:"#reset",onclick:function(){return InterNetris.Controller.reset;}},"Start New Game"]," "]," ",function(){return JsonML.BST(InterNetris.View.Instructions).dataBind(this.data,this.index,this.count);}," ",["div",{"class":"copyright"}," ",["p","Copyright \u00A92007-2010 ",["a",{href:"http://jsonfx.net"},"Stephen M. McKamey"]]," "]," "]]]]);}catch(ex){}try{var InterNetris;if("undefined"===typeof InterNetris){InterNetris={};}InterNetris.Controller={dirty:false,gameOver:true,score:new InterNetris.Model.Score("player-score","Player"),player:new InterNetris.Model.Grid("player-grid",InterNetris.Model.Settings.gameWidth,InterNetris.Model.Settings.gameHeight),opponent:new InterNetris.Model.Grid("replay-grid",InterNetris.Model.Settings.gameWidth,InterNetris.Model.Settings.gameHeight),opponentScore:new InterNetris.Model.Score("replay-score","Demo"),preview:new InterNetris.Model.Grid("preview-grid",InterNetris.Model.Settings.previewWidth,InterNetris.Model.Settings.previewHeight)};InterNetris.Controller.player.score=InterNetris.Controller.score;InterNetris.Controller.opponent.score=InterNetris.Controller.opponentScore;InterNetris.Controller.nextNetroid=function(){var A=InterNetris.Controller.player;if(!A||A.netroid){return;}var C=InterNetris.Controller.preview;if(!C){return;}var D=InterNetris.Model.Netroids.next();D.setPosition(Math.floor(C.width/2)-1,Math.floor(C.height/2)-1);var B=C.netroid;if(B){C.remove(B);C.setNetroid(null);B.setPosition(null,null);if(A.setNetroid(B)){InterNetris.Controller.gameOver=true;InterNetris.Controller.stop();JsonFx.UI.removeClass(document.body,"paused");JsonFx.UI.removeClass(document.body,"playing");if(InterNetris.Controller.replayMoves&&InterNetris.Controller.opponent){InterNetris.Controller.opponent.reset();InterNetris.Controller.replay(InterNetris.Controller.replayMoves);}if(InterNetris.FB){InterNetris.FB.publish(InterNetris.Controller.score);}}}C.setNetroid(D);};InterNetris.Controller.stop=function(){if(InterNetris.Controller.score.interval){clearInterval(InterNetris.Controller.score.interval);InterNetris.Controller.score.interval=null;}JsonFx.UI.addClass(document.body,"paused");return false;};InterNetris.Controller.clock=function(){if(InterNetris.Controller.score.interval){if(InterNetris.Controller.gameOver){InterNetris.Controller.stop();}else{if(InterNetris.Controller.player.netroid){InterNetris.Controller.player.move(0,1);}}}};InterNetris.Controller.start=function(){InterNetris.Controller.dirty=true;if(InterNetris.Controller.score.interval){clearInterval(InterNetris.Controller.score.interval);}InterNetris.Controller.score.interval=setInterval(InterNetris.Controller.clock,InterNetris.Controller.score.getSpeed());JsonFx.UI.removeClass(document.body,"paused");JsonFx.UI.addClass(document.body,"playing");return false;};InterNetris.Controller.newGame=function(A){if(InterNetris.Controller.dirty){InterNetris.Controller.player.reset();InterNetris.View.Grid.rebuild(InterNetris.Controller.player);InterNetris.Controller.score.reset();InterNetris.View.Score.render(InterNetris.Controller.score);InterNetris.Controller.replayMoves=null;}if(!InterNetris.Controller.player.netroid){InterNetris.Controller.nextNetroid();}InterNetris.Gat.track("#new-game");InterNetris.Controller.player.gameId=A;InterNetris.Controller.dirty=false;InterNetris.Controller.gameOver=false;JsonFx.UI.removeClass(document.body,"paused");JsonFx.UI.removeClass(document.body,"playing");InterNetris.Controller.start();};InterNetris.Controller.reset=function(){if(!InterNetris.Controller.gameOver){if(!confirm("Are you sure you want to start a new game?")){return;}InterNetris.Controller.stop();}var A=null;InterNetris.Controller.newGame(A);return false;};InterNetris.Controller.checkLines=function(A,B){if(A){var C=A.findLines();if(C&&C.length){if(B&&B.add(C.length)){InterNetris.Controller.stop();}InterNetris.View.Grid.hideRows(A,C,function(){A.spliceRows(C);InterNetris.View.Grid.rebuild(A);InterNetris.View.Score.render(B);InterNetris.Controller.nextNetroid();InterNetris.Controller.start();A=null;});}else{InterNetris.Controller.nextNetroid();}}};InterNetris.Controller.player.onland=function(A,B){var F=A.netroid,C=new Date().valueOf();var D=F.getPosition();if(D){if(A.gameId){InterNetris.Service.saveMove(C,A.gameId,F.name,F.rot,D.x,D.y,B.drop,{onFailure:function(G,H){}});}var E={c:C-B.time,t:F.name,r:F.rot,x:D.x,y:D.y,d:B.drop};if(!InterNetris.Controller.replayMoves){InterNetris.Controller.replayMoves={p:"Replay",m:[]};}InterNetris.Controller.replayMoves.m.push(E);}A.apply(F);A.setNetroid(null);InterNetris.Controller.checkLines(A,B);};InterNetris.Controller.setSize=function(){if(InterNetris.Model.Settings.gameSize>=1){document.body.style.fontSize=InterNetris.Model.Settings.gameSize+"px";}};InterNetris.Controller.zoom=function(A){if(A&&isFinite(A)){InterNetris.Model.Settings.gameSize+=A;if(InterNetris.Model.Settings.gameSize<1){InterNetris.Model.Settings.gameSize=1;}}InterNetris.Controller.setSize();};InterNetris.Controller.zoomAuto=function(){var A=document.documentElement.scrollHeight;var B=document.getElementById("board");if(!A||!B||!B.offsetHeight){return;}InterNetris.Model.Settings.gameSize=Math.floor(InterNetris.Model.Settings.gameSize*A/B.offsetHeight)-1;InterNetris.Controller.setSize();if(document.body.focus){document.body.focus();}};InterNetris.Controller.onkeydown=function(B){B=B||window.event;if(InterNetris.Controller.score.interval){var A=InterNetris.Controller.player;switch(B.keyCode){case 40:case 98:if(B.repeat){InterNetris.Controller.score.drop++;}else{InterNetris.Controller.score.drop=1;}A.move(0,1);break;case 88:case 190:case 105:case 101:case 99:A.rotate(1);break;case 90:case 188:case 103:case 97:A.rotate(-1);break;case 37:case 100:A.move(-1,0);break;case 39:case 102:A.move(1,0);break;case 32:InterNetris.Controller.score.drop=A.drop();break;case 38:case 104:if(InterNetris.Model.Settings.enableUp){A.move(0,-1);}break;case 13:InterNetris.Controller.stop();break;case 109:case 34:InterNetris.Controller.zoom(-1);break;case 61:case 107:case 33:InterNetris.Controller.zoom(1);break;case 65:break;case 27:InterNetris.Controller.reset();break;default:return;}}else{switch(B.keyCode){case 13:if(!InterNetris.Controller.gameOver){InterNetris.Controller.start();}break;case 109:case 34:InterNetris.Controller.zoom(-1);break;case 61:case 107:case 33:InterNetris.Controller.zoom(1);break;case 56:case 106:InterNetris.Controller.zoomAuto();break;case 27:InterNetris.Controller.reset();break;default:return;}}return JsonFx.UI.cancelEvent(B);};InterNetris.Controller.onbeforeunload=function(A){A=A||window.event;if(InterNetris.Controller.score.interval){A.returnValue="Your game is still playing. Leaving will end your game.";}};InterNetris.Controller.replay=function(A){if(!A||InterNetris.Controller.score.interval){return;}InterNetris.Controller.opponentScore.reset();if(A.p){InterNetris.Controller.opponentScore.player=A.p;}InterNetris.View.Score.render(InterNetris.Controller.opponentScore);InterNetris.View.Grid.rebuild(InterNetris.Controller.opponent);setTimeout(InterNetris.Controller.showMoves(InterNetris.Controller.opponent,A.m),500);};InterNetris.Controller.showMoves=function(B,A){return function(){if(!A.length||InterNetris.Controller.score.interval){return;}var D=A.shift();var C=InterNetris.Model.Netroids.create(D.t,D.r,D.x,D.y);B.apply(C);var E=B.findLines();if(E&&E.length){InterNetris.Controller.opponentScore.drop=D.d;InterNetris.Controller.opponentScore.add(E.length);setTimeout(function(){B.spliceRows(E);InterNetris.View.Grid.rebuild(B);InterNetris.View.Score.render(InterNetris.Controller.opponentScore);B=null;},125);}setTimeout(InterNetris.Controller.showMoves(B,A),250);};};InterNetris.Controller.nextNetroid();JsonFx.UI.addHandler(window,"beforeunload",InterNetris.Controller.onbeforeunload);if(!document.attachEvent){JsonFx.UI.addHandler(window,"resize",InterNetris.Controller.zoomAuto);}JsonFx.UI.addHandler(document,"keydown",InterNetris.Controller.onkeydown);if("undefined"!==typeof InterNetris.Service){InterNetris.Service.getDemo({onSuccess:InterNetris.Controller.replay});}}catch(ex){}