

var gErrorUrl="";


function OpenHelpErrorHandler() 
{
    if (gErrorUrl != "")
    {
        location.href = gErrorUrl;
        return true;
    }
    else
    {
        return false;
    }
}


function OpenHelp(url)
{
    // special case for folders
    folderindex = location.href.indexOf("/nss-folder/");
    if (folderindex >= 0)
    {
		qsindex = location.href.indexOf("?");
		if (qsindex < 0 || folderindex < qsindex)
		{
        	objectendindex = location.href.indexOf("/", folderindex + 12);
        	url = location.href.substring(0, folderindex) + "/" + location.href.substring(folderindex + 12, objectendindex) + "/" + url;
		} // only if /nss-folder/ was found before the query string
    }
    
    window.onerror = OpenHelpErrorHandler;
    gErrorUrl = url;
    var hWnd = window.open(url, "NVOHelp", "menubar=yes,toolbar=yes,width=595,height=400,resizable=yes,scrollbars=yes");
	if (!hWnd.opener) hWnd.opener = self;
	if (hWnd.focus != null) hWnd.focus();
    gErrorUrl = "";
}


function FindElement(elementName)
{
	var i = 0;
    
    for (i = 0; i < document.nvoForm.elements.length; i++)
	{
		if (document.nvoForm.elements[i].name == elementName)
		{
			return document.nvoForm.elements[i];
		}
	}
    return null;
}


// this is the action string that is used to save the standard items on a page

function GetStdAction()
{
	var hidePage = (document.nvoForm.hidePage && document.nvoForm.hidePage.checked) ? "ON" : "OFF";

	if (hidePage == "ON") // if hidden page, go back home
	{
		document.nvoForm.NVORedirect.value = document.nvoForm.hostAddressForHiddenPage.value;
	}
	
    return "Set(.Sitemap.Name." + document.nvoForm.ObjectUID.value + "=" + escape(document.nvoForm.PageName.value) 
    			+ "&.Sitemap.Title." + document.nvoForm.ObjectUID.value + "=" + escape(document.nvoForm.PageTitle.value) 
    			+ "&.Sitemap.Hide." + document.nvoForm.ObjectUID.value + "=" + hidePage +");";
}

var gSaveAndGoURL = "";
var gChanged = false;

// save the form data and goto the specified url

function SaveAndGo(url)
{
    if (gChanged)
    {
        gSaveAndGoURL = url;
        DoSave();
    }
    else
    {
        location.href = url;
    }
}


function Changed(url)
{
	gChanged = true;
}


function IsNetscape()
{
	return (navigator.appName.substring(0, 8) == "Netscape");
}


function WarnIfUsingOldBrowser()
{
	if (parseInt(navigator.appVersion) < 4)
	{
		if (IsNetscape())
			alert("Editing your web site requires a newer version of Netscape Communicator. Visit Netscape's web site at www.netscape.com to obtain the newest version. Failure to do so may result in unreliable behavior.");
		else
			alert("Editing your web site requires a newer version of Internet Explorer. Visit Microsoft's web site at www.microsoft.com to obtain the newest version. Failure to do so may result in unreliable behavior.");
	}
} 

function NormalizeObjectName(name)
{
	var	newName = "";

	for (i = 0; i < name.length; i++)

	{
		charCode = name.charCodeAt(i);
		if (charCode < 0)
			charCode += 256;
		
		// Remove the chars \ / : * ? \" < > | '
		// and handle only ascii values between 32 and 128 
		
		if (charCode == 47			//	/
			|| charCode == 92		//	\
			|| charCode == 58		//	:
			|| charCode == 42		//	*
			|| charCode == 63		//	?
			|| charCode == 34		//	"
			|| charCode == 60		//	<
			|| charCode == 62		//	>
			|| charCode == 124		//	|
			|| charCode == 39)		//	'
		{
			// do nothing
		}
		else if (charCode > 32 && charCode < 128)
			newName += name.substr(i, 1);
	}
	
	// if we eliminated all chars, name the object "page"
	if (newName == "")
		newName = "page";
		
	return newName;
	
} // NormalizeObjectName

function DoButton(buttonAction)
{
	if ((document.nvoForm.PageName) && (document.nvoForm.PageName.value == ""))
    {
    	alert("The Page Name is required and cannot be left blank. Please enter a valid name.");
    	document.nvoForm.PageName.focus();
    	document.nvoForm.PageName.select();
    	location.href = "#pagename";
    	return;
    }
    
	if (gSaveAndGoURL != "")
    {
        document.nvoForm.NVORedirect.value = gSaveAndGoURL;
    }
    
    document.nvoForm.NVOAction.value = buttonAction;
	document.nvoForm.submit();
}


function DoMoveItem(where, uid)
{
    DoButton("MoveRecord(List=Sitemap&uid=" + uid + "&Where=" + where + ")");
}


window.errorLoadingApplet = false;


// This script is called when the user clicks on the client link before
// the browser has had time to launch the applet

function AppletErrorHandler() 
{
    alert("Please wait for the page to complete loading and then try again.");
    return true;
}


// This javascript is used launch a helper app

