function getBrowserName() {
var browserName;
var browserVersion;

if (/MSIE (\d+\.\d+);/.test(navigator.userAgent)){ //test for MSIE x.x;
 browserName = "MSIE";
}

if (/Firefox[\/\s](\d+\.\d+)/.test(navigator.userAgent)){ //test for Firefox/x.x or Firefox x.x (ignoring remaining digits);
 browserName = "Firefox";
}

if (/Opera[\/\s](\d+\.\d+)/.test(navigator.userAgent)){ //test for Firefox/x.x or Firefox x.x (ignoring remaining digits);
 browserName = "Opera";
}

if (/Safari[\/\s](\d+\.\d+)/.test(navigator.userAgent)){ //test for Firefox/x.x or Firefox x.x (ignoring remaining digits);
 browserName = "Safari";
}
browserVersion=new Number(RegExp.$1) // capture x.x portion and store as a number
browserName = (browserName + "-" + browserVersion);
return(browserName);
}



function insertClick() {
}

function defineUser(userid, username, firstname, lastname, userclass) {
this.userid = userid;
this.username = username;
this.firstname = firstname;
this.lastname = lastname;
this.userclass = userclass;
}

function getSelectVal(theElem) {
var idx = theElem.selectedIndex;
var val = theElem.options[idx].value
return(val);
}


function setSelectVal(theElem, theVal) {
var numOpts = theElem.options.length;
var i;
var foundOpt = false;
for (i=0;i<numOpts;i++) {
	if (theElem.options[i].value == theVal) {
		theElem.options[i].selected = true;
		foundOpt = true;
	}
}
return(foundOpt);
}



function getRadioVal(theElems) {
var elem;
var val = "";
var idx;
var numElems = theElems.length;

if (numElems > 1) {
	for (idx=0;idx<numElems;idx++) {
		var theElem = theElems[idx];
		if (theElem.checked == true) {
			val = theElem.value;	
		}
	}
} else {
	if (theElems[0].checked == true) {
		val = theElem.value;	
	}
}
return(val);
}

function setRadioVal(theElem, theVal) {
var numOpts = theElem.options.length;
var i;
var foundOpt = false;
for (i=0;i<numOpts;i++) {
	if (theElem.options[i].value == theVal) {
		theElem.options[i].checked = true;
		foundOpt = true;
	}
}
return(foundOpt);
}




function fillTodaysDate(theElem) {
var today = new Date();
var theYear = today.getYear();
if (theYear < 1000) {
	theYear += 1900;
}
var theMonth = (today.getMonth() + 1);
var dateval = (theYear + "-" + theMonth + "-" + today.getDate());
//alert("filling today's date:" + dateval);
theElem.value = dateval;
return(false);
}



function fillCurrentTime(theElem) {
var today = new Date();
var theHour = today.getHours();
var theMinute = (today.getMinutes());
var dateval = (theHour + ":" + theMinute);

theElem.value = dateval;
return(false);
}




function fillFilename(filename, targElem) {
var start = filename.lastIndexOf("/");

if (start < 1) {
        start = filename.lastIndexOf("\\");
}

if (start < 1) {
        start = filename.lastIndexOf(":");
}

var file = filename.substring(start+1,filename.length);
if (file != '') {
        targElem.value = file;
}

}





function writeWindow(windowname, opener, htmltext, params, focus) {
sWindow = window.open('',windowname,params);
sWindow.document.open();
sWindow.document.write(htmltext);
sWindow.document.close();
if (!focus)  opener.focus(); 
//if (focus) opener.blur();
return (sWindow);
}

function relocateOpener(targetwindow, newurl) {
targetwindow.document.location.href=newurl;
targetwindow.focus();
return (false);
}

function relocDisplayFrame (theURL) {
//alert("relocating frame to " + theURL);
parent.frames['display'].document.location.href = theURL;
return(false);
}



function popWindow(inWindowname, opener, URL, inParams) {
var defaultParams = "width=950,height=800,scrollbars=yes,menubar=no,location=no,status=yes,resizable";
var defaultWindowname = "Popup Window";
var params;
var windowname;

if (!inParams) {
 params = defaultParams;
} else {
 params = inParams;
}
if (!inWindowname) {
 windowname = defaultWindowname;
} else {
 windowname = inWindowname;
}
var uWindow = window.open(URL,windowname,params);
return(false);
}


function popSelectURL(theElem) {
var theURL = getSelectVal(theElem);
popURL(theURL);
theElem.selectedIndex = 0;
}


