document.write('<link type="text/css" rel="stylesheet" href="/QTHome.nsf/qt.css" />\n');document.write('<script type="text/javascript" src="/Qdojo/dojo.js"></script>\n');function dojoIOSync(sURL, Parms, sMethod, sType, bPreventCache){	var theResponse;	var theMethod = sMethod || "POST";	var theType = sType || "text/plain";	var thePreventCache = bPreventCache || false;	var sPassedParms = "";			var ajaxArgs = {		sync: true,		url: sURL,		mimetype: theType,		method: theMethod,		preventCache: thePreventCache,		error: function(type, errObj){		sError = type + '\n';			for(var o in errObj){				sError += o + ' = ' + errObj[o] + '\n';			}			alert(sError);		},		load: function(type, response, evt) {			if(theType.toLowerCase() == "text/xml" && typeof(window.DOMParser) != "undefined"){				response.normalize();			}			if(theType.toLowerCase() == "text/xml" || theType.toLowerCase() == "text/json"){				theResponse = eval(response);			}else{				theResponse = response;			}		}	};		if(typeof(Parms) == "string"){		ajaxArgs.postContent = Parms || "";			}else if(typeof(Parms) == "object"){		ajaxArgs.content = Parms || {};	}			dojo.io.bind(ajaxArgs);	return theResponse;}//validate the email fieldfunction isValidEmail(email){	if(email.indexOf('@',0) < 0 || email.indexOf('.',0) < 0){		return false;	}	else{		return true;	}}function directLogin(){	var poststring = "username=" + dojo.byId("Username").value + "&password=" + dojo.byId("Password").value;		var kw = {		url: "/names.nsf?Login",		postContent: poststring,		load: function(t, txt, e) {			if(txt.indexOf('reasonType') > -1  && txt.indexOf('reasonType') < 800){				dojo.byId("errorSpan").innerHTML = 'Invalid username or password was specified.<br />';			}else{				//location.href = '/qdownloads.nsf';				window.location.reload(true);			}		},		error: function(t, e) {			//alert(e.message);			location.href = location.href;		}	};	dojo.io.bind(kw);}function resetPassword(){	var sURL = '/qdownloads.nsf' + '/resetPassword?OpenAgent';	var sUsername = dojo.byId("Username").value;	if(sUsername == "" || !(isValidEmail(sUsername))){		//input error		alert("Please enter a valid email address.\nA new password will be created and sent to you.");	}else{		var sResponse = dojoIOSync(sURL, 'id=' + sUsername);				if(sResponse.indexOf('ERROR') > -1){ //We have an ERROR			alert(sResponse.split("ERROR")[1]);		}else{			alert("An email has been sent to you with your new password.");		}	}}function activateMenuButton (divID) {	try {		var div = document.getElementById(divID);		div.className += ' menuButtonSelected';	} catch(e) {}}function runGetQuote(){	dojo.byId("errorSpan").style.display = "";	dojo.byId("errorSpan").innerHTML = "Please wait while your information is submitted...";	var form = dojo.byId('quoteForm');	var poststring = dojo.io.encodeForm(form);	var agenturl = "/squote.nsf/GetQuoteAndEmail?OpenAgent";	var kw = {		url: agenturl,		method: "POST",		postContent: poststring,		load: function(type, txt, evt) {			dojo.byId("errorSpan").innerHTML = txt + '<br />';		},		error: function(type, e) {			dojo.byId("errorSpan").innerHTML = '<b>There was an error:</b> ' + e.message + '<br />';		}	};	dojo.io.bind(kw);}var homeDb = "/QTHome.nsf";var blogDb = "/QTBlog.nsf";function buttonHomeClicked () {	location.href=homeDb + "/Pages/main.html";}function buttonDownloadsClicked () {	location.href=homeDb + "/Pages/downloads.html";}function buttonBlogClicked () {	location.href=blogDb;}function buttonSupportClicked () {	location.href=homeDb + "/Pages/support.html";}function buttonDocsClicked () {	location.href=homeDb + "/Pages/infocenter.html";}function buttonMoreInfoClicked () {	location.href=homeDb + "/Pages/moreinfo.html";}// used by the key generator pagefunction encrypt(str, pwd) {  if(pwd == null || pwd.length <= 0) {    alert("Please enter a password with which to encrypt the message.");    return null;  }  var prand = "";  for(var i=0; i<pwd.length; i++) {    prand += pwd.charCodeAt(i).toString();  }  var sPos = Math.floor(prand.length / 5);  var mult = parseInt(prand.charAt(sPos) + prand.charAt(sPos*2) + prand.charAt(sPos*3) + prand.charAt(sPos*4) + prand.charAt(sPos*5));  var incr = Math.ceil(pwd.length / 2);  var modu = Math.pow(2, 31) - 1;  if(mult < 2) {    alert("Algorithm cannot find a suitable hash. Please choose a different password. \nPossible considerations are to choose a more complex or longer password.");    return null;  }  var salt = Math.round(Math.random() * 1000000000) % 100000000;  prand += salt;  while(prand.length > 10) {    prand = (parseInt(prand.substring(0, 10)) + parseInt(prand.substring(10, prand.length))).toString();  }  prand = (mult * prand + incr) % modu;  var enc_chr = "";  var enc_str = "";  for(var i=0; i<str.length; i++) {    enc_chr = parseInt(str.charCodeAt(i) ^ Math.floor((prand / modu) * 255));    if(enc_chr < 16) {      enc_str += "0" + enc_chr.toString(16);    } else enc_str += enc_chr.toString(16);    prand = (mult * prand + incr) % modu;  }  salt = salt.toString(16);  while(salt.length < 8)salt = "0" + salt;  enc_str += salt;  return enc_str;}function encryptMe(){	var sHostname = document.getElementById("txtHostname").value;	var sStartDate = document.getElementById("txtStartDate").value;	// things I did when I was using Dojo datepicker fields instead	//var sStartDate = dojo.widget.byId("dojoStartDate").inputNode.value;	// here's another way to get the date from the datePicker itself. Unfortunately, if we do it	// this way and the user changes the date without the picker, it won't get the new date	//var sStartDate = "";	//var picker = dojo.widget.byId("dojoStartDate").datePicker;	//if (picker.value.toString()) {	//	sStartDate = dojo.date.format( picker.getDate(), {datePattern: "MM/dd/yyyy", selector: "dateOnly"} );	//}//	if(sHostname != '' || sStartDate != ''){	if(sHostname && sStartDate){		var sInput = sHostname + sStartDate;		var sSeed = document.getElementById("txtSeed").value;		var sResult = encrypt(sInput, sSeed);		document.getElementById("taEncrypted").value = sResult;		//document.getElementById("taResult").value = "";	}	else{		alert("Please enter a Hostname and Start Date.");	}}function openDialog (title, url) {	var oDialog = dojo.widget.byId("documentDialog");	if(!oDialog) {		var oDiv = document.createElement("div");		document.body.appendChild(oDiv);		oDialog = dojo.widget.createWidget("dialog", {			title: title,			href: url,			bgColor: "white", 			id: "documentDialog",			timeout: 5000,			closeOnBackgroundClick: true,			displayCloseAction: true, 			executeScripts: true,			preventCache: true		}, oDiv);	} else {		oDialog.title = title;		oDialog.setUrl(url);	}	oDialog.show();}function downloadButtonClicked () {	var anim1 = dojo.lfx.wipeOut("downloadButtonDiv", 1500);	var anim2 = dojo.lfx.wipeIn("pbInstallDiv", 1500);	var composed = dojo.lfx.chain(anim1, anim2);	composed.play(200);	var kw = {		url: "/qthome.nsf/pbDownload?OpenAgent",		method: "GET",		preventCache: true	};	dojo.io.bind(kw);}function downloadButtonClickedFlippr () {	var anim1 = dojo.lfx.wipeOut("downloadButtonDiv", 1500);	var anim2 = dojo.lfx.wipeIn("pbInstallDiv", 1500);	var composed = dojo.lfx.chain(anim1, anim2);	composed.play(200);	var kw = {		url: "/qthome.nsf/flDownload?OpenAgent",		method: "GET",		preventCache: true	};	dojo.io.bind(kw);}