/* Create a new XMLHttpRequest object to talk to the Web server */
var xmlHttp = false;
/*@cc_on @*/
/*@if (@_jscript_version >= 5)
try {
  	xmlHttp = new ActiveXObject("Msxml2.XMLHTTP");
} catch (e) {
  	try {
    		xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
  	} catch (e2) {
    		xmlHttp = false;
  	}
}
@end @*/

if (!xmlHttp && typeof XMLHttpRequest != "undefined") {
  xmlHttp = new XMLHttpRequest();
}


function login(){
	with(loginform){
		if(username.value==""){
			alert("登陆账号不能为空！");
			username.focus();
			return false;
		}
		else if(userpass.value==""){
			alert("密码不能为空！");
			userpass.focus();
			return false;
		}
		else
		{
			userpass.value=MD5(userpass.value);
			document.getElementById("loginform").submit();
			//out.println("<script>history.go(-1),location.reload();</script>");
			return true;
		}
	}
}


// JavaScript Document for normal user register
function checkUser(userId){
	try{
		var userObj = document.getElementById(userId);
		var url = "/User.asp?act=Check&from=js&userName=" +escape(userObj.value);
		xmlHttp.open("GET", url, true);
		xmlHttp.onreadystatechange = checkUserOk;
		xmlHttp.send(null);
	}catch(exception){}	
}

function checkUserOk(){
	if (xmlHttp.readyState == 4) {
		try{
			var response = xmlHttp.responseText;
			var alertObj = document.getElementById("reg_alert");

			if(response == ""){
				alertObj.innerHTML=" <font color=blue>恭喜！此账号可以注册！</font>";
			}else{
				alertObj.innerHTML=" <font color=red>"+response+"</font>";
			}
		}catch(exception){}
	}	
}

function regOk_onClick(){
	userId="New_UserName";
	pass1="pwd";
	pass2="pwd2";
	mailId="email";
	var passObj1 = document.getElementById(pass1);
	var passObj2 = document.getElementById(pass2);
	
	if(passCheck(pass1, pass2) &&checkMail(mailId)){
		checkNewUser(userId)
	}
}

function checkNewUser(userId){
	try{
		var userObj = document.getElementById(userId);
		var url = "User.asp?act=Check&from=js&userName=" +escape(userObj.value);
		xmlHttp.open("GET", url, true);
		xmlHttp.onreadystatechange = checkNewUserOk;
		xmlHttp.send(null);	
	}catch(exception){}	
}

function checkNewUserOk(){
//	alert(xmlHttp.readyState);
	if (xmlHttp.readyState == 4) {
		var passObj1 = document.getElementById("pwd");
		var passObj2 = document.getElementById("pwd2");
		try{
			var response = xmlHttp.responseText;
			//alert("TEST:" + response);
			if(response == ""){
				passObj1.value=MD5(passObj1.value);
				passObj2.value=MD5(passObj2.value);
				document.getElementById("userForm").submit();
			}else{
				alert(response);
				passObj1.value=""
				passObj2.value=""
			}
		}catch(exception){}
	}	
}

function checkAlias(AliasId){
	try{
		var userObj = document.getElementById(AliasId);
		var url = "/User.asp?act=Check&from=js&ctype=2&userName=" +escape(userObj.value);
		xmlHttp.open("GET", url, true);
		xmlHttp.onreadystatechange = checkAliasOk;
		xmlHttp.send(null);
	}catch(exception){}	
}

function checkAliasOk(){
	if (xmlHttp.readyState == 4) {
		try{
			var response = xmlHttp.responseText;
//		var alertObj = document.getElementById("alias_alert");

			if(response == ""){
//				alertObj.innerHTML=" <font color=blue>恭喜！此名称可以使用！</font>";
			}else{
//				alertObj.innerHTML=" <font color=red>"+response+"</font>";
				alert(response);
			}
		}catch(exception){}
	}	
}

// JavaScript Document for Email check
function checkMail(mailId){
	try{
		var mailObj = document.getElementById(mailId);
		var email_re=/(\d|[a-z]|_)+@(\d|[a-z])+.(com|net|cn|org)/;
		if (mailObj.value == "")
		{
			alert("请输入邮箱地址!");
			return false;	
		}
		if(! email_re.test(mailObj.value)){
			alert("请输入正确的邮箱地址！");
			//mailObj.focus();
			return false;	
		}
	}catch(exception){
		alert("Make sure the object id is correct!");
		return false;
	}
	return true;
}