var popWindowParams = ("width=" + (screen.availWidth-20) + ",height=" + (screen.availHeight-20) + ",resizable,toolbar=yes,location=yes,status=yes,scrollbars=yes");

function popURL(theURL) {
if (theURL != "") {
        popWindow('Popper', this.window, theURL, popWindowParams);
}
return(false);
}




function fixDecimals(value) {
var rv = value;

rv = roundAccuracy(value, 2);

//rv = oldFixDecimals(rv);
return (rv);

}

function roundAccuracy(num, accuracy){
	var factor=Math.pow(10,accuracy);
	return Math.round(num*factor)/factor;
}





function toggleCanvas(canvasName, checkedState) {
var targetCanvas = document.getElementById("canvas" + canvasName);
if (checkedState == true) {
        var sourceCanvas = document.getElementById("source" + canvasName);
        targetCanvas.innerHTML = sourceCanvas.innerHTML;
} else {
        targetCanvas.innerHTML = "";
}
return(false);
}

function goToSelectURL(theElem) {
 var theURL = getSelectVal(theElem);
 theElem.selectedIndex = 0;
 document.location.href=(theURL);
}





function updateStatus(theHTML) {
var canvasResponse = document.getElementById('canvasStatus');
canvasResponse.innerHTML = theHTML;
//document.location.href = (originalURL + "#reviews");
}


function reloadPage() {
window.location.reload();
}

function doNothing () { }






function fillFilename(filename, targElem) {
var start = filename.lastIndexOf("/");

if (start < 1) {
	start = filename.lastIndexOf("\\");
}

if (start < 1) {
	start = filename.lastIndexOf(":");
}

var file = filename.substring(start+1,filename.length);
if (file != '') {
	targElem.value = file;
}

targElem.form.submit();

}





function sendAjax(url, vars, callbackFunction) {
//alert("Sending review to: " + url);

var request = window.XMLHttpRequest ? new XMLHttpRequest() : new ActiveXObject("MSXML2.XMLHTTP.3.0");

request.open("POST", url, true);
request.setRequestHeader("Content-Type", "application/x-www-form-urlencoded"); 

request.onreadystatechange = function(){

                if (request.readyState == 4 && request.status == 200) {

                                if (request.responseText){

                                                callbackFunction(request.responseText);
                                }
                }
}
request.send(vars);

}




function sendAjaxXML(url, vars, callbackFunction) {

var request = window.XMLHttpRequest ? new XMLHttpRequest() : new ActiveXObject("MSXML2.XMLHTTP.3.0");

request.open("POST", url, true);
request.setRequestHeader("Content-Type", "application/x-www-form-urlencoded"); 

request.onreadystatechange = function(){

		if (request.readyState == 4 && request.status == 200) {

				if (request.responseText){

						callbackFunction(request.responseXML);
				}
		}
}
request.send(vars);

}




function userWelcomeMessage(messageString) {
var canvas = document.getElementById('userWelcome');
if (canvas) {
	canvas.innerHTML = messageString;
}
}

function topMessage(messageString) {
var canvas = document.getElementById('topMessage');
if (canvas) {
	if (messageString != "") {
	canvas.innerHTML = ("<div style=\"border-style:solid;border-width:1px;border-color:#fab615;padding:6px;margin-top:12px;margin-bottom:12px;width:95%;background-color:#FEF5B5;font-size:14px;\"><div>" + messageString + "</div><div align=\"right\"><a href=\"javascript:topMessage('');\">close this</a></div></div>");
	} else {
	canvas.innerHTML = "";
	}
}
}

function setInnerHTML(elementId, messageString) {
var canvas = document.getElementById(elementId);
if (canvas) {
	canvas.innerHTML = messageString;
}
}


function showUserWelcome() {
	//if (document.cookie.length > 0) {
		getUserData();
	//} else {
	//	userWelcomeMessage("MEMBERS PLEASE <a href=\"/cgi-bin/login.pl\" class=\"bannerlink\">SIGN IN</a>");
	//}
}

