/*
------------------------------------------------------------------------------
PacketShaper /scripts/html.js
Copyright (c) 1996-2010, Blue Coat Systems, Inc. All rights reserved.
------------------------------------------------------------------------------
*/
//'********************************************************************
//	may also be duplicated in other legacy files:
//	"/libbtn.js", "/libform.js, "/banner.htm", "/login.htm"
//'********************************************************************

//''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
function getJustify(justification)
{
	var l = '';

	l += '<td align="'+justification+'" valign="TOP" width="100%">&nbsp;</td>';

	return(l);
}

function getHorizontalSpacer(space_width)
{
	var l = '';

	l += '<td align="CENTER" valign="MIDDLE">';
	l += '<img src="/images/spacer.gif" align="middle" width="'+space_width+'" height="1" border="0" alt="" /></td>';

	return(l);
}

function getVerticalSpacer(height)
{
	var l = '';

	l += '<tr><td align="LEFT" valign="TOP">';
	l += '<img src="/images/spacer.gif" align="middle" height="'+height+'" width="1" border="0" alt="" /></td>';
	l += '</tr>';

	return(l);
}

function getHorizontalLiner(width, height, color)
{
	var l = '';

	l += '</td></tr>';

	l += '<tr><td align="LEFT" valign="TOP" width="100%" height="'+height+'" bgcolor="'+color+'">';
	l += '<table align="LEFT" cellspacing="0" cellpadding="0" border="0" width="100%" height="'+height+'" bgcolor="'+color+'">\n';
	l += '<tr><td align="LEFT" valign="TOP" width="100%" height="'+height+'" bgcolor="'+color+'">\n';
	l += '<img src="/images/spacer.gif" align="middle" height="'+height+'" alt="" /></td>\n';
	l += '</tr></table>';
	l += '</td></tr>';

	l += '<tr><td align="LEFT" valign="TOP" width="100%">';

	return(l);
}

var HC;

//'********************************************************************
function initializeHeaderControl()
{
	//alert("/scripts/buttons.js::initializeHeaderControl");

	// Display helper
	HC = new headerCtl('HC');
}

/*
 * Header generation
 */
function headerCtl(varName)
{
	this.varName = varName;
	this.last = null;
	this.lastWidth = 0;
	this.spacing = 3;
	this.initial = 'hc';
	this.leftGif = '/images/barlf.gif';
	this.rightGif = '/images/barrt.gif';
	this.cnt = 0;

	this.setSpacing = new Function("spacing", "this.spacing = spacing;");
	this.endFlow = new Function("this.last = null; this.lastWidth = 0; document.writeln('<br>');");
	this.getHeader = hcGetHeader;
	this.writeHeader = new Function("text", "document.writeln(this.getHeader(text));");
}

function getSimpleHeader(text)
{
	//return  '<span class="standardBold">' + text + '</span><br>';
	var l = '';

	l += '<TABLE BORDER=0 CELLSPACING=0 CELLPADDING=0>';
	l += '<TR><TD>&nbsp;</TD></TR>';
	l += '<TR>';
	l += '<TD>';
	l += '<IMG SRC="/images/barlf.gif" BORDER=0 WIDTH=74 HEIGHT=15 ALIGN=ABSMIDDLE>';
	l += '</TD>';
	l += '<TD CLASS=header2>';
	l += '<NOBR>&nbsp;&nbsp;' + text + '&nbsp;&nbsp;</NOBR>\n';
	l += '</TD>';
	l += '<TD>';
	l += '<IMG SRC="/images/barrt.gif" BORDER=0 WIDTH=74 HEIGHT=15 ALIGN=ABSMIDDLE>';
	l += '</TD>';
	l += '</TR>';

	l += '<TR>';
	l += '<TD>';
	l += '<IMG SRC="/images/spacer.gif" BORDER=0 WIDTH=1 HEIGHT=5 ALIGN=ABSMIDDLE>';
	l += '</TD>';
	l += '</TR>';
	l += '<TR><TD>&nbsp;</TD></TR>';

	l += '</TABLE>';

	return l;
}

function getHeader1(text)
{
	return(getHeader2(text.toUpperCase()));
}

function getHeader2(text)
{
	return(hcGetHeader(text));
}