// JavaScript Document for password check
function passCheck(pass1, pass2){
	var passObj1 = document.getElementById(pass1);
	var passObj2 = document.getElementById(pass2);
	value1 = passObj1.value;
	value2 = passObj2.value;
	
	var re=/^.{4}.*$/;
	
	if(! re.test(value1)){
		alert("请输入不少于4位的密码！");
		passObj1.value = "";
		passObj1.focus();
		return false;
	}else if(value2 != value1){
		alert("请确保两次密码输入一致！");
		passObj2.value = "";
		passObj2.focus();
		return false;		
	}
	
	return true;
}


//检测密码强度:
function chkpwd(obj){
	var t=obj.value;
	if (t.length > 0)
	{
	var id=getResult(t);
	var msg=new Array(4);
	msg[0]="密码过短。";
	msg[1]="密码强度差。";
	msg[2]="密码强度良好。";
	msg[3]="密码强度高。";

	var sty=new Array(4);
	sty[0]=-45;
	sty[1]=-30;
	sty[2]=-15;
	sty[3]=0;
		
	var col=new Array(4);
	col[0]="gray";
	col[1]="red";
	col[2]="#ff6600";
	col[3]="Green";
		
	var bImg="images/03.gif";
	var sWidth=300;
	var sHeight=15;
	var Bobj=document.getElementById("chkResult");

	Bobj.style.fontSize="12px";
	Bobj.style.color=col[id];
	Bobj.style.width=sWidth + "px";
	Bobj.style.height=sHeight + "px";
	Bobj.style.lineHeight=sHeight + "px";
	Bobj.style.background="url(" + bImg + ") no-repeat left " + sty[id] + "px";
	Bobj.style.textIndent="20px";
	Bobj.innerHTML="检测提示：" + msg[id];
	}
}
	
	
function getResult(s){
	if(s.length < 4){
		return 0;
	}
	var ls = 0;
	if (s.match(/[a-z]/ig)){
		ls++;
	}
	if (s.match(/[0-9]/ig)){
		ls++;
	}
 	if (s.match(/(.[^a-z0-9])/ig)){
		ls++;
	}
	if (s.length < 6 && ls > 0){
		ls--;
	}
	return ls;
}

function ChangeIt(){
	var passObjOld = document.getElementById("pwdold");
	var passObj1 = document.getElementById("pwd");
	var passObj2 = document.getElementById("pwd2");
	var saveObj = document.getElementById("editsaveing");
	valueOld = passObjOld.value;
	value1 = passObj1.value;
	value2 = passObj2.value;

	if(value1==""){
		document.getElementById("userForm").submit();
		return true;
	}
	if(valueOld==""){
		alert("请输入旧密码！");
		passObjOld.focus();
		return false;		
	}
	
	if(value2 != value1){
		alert("请确保两次密码输入一致！");
		passObj2.value = "";
		passObj2.focus();
		return false;		
	}

	passObjOld.value=MD5(valueOld);
	passObj1.value=MD5(value1);
	passObj2.value=MD5(value2);
	//alert(passObj1.value);
	saveObj.innerHTML="正在保存数据...";

	document.getElementById("userForm").submit();
	saveObj.innerHTML="";

}

function ChangePass(){
	var passObj1 = document.getElementById("pwd");
	var passObj2 = document.getElementById("pwd2");
	var saveObj = document.getElementById("editsaveing");
	value1 = passObj1.value;
	value2 = passObj2.value;

	if(value1==""){
		alert("请输入新密码！");
		passObj1.focus();
		return false;		
	}
	if(value2 != value1){
		alert("请确保两次密码输入一致！");
		passObj2.value = "";
		passObj2.focus();
		return false;		
	}
	passObj1.value=MD5(value1);
	passObj2.value=MD5(value2);
	saveObj.innerHTML="正在重置密码...";
	document.getElementById("userForm").submit();
	saveObj.innerHTML="";
}

//书架处理：
function BookCaseRequest(url){
	try{
		xmlHttp.open("GET", url, true);
		xmlHttp.onreadystatechange = BookCaseOK;
		//禁止IE缓存 
//		xmlHttp.setRequestHeader("If-Modified-Since","0"); 
		xmlHttp.send(null);	
	}catch(exception){}	
}

function BookCaseOK(){
	if (xmlHttp.readyState == 4) {
		if (xmlHttp.status == 0 || xmlHttp.status == 200) {
			try{
				var response = xmlHttp.responseText;
				alert(response );
			}catch(exception){}
		}
		else
		{
			alert("数据处理失败！");
		}
	}	
}