function getUserData() {
	userWelcomeMessage("AUTHENTICATING...");

	var theURL = ("/cgi-bin/userdata.pl");		
	var client;
	

	if (window.XMLHttpRequest) {
		client = new XMLHttpRequest();
	} else if (window.ActiveXObject) {
		// users with activeX off
		try {
			client = new ActiveXObject("Microsoft.XMLHTTP");
		} catch (e) {}
	}

	client.onreadystatechange = function() {	
			if(client.readyState == 4) {	
				var elementsArray = client.responseXML.getElementsByTagName("userdata");
				var i;
				var userid = elementsArray[0].getAttribute("id");
				if (userid > 0) {
					var firstname = elementsArray[0].getAttribute("firstname");
					var lastname = elementsArray[0].getAttribute("lastname");
					var userclass = elementsArray[0].getAttribute("userclass");
					//topMessage("User data loaded.");
					var userWelcomeHTML = (firstname.toUpperCase() + " " + lastname.toUpperCase());
					userWelcomeHTML += ("&nbsp;(<a href=\"/cgi-bin/login.pl?mode=logout\" class=\"bannerlink\">LOG OUT</a>)");
					userWelcomeHTML += ("&nbsp;&nbsp;|&nbsp;&nbsp;<a href=\"/cgi-bin/myaccount.pl\" class=\"bannerlink\">MY HABITUDES</a>");
					userWelcomeHTML += ("&nbsp;&nbsp;|&nbsp;&nbsp;<a href=\"/cgi-bin/webcart.pl\" onClick=\"alert('Goes to shopping cart'); return false;\" class=\"bannerlink\">SHOPPING CART</a>");
					if (userclass == "admin") {
						 setInnerHTML('adminControlsLink', "<div id=\"adminControlClicker\"><a href=\"#\" onClick=\"return adminControl();\" class=\"bannerlink\"><img src=\"/images/public/banner_lockbox.gif\" align=\"bottom\" border=\"0\"></a></div>");
					} else {
						setInnerHTML('adminControlsLink', "<img src=\"/images/public/banner_lockbox.gif\" align=\"bottom\">");
					}
					//var timeNow = new Date();
					//userWelcomeHTML += ("&nbsp;&nbsp;|&nbsp;&nbsp;" + timeNow.toString());
					userWelcomeMessage(userWelcomeHTML);
					//topMessage(document.cookie);
					
				} else {
					var userWelcomeHTML = ("<a href=\"/cgi-bin/login.pl\" class=\"bannerlink\">JOIN HABITUDES</a>");
					userWelcomeHTML += ("&nbsp;&nbsp;|&nbsp;&nbsp;<a href=\"/cgi-bin/login.pl\" class=\"bannerlink\">MEMBERS SIGN IN</a>");
					userWelcomeHTML += ("&nbsp;&nbsp;|&nbsp;&nbsp;<a href=\"#\" onClick=\"alert('Goes to shopping cart'); return false;\" class=\"bannerlink\">SHOPPING CART</a>");
					userWelcomeMessage(userWelcomeHTML);
			}
				//topMessage("");
			}
		}
		
	client.open("POST", theURL, true);
	client.setRequestHeader("Content-Type", "application/x-www-form-urlencoded"); 
	client.send(null);
}





function hideAdminControl() {
var target = document.getElementById("adminControls");
if (target) {
	target.innerHTML = ("");
}
}

var adminControlState = false;


