function nat_enable_change(f)
{  	var f=document.natform;
	if (f.nat_enable.checked) {	// enabled
		document.getElementById("row_nat_ipsec_alg").className = "data_visible";
		document.getElementById("row_nat_pptp_alg").className = "data_visible";
		document.getElementById("row_nat_l2tp_alg").className = "data_visible";
		document.getElementById("row_nat_sip_alg").className = "data_visible";
		document.getElementById("row_nat_netmeeting_alg").className = "data_visible";
		document.getElementById("row_nat_dmz_enable").className = "data_visible";
		nat_dmz_enable_change(f);

		document.getElementById("title_nat_vs").className = "data_visible";
		document.getElementById("table_nat_vs").className = "data_visible";
		document.getElementById("title_nat_pt").className = "data_visible";
		document.getElementById("table_nat_pt").className = "data_visible";
	} else {
		document.getElementById("row_nat_ipsec_alg").className = "data_invisible";
		document.getElementById("row_nat_pptp_alg").className = "data_invisible";
		document.getElementById("row_nat_l2tp_alg").className = "data_invisible";
		document.getElementById("row_nat_sip_alg").className = "data_invisible";
		document.getElementById("row_nat_netmeeting_alg").className = "data_invisible";
		document.getElementById("row_nat_dmz_enable").className = "data_invisible";
		document.getElementById("row_nat_dmz_lanip").className = "data_invisible";

		document.getElementById("title_nat_vs").className = "data_invisible";
		document.getElementById("table_nat_vs").className = "data_invisible";
		document.getElementById("title_nat_pt").className = "data_invisible";
		document.getElementById("table_nat_pt").className = "data_invisible";
	}
}

function nat_dmz_enable_change(f)
{	
	if (f.nat_dmz_enable.checked) {	// enabled
		document.getElementById("row_nat_dmz_lanip").className = "data_visible";
	} else {
		document.getElementById("row_nat_dmz_lanip").className = "data_invisible";
	}
}

function submitchk(f)
{
	if (f.nat_enable.checked && f.nat_dmz_enable.checked) {	// do check only if both nat and dmz are enabled
		if (	!valid(f.nat_dmz_lanip.value, is_ip, "DMZ LAN IP has invalid format.") ) {
			return false;
		}
	}
	return true;
	
}

function nat_vs_ed(kval, en, wanport, prot, lanip, lanport)
{
	document.nat_vs_frm.kval.value=kval;
	document.nat_vs_frm._en.checked=en;
	document.nat_vs_frm._wanport.value=wanport;
	selectoption(document.nat_vs_frm._prot, prot);
	document.nat_vs_frm._lanip.value=lanip;
	document.nat_vs_frm._lanport.value=lanport;
}
function vs_submitchk(f)
{
	if (!valid(f._lanip.value, is_ip, "LAN IP is in invalid format.") ||
	    !valid(f._wanport.value, is_port_or_portrange, "WAN Port should be a number between 1..65535 or number1-number2.") ||
	    !valid(f._lanport.value, is_port_or_portrange, "LAN Port should be a number between 1..65535 or number1-number2.") ) {
		return false;
	}
	if (!is_portrange_mapable(f._wanport.value, f._lanport.value)) {
		alert("WAN port should has the same size of range as LAN port");
		return false;
	}
	return true;
}


function nat_pt_ed(kval, en, tgport, tgtype, pubport, pubtype)
{
	document.nat_pt_frm.kval.value=kval;
	document.nat_pt_frm._en.checked=en;
	document.nat_pt_frm._tgport.value=tgport;
	selectoption(document.nat_pt_frm._tgtype, tgtype);
	document.nat_pt_frm._pubport.value=pubport;
	document.nat_pt_frm._pubtype.value=pubtype;
}
function pt_submitchk(f)
{
	if (!valid(f._tgport.value, is_port_or_portrange, "Trigger Port should be a number between 1..65535 or start_number-end_number.") ||
	    !valid(f._pubport.value, is_port_or_portrange, "Public Port should be a number between 1..65535 or start_number-end_number.") ) {
		return false;
	}
	return true;
}


function selectoption (menu, value)
{
	var i_default=0;

	for (var i=0; i<menu.length; i++) {
		if (menu.options[i].value==value) {
			menu.options[i].selected=true;
			return i;
		}
		if (menu.options[i].defaultSelected) {
			i_default=i;
		}
	}

	menu.options[i_default].selected=true;
	return i_default;
}

var lastvsid=-1;
function set_vs_hicolor (id)
{
	document.getElementById(id).className="opt_list_hicolor";
	if (lastvsid!=-1 && lastvsid!=id)
		document.getElementById(lastvsid).className="opt_list";
	lastvsid=id;
}	
var lastptid=-1;
function set_hicolor(id)
{
	document.getElementById(id).className="opt_list_hicolor";
	if (lastptid!=-1 && lastptid!=id)
		document.getElementById(lastptid).className="opt_list";
	lastptid=id;
}	