//收藏下架处理：
function DelCaseRequest(url){
	var rt
	rt=confirm("您确认要从书架上删除该小说的收藏吗？"); 
	if (rt==true){
		try{
			xmlHttp.open("GET", url, true);
			xmlHttp.onreadystatechange = DelCaseOK;
			//禁止IE缓存 
			xmlHttp.setRequestHeader("If-Modified-Since","0"); 
			xmlHttp.send(null);	
		}catch(exception){}	
	}

}

function DelCaseOK(){
	if (xmlHttp.readyState == 4) {
		if (xmlHttp.status == 0 || xmlHttp.status == 200) {
			try{
				var response = xmlHttp.responseText;
				alert(response);
				//window.location='/BookCase.asp';
				window.location.reload();
			}catch(exception){}
		}
		else
		{
			alert("数据处理失败！");
		}
	}	
}

//投票处理：
function VoteRequest(url){
	try{
		xmlHttp.open("GET", url, true);
		xmlHttp.onreadystatechange = VoteOK;
		//禁止IE缓存 
		xmlHttp.setRequestHeader("If-Modified-Since","0"); 
		xmlHttp.send(null);	
	}catch(exception){}	
}

function VoteOK(){
	if (xmlHttp.readyState == 4) {
		if (xmlHttp.status == 0 || xmlHttp.status == 200) {
			try{
				var response = xmlHttp.responseText;
				alert(response );
			}catch(exception){}
		}
		else
		{
			alert("数据处理失败！");
		}
	}	
}

//评论处理：
function CommentRequest(url){
	try{
		xmlHttp.open("GET", url, true);
		xmlHttp.onreadystatechange = CommentRequestOk;
		//禁止IE缓存 
		xmlHttp.setRequestHeader("If-Modified-Since","0"); 
		xmlHttp.send(null);
	}catch(exception){}	
}

function CommentRequestOk(){
	if (xmlHttp.readyState == 4) {
		try{
			var response = xmlHttp.responseText;
			var ShowObj = document.getElementById("BookComment");

			if(response == ""){
				ShowObj.innerHTML=" <font color=Red>数据处理错误！</font>";
			}else{
				ShowObj.innerHTML = response;
			}
		}catch(exception){}
	}	
}


function CommentSave(url){
	var TitleObj = document.getElementById("Title");
	var ContentObj = document.getElementById("Content");
	var PostData = "title=" + encodeURIComponent(escape(TitleObj.value)) + "&content=" + encodeURIComponent(escape(ContentObj.value));

	try{
		xmlHttp.open("POST", url, true);

		//禁止IE缓存 
		xmlHttp.setRequestHeader("If-Modified-Since","0"); 
		xmlHttp.setRequestHeader("Content-length", PostData.length);
		xmlHttp.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
		xmlHttp.onreadystatechange = CommentSaveOK;

		xmlHttp.send(PostData);	

	}catch(exception){}	
}

function CommentSaveOK(){
	if (xmlHttp.readyState == 4) {
		if (xmlHttp.status == 0 || xmlHttp.status == 200) {
			try{
				var response = xmlHttp.responseText;
				alert(response );
			}catch(exception){}
		}
		else
		{
			alert("数据处理失败！");
		}
//		CloseItemEdit();
		var ShowObj = document.getElementById("BookComment");
		ShowObj.innerHTML = "";
	}	
}

//信息编辑操作
function ItemInfoRequest(url){
	try{
		xmlHttp.open("GET", url, true);
		xmlHttp.onreadystatechange = ItemInfoShow;
		//禁止IE缓存 
		xmlHttp.setRequestHeader("If-Modified-Since","0"); 
		xmlHttp.send(null);	
	}catch(exception){}	
}

function ItemInfoShow(){
	if (xmlHttp.readyState == 4) {
		if (xmlHttp.status == 0 || xmlHttp.status == 200) {
			try{
				var response = xmlHttp.responseText;
//				alert(response );
				if(response == ""){
					alert("获取信息数据失败！");
				}else {
					OpenItemEdit(response);

				}
			}catch(exception){}
		}
		else
		{
			alert("获取信息数据失败！");
		}
	}	
}