function hcGetHeader(text)
{
	var l = '';

	l += '<table align="left" border="0" cellpadding="0" cellspacing="0" width="100%" height="100%"><tr>';

	l += '<td align="right" valign="middle">';
	l += getHorizontalLineAdornment("63", "4", "#4D4D4D");
	l += '</td>';

	l += '<td align="right" valign="middle">';
	l += getBlockAdornment("left", "11", "15", "gray");
	l += '</td>';

	l += '<td class="header2" align="center" valign="middle" nowrap="nowrap">';
	l += '&nbsp;&nbsp;' + text + '&nbsp;&nbsp;';
	l += '</td>';

	l += '<td align="left" valign="middle">';
	l += getBlockAdornment("right", "11", "15", "gray");
	l += '</td>';

	l += '<td align="left" valign="middle">';
	l += getHorizontalLineAdornment("63", "4", "#4D4D4D");
	l += '</td>';

	l += '<td align="left" valign="middle" width="100%"></td>';

	l += '</tr></table>';

	return(l);
}

//''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
function getDivider1Short()
{
	var l = '';

	l += '<IMG SRC="/images/spacer.gif" BORDER=0 WIDTH=1 HEIGHT=5 ALIGN=ABSMIDDLE>';
	l += '<BR CLEAR=ALL>';
	l += '<IMG SRC="/images/brackets.gif" BORDER=0 WIDTH=400 HEIGHT=18><BR CLEAR=ALL>\n';

	return l;
}

function getDivider2Short()
{
	var l = '';

	l += '<IMG SRC="/images/spacer.gif" BORDER=0 WIDTH=1 HEIGHT=5 ALIGN=ABSMIDDLE>';
	l += '<BR CLEAR=ALL>';
	l += '<IMG SRC="/images/brackbar.gif" BORDER=0 WIDTH=400 HEIGHT=18><BR CLEAR=ALL>\n';

	return l;
}

function makeDescription(label, value)
{
    var l = '';

    if (value == "") {
        return "";
    }

    l += '<TR>\n';
        l += '<TD ALIGN=RIGHT VALIGN=BASELINE>\n';
            l += '<B>' + label + '&nbsp;</B>\n';
        l += '</TD>\n';
        l += '<TD VALIGN=BASELINE>\n';
            l += value + '\n';
        l += '</TD>\n';
    l += '</TR>\n';

    return l;
}

function makeTextAreaDescription(label, value)
{
    var l = '';

    if (value == "") {
        return "";
    }

    l += '<TR>\n';
        l += '<TD ALIGN=RIGHT VALIGN=TOP>\n';
            l += '<B>' + label + '&nbsp;</B>\n';
        l += '</TD>\n';
        l += '<TD VALIGN=TOP>\n';
            l += value + '\n';
        l += '</TD>\n';
    l += '</TR>\n';

    return l;
}

function makeAttributeHeadPopup()
{
	var l = "";

	if (areAttributesInherited()) {

		l += '<TR>\n';
		l += '<TD ALIGN=RIGHT VALIGN=BASELINE>\n';
		l += '<FONT SIZE=2><B><U>Inherited</U></B></FONT>\n';
		l += '</TD>\n';
		l += '</TR>\n';
	}

    return(l);
}

function makeAttributeHead()
{
    var l = "";

	if (areAttributesInherited()) {

		l += '<TR>\n';
		l += '<TD ALIGN=RIGHT VALIGN=BASELINE>\n';
		l += '<FONT SIZE=2><B><U>Inherited</U></B></FONT>\n';
		l += '</TD>\n';
		l += '</TR>\n';
    }

    return(l);
}

function makeAttribute(control, label, value, indent)
{
	var l = '';

	l += '<TR>\n';
	l += '<TD NOWRAP ALIGN=LEFT VALIGN=BASELINE>\n';
	if (true == indent) {
		l += '&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;';
	}
	l += control + '\n';
	l += '</TD>\n';
	l += '<TD NOWRAP VALIGN=BASELINE>\n';
	if (true == indent) {
		l += '&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;';
	}
	l += '<B>' + label + '&nbsp;</B>\n';
	l += '</TD>\n';
	l += '<TD NOWRAP VALIGN=BASELINE>\n';
	if (true == indent) {
		l += '&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;';
	}
	l += value + '\n';
	l += '</TD>\n';
	l += '</TR>\n';

	return l;
}

// CDK: Adding another version of the makeAttribute routine that will provide
//		vertical alignment.
function makeAttributeTopAlign(control, label, value)
{
    var l = '';

    l += '<TR>\n';
        l += '<TD NOWRAP ALIGN=RIGHT VALIGN=TOP>\n';
            l += control + '\n';
        l += '</TD>\n';
        l += '<TD NOWRAP VALIGN=TOP>\n';
            l += '<B>' + label + '&nbsp;</B>\n';
        l += '</TD>\n';
        l += '<TD NOWRAP VALIGN=TOP>\n';
            l += value + '\n';
        l += '</TD>\n';
    l += '</TR>\n';

    return l;
}

