//////////////////////////////////////////////////////////////////////////////////////////////////
//
//  Copyright (c) 2001 SonicWALL, Inc
//
//////////////////////////////////////////////////////////////////////////////////////////////////

function xor(dataArray, patternArray) {
	var strResult = new String();
	if (dataArray.length != patternArray.length) {
		return strResult;
	}
	for (var i = 0; i < dataArray.length; i++) {
		var dat = parseInt(dataArray[i]);
		var pat = parseInt(patternArray[i]);
		var index = (dat ^ pat);
		strResult += escape(String.fromCharCode(index));
	}
	return strResult;
}
function setEncryptSeed(strPassPhrase, randomNumber) {
	var strInternalPageSeedHash = new String();
	if (strPassPhrase.length > 0) {
		strInternalPageSeedHash = calcMD5(randomNumber + strPassPhrase);
		setCookie("PageSeed", strInternalPageSeedHash);
	}
}
function verifyPassword(strPassPhrase, randonNumber1, randomNumber2) {
	var strInternalPageHash = new String();
	if (strPassPhrase.length > 0) {
		strInternalPageHash = calcMD5(randonNumber1 + strPassPhrase);
		setEncryptSeed(strPassPhrase, randomNumber2);
	}
	return strInternalPageHash;
}
function encryptUserPassword(strPassword, randomNumber) {
	var strPageSeedHash = new String();
	strPageSeedHash = getCookie("PageSeed");
	if (strPageSeedHash == null) return("Error");
	return changePassword(strPageSeedHash, randomNumber, strPassword, strPassword);
}
function changePassword(strOldPassword, randomNumber, strNewPassword, strConfirmPassword) {
	var strNewPasswordXOR = new String();
	var newPasswordArray = new Array();
	var oldPasswordHashArray = new Array();
	for (i=0; i<32 ;i++) {
		newPasswordArray[i] = 0;
		oldPasswordHashArray[i] = 0;
	}
	for (i=0; i<strNewPassword.length ;i++) {
		newPasswordArray[i] = strNewPassword.charCodeAt(i);
	}
	var strOldPassHashb = new String(calcMD5(randomNumber + strOldPassword));
	for (i=0; i<strOldPassHashb.length ;i++) {
		oldPasswordHashArray[i] = strOldPassHashb.charCodeAt(i);
	}
	strNewPasswordXOR = xor(oldPasswordHashArray, newPasswordArray);
	return strNewPasswordXOR;
}
function chapDigest(strId, strPass, strChal) {
	var id = getBytes(strId);

	var pass = new Array();
	pass = getChars(strPass);

	var chal = new Array();
	chal = getBytes(strChal);

	var inBuff = new Array();
	inBuff = id.concat(pass, chal);

	var strDigest = new String(calcMD5_2(inBuff));
	return strDigest;
}
function getBytes(str)
{
	var buf = new Array();
	var j = 0;

	for (var i = 0; i < str.length; i += 2)
	{
		buf[j++] = parseInt(str.substr(i,2), 16);
	}
	return buf;
}
function getChars(str)
{
	var buf = new Array();

	for (var i = 0; i < str.length; i++)
	{
		buf[i] = str.charCodeAt(i);
	}
	return buf;
}
function showUlaAup(width, height, scroll) {
	var strScroll = (scroll) ? "" : " SCROLLING=NO";
	var x = (screen.availWidth/2)-230;
	var y = (screen.availHeight/2)-150;
	var msgWin = window.open("","displayWindow","screenX=200,screenY=200,width="+width+",height="+height);
	if (msgWin) {
		msgWin.moveTo(x,y);
		msgWin.document.open("text/html");
		msgWin.document.write('<HTML><HEAD><TITLE>Acceptable Use Policy</TITLE>\n');
		msgWin.document.write('</HEAD>\n');
		msgWin.document.write('<FRAMESET ROWS="*,50">\n');
		msgWin.document.write('<FRAME NAME="frm1" SRC="ulaAup.html"' + strScroll + '>\n');
		msgWin.document.write('<FRAME NAME="frm2" SRC="ulaAup.html" SCROLLING=NO>\n');
		msgWin.document.write('</FRAMESET></HTML>\n');
		msgWin.focus();
	} else {
		alert("Failed to open the SonicWALL Acceptable Usage Policy window.\n\n"
			+ "To get access you will need to ensure that pop-ups are not blocked for '"
			+ location.hostname + "'");
	}

	return msgWin;
}