function OpenItemEdit(str){
	var msgw,msgh,bordercolor;
	if (str.length < 50){
		msgw=400;
		msgh=100;
		bordercolor="#c51100";
		titlecolor="#c51100";
	}else{
		msgw=650;
		msgh=150;
		titleheight=25 
		bordercolor="#15a3d9";
		titlecolor="#15a3d9";
	}
	titleheight=25

	var sWidth,sHeight;
	sWidth=screen.width;
	sHeight=screen.height;

	var bgObj=document.createElement("div");
	bgObj.setAttribute('id','bgDiv');
	bgObj.style.position="absolute";
	bgObj.style.top="0";
	bgObj.style.background="#cccccc";
	bgObj.style.filter="progid:DXImageTransform.Microsoft.Alpha(style=3,opacity=25,finishOpacity=75";
	bgObj.style.opacity="0.6";
	bgObj.style.left="0";
	bgObj.style.width=sWidth + "px";
	bgObj.style.height=sHeight + "px";
	bgObj.style.zIndex = "10000";
	document.body.appendChild(bgObj);

	var msgObj=document.createElement("div")
	msgObj.setAttribute("id","msgDiv");
	msgObj.setAttribute("align","center");
	msgObj.style.background="white";
	msgObj.style.border="1px solid " + bordercolor;
	msgObj.style.position = "absolute";
	msgObj.style.left = "50%";
	msgObj.style.top = "50%";
	msgObj.style.font="12px/1.6em Verdana, Geneva, Arial, Helvetica, sans-serif";
	msgObj.style.marginLeft = "-300px" ;
	msgObj.style.marginTop = -270+document.documentElement.scrollTop+"px";
	msgObj.style.width = msgw + "px";
	msgObj.style.height =msgh + "px";
	msgObj.style.textAlign = "center";
	msgObj.style.lineHeight ="25px";
	msgObj.style.zIndex = "10001";

	var title=document.createElement("h4");
	title.setAttribute("id","msgTitle");
	title.setAttribute("align","right");
	title.style.margin="0";
	title.style.padding="3px";
	title.style.background=bordercolor;
	title.style.filter="progid:DXImageTransform.Microsoft.Alpha(startX=20, startY=20, finishX=100, finishY=100,style=1,opacity=75,finishOpacity=100);";
	title.style.opacity="0.75";
	title.style.border="1px solid " + bordercolor;
	title.style.height="18px";
	title.style.font="12px Verdana, Geneva, Arial, Helvetica, sans-serif";
	title.style.color="white";
	title.style.cursor="pointer";
	title.innerHTML="关闭";
	title.onclick=function(){
		document.body.removeChild(bgObj);
		document.getElementById("msgDiv").removeChild(title);
		document.body.removeChild(msgObj);
		
	}
	document.body.appendChild(msgObj);
	document.getElementById("msgDiv").appendChild(title);
	var txt=document.createElement("p");
	txt.style.margin="1em 0"
	txt.setAttribute("id","msgTxt");
	//alert(str);
	txt.innerHTML=str;
	document.getElementById("msgDiv").appendChild(txt);
	str = "";
}

function CloseItemEdit(){
	document.body.removeChild(document.getElementById("bgDiv"));
	document.getElementById("msgDiv").removeChild(document.getElementById("msgTitle"));
	document.body.removeChild(document.getElementById("msgDiv"));
}

var $ = function(Id) {return document.getElementById(Id);}
function ShowInfo(Id) {
	if($(Id).style.display=='') 
	{
		$(Id).style.display='none';
	}
	else
	{
		$(Id).style.display='';
	}
}

function ShowAllInfo(id)
{
	if (id=="AllInfo")
	{
		$("CurtInfo").style.display='none';
		$("AllInfo").style.display='';
	}
	else
	{
		$("CurtInfo").style.display='';
		$("AllInfo").style.display='none';
	}
}