function makeTextAreaAttribute(control, label, value)
{
    var l = '';

    l += '<TR>\n';
        l += '<TD NOWRAP ALIGN=RIGHT VALIGN=TOP>\n';
            l += control + '\n';
        l += '</TD>\n';
        l += '<TD NOWRAP VALIGN=TOP>\n';
            l += '<B>' + label + '&nbsp;</B>\n';
        l += '</TD>\n';
        l += '<TD NOWRAP VALIGN=TOP>\n';
            l += value + '\n';
        l += '</TD>\n';
    l += '</TR>\n';

    return l;
}

function makeBorderedAttribute(control, label)
{
    var l = '';

    l += '<TR>\n';
        l += '<TD NOWRAP ALIGN=RIGHT VALIGN=BASELINE>\n';
            l += control + '\n';
        l += '</TD>\n';
        l += '<TD NOWRAP VALIGN=BASELINE COLSPAN=2>\n';
            l += label + '\n';
        l += '</TD>\n';
    l += '</TR>\n';
    return l;
}

// The indent is gone, but displaying a form within a table is
// still useful -- it's eliminating white space above the form in
// IE and NS.
function getBeginIndent()
{
	var l = '';

	l += '<TABLE BORDER=0 CELLSPACING=0 CELLPADDING=0 WIDTH="100%">';
	l += '<TR><TD>';

	return l;
}

function getEndIndent()
{
	var l = '';

	l += '</TD></TR>';
	l += '</TABLE>';

	return l;
}

function beginBorder()
{
	var l = '';

	l += '<table border=0 cellspacing=0 cellpadding=0>';
	l += '<tr height=1>';
	l += '<td height=1 bgcolor=#FFFFFF colspan=3>';
	l += '<img src=/images/spacer.gif height=1 width=1 border=0>';
	l += '</td>';
	l += '</tr>';

	l += '<tr>';
	l += '<td width=1 bgcolor=#FFFFFF>';
	l += '<img src=/images/spacer.gif height=1 width=1 border=0>';
	l += '</td>';
	l += '<td>';

	l += '<table border=0 cellspacing=0 cellpadding=0>';
	l += '<tr height=1>';
	l += '<td height=1 bgcolor=#cccccc colspan=3>';
	l += '<img src=/images/spacer.gif height=1 width=1 border=0>';
	l += '</td>';
	l += '</tr>';

	l += '<tr>';
	l += '<td width=1 bgcolor=#cccccc>';
	l += '<img src=/images/spacer.gif height=1 width=1 border=0>';
	l += '</td>';
	l += '<td>';

	return l;
}

function endBorder()
{
	var l = '';

	l += '</td>';
	l += '<td width=1 bgcolor=#808080>';
	l += '<img src=/images/spacer.gif height=1 width=1 border=0>';
	l += '</td>';

	l += '</tr>';
	l += '<tr height=1>';
	l += '<td height=1 bgcolor=#808080 colspan=3>';
	l += '<img src=/images/spacer.gif height=1 width=1 border=0>';
	l += '</td>';
	l += '</tr>';
	l += '</table>';

	l += '</td>';
	l += '<td width=1 bgcolor=#404040>';
	l += '<img src=/images/spacer.gif height=1 width=1 border=0>';
	l += '</td>';

	l += '</tr>';
	l += '<tr height=1>';
	l += '<td height=1 bgcolor=#404040 colspan=3>';
	l += '<img src=/images/spacer.gif height=1 width=1 border=0>';
	l += '</td>';
	l += '</tr>';
	l += '</table>';

	return l;
}

//''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
//	Application-Specific:  Unit support
//	refer to "/scripts/validate.js" (old file "libsetup.js")
//''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
function makeUnitNameSelect(addr, name)
{
	return(getHeaderFrame().makeUnitNameSelect(addr, name));
	var l = '';
	var a = name.split('.');
	var prefix = '';

	l += '<SELECT NAME="UNITNAME">'

	if (!isAddr(name)) {
		for (var i = 0; i < a.length; i++) {
			if (prefix != '') {
				prefix += '.';
			}
			prefix += a[i];
			if (prefix.length > 20) {
				break;
			}
			l += '<OPTION VALUE=' + prefix + '>' + prefix;
		}
	}
	l += '<OPTION VALUE=' + addr + '>' + addr;

	l += '</SELECT>';

	return l;
}