// admin controls
function adminControl()
{		
		var outstring = "";
		outstring += "<div class=\"contentboxRound\" style=\"background-color:#EEEEEE;width:935px;\">";
		outstring += "<table border=\"0\" cellpadding=\"6\"><tr>";
		outstring += "<td align=\"left\" valign=\"top\">";

		
		if (moduleName == "generate") {
			outstring += "<div style=\"margin-top:9px;font-size:14px;font-weight:bold;\">";
			outstring += "<a href=\"/cgi-bin/webdocs.pl?mode=edit&id=" + id + "\">Edit This Web Page</a>&nbsp;|&nbsp;";
	
			outstring +="<a href=\"/cgi-bin/webdoclinks.pl?mode=edit&id=" + id + "\">Edit Items Linked To This Page</a>&nbsp;|&nbsp;";
	
			outstring +="<a href=\"/cgi-bin/generate_page.pl?id=" + id + "\">Generate This Page</a>&nbsp;|&nbsp;";
	
			outstring +="</div>";
		}
		if ( (id) && (moduleName == "products") ) {
			outstring += "<div style=\"margin-top:9px;font-size:14px;font-weight:bold;\">";
			outstring += "<a href=\"/cgi-bin/products.pl?mode=edit&id=" + id + "\">Edit This Product</a>";
			outstring +="</div>";
		}
		outstring += "<div style=\"margin-top:9px;\">\n\n";
		outstring += returnLink('home', 'User Home');
		outstring += returnLink('accounts', 'Accounts');
		outstring += returnLink('guestbook', 'Guestbook', 6, '/cgi-bin/guestbook.pl?mode=search');
		outstring += returnLink('mailq', 'MailQ');
		outstring += returnLink('orders', 'Orders');
		outstring += returnLink('people', 'People');
		outstring += returnLink('products', 'Products');
		outstring += returnLink('valuelists', 'Valuelists');
		outstring += returnLink('webdocs', 'Webdocs');
		
		outstring +="</div>\n\n";
		outstring += "<div style=\"margin-top:9px;\">";

		outstring +="<a href=\"/cgi-bin/issues.pl?mode=search&status=assigned&userid=mine\" style=\"font-size:10px;text-decoration:none;\">My Issues</a>&nbsp;|&nbsp;";

		outstring +="<a href=\"/cgi-bin/projects.pl?mode=search&status=assigned&status=new&status=in%20progress&userid=mine\" style=\"font-size:10px;text-decoration:none;\">My Projects</a>";
		outstring +="</div>\n\n";


		outstring +="<div style=\"margin-top:18px;\"><a href=\"javascript:hideAdminControl();\" style=\"font-size:9px;\">Hide This<\/a></div>\n\n";

		outstring +="</td>\n\n";
		outstring += "</tr></table>";
		outstring +="</div>\n\n";
		//document.writeln(outstring);
		var target = document.getElementById("adminControls");
		if (!(adminControlState)) {
			if (target) {
				target.innerHTML = (outstring);
			}
			adminControlState = true;
		} else {
			target.innerHTML = "";
			adminControlState = false;
		}
return(false);
}


function returnLink(scriptName, linkTitle, topMargin, linkURL) {
if (!(topMargin)) { topMargin = 6; }
if (!(linkURL)) { linkURL = ("/cgi-bin/" + scriptName + ".pl"); }
var outstring = ("<a href=\"" + linkURL + "\" style=\"font-size:10px;text-decoration:none;\">" + linkTitle + "</a>&nbsp;|&nbsp;\n\n");
return(outstring);	
}


function getFormElementRadio(elemName, optionsArray, valuesArray) {
var outString = "";
var idx;
for(idx=0;idx<optionsArray.length;idx++) {
	var checkedState = false;
	var vidx;
	for(vidx=0;vidx<valuesArray.length;vidx++) {
		if (valuesArray[vidx] == optionsArray[idx]) {
			checkedState = true;
		}
	}
	outString += ("<input type=\"radio\" name=\"" + elemName + "\" value=\"" + optionsArray[idx] + "\" ");
	if (checkedState) {
		outString += (" CHECKED ");
	}
	outString += (">" + optionsArray[idx]);
}
return(outString);
}



function getFormElementCheckbox(elemName, optionsArray, valuesArray, hideLabel) {
var outString = "";
var idx;
for(idx=0;idx<optionsArray.length;idx++) {
	var checkedState = false;
	var vidx;
	for(vidx=0;vidx<valuesArray.length;vidx++) {
		if (valuesArray[vidx] == optionsArray[idx]) {
			checkedState = true;
		}
	}
	outString += ("<input type=\"checkbox\" name=\"" + elemName + "\" value=\"" + optionsArray[idx] + "\" ");
	if (checkedState) {
		outString += (" CHECKED ");
	}
	outString += (">");
	if (!(hideLabel)) {
		outString += (optionsArray[idx]);
	}
}
return(outString);
}





function getFormElementSelect(elemName, optionsArray, valuesArray) {
var outString = "";
var idx;
outString += ("<select name=\"" + elemName + "\">\n");
for(idx=0;idx<optionsArray.length;idx++) {
	var checkedState = false;
	var vidx;
	for(vidx=0;vidx<valuesArray.length;vidx++) {
		if (valuesArray[vidx] == optionsArray[idx]) {
			checkedState = true;
		}
	}
	outString += ("<option value=\"" + optionsArray[idx] + "\" ");
	if (checkedState) {
		outString += (" CHECKED ");
	}
	outString += (">" + optionsArray[idx]);
}
outString += ("</select>");
return(outString);
}


function logOut() {
document.cookie = "";
}


function getCookie(name)
{       var dc = document.cookie;
        var prefix = name + "=";
        var begin = dc.indexOf("; " + prefix);

        if (begin == -1)
        {       begin = dc.indexOf(prefix);
                if (begin != 0)
                        return null;
        } else
                begin += 2;
        var end = document.cookie.indexOf(";", begin);
        if (end == -1)
                end = dc.length;
        return unescape(dc.substring(begin + prefix.length, end));
}