function StartHelper(host, service, hostAddress, extra)
{

    if (navigator.appVersion.indexOf("Macintosh") != -1)
    {
		if (navigator.mimeTypes)
		{
            mimetype = navigator.mimeTypes["application/netopia"];
            if (mimetype && mimetype.enabledPlugin)
			{
	            location.href = "http://" + hostAddress + "/pages/common/" + host + ".nhtml?service=" + service + "&back=" + escape(location.href) + "&extra=" + escape(extra);
    		}
			else
			{
				alert("You must have the FREE Visitor Software in order to use this feature. Please download and install the Visitor Software.");
				location.href = "http://" + hostAddress + "/bin/download.nhtml";
			}
		} // if we can check for mimeTypes supported
		else
		{
            location.href = "http://" + hostAddress + "/pages/common/" + host + ".nhtml?service=" + service + "&back=" + escape(location.href) + "&extra=" + escape(extra);
		} // else go to plugin start page 
    }
	else
	{
	    if (window.errorLoadingApplet)
	    {
	        alert("You must have Java enabled in your browser in order to use this feature.");
	    }
	    else
	    {
	        window.onerror = AppletErrorHandler;
	        
	        installed = document.cc.isClassInstalled("com.netopia.ns.version.client.VisitorClient");
	        if (installed)
	        {
	            location.href = "http://" + hostAddress + "/pages/common/" + host + ".netopia?service=" + service + "&extra=" + escape(extra);
	        }
	        else
	        {
	            alert("You must have the FREE Visitor Software in order to use this feature. Please download and install the Visitor Software.");
	            location.href = "http://" + hostAddress + "/bin/download.nhtml";
	        }
	    }
    } // else it's Windows
}

// pulls a parameter out of a comma delimeted string
// For example, given the string "a,b,c", passing
// index 0 would return "a", 1 would return "b", etc...
function GetField(rec, fieldindex)
{
    var     i;
    var     istart = 0;
    var     iend = 0;

    for (i = 0; i < fieldindex; i++)
    {
        istart = rec.indexOf(",", istart) + 1;
    }

    iend = rec.indexOf(",", istart);
    if (iend < 0)
    {
        iend = rec.length;
    }
    
    var temp = rec.substring(istart, iend);
    return temp;
}


function StdDelete(singlename, pluralname, profile, list, stdeditpage)
{
    var     action = "";
    var     count = 0;

    if (stdeditpage)
        action = GetStdAction();
    
    action = "UseProfile(Name=" + profile + ");Save()";

    for (i = 0; i < document.nvoForm.elements.length; i++)
    {
		el = document.nvoForm.elements[i];
		if (el.name == "cb" && el.checked)
        {
            uid = GetField(el.value, 0);
            action +=";Delete(List=" + list + "&UID=" + uid + ")";
            count++;
        }
    }

    if (count > 1)
    {
        if (confirm("Are you sure that you want to delete " + count + " " + pluralname + "?"))
        {
            DoButton(action);
        }
    }
    else
    {
	    if (count > 0)
	    {
	        if (confirm("Are you sure that you want to delete " + count + " " + singlename + "?"))
	        {
	            DoButton(action);
	        }
	    }
	    else
	    {
	        alert("Please use the check boxes to select the " + pluralname + " and then click delete.");
	    }
	}
}


function StdMove(name, moveurl, helpurl, profile, list, field, doneurl, query)
{
    var     startuid = "";
    var     enduid = "";

    for (i = 0; i < document.nvoForm.elements.length; i++)
    {
		el = document.nvoForm.elements[i];
		if (el.name == "cb" && el.checked)
        {
            if (startuid.length == 0)
                startuid = GetField(el.value, 0);
            else
                enduid = GetField(el.value, 0);
        }
    }

    if (startuid.length > 0)
    {
        if (enduid.length == 0)
            enduid = startuid;
        SaveAndGo(moveurl + "?startuid=" + startuid + "&enduid=" + enduid + "&profile=" + profile + "&list=" + list + "&field=" + field + 
				  "&name=" + escape(name) + "&doneurl=" + doneurl + "&helpurl=" + helpurl + query);
    }
    else
    {
        alert("Please use the check boxes to select the " + name + " and then click move.");
    }
}


function StdEdit(name, editurl, editlisturl, query)
{
    var     uidlist = ",";
    var     count = 0;
        
    for (i = 0; i < document.nvoForm.elements.length; i++)
    {
		el = document.nvoForm.elements[i];
		if (el.name == "cb" && el.checked)
        {
            uid = GetField(el.value, 0);
            uidlist += uid + ",";
            count++;
        }
    }

    if (count > 0)
    {
        if (count == 1)
            SaveAndGo(editurl + "?uid=" + uid + query);
        else
        {
            if (editlisturl == "")
                alert("Please select just one item to edit.")
            else
                SaveAndGo(editlisturl + "?count=" + count + "&uidlist=" + uidlist + query);
        }
    }
    else
    {
        alert("Please use the check boxes to select the " + name + " and then click edit.");
    }
}


function ReplaceString(org, match, replace)
{
    var     dst = "";
    var     starti = 0;
    var     endi = 0;

    while ((endi = org.indexOf(match, starti)) >= 0)
    {
        dst += org.substring(starti, endi) + replace;
        starti = endi + match.length;
    }

    dst += org.substring(starti, org.length);

    return dst;
}


function IsTrue(value)
{
	upperCaseValue = value.toUpperCase();
	return ((upperCaseValue == "")
			|| (upperCaseValue != "NO" 
				&& upperCaseValue != "FALSE"
				&& upperCaseValue != "OFF"
				&& upperCaseValue != "0"));
}