// not really  a validation function, but common to setup/gsetup
function writeTimeZoneOptions()
{
	var	l = '';
	var	tzIndex = 0;
	var	tzString = "GMT-08:00 Custom time spec in POSIX format|GMT+00:00 Local time, pending time zone configuration|GMT+12:00 Auckland, Wellington|GMT+12:00 Fiji, Marshall Islands|GMT+12:00 Kamchatka|GMT+11:00 Guadalcanal, Solomon Islands|GMT+11:00 Magadan|GMT+10:00 Vladivostok|GMT+10:00 Sydney, Melbourne, Canberra, Hobart|GMT+10:00 Brisbane, Townsville, Port Moresby, Guam|GMT+09:30 Adelaide, Southern Australia|GMT+09:30 Darwin, Northern Territory|GMT+09:00 Seoul|GMT+09:00 Tokyo, Osaka, Sapporo, Yakutsk|GMT+08:00 Perth, Western Australia|GMT+08:00 Beijing, Hong Kong, Taipei, Singapore|GMT+07:00 Bangkok, Jakarta, Hanoi|GMT+06:00 Alma-Ata (Almaty), Dhaka|GMT+05:30 Calcutta, Bombay, New Delhi, Colombo|GMT+05:00 Karachi, Islamabad, Ekaterinburg, Tashkent|GMT+04:30 Kabul|GMT+04:00 Dubai, Abu Dhabi, Muscat|GMT+03:30 Tehran|GMT+03:00 Moscow, St. Petersburg, Kazan, Volgograd|GMT+03:00 Baghdad|GMT+03:00 Kuwait, Nairobi, Riyadh|GMT+02:00 Bucharest, Kiev, Sofia|GMT+02:00 Pretoria, Johannesburg, Harare|GMT+02:00 Jerusalem, Tel Aviv|GMT+02:00 Cairo|GMT+02:00 Helsinki, Athens, Istanbul|GMT+01:00 Paris, Madrid, Prague, Warsaw|GMT+00:00 Reykjavik, Greenwich Mean Time, UTC|GMT+00:00 Casablanca, Monrovia|GMT+00:00 London, Edinburgh, Dublin, Lisbon, Tenerife|GMT-01:00 Azores|GMT-01:00 Cape Verde Islands|GMT-02:00 Fernando de Noronha, Mid Atlantic|GMT-03:00 Buenos Aires|GMT-03:00 Sao Paulo, Rio de Janeiro, Brasilia|GMT-03:30 St. Johns, Newfoundland|GMT-04:00 Halifax, Glace Bay, Goose Bay|GMT-04:00 Caracas, La Paz|GMT-05:00 New York (US Eastern Time)|GMT-05:00 Bogota, Lima|GMT-06:00 Regina, Saskatchewan|GMT-06:00 Merida, Monterrey, Mexico City|GMT-06:00 Chicago (US Central Time)|GMT-07:00 Phoenix, Arizona|GMT-07:00 Denver (US Mountain Time)|GMT-08:00 Los Angeles (US Pacific Time)|GMT-08:00 Tijuana|*GMT-09:00 Anchorage, Juneau, Nome, Alaska|GMT-10:00 Honolulu, Hawaii|GMT-11:00 Midway Island, Samoa|GMT+12:00 Kwajalein, Eniwetok|GMT-12:00 Baker Island, Howland Island|";
	var selected;
	var	lo = 0, so = 0;
	var	sub;

	// parse the string
	for (i = 0; ; ++i) {
		display = '';
		so  = tzString.indexOf('|',  lo);
		sub = tzString.substring(lo, so);
		if (sub.charAt(0) == '*') {
			selected = "SELECTED";
			sub = sub.substring(1, sub.length);
		} else {
			selected = "";
		}

		l += '<OPTION VALUE="' + tzIndex + '" ' + selected + '>' + sub;
		if (so >= tzString.length - 1) {
			break;
		}
		lo = so + 1;
		++tzIndex;
	}

	return l;
}
//end legacy code

function anchorEnableDisable(anchor, disabled) {
	var href;

	if (disabled) {
		href = anchor.getAttribute('href');
		if ((href != null) && (href != '')) {
			anchor.setAttribute('href_bak', href);
		}
		anchor.removeAttribute('href');
		anchor.style.color = 'gray';
		anchor.onclick = function(){return false;};
	} else {
		anchor.setAttribute('href', anchor.attributes['href_bak'].nodeValue);
		anchor.style.color = 'blue';
	}
}

function anchorEnableDisableAll(targetWindow, disabled) {
	var anchors;
	var loop;
	
	anchors = targetWindow.document.getElementsByTagName('a');
	for (loop = 0; loop < anchors.length; loop++) {
		anchorEnableDisable(anchors[loop], disabled);
	}
}

function disableAllOnWindow(targetWindow) {
	anchorEnableDisableAll(targetWindow, true);
	formEnableDisableAll(targetWindow, true);
}