function submitAddDoDueDone(theForm) {
var url = ("/cgi-bin/doduedone.pl");
var recurring = getRadioVal(theForm.elements['recurring']);
var intervalUnit = getSelectVal(theForm.elements['interval_unit']);
var vars = ("");
vars += ("&mode=save");
vars += ("&title=" + escape(theForm.elements['title'].value));
vars += ("&datedue=" + escape(theForm.elements['datedue'].value));
vars += ("&recurring=" + recurring);
vars += ("&recurring_interval=" + escape(theForm.elements['recurring_interval'].value));
vars += ("&interval_unit=" + intervalUnit);
sendAjax(url, vars, doNothing);
//sendAjax(url, vars, updateStatus);
//updateStatus("<div>Updating product review...<\/div>");
var addFormCanvas = document.getElementById('canvasAddDoDueDone');
addFormCanvas.innerHTML = "";
if (document.location.href.indexOf("doduedone.pl") > 0) {
setTimeout('getSearchResults()', 1000);
}
return(false);
}



function printGiftCertificate(cartlineNote, productTitle) {
var params = "width=750,height=360,menubar=yes,location=no,status=no";
var outString = ("<html><head><title>Gift Certificate</title>");
outString += ("<link rev=\"Stylesheet\" rel=\"Stylesheet\" href=\"/css/print.css\" type=\"text/css\" media=\"print\">");
outString += ("</head><body>");
var idx = cartlineNote.indexOf("GIFT CODE: ");
var giftRecipient = cartlineNote.substring(10,idx);
var giftCode = cartlineNote.substring((idx+11),cartlineNote.length);
outString += ("<div style=\"position:absolute;top:10px;left:10px;\"><img src=\"/images/public/giftcert.jpg\"></div>\n");
outString += ("<div style=\"position:absolute;left:110px;top:114px;font-size:12px;font-family:Arial, Helvetica;\">" + productTitle.toUpperCase() + "</div>\n");
//outString += ("<div style=\"position:absolute;left:60;top:130;font-size:14px;font-family:Arial, Helvetica;\">" + giftRecipient + "</div>\n");
outString += ("<div style=\"position:absolute;left:105px;top:255px;font-size:14px;font-family:Arial, Helvetica;\">" + giftCode + "</div>\n");
outString += ("<div class=\"noprint\" style=\"position:absolute;left:10px;top:310px;\"><input type=\"button\" onClick=\"print();\" value=\"Print\">&nbsp;&nbsp;<input type=\"button\" onClick=\"window.close();\" value=\"Close This Window\"></div>");
outString += ("</body></html>");
writeWindow('GiftCertificate', this.window, outString, params, true);
}



function showHabitoolPreview(habitoolName) {
var params = "width=420,height=600,menubar=no,location=no,status=no";
var theSRC = ("/images/public/habitools_previews/" + habitoolName + ".jpg");
var outString = ("<html><head><title>Habitool Sample</title><link rev=\"Stylesheet\" rel=\"Stylesheet\" href=\"/css/styles.css\" type=\"text/css\" media=\"screen\"></head><body>");
outString += ("<div align=\"center\" style=\"margin-top:10px;margin-bottom:5px;\">Habitool Preview</div>\n");
outString += ("<table border=\"0\" cellpadding=\"0\" cellspacing=\"0\" width=\"100%\">\n");
outString += ("<tr>\n");
outString += ("<td width=\"420\" align=\"center\" valign=\"middle\">\n");
outString += ("<div><img src=\"" + theSRC + "\"></div>\n");
outString += ("</td></tr></table>\n");
outString += ("<div align=\"center\" style=\"margin-top:20px;\"><a href=\"javascript:window.close();\" style=\"font-size:10px;text-decoration:none;\">Close This Window</a></div>\n");
outString += ("</body></html>");
writeWindow('HabitoolSample', this.window, outString, params, true);
}




function testFillForm(theForm) {
var idx;
var debugMsg = "";
for(idx=0;idx<theForm.elements.length;idx++) {
	var elem = theForm.elements[idx];
	//debugMsg += ("type=" + elem.type + " & name=" + elem.name + "\n");
	if ( (elem.type == "text") && (elem.value == "") ) {
		elem.value = elem.name;
	}
}
if (debugMsg != "") {
	alert(debugMsg);
}
}



function swapImage(id, theSRC) {
var theElem = document.getElementById(id);
theElem.src = theSRC;
}


