var nnt = false;
var cur_el;
var first  = true;

function formSwitch (desturl)
{
	frm = getEl ('winappform');
	frm.action = desturl;
	mode = getEl ('mode');
	mode = 'NADA';
	try {
		hosts = getEl ('hms');
		for (cnt = 0; cnt < hosts.options.length; cnt++)
		{
			hosts.options[cnt].selected = false;
		} 
	} catch (err) { }
	try {
		subnets = getEl ('sns');
		for (cnt = 0; cnt < subnets.options.length; cnt++)
		{
			subnets.options[cnt].selected = false;
		}
	} catch (err) {}
	frm.submit ();
}

function doSave (elem_id)
{
        elem_hidden = getEl (elem_id+"-mod");
        elem_hidden.value="1";
        mode_el = getEl ("Mode");
        mode_el.value = 'SAVE';
}


function changeSelectMenu (selector, menuID)
{
	hostsel = getEl (selector);
	host = hostsel[hostsel.selectedIndex].value;
	if (first)
	{
		cur_el = getEl ("clear");
		first = false;
	}

	cur_el.style.display = "none";

	numEl = numSelected (selector);
	if ("clear" == menuID) {
		cur_el = getEl (menuID);
	} else {
		if (numEl <= 1)
		{
			cur_el = getEl (menuID+"-"+host);
		} else { // multiselect
			cur_el = getEl ('multiservselect');
			hosts_array = new Array ();
		for (i = 0; i <  hostsel.options.length; i++)
			{
				if (hostsel.options[i].selected)
				{
					hosts_array[hosts_array.length] = getEl (menuID+'-'+hostsel.options[i].text);
				}
			}
			select_load_options_from (cur_el, hosts_array);
		}
	}	
	cur_el.style.display = "inline";
}


function setMultiOptions (selection)
{
	var fields = new Array ("nis-domain", "netbios-node-type", "default-lease-time", "max-lease-time", "routers" );
	setSingleOnlyStatus (false);
	var sel = getEl (selection);
	var selected_options = new Array ();
	var i;

	for (i = 0; i < sel.options.length; i++)
	{
		if (sel.options[i].selected)
		{
			selected_options[selected_options.length] = sel.options[i].value;
		}
	}

	var fields_used = new Array ();
	
	var fields_stored = new Array ();



	for (field in fields)
	{
		fields_used [fields[field]] = false;
	}

        for (field in fields)
	{
nextfield:
		for (h = 0; h < selected_options.length; h++)
		{
			var val;
			val = hdata[selected_options[h]][fields[field]];
			if (!isset (val))
			{
				val = "";
			}

			if (isset (fields_stored[fields[field]]))
			{
				if (val != fields_stored[fields[field]])
				{
					if ('netbios-node-type' == fields[field])
					{
						nnt = true;
						el = getEl ('netbios-node-type');
						select_add_option (el, "<Multiple>", false);
					}
					setValueByField (fields[field], "<Multiple>");
					break nextfield;
				} else {
					fields_stored [fields[field]] = val;
					setValueByField (fields[field],val);
				}
			} else {
				fields_stored [fields[field]] = val;
				setValueByField (fields[field],val);
			}
		}
	}
}
function getEl (id)
{
	try {
		return document.getElementById (id);
	} catch (err) {
	}
}

function getElByName (name)
{
	try {
		return document.getElementByName (name);
	} catch (err) {
	}
}

function numSelected (id)
{
	sel = getEl (id);
	nSel = 0;
	for (x = 0; x < sel.length; x++)
	{
		if (sel.options[x].selected)
		{
			nSel++;
		}
	}
	return nSel;
}


function enableById (id)
{
	try {
	el = getEl (id);
	el.disabled = false;
	} catch (err) {
	}
}

function disableById (id)
{
	el = getEl (id);
	el.disabled = true;
}

function isset (variable)
{
	return ("undefined" != typeof variable);
}

function setValueByField (field, value)
{
	field_el = getEl (field);
	field_el.value = value;
}

function showAdvanced ()
{
	if (document.styleSheets)
	{
		// IE
		if (document.styleSheets[0].rules)
		{
			rule = document.styleSheets[0].rules[0];
		}
		else
		{

			rule = document.styleSheets[0].cssRules[0];
		}
		rule.style.display = "";
		adv = getEl ('advanced_status');
		adv.value = "1";
		//rule.style.visibility = "visible";
		try {
			advbtn = getEl ("advanced_button");
			advbtn.value = ("Hide Advanced <<");
			if (!document.all) {
				advbtn.setAttribute ("onclick","hideAdvanced()");
			} else { // ie
				advbtn.onclick=new Function ("hideAdvanced()");
			}
		} catch (err) {
			// do nothing -- there's no advanced button!
		}
	} else {
		alert ("Your browser is not capable of displaying advanced features.  My apologies");
	}
}

function hideAdvanced ()
{
        if (document.styleSheets)
        {
                // IE
                if (document.styleSheets[0].rules)
                {
                        rule = document.styleSheets[0].rules[0];
                }
                else
                {

                        rule = document.styleSheets[0].cssRules[0];
                }
                rule.style.display = "none";
		adv = getEl ('advanced_status');
		adv.value = "0";
		try {
			//rule.style.visibility = "hidden";
			advbtn = getEl ("advanced_button");
			advbtn.value = ("Advanced >>");
			if (!document.all)
			{
				advbtn.setAttribute ("onclick","showAdvanced()");
			} else { // ie
				advbtn.onclick = new Function ("showAdvanced()");
			}
		} catch (err) {
			// do nothing -- again, we just have no advanced button!
		}
	}
}

function MessageClear () {
   // get the message area, shallow (no kids) clone it, replace it with clone
   // this nukes any children and effectively clears it.
	var oldMessage = document.getElementById ('UserMessageArea');
	var message    = oldMessage.cloneNode (false);
	var parent     = oldMessage.parentNode;
	parent.replaceChild (message, oldMessage);
}

function MessageWrite (message_text, level) {
	// first we clear the message out
	MessageClear ();
	// then we play the append (to the empty list) game .. 
   // voila 
	MessageAppend (message_text, level);
}

function MessageAppend (message_text, level) {
	var newspan = document.createElement ('span');
	newspan.setAttribute ('class', level);

	var text = document.createTextNode (message_text);
	newspan.appendChild (text);

	var messagearea = document.getElementById ('UserMessageArea');
	messagearea.appendChild (newspan);
}

/**** MOVE THESE TO DHCP!!! -- TODO -- ***/
function do_range ()
{
	mode_el = getEl ("Mode");
	mode_el.value = 'SEL_RANGE';
	begin   = getEl ("begin_ip");
	end   = getEl ("end_ip");
	low   = getEl ("low_ip");
	high   = getEl ("high_ip");
	
	begin.value = low.value;
	end.value   = high.value;
}

function do_subnet ()
{
	mode_el = getEl ("Mode");
	mode_el.value = 'SEL_SUBNET';
}

function do_all_hosts ()
{
	mode_el = getEl ("Mode");
	mode_el.value = 'SEL_ALL';
	begin   = getEl ("begin_ip");
	end   = getEl ("end_ip");

	begin.value = '0.0.0.0';
	end.value = '255.255.255.254';
}

/** END OF MOVE THESE AREA **/

function confirm_link (anchor, msg) {
	if (!confirm (msg)) {
		anchor.href = "";
	}
}

