function CKSHA256(){this.LICENSE='Copyright CertainKey Inc. 2001-2010.  No unauthorized use permitted.';this.PADDING='\200';for(var i=1;i<128;i++)this.PADDING+='\000';this.K=[0x428a2f98,0x71374491,0xb5c0fbcf,0xe9b5dba5,0x3956c25b,0x59f111f1,0x923f82a4,0xab1c5ed5,0xd807aa98,0x12835b01,0x243185be,0x550c7dc3,0x72be5d74,0x80deb1fe,0x9bdc06a7,0xc19bf174,0xe49b69c1,0xefbe4786,0x0fc19dc6,0x240ca1cc,0x2de92c6f,0x4a7484aa,0x5cb0a9dc,0x76f988da,0x983e5152,0xa831c66d,0xb00327c8,0xbf597fc7,0xc6e00bf3,0xd5a79147,0x06ca6351,0x14292967,0x27b70a85,0x2e1b2138,0x4d2c6dfc,0x53380d13,0x650a7354,0x766a0abb,0x81c2c92e,0x92722c85,0xa2bfe8a1,0xa81a664b,0xc24b8b70,0xc76c51a3,0xd192e819,0xd6990624,0xf40e3585,0x106aa070,0x19a4c116,0x1e376c08,0x2748774c,0x34b0bcb5,0x391c0cb3,0x4ed8aa4a,0x5b9cca4f,0x682e6ff3,0x748f82ee,0x78a5636f,0x84c87814,0x8cc70208,0x90befffa,0xa4506ceb,0xbef9a3f7,0xc67178f2];this.xform=function(S,I){var rol=function(x,n){return(x<<n)|(x>>>(32-n));},F=function(x){return(x+4294967296)%4294967296;},a,b,c,d,e,f,g,h,t1,t2,W=[],i;W[15]=0;for(i=0;i<16;i++){t1=(I[(4*i)]&0xff);t1<<=8;t1|=(I[(4*i)+1]&0xff);t1<<=8;t1|=(I[(4*i)+2]&0xff);t1<<=8;t1|=(I[(4*i)+3]&0xff);W[i]=t1;}for(i=16;i<64;i++){t1=W[i-15];t1=rol(t1,25)^rol(t1,14)^(t1>>>3);t2=W[i-2];t2=rol(t2,15)^rol(t2,13)^(t2>>>10);W[i]=F(t2+W[i-7]+t1+W[i-16]);}a=S[0];b=S[1];c=S[2];d=S[3];e=S[4];f=S[5];g=S[6];h=S[7];for(i=0;i<64;i++){t1=F((rol(e,26)^rol(e,21)^rol(e,7))+((e&f)^(~e&g))+h+this.K[i]+W[i]);t2=F((rol(a,30)^rol(a,19)^rol(a,10))+((a&b)^(a&c)^(b&c)));h=g;g=f;f=e;e=F(d+t1);d=c;c=b;b=a;a=F(t1+t2);}S[0]=F(S[0]+a);S[1]=F(S[1]+b);S[2]=F(S[2]+c);S[3]=F(S[3]+d);S[4]=F(S[4]+e);S[5]=F(S[5]+f);S[6]=F(S[6]+g);S[7]=F(S[7]+h);for(i=0;i<64;i++)W[i]=0;a=b=c=d=e=f=g=h=t1=t2=0;};this.Init=function(){CKSHA256.selfTest();this.count=[0,0];this.state=[0x6a09e667,0xbb67ae85,0x3c6ef372,0xa54ff53a,0x510e527f,0x9b05688c,0x1f83d9ab,0x5be0cd19];this.buf=[];for(var i=0;i<128;i++)this.buf[i]=0;};this.Init();this.Update=function(I,ILen){var i,j,index,partLen,temp=[];temp[4*16-1]=0;index=((this.count[0]>>>3)&0x3f);if(ILen==null)ILen=I.length;if((this.count[0]+=(ILen<<3))<(ILen<<3)){this.count[1]++;this.count[1]+=(ILen>>>29);}partLen=64-index;if(ILen >=partLen){for(j=0;j<partLen;j++)this.buf[index+j]=I.charCodeAt(j);this.xform(this.state,this.buf);for(i=partLen;i+63<ILen;i+=64){for(j=0;j<4*16;j++)temp[j]=I.charCodeAt(i+j);this.xform(this.state,temp);}for(j=0;j<4*16;j++)temp[j]=0;index=0;}else{i=0;}for(j=0;j<ILen-i;j++){this.buf[index+j]=I.charCodeAt(i+j);}};this.Final=function(D){var t,i,tmp=[0,0,0,0,0,0,0,0];this.FinalInt(tmp);for(i=0;i<8;i++){t=tmp[i];D[4*i+3]=(t&0xff);t>>>=8;D[4*i+2]=(t&0xff);t>>>=8;D[4*i+1]=(t&0xff);t>>>=8;D[4*i]=(t&0xff);}};this.FinalInt=function(D){var bits='',index,padLen,t,i,bite=function(n){return String.fromCharCode(n&0xff)};t=this.count[1];bits+=bite(t>>>24);bits+=bite(t>>>16);bits+=bite(t>>>8);bits+=bite(t);t=this.count[0];bits+=bite(t>>>24);bits+=bite(t>>>16);bits+=bite(t>>>8);bits+=bite(t);index=(this.count[0]>>>3)&0x3f;padLen=(index < 56)?(56-index):((64+56)-index);this.Update(this.PADDING,padLen);this.Update(bits,8);for(i=0;i<8;i++){D[i]=this.state[i];this.state[i]=0;}this.count[0]=this.count[1]=0;for(i=0;i<128;i++)this.buf[i]=0;};this.digest=function(I,Ilen){this.Init();this.Update(I,Ilen);var ret=[];this.Final(ret);return ret;};this.digestInt=function(I,Ilen){this.Init();this.Update(I,Ilen);var ret=[];this.FinalInt(ret);return ret;};};CKSHA256.ready=false;CKSHA256.selfTest=function(){if(CKSHA256.ready)return;CKSHA256.ready=true;var hex8=function(n){return hex_(n,8);};var hex=function(n){return hex_(n,2);};var hex_=function(n,l){var ret='',z='0123456789abcdef'.split('');for(var i=0;i<l;i++){ret=z[n&0xf]+ret;n>>>=4;}return ret;};var res=[],i,str=['abc','abcdbcdecdefdefgefghfghighijhijkijkljklmklmnlmnomnopnopq'],ans=['ba7816bf8f01cfea414140de5dae2223b00361a396177a9cb410ff61f20015ad','248d6a61d20638b8e5c026930c3e6039a33ce45964ff2167f6ecedd419db06c1'];res[8*4-1]=0;for(i=0;i<8*4;i++)res[i]=0;md=new CKSHA256();for(t=0;t<str.length;t++){md.Init();md.Update(str[t],str[t].length);md.Final(res);X='';for(i=0;i<8*4;i++)X+=hex(res[i]);if(X.indexOf(ans[t])!=0){alert('SHA-256 KAT test failed!!!\n'+X+'\n'+ans[t]);CKSHA256.ready=false;return 'SHA-256 KAT test failed.';}}return 'SHA-256 KAT test passed.';};CKAES_license=' Copyright CertainKey Inc. 2001-2010\n'+'\n'+' Use of this JavaScript/HTML/Java code on any website without written\n'+' permission of CertainKey Inc. is strictly prohibited.\n'+'\n'+' Contact sales@certainkey.com for reasonable licensing.\n';CKAES=function(){this.erase=function(){for(var i=0;i<exp.length;i++)exp[i]=0;exp=null;};this.init=function(){if(CKAES.ready)return;CKAES.ready=true;var multx2=function(a){return(a>0x7f)? 0x11b^(a<<1):(a<<1);},rol8=function(n){return(n>>>24)|(n<<8);},multx=function(a,b){var i,ret;ret=0;for(i=0;i<8;i++){ret=((b&1)==1)? ret^a : ret;a=(a>0x7f)? 0x11b^(a<<1):(a<<1);b>>>=1;}return ret;};CKAES.Rcon=[];CKAES.Rcon[0]=1;for(var i=1;i<30;i++)CKAES.Rcon[i]=multx2(CKAES.Rcon[i-1]);var sbox='637c777bf26b6fc53001672bfed7ab76ca82c97dfa5947f0add4a2af9ca472c0b7fd9326363ff7cc34a5e5f171d8311504c723c31896059a071280e2eb27b27509832c1a1b6e5aa0523bd6b329e32f8453d100ed20fcb15b6acbbe394a4c58cfd0efaafb434d338545f9027f503c9fa851a3408f929d38f5bcb6da2110fff3d2cd0c13ec5f974417c4a77e3d645d197360814fdc222a908846eeb814de5e0bdbe0323a0a4906245cc2d3ac629195e479e7c8376d8dd54ea96c56f4ea657aae08ba78252e1ca6b4c6e8dd741f4bbd8b8a703eb5664803f60e613557b986c11d9ee1f8981169d98e949b1e87e9ce5528df8ca1890dbfe6426841992d0fb054bb16'.split(''),z='0123456789abcdef';CKAES.S=[];for(var i=0;i<256;i++)CKAES.S[i]=(z.indexOf(sbox[2*i])<<4)| z.indexOf(sbox[2*i+1]);CKAES.T=[[],[],[],[]];for(var i=0;i<256;i++){var a=CKAES.S[i]&0xff;CKAES.T[3][i]=rol8(CKAES.T[2][i]=rol8(CKAES.T[1][i]=rol8(CKAES.T[0][i]=((multx2(a)^a)<<24)|(a<<16)|(a<<8)| multx2(a))));}if(!CKAES.selfTest())CKAES.ready=false;};this.init();this.keySched=function(exp,key){this.init();var i,t,rconIndex=0,S=function(n,s){return(CKAES.S[(n>>s)&0xff]&0xff)<<s;};for(i=0;i<CKAES.Nk;i++)exp[i]=key[i];for(i=CKAES.Nk;i<(CKAES.Nb*(CKAES.Nr+1));i++){t=exp[i-1];if(i%CKAES.Nk==0){t=(t>>>8)|(t<<24);t=S(t,24)| S(t,16)| S(t,8)| S(t);t^=CKAES.Rcon[rconIndex++];}else if(i%CKAES.Nk==4&&CKAES.Nk==8){t=S(t,24)| S(t,16)| S(t,8)| S(t);}exp[i]=exp[i-CKAES.Nk]^t;}rconIndex=t=0;};this.encrypt=function(pt,exp){this.init();var i;for(i=0;i<4;i++)pt[i]^=exp[i];for(i=1;i<CKAES.Nr;i++)this.round(pt,exp,i*CKAES.Nb);this.finalRound(pt,exp,CKAES.Nr*CKAES.Nb);};this.round=function(pt,rnd,idx){var ct=[pt[0],pt[1],pt[2],pt[3]],T=function(t,n,s){return CKAES.T[t][(n>>(t*8))&0xff];};pt[0]=rnd[idx+0]^T(0,ct[0])^T(1,ct[1])^T(2,ct[2])^T(3,ct[3]);pt[1]=rnd[idx+1]^T(0,ct[1])^T(1,ct[2])^T(2,ct[3])^T(3,ct[0]);pt[2]=rnd[idx+2]^T(0,ct[2])^T(1,ct[3])^T(2,ct[0])^T(3,ct[1]);pt[3]=rnd[idx+3]^T(0,ct[3])^T(1,ct[0])^T(2,ct[1])^T(3,ct[2]);ct[0]=ct[1]=ct[2]=ct[3]=0;};this.finalRound=function(pt,rnd,idx){var ct=[0,0,0,0],S=function(n,s){return(CKAES.S[(n>>s)&0xff]&0xff)<<s;};ct[0]=S(pt[0],0)| S(pt[1],8)| S(pt[2],16)| S(pt[3],24);ct[1]=S(pt[1],0)| S(pt[2],8)| S(pt[3],16)| S(pt[0],24);ct[2]=S(pt[2],0)| S(pt[3],8)| S(pt[0],16)| S(pt[1],24);ct[3]=S(pt[3],0)| S(pt[0],8)| S(pt[1],16)| S(pt[2],24);for(var i=0;i<4;i++){pt[i]=ct[i]^rnd[idx+i];ct[i]=0;}};};CKAES.Nk=4;CKAES.Nb=4;CKAES.Nr=(CKAES.Nk==8 ? 14 :(CKAES.Nk==6 ? 12 : 10));CKAES.KEYSCHED_SIZE=CKAES.Nb *(CKAES.Nr+1);CKAES.selfTest=function(){var hex2int=function(ret,arg){var t=0,i,idx,min;var tab='0123456789abcdef';min=CKAES.Nk<ret.length ? CKAES.Nk : ret.length;for(i=0;i<min;i++)ret[i]=0;for(i=0;i<arg.length;i++){if((idx=tab.indexOf(arg.charAt(i)))==-1)continue;t<<=4;t|=idx;if((i%8)==7)ret[i>>3]=t;}return(arg.length >(CKAES.Nk*8));};var aes=new CKAES();var b=[],k=[],c=[],exp=[];hex2int(b,'00000000000000000000000000000000');hex2int(k,'8d296e43780e42bacc6a512bc41e5dc9');hex2int(c,'42cdf9ff51c9fef2f9cb441a3d354792');aes.keySched(exp,k);aes.encrypt(b,exp);return(b[0]==c[0]&&b[1]==c[1]&&b[2]==c[2]&&b[3]==c[3]);};CKBASE64=function(){this.tab=[];this.inv=[];var i,alpha="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=";for(i=0;i<alpha.length;i++)this.tab[i]=alpha.charAt(i);for(i=0;i<256;i++)this.inv[i]=-1;for(i=0;i<alpha.length;i++)this.inv[alpha.charCodeAt(i)]=i;this.inttob64=function(iarr,splitter){var i,j,v,barr=[];for(i=0,j=0;i<iarr.length;i++,j+=4){v=iarr[i];barr[j+0]=v&0xff;v>>>=8;barr[j+1]=v&0xff;v>>>=8;barr[j+2]=v&0xff;v>>>=8;barr[j+3]=v&0xff;}return this.encode(barr,splitter);};this.b64toint=function b64toint(str){var i,v,o=0,ret=[],barr=this.decode(str);for(i=0;i<barr.length;i++){v|=(barr[i]&0xff)<<(8*(i%4));if(i%4==3){ret[o++]=v&0xffffffff;v=0;}}return ret;};this.encode=function(barr,splitter){var i,j,v,carry=0,ret='';var quad,trip,tmp,k=0;for(i=0,j=0;i<barr.length;i+=3){quad=false;trip=false;v=barr[i];v<<=8;if((i+1)< barr.length){v|=barr[i+1];trip=true;}v<<=8;if((i+2)< barr.length){v|=(0xff&barr[i+2]);quad=true;}tmp=this.tab[(quad ?(v&0x3f): 64)];v>>=6;tmp=this.tab[(trip ?(v&0x3f): 64)]+tmp;v>>=6;tmp=this.tab[v&0x3f]+tmp;v>>=6;tmp=this.tab[v&0x3f]+tmp;ret+=tmp;if(splitter!=null&&(k+=4)==64){ret+=splitter;k=0;}}return ret;};this.decode=function(str){var i,v,shift=0,accum=0,out=0,ret=[];for(i=0;i<str.length;i++){v=this.inv[str.charCodeAt(i)];if(v >=0){accum<<=6;shift+=6;accum|=v;if(shift >=8){shift-=8;ret[out++]=((accum>>shift)&0xff);}}}return ret;};};function gel(id){return document.getElementById(id);}function setHTML(id,html,c){var e=gel(id),s=e.style;e.innerHTML=html;s.padding='5px';if(c==null)c="none";s.background=c;}document.write('<form onsubmit="encryptNote();return false;"><div id="simplehidediv" style="width:1px;height:1px;padding:3px;visibility:hidden;">Password: <input type=text id=simplehidepswd name=simplehidepswd onblur="focus();"><input type=submit value=OK></div></form>');function sh_promptPswd(){var e,b,x=0,y=0,d=document,w=window;if(self.pageYOffset!=null){x=self.pageXOffset+w.innerWidth/2;y=self.pageYOffset+w.innerHeight/2;}else if((e=d.documentElement)&&e.scrollTop){x=e.scrollLeft+e.clientWidth/2;y=e.scrollTop+e.clientHeight/2;}else if(b=d.body){x=b.scrollLeft+b.clientWidth/2;y=b.scrollTop+b.clientHeight/2;}e=gel('simplehidediv');s=e.style;s.background='#cccccc';s.border='red 2px solid';s.visibility='visible';s.position='absolute';s.padding='3px';s.width=s.height='';s.left=x+'px';s.top=y+'px';gel('simplehidepswd').focus();}var _dst,_dat;function encryptNote(dst,dat,inPswd){if(dst==null){dst=_dst;}else _dst=dst;if(dat==null)dat=_dat;else _dat=dat;var pswd,p=gel('simplehidepswd');if(p!=null)pswd=p.value;if(inPswd!=null)pswd=inPswd;if(pswd==null  ||  pswd==""){sh_promptPswd();return;}gel('simplehidediv').style.visibility='hidden';p.blur();var enc=sh_encryptE(dat,pswd);if(sh_decryptE(enc,pswd)!=dat){setHTML(dst,"Could not encrypt data.",'#ffcccc');}else{setHTML(dst,"Your Encrypted HTML:<xmp>"+"<script language=javascript src=\"http:/\/www.certainkey.com/sh.js\"></script>\n"+"<script language=javascript>\n"+"<!--\n"+"function decrypt_and_display_html(){\n"+"  /\/ Remove password parameter to prompt user\n"+"  sh_decrypt({id:'id123',str:'"+enc+"',target:'elementId',pswd:'"+pswd+"'});\n"+"}\n"+"/\/ Run at page-load like this ...\n"+"decrypt_and_display_html();\n"+"/\/-->\n"+"</script>\n"+"<!--... or display with the click of a button like this.-->\n"+"<input type=button value=DecryptMe onclick=\"decrypt_and_display_html();\">\n"+"</xmp>","#6CB256");}}function sh_decryptE(str,pswd){var i,len,off=0,col,col2,out=0,tmp=[],ctr=[],ret=[],dat=[],retstr='',inc=function(tmp,ctr){for(var i=3;0<=i;i--){var t=ctr[i];tmp[i]=(t>>>24)|((t&0xff0000)>>8)|((t&0xff00)<<8)|(t<<24);}for(var i=3;0<=i;i--)if(++ctr[i])break;};len=str.substr(0,col=str.indexOf(':'));salt=str.substring(col+1,col2=str.indexOf(':',col+1));str=str.substr(col2+1);var md=new CKSHA256(),key=[];for(var i=0;i<8*1024;i++){var t=i+'\0'+salt+'\0'+pswd+'\n';md.Update(t,t.length);}md.FinalInt(key);for(i=0;i<key.length;i++){var t=key[i];key[i]=(t>>>24)|((t&0xff0000)>>8)|((t&0xff00)<<8)|(t<<24);}var aes=new CKAES(),exp=[];aes.keySched(exp,key);for(i=0;i<str.length/8;i++)dat[i]=0;dat=(new CKBASE64()).b64toint(str);for(var i=0;i<4;i++){var t=dat[off++];ctr[i]=(t>>>24)|((t&0xff0000)>>8)|((t&0xff00)<<8)|(t<<24);}while(off < dat.length){inc(tmp,ctr);aes.encrypt(tmp,exp);for(i=0;i<4&&off<dat.length;i++)ret[out++]=tmp[i]^dat[off++];}for(i=0;i<len;i++){if(i%4==0)t=ret[i>>2];retstr+=String.fromCharCode(t&0xff);t>>=8;}if(ret[0]!=0x70736f6e)return '<font color=red>Could not decrypt,wrong password.</font>';return retstr.substr('nospam:'.length);}function sh_encryptE(str,pswd){var i,off=0,out=0,tmp=[],ctr=[0,0,0,0],ret=[],dat=[],inc=function(tmp,ctr){for(var i=3;0<=i;i--){var t=ctr[i];tmp[i]=(t>>>24)|((t&0xff0000)>>8)|((t&0xff00)<<8)|(t<<24);}for(var i=3;0<=i;i--)if(++ctr[i])break;};var key=[],salt='';for(var i=0;i<4;i++)salt+='0123456789abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyz'.charAt(Math.floor(Math.random()*62));var md=new CKSHA256();for(var i=0;i<8*1024;i++){var t=i+'\0'+salt+'\0'+pswd+'\n';md.Update(t,t.length);}md.FinalInt(key);for(var i=0;i<key.length;i++){var t=key[i];key[i]=(t>>>24)|((t&0xff0000)>>8)|((t&0xff00)<<8)|(t<<24);}var aes=new CKAES(),exp=[];aes.keySched(exp,key);str='nospam:'+str;for(i=0;i<4;i++)ret[out++]=ctr[i]=Math.floor(Math.random()*0xffffffff)&0xffffffff;for(var i=0;i<4;i++){var t=ctr[i];ctr[i]=(t>>>24)|((t&0xff0000)>>8)|((t&0xff00)<<8)|(t<<24);}for(i=0;i<str.length;i++)dat[i>>2]|=str.charCodeAt(i)<<(8*(i%4));while(off < dat.length){inc(tmp,ctr);aes.encrypt(tmp,exp);for(i=0;i<4&&off<dat.length;i++)ret[out++]=tmp[i]^dat[off++];}return str.length+':'+salt+':'+(new CKBASE64()).inttob64(ret,'\n');}function hex(n){var ret='',z='0123456789abcdef'.split('');for(var i=0;i<8;i++){ret=z[n&0xf]+ret;n>>>=4;}return ret;}