//MD5加密算法javascript实现:
function MD5(sMessage) {   
  function RotateLeft(lValue, iShiftBits) { return (lValue<<iShiftBits) | (lValue>>>(32-iShiftBits)); }
  function AddUnsigned(lX,lY) {
  var lX4,lY4,lX8,lY8,lResult;
  lX8 = (lX & 0x80000000);
  lY8 = (lY & 0x80000000);
  lX4 = (lX & 0x40000000);
  lY4 = (lY & 0x40000000);
  lResult = (lX & 0x3FFFFFFF)+(lY & 0x3FFFFFFF);
  if (lX4 & lY4) return (lResult ^ 0x80000000 ^ lX8 ^ lY8);
  if (lX4 | lY4) {
  if (lResult & 0x40000000) return (lResult ^ 0xC0000000 ^ lX8 ^ lY8);
  else return (lResult ^ 0x40000000 ^ lX8 ^ lY8);
  } else return (lResult ^ lX8 ^ lY8);
  }
  
function F(x,y,z) { return (x & y) | ((~x) & z); }
function G(x,y,z) { return (x & z) | (y & (~z)); }
function H(x,y,z) { return (x ^ y ^ z); }
function I(x,y,z) { return (y ^ (x | (~z))); }
  function FF(a,b,c,d,x,s,ac) {
  a = AddUnsigned(a, AddUnsigned(AddUnsigned(F(b, c, d), x), ac));
  return AddUnsigned(RotateLeft(a, s), b);
  }
  function GG(a,b,c,d,x,s,ac) {
  a = AddUnsigned(a, AddUnsigned(AddUnsigned(G(b, c, d), x), ac));
  return AddUnsigned(RotateLeft(a, s), b);
  }
  function HH(a,b,c,d,x,s,ac) {
  a = AddUnsigned(a, AddUnsigned(AddUnsigned(H(b, c, d), x), ac));
  return AddUnsigned(RotateLeft(a, s), b);
  }
  function II(a,b,c,d,x,s,ac) {
  a = AddUnsigned(a, AddUnsigned(AddUnsigned(I(b, c, d), x), ac));
  return AddUnsigned(RotateLeft(a, s), b);
  }
  
function ConvertToWordArray(sMessage) {
var lWordCount;
var lMessageLength = sMessage.length;
var lNumberOfWords_temp1=lMessageLength + 8;
var lNumberOfWords_temp2=(lNumberOfWords_temp1-(lNumberOfWords_temp1 % 64))/64;
var lNumberOfWords = (lNumberOfWords_temp2+1)*16;
var lWordArray=Array(lNumberOfWords-1);
var lBytePosition = 0;
var lByteCount = 0;
  while ( lByteCount < lMessageLength ) {
  lWordCount = (lByteCount-(lByteCount % 4))/4;
  lBytePosition = (lByteCount % 4)*8;
  lWordArray[lWordCount] = (lWordArray[lWordCount] | (sMessage.charCodeAt(lByteCount)<<lBytePosition));
  lByteCount++;
  }
lWordCount = (lByteCount-(lByteCount % 4))/4;
lBytePosition = (lByteCount % 4)*8;
lWordArray[lWordCount] = lWordArray[lWordCount] | (0x80<<lBytePosition);
lWordArray[lNumberOfWords-2] = lMessageLength<<3;
lWordArray[lNumberOfWords-1] = lMessageLength>>>29;
return lWordArray;
}

function WordToHex(lValue) {
var WordToHexValue="",WordToHexValue_temp="",lByte,lCount;
  for (lCount = 0;lCount<=3;lCount++) {
  lByte = (lValue>>>(lCount*8)) & 255;
  WordToHexValue_temp = "0" + lByte.toString(16);
  WordToHexValue = WordToHexValue + WordToHexValue_temp.substr(WordToHexValue_temp.length-2,2);
  }
return WordToHexValue;
}

var x=Array();
var k,AA,BB,CC,DD,a,b,c,d
var S11=7, S12=12, S13=17, S14=22;
var S21=5, S22=9 , S23=14, S24=20;
var S31=4, S32=11, S33=16, S34=23;
var S41=6, S42=10, S43=15, S44=21;
// Steps 1 and 2. Append padding bits and length and convert to words
x = ConvertToWordArray(sMessage);
// Step 3. Initialise
a = 0x67452301; b = 0xEFCDAB89; c = 0x98BADCFE; d = 0x10325476;
// Step 4. Process the message in 16-word blocks
for (k=0;k<x.length;k+=16) {
AA=a; BB=b; CC=c; DD=d;
a=FF(a,b,c,d,x[k+0], S11,0xD76AA478);
d=FF(d,a,b,c,x[k+1], S12,0xE8C7B756);
c=FF(c,d,a,b,x[k+2], S13,0x242070DB);
b=FF(b,c,d,a,x[k+3], S14,0xC1BDCEEE);
a=FF(a,b,c,d,x[k+4], S11,0xF57C0FAF);
d=FF(d,a,b,c,x[k+5], S12,0x4787C62A);
c=FF(c,d,a,b,x[k+6], S13,0xA8304613);
b=FF(b,c,d,a,x[k+7], S14,0xFD469501);
a=FF(a,b,c,d,x[k+8], S11,0x698098D8);
d=FF(d,a,b,c,x[k+9], S12,0x8B44F7AF);
c=FF(c,d,a,b,x[k+10],S13,0xFFFF5BB1);
b=FF(b,c,d,a,x[k+11],S14,0x895CD7BE);
a=FF(a,b,c,d,x[k+12],S11,0x6B901122);
d=FF(d,a,b,c,x[k+13],S12,0xFD987193);
c=FF(c,d,a,b,x[k+14],S13,0xA679438E);
b=FF(b,c,d,a,x[k+15],S14,0x49B40821);
a=GG(a,b,c,d,x[k+1], S21,0xF61E2562);
d=GG(d,a,b,c,x[k+6], S22,0xC040B340);
c=GG(c,d,a,b,x[k+11],S23,0x265E5A51);
b=GG(b,c,d,a,x[k+0], S24,0xE9B6C7AA);
a=GG(a,b,c,d,x[k+5], S21,0xD62F105D);
d=GG(d,a,b,c,x[k+10],S22,0x2441453);
c=GG(c,d,a,b,x[k+15],S23,0xD8A1E681);
b=GG(b,c,d,a,x[k+4], S24,0xE7D3FBC8);
a=GG(a,b,c,d,x[k+9], S21,0x21E1CDE6);
d=GG(d,a,b,c,x[k+14],S22,0xC33707D6);
c=GG(c,d,a,b,x[k+3], S23,0xF4D50D87);
b=GG(b,c,d,a,x[k+8], S24,0x455A14ED);
a=GG(a,b,c,d,x[k+13],S21,0xA9E3E905);
d=GG(d,a,b,c,x[k+2], S22,0xFCEFA3F8);
c=GG(c,d,a,b,x[k+7], S23,0x676F02D9);
b=GG(b,c,d,a,x[k+12],S24,0x8D2A4C8A);
a=HH(a,b,c,d,x[k+5], S31,0xFFFA3942);
d=HH(d,a,b,c,x[k+8], S32,0x8771F681);
c=HH(c,d,a,b,x[k+11],S33,0x6D9D6122);
b=HH(b,c,d,a,x[k+14],S34,0xFDE5380C);
a=HH(a,b,c,d,x[k+1], S31,0xA4BEEA44);
d=HH(d,a,b,c,x[k+4], S32,0x4BDECFA9);
c=HH(c,d,a,b,x[k+7], S33,0xF6BB4B60);
b=HH(b,c,d,a,x[k+10],S34,0xBEBFBC70);
a=HH(a,b,c,d,x[k+13],S31,0x289B7EC6);
d=HH(d,a,b,c,x[k+0], S32,0xEAA127FA);
c=HH(c,d,a,b,x[k+3], S33,0xD4EF3085);
b=HH(b,c,d,a,x[k+6], S34,0x4881D05);
a=HH(a,b,c,d,x[k+9], S31,0xD9D4D039);
d=HH(d,a,b,c,x[k+12],S32,0xE6DB99E5);
c=HH(c,d,a,b,x[k+15],S33,0x1FA27CF8);
b=HH(b,c,d,a,x[k+2], S34,0xC4AC5665);
a=II(a,b,c,d,x[k+0], S41,0xF4292244);
d=II(d,a,b,c,x[k+7], S42,0x432AFF97);
c=II(c,d,a,b,x[k+14],S43,0xAB9423A7);
b=II(b,c,d,a,x[k+5], S44,0xFC93A039);
a=II(a,b,c,d,x[k+12],S41,0x655B59C3);
d=II(d,a,b,c,x[k+3], S42,0x8F0CCC92);
c=II(c,d,a,b,x[k+10],S43,0xFFEFF47D);
b=II(b,c,d,a,x[k+1], S44,0x85845DD1);
a=II(a,b,c,d,x[k+8], S41,0x6FA87E4F);
d=II(d,a,b,c,x[k+15],S42,0xFE2CE6E0);
c=II(c,d,a,b,x[k+6], S43,0xA3014314);
b=II(b,c,d,a,x[k+13],S44,0x4E0811A1);
a=II(a,b,c,d,x[k+4], S41,0xF7537E82);
d=II(d,a,b,c,x[k+11],S42,0xBD3AF235);
c=II(c,d,a,b,x[k+2], S43,0x2AD7D2BB);
b=II(b,c,d,a,x[k+9], S44,0xEB86D391);
a=AddUnsigned(a,AA); b=AddUnsigned(b,BB); c=AddUnsigned(c,CC); d=AddUnsigned(d,DD);
}
// Step 5. Output the 128 bit digest
var temp= WordToHex(a)+WordToHex(b)+WordToHex(c)+WordToHex(d);
return temp.toLowerCase();
}