var adminControlState = false;
var debugText = "";

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

		
		if ( ( (moduleName == "webdocs") || (moduleName == "generate") ) && (id > 0) ) {
			outstring += "<div style=\"margin-top:9px;font-size:14px;font-weight:bold;\">";
			outstring += "ID: " + id + "&nbsp;|&nbsp;";
			outstring += "<a href=\"/cgi-bin/webdocs.pl?mode=edit&id=" + id + "\" style=\"font-size:14px;font-weight:bold;\">Edit This Web Page</a>&nbsp;|&nbsp;";
	
			outstring +="<a href=\"/cgi-bin/webdocs.pl?mode=generate&id=" + id + "\" style=\"font-size:14px;font-weight:bold;\">Generate This Page</a>&nbsp;|&nbsp;";
	
			outstring +="</div>";
		}
		if ( ( (id) && (moduleName == "products") ) && (id > 0) ) {
			outstring += "<div style=\"margin-top:9px;font-size:14px;font-weight:bold;\">";
			outstring += "<a href=\"/cgi-bin/products.pl?mode=edit&id=" + id + "\" style=\"font-size:14px;font-weight:bold;\">Edit This Product</a>";
			outstring +="</div>";
		}


		outstring += "<div style=\"margin-top:9px;font-size:14px;\">";

		outstring +="<a href=\"/cgi-bin/home.pl\" style=\"text-decoration:none;\" class=\"maroonheadline\">Home</a>&nbsp;&nbsp;&nbsp;&nbsp;";

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

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


		outstring += "<div style=\"margin-top:9px;font-size:12px;\">\n\n";
		outstring += returnLink('accounts', 'Accounts');
		outstring += returnLink('invoices', 'Invoices');
		outstring += returnLink('issues', 'Issues');
		outstring += returnLink('mailings', 'Mailings');
		outstring += returnLink('mailq', 'MailQ');
		outstring += returnLink('orders', 'Orders');
		outstring += returnLink('people', 'People');
		outstring += returnLink('products', 'Products');
		outstring += returnLink('projects', 'Projects');
		outstring += returnLink('punches', 'Punches');
		outstring += returnLink('valuelists', 'Valuelists');
		outstring += returnLink('webdocs', 'Webdocs');		
		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);
}






/*  EVERYTHING AFTER THIS SHOULD PROBABLY NOT BE EDITED UNLESS YOU REALLY KNOW WHAT YOU'RE DOING. ;-)  */









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 = (theMonth + "/" + today.getDate() + "/" + theYear);
//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 shortDate(theDate) {
var retval = (theDate.getMonth()+1) + "/" + (theDate.getDate()) + "/" + (theDate.getFullYear());
return(retval);
}


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);
}


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


function popWindow(inWindowname, opener, URL, inParams) {
var defaultParams = "width=100,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;
}


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) {

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 sendAjaxGETXML(url, callbackFunction) {
//alert("Sending review to: " + url);

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

request.open("GET", url, true);
var vars = "";
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() {
}


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


function returnLink(scriptName, linkTitle, topMargin, theURL) {
if (!(topMargin)) { topMargin = 6; }
if (!(theURL)) { theURL = ("/cgi-bin/" + scriptName + ".pl"); }
var outstring = ("<a href=\"" + theURL + "\" style=\"text-decoration:none;\" class=\"maroonsubheadline\">" + 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 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 assignToMe(theForm) {
setSelectVal(theForm.elements['userid'], webUserObject.userid);
setSelectVal(theForm.elements['status'], 'assigned');
}




function scriptMessage(msgText, clearDelay) {
var theElem = document.getElementById('scriptMessage');
theElem.innerHTML = msgText;
if (clearDelay > 0) {
	setTimeout("scriptMessage('');", clearDelay);
}
}



var yuiCal;

function showCalendar(fieldName) {
var curDate = document.forms['search'].elements[fieldName].value;
var dateArray = curDate.split("/");
var curPage = (dateArray[0] + "/" + dateArray[2]);
if (curDate != '') {
	yuiCal = new YAHOO.widget.Calendar('', ('yuiCal' + fieldName), { pagedate:curPage, selected:curDate });	
} else {
	yuiCal = new YAHOO.widget.Calendar('', ('yuiCal' + fieldName));
}
yuiCal.selectEvent.subscribe(mySelectHandler, yuiCal, true);
yuiCal.render();
yuiCal.show();
}

function mySelectHandler(type,args,obj) {
	var selected = args[0];
	var selDate = this.toDate(selected[0]);
	var fieldName = obj.containerId.substring(6, obj.containerId.length);
	//alert(fieldName + " : SELECTED : " + dateToShortString(selDate, this));
	document.forms['search'].elements[fieldName].value = dateToShortString(selDate, this);
	obj.hide();
	//obj.clear();
};

function dateToLocaleString(dt, cal) {
	var wStr = cal.cfg.getProperty("WEEKDAYS_LONG")[dt.getDay()];
	var dStr = dt.getDate();
	var mStr = cal.cfg.getProperty("MONTHS_LONG")[dt.getMonth()];
	var yStr = dt.getFullYear();
	return (wStr + ", " + dStr + " " + mStr + " " + yStr);
}


function dateToShortString(dt, cal) {
	return ((dt.getMonth()+1) + "/" + dt.getDate() + "/" + dt.getFullYear());
}





function getCityState(theZIP, theForm)
{	
	if (theZIP.length < 5 || isNaN(theZIP)) return;

	
	var theURL = ("/xml/citystate/" + 
				theZIP.charAt(0) + "/" + 
				theZIP.charAt(1) + "/" +
				theZIP + ".xml");
				

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

	client.onreadystatechange = 
		function()
		{	if(client.readyState == 4)
			{	var elementsArray = client.responseXML.getElementsByTagName("city_state");
				fillCityState(elementsArray, theForm);
			}
		}
		
	client.open("GET", theURL);
	client.send(null);
}


function fillCityState(elementsArray, theForm) {
	theForm.elements['city'].value =  "";
	for (i = 0; i < elementsArray.length; i++)
	{	theForm.elements['city'].value =  elementsArray[i].getAttribute("city");
		theForm.elements['state'].value =  elementsArray[i].getAttribute("state");
	}
	theForm.elements['city'].select();
}

