1function myip_update()
2{
3	var cf = document.forms[0];
4
5	if((cf.myip_1.value.length>0)&&(cf.myip_2.value.length>0)&&(cf.myip_3.value.length>0)&&(cf.myip_4.value.length>0))
6	{
7		setDisabled(false, cf.mygw_1, cf.mygw_2, cf.mygw_3, cf.mygw_4);
8	}
9	else
10	{
11		setDisabled(true, cf.mygw_1, cf.mygw_2, cf.mygw_3, cf.mygw_4);
12	}
13}
14
15/*
16function l2tp_servip_update()
17{
18	var disable=false;
19	var cf = document.forms[0];
20	var serv_array=cf.l2tp_serv_ip.value.split('.');
21	if (serv_array.length == 4)
22	{
23		var flag = 0;
24		for (iptab=0; iptab<4; iptab++)
25			if (isNumeric(serv_array[iptab], 255))
26				flag++;
27		if (flag == 4)
28		{
29			if (checkipaddr(cf.l2tp_serv_ip.value) == false)
30				disable=true;
31		}
32		else
33		{
34			disable=true;
35		}
36	}
37	else if (cf.l2tp_serv_ip.value.length > 0)
38	{
39		disable=true;
40	}
41
42	setDisabled(disable, cf.myip_1, cf.myip_2, cf.myip_3, cf.myip_4);
43}
44*/
45function setDNS(cf)
46{
47	var dflag = cf.DNSAssign[0].checked;
48	setDisabled(dflag,cf.DAddr1,cf.DAddr2,cf.DAddr3,cf.DAddr4,cf.PDAddr1,cf.PDAddr2,cf.PDAddr3,cf.PDAddr4);
49	DisableFixedDNS = dflag;
50}
51
52function check_wizard_l2tp(check,page)
53{
54	var cf=document.forms[0];
55	if(cf.l2tp_username.value=="")
56	{
57		alert("<%456%>");
58		return false;
59	}
60	for(i=0;i<cf.l2tp_username.value.length;i++)
61	{
62		if(isValidChar(cf.l2tp_username.value.charCodeAt(i))==false)
63		{
64			alert("<%1775%>");
65			return false;
66		}
67	}
68	for(i=0;i<cf.l2tp_passwd.value.length;i++)
69	{
70		if(isValidChar(cf.l2tp_passwd.value.charCodeAt(i))==false)
71		{
72			alert("<%1776%>");
73			return false;
74		}
75	}
76	if(cf.l2tp_idletime.value.length<=0)
77	{
78		alert("<%1777%>");
79		return false;
80	}
81	else if(!_isNumeric(cf.l2tp_idletime.value))
82	{
83		alert("<%241%>");
84		return false;
85	}
86	cf.l2tp_myip.value=cf.myip_1.value+'.'+cf.myip_2.value+'.'+cf.myip_3.value+'.'+cf.myip_4.value;
87	cf.l2tp_mynetmask.value=cf.my_mask1.value+'.'+cf.my_mask2.value+'.'+cf.my_mask3.value+'.'+cf.my_mask4.value;
88	cf.l2tp_gateway.value=cf.mygw_1.value+'.'+cf.mygw_2.value+'.'+cf.mygw_3.value+'.'+cf.mygw_4.value;
89
90	if( cf.l2tp_myip.value != "..." )
91	{
92		if(checkipaddr(cf.l2tp_myip.value)==false)
93		{
94			alert("<%243%>");
95			return false;
96		}
97		if(isSameSubNet(cf.l2tp_myip.value,lan_subnet,lan_ip,lan_subnet) == true)
98		{
99			cf.conflict_wanlan.value=1;
100		}
101		if(isSameIp(cf.l2tp_myip.value,lan_ip) == true)
102		{
103			cf.conflict_wanlan.value=1;
104		}
105		if(isSameSubNet(cf.l2tp_myip.value,cf.l2tp_mynetmask.value,lan_ip,cf.l2tp_mynetmask.value) == true)
106		{
107			cf.conflict_wanlan.value=1;
108		}
109		if(isSameSubNet(cf.l2tp_myip.value,cf.l2tp_mynetmask.value,lan_ip,lan_subnet) == true)
110		{
111			cf.conflict_wanlan.value=1;
112		}
113	}
114	if( cf.l2tp_mynetmask.value != "..." )
115	{
116		if(checksubnet(cf.l2tp_mynetmask.value)==false)
117		{
118			alert("<%189%>");
119			return false;
120		}
121	}
122	else
123	{
124		cf.l2tp_mynetmask.value="";
125	}
126	if(cf.l2tp_myip.value=="...")
127	{
128		cf.l2tp_myip.value="";
129		cf.l2tp_gateway.value="";
130		cf.WANAssign.value=0;
131	}
132	else
133	{
134		cf.WANAssign.value=1;
135		if ( cf.l2tp_gateway.value != "..." && checkgateway(cf.l2tp_gateway.value) == false )
136		{
137			alert("<%190%>");
138			return false;
139		}
140
141		if(cf.l2tp_mynetmask.value=="")
142		{
143			if( parseInt(cf.myip_1.value) < 128 )
144				cf.l2tp_mynetmask.value="255.0.0.0";
145			else if(parseInt(cf.myip_1.value) < 192 )
146				cf.l2tp_mynetmask.value="255.255.0.0";
147			else
148				cf.l2tp_mynetmask.value="255.255.255.0";
149		}
150		if( cf.l2tp_gateway.value != "..." )
151		{
152			if(isGateway(cf.l2tp_myip.value,cf.l2tp_mynetmask.value,cf.l2tp_gateway.value) == false)
153			{
154				alert("<%190%>");
155				return false;
156			}
157			if(isSameIp(cf.l2tp_myip.value,cf.l2tp_gateway.value) == true)
158			{
159				alert("<%190%>");
160				return false;
161			}
162		}
163		else
164			cf.l2tp_gateway.value="";
165	}
166
167	if(cf.l2tp_serv_ip.value=="")
168	{
169		alert("<%294%>");
170		return false;
171	}
172	for(i=0;i<cf.l2tp_serv_ip.value.length;i++)
173	{
174		if(isValidChar(cf.l2tp_serv_ip.value.charCodeAt(i))==false)
175		{
176			alert("<%294%>");
177			return false;
178		}
179	}
180	if( cf.l2tp_serv_ip.value == cf.l2tp_myip.value )
181	{
182		alert("<%1778%>");
183		return false;
184	}
185
186	/*
187	var serv_array=cf.l2tp_serv_ip.value.split('.');
188	if( serv_array.length==4 )
189	{
190		var flag = 0;
191		for( iptab=0; iptab<4; iptab++ )
192			if( isNumeric(serv_array[iptab], 255) )
193				flag++;
194		if( flag == 4 )
195		{
196			if ( checkipaddr(cf.l2tp_serv_ip.value) == false )
197			{
198				alert("<%294%>");
199				return false;
200			}
201		}
202		else //if the serverip is not a correct ip, it is a FQDN. then the My IP Address MUST be blank to indicate DHCP is used to get the router's IP address
203		{
204			cf.WANAssign.value=0;
205			cf.l2tp_myip.value="";
206			cf.l2tp_gateway.value="";
207		}
208	}
209	else //if the serverip is not a correct ip, it is a FQDN. then the My IP Address MUST be blank to indicate DHCP is used to get the router's IP address
210	{
211		cf.WANAssign.value=0;
212		cf.l2tp_myip.value="";
213		cf.l2tp_gateway.value="";
214	}
215	*/
216	for(i=0;i<cf.l2tp_conn_id.value.length;i++)
217	{
218		if(isValidChar(cf.l2tp_conn_id.value.charCodeAt(i))==false)
219		{
220			alert("<%1779%>");
221			return false;
222		}
223	}
224	if (check == 1)
225	{
226		cf.run_test.value="test";
227		if( page == "wiz")
228			cf.action="ru_wan_flow.cgi";
229	}
230	else
231		cf.run_test.value="no";
232	if (cf.WANAssign.value == 1)
233	{
234		if(isSameSubNet(cf.l2tp_myip.value,cf.l2tp_mynetmask.value,cf.l2tp_serv_ip.value,cf.l2tp_mynetmask.value) != true)
235		{
236			if(isSameSubNet(cf.l2tp_myip.value,cf.l2tp_mynetmask.value,cf.l2tp_gateway.value,cf.l2tp_mynetmask.value) != true)
237			{
238				alert("<%190%>");
239				return false;
240			}
241		}
242	}
243	return true;
244}
245
246function check_l2tp(cf,check)
247{
248	var wan_assgin = false;
249	if(check_wizard_l2tp(check,"bas")==false)
250		return false;
251	cf.hidden_l2tp_idle_time.value=cf.l2tp_idletime.value;
252
253	if(cf.WANAssign.value == 1)
254		wan_assgin = true;
255	if(cf.DNSAssign[1].checked == true)
256	{
257		cf.l2tp_dnsaddr1.value=cf.DAddr1.value+'.'+cf.DAddr2.value+'.'+cf.DAddr3.value+'.'+cf.DAddr4.value;
258		cf.l2tp_dnsaddr2.value=cf.PDAddr1.value+'.'+cf.PDAddr2.value+'.'+cf.PDAddr3.value+'.'+cf.PDAddr4.value;
259
260		if(cf.l2tp_dnsaddr1.value=="...")
261			cf.l2tp_dnsaddr1.value="";
262		if(cf.l2tp_dnsaddr2.value=="...")
263			cf.l2tp_dnsaddr2.value="";
264
265		if(!check_DNS(cf.l2tp_dnsaddr1.value,cf.l2tp_dnsaddr2.value,wan_assgin,cf.l2tp_myip.value))
266			return false;
267	}
268	if (cf.MACAssign[2].checked )
269	{
270		the_mac=cf.Spoofmac.value;
271		if(the_mac.indexOf(":")==-1 && the_mac.length=="12")
272		{
273			var tmp_mac=the_mac.substr(0,2)+":"+the_mac.substr(2,2)+":"+the_mac.substr(4,2)+":"+the_mac.substr(6,2)+":"+the_mac.substr(8,2)+":"+the_mac.substr(10,2);
274			cf.Spoofmac.value = tmp_mac;
275		}
276		else if ( the_mac.split("-").length == 6 )
277		{
278			var tmp_mac = the_mac.replace(/-/g,":");
279			cf.Spoofmac.value=tmp_mac;
280		}
281		if(maccheck_multicast(cf.Spoofmac.value) == false)
282			return false;
283	}
284	if(!(old_wan_type=="l2tp"))
285		cf.change_wan_type.value=0;
286	else
287		cf.change_wan_type.value=1;
288
289	return true;
290}
291
292function setIP_welcome_l2tp()
293{
294	var cf = document.forms[0];
295	var dflag = cf.WANAssign[0].checked;
296	setDisabled(dflag,cf.myip_1,cf.myip_2,cf.myip_3,cf.myip_4);
297	DisableFixedIP = dflag;
298}
299
300
301function check_welcome_l2tp()
302{
303	var cf = document.forms[0];
304	if(check_wizard_l2tp(0,"welcome")==false)
305		return false;
306	parent.l2tp_username=cf.l2tp_username.value;
307	parent.l2tp_password=cf.l2tp_passwd.value;
308	parent.l2tp_idle_time=cf.l2tp_idletime.value;
309	/*
310	cf.l2tp_myip.value=cf.myip_1.value+'.'+cf.myip_2.value+'.'+cf.myip_3.value+'.'+cf.myip_4.value;
311	cf.l2tp_gateway.value=cf.mygw_1.value+'.'+cf.mygw_2.value+'.'+cf.mygw_3.value+'.'+cf.mygw_4.value;
312	cf.l2tp_mynetmask.value=cf.my_mask1.value+'.'+cf.my_mask2.value+'.'+cf.my_mask3.value+'.'+cf.my_mask4.value;
313	if(cf.l2tp_myip.value=="...")
314	{
315		cf.l2tp_myip.value="";
316		cf.WANAssign.value=0;
317		parent.l2tp_wan_assign=0;
318	}
319	else
320	{
321		if(checkipaddr(cf.l2tp_myip.value)==false)
322		{
323			alert("<%243%>");
324			return false;
325		}
326		cf.WANAssign.value=1;
327		parent.l2tp_wan_assign=1;
328	}
329	if( cf.l2tp_gateway.value != "..." )
330	{
331		if(checkipaddr(cf.l2tp_gateway.value)==false)
332		{
333			alert("<%190%>");
334			return false;
335		}
336	}
337	else
338	{
339		cf.l2tp_gateway.value="";
340	}
341	if( cf.l2tp_mynetmask.value != "..." )
342	{
343		if(checksubnet(cf.l2tp_mynetmask.value)==false)
344		{
345			alert("<%189%>");
346			return false;
347		}
348	}
349	else
350	{
351		cf.l2tp_mynetmask.value="";
352	}
353	if (cf.WANAssign.value==1)
354	{
355		if(isSameSubNet(cf.l2tp_myip.value,cf.l2tp_mynetmask.value,cf.l2tp_serv_ip.value,cf.l2tp_mynetmask.value) != true)
356		{
357			if(isSameSubNet(cf.l2tp_myip.value,cf.l2tp_mynetmask.value,cf.l2tp_gateway.value,cf.l2tp_mynetmask.value) != true)
358			{
359				alert("<%190%>");
360				return false;
361			}
362		}
363	}
364	*/
365	parent.l2tp_local_ipaddr=cf.l2tp_myip.value;
366	parent.l2tp_local_netmask=cf.l2tp_netmask.value;
367	parent.l2tp_local_gateway=cf.l2tp_gateway.value;
368	parent.l2tp_server_ipaddr=cf.l2tp_serv_ip.value;
369	parent.l2tp_connect_id=cf.l2tp_conn_id.value;
370	parent.welcome_wan_type=4;
371	return true;
372}
373
374function l2tp_servip_update(I)
375{
376	var cf = document.forms[0];
377	servName = cf.l2tp_serv_ip.value;
378	if((servName.search(/[A-Za-z]/i) != -1) &&
379		((cf.myip_1.value.length > 0) ||
380		 (cf.myip_2.value.length > 0) ||
381		 (cf.myip_3.value.length > 0) ||
382		 (cf.myip_4.value.length > 0) ) )
383	{
384		if(cf.DNSAssign[0].checked == true)
385		{
386			cf.DAddr1.disabled=false;
387			cf.DAddr2.disabled=false;
388			cf.DAddr3.disabled=false;
389			cf.DAddr4.disabled=false;
390
391			cf.PDAddr1.disabled=false;
392			cf.PDAddr2.disabled=false;
393			cf.PDAddr3.disabled=false;
394			cf.PDAddr4.disabled=false;
395		}
396		cf.DNSAssign[0].checked=false;
397		cf.DNSAssign[1].checked=true;
398		cf.DNSAssign[0].disabled=true;
399		cf.STATIC_DNS.value=1;
400
401	}
402	else
403	{
404		cf.DNSAssign[0].disabled=false;
405		cf.STATIC_DNS.value=0;
406	}
407}
408
409function RU_l2tp_user_info()
410{
411	var cf=document.forms[0];
412	if(cf.l2tp_username.value=="")
413	{
414		alert("<%456%>");
415		return false;
416	}
417	for(i=0;i<cf.l2tp_username.value.length;i++)
418	{
419		if(isValidChar(cf.l2tp_username.value.charCodeAt(i))==false)
420		{
421			alert("<%1775%>");
422			return false;
423		}
424	}
425	for(i=0;i<cf.l2tp_passwd.value.length;i++)
426	{
427		if(isValidChar(cf.l2tp_passwd.value.charCodeAt(i))==false)
428		{
429			alert("<%1776%>");
430			return false;
431		}
432	}
433	if(cf.l2tp_serv_ip.value=="")
434	{
435		alert("<%294%>");
436		return false;
437	}
438	for(i=0;i<cf.l2tp_serv_ip.value.length;i++)
439	{
440		if(isValidChar(cf.l2tp_serv_ip.value.charCodeAt(i))==false)
441		{
442			alert("<%294%>");
443			return false;
444		}
445	}
446	var server_addr_array = cf.l2tp_serv_ip.value.split('.');
447	var i;
448	for( i=0; i<server_addr_array.length; i++ )
449	{
450		if( server_addr_array[i].length > 63 )
451		{
452			alert("<%294%>");
453			return false;
454		}
455	}
456
457	if (cf.submit_wan)
458		cf.submit_wan.value = parent.isp_type;
459
460	parent.l2tp_username=cf.l2tp_username.value;
461	parent.l2tp_password=cf.l2tp_passwd.value;
462	parent.l2tp_server_ipaddr=cf.l2tp_serv_ip.value;
463	parent.welcome_wan_type=5;
464
465	if(parent.isp_type=="16")
466	{
467		cf.basic_type.value="0";
468		cf.ppp_login_type.value="2";
469		cf.welcome_wan_type.value="5";
470		cf.l2tp_dnsaddr1.value=parent.static_dns1;
471		cf.l2tp_dnsaddr2.value=parent.static_dns2;
472		if(cf.l2tp_dnsaddr1.value != "" || cf.l2tp_dnsaddr2.value!= "")
473			cf.DNSAssign.value="1";
474		else
475			cf.DNSAssign.value="0";
476		cf.WANAssign.value="0";
477		cf.STATIC_DNS.value="0";
478		cf.submit();
479	}
480	else if(parent.isp_type=="15")
481	{
482		location.href="RU_isp_spoof.htm";
483	}
484	else if(parent.isp_type=="13" || parent.isp_type=="14")
485	{
486		location.href="RU_isp_l2tp_static.htm";
487	}
488	else
489		location.href="RU_manual_l2tp_dual.htm";
490}
491
492function setIP(cf)
493{
494	var dflag = cf.DualAssign[0].checked;
495	setDisabled(dflag,cf.myip_1,cf.myip_2,cf.myip_3,cf.myip_4,cf.my_mask1,cf.my_mask2,cf.my_mask3,cf.my_mask4,cf.mygw_1,cf.mygw_2,cf.mygw_3,cf.mygw_4);
496	DisableFixedIP = dflag;
497}
498
499function RU_l2tp_servip_FQDN(I)
500{
501	var cf = document.forms[0];
502	servName = cf.l2tp_serv_ip.value;
503	if((servName.search(/[A-Za-z]/i) != -1) )
504	{
505		parent.l2tp_server_FQDN=1;
506	}
507	else
508	{
509		parent.l2tp_server_FQDN=0;
510	}
511}
512
513function RU_l2tp_servip_update(I)
514{
515	var cf = document.forms[0];
516	if((parent.l2tp_server_FQDN == 1) &&
517		((cf.myip_1.value.length > 0) ||
518		 (cf.myip_2.value.length > 0) ||
519		 (cf.myip_3.value.length > 0) ||
520		 (cf.myip_4.value.length > 0) ) )
521	{
522		if(cf.DNSAssign[0].checked == true)
523		{
524			cf.DAddr1.disabled=false;
525			cf.DAddr2.disabled=false;
526			cf.DAddr3.disabled=false;
527			cf.DAddr4.disabled=false;
528
529			cf.PDAddr1.disabled=false;
530			cf.PDAddr2.disabled=false;
531			cf.PDAddr3.disabled=false;
532			cf.PDAddr4.disabled=false;
533		}
534		cf.DNSAssign[0].checked=false;
535		cf.DNSAssign[1].checked=true;
536		cf.DNSAssign[0].disabled=true;
537		cf.STATIC_DNS.value=1;
538
539	}
540	else
541	{
542		cf.DNSAssign[0].disabled=false;
543		cf.STATIC_DNS.value=0;
544	}
545}
546
547function RU_check_l2tp_dual()
548{
549	var cf=document.forms[0];
550	var wan_assgin = false;
551	cf.l2tp_myip.value=cf.myip_1.value+'.'+cf.myip_2.value+'.'+cf.myip_3.value+'.'+cf.myip_4.value;
552	cf.l2tp_mynetmask.value=cf.my_mask1.value+'.'+cf.my_mask2.value+'.'+cf.my_mask3.value+'.'+cf.my_mask4.value;
553	cf.l2tp_gateway.value=cf.mygw_1.value+'.'+cf.mygw_2.value+'.'+cf.mygw_3.value+'.'+cf.mygw_4.value;
554	if(cf.DualAssign[1].checked == true)
555	{
556		wan_assgin = true;
557		parent.l2tp_wan_assign=1;
558		if(checkipaddr(cf.l2tp_myip.value)==false)
559		{
560			alert("<%243%>");
561			return false;
562		}
563		if(checksubnet(cf.l2tp_mynetmask.value)==false)
564		{
565			alert("<%189%>");
566			return false;
567		}
568		if ( cf.l2tp_gateway.value != "..." && checkgateway(cf.l2tp_gateway.value) == false )
569		{
570			alert("<%190%>");
571			return false;
572		}
573		if( cf.l2tp_gateway.value != "..." )
574		{
575			if(isGateway(cf.l2tp_myip.value,cf.l2tp_mynetmask.value,cf.l2tp_gateway.value) == false)
576			{
577				alert("<%190%>");
578				return false;
579			}
580			if(isSameIp(cf.l2tp_myip.value,cf.l2tp_gateway.value) == true)
581			{
582				alert("<%190%>");
583				return false;
584			}
585		}
586		else
587			cf.l2tp_gateway.value="";
588		if(isSameSubNet(cf.l2tp_myip.value,cf.l2tp_mynetmask.value,l2tp_serv_ip,cf.l2tp_mynetmask.value) != true)
589		{
590			if(isSameSubNet(cf.l2tp_myip.value,cf.l2tp_mynetmask.value,cf.l2tp_gateway.value,cf.l2tp_mynetmask.value) != true)
591			{
592				alert("<%190%>");
593				return false;
594			}
595		}
596	}
597	else
598	{
599		cf.l2tp_myip.value="";
600		cf.l2tp_mynetmask.value="";
601		cf.l2tp_gateway.value="";
602		parent.l2tp_wan_assign=0;
603	}
604	if(cf.DNSAssign[1].checked == true)
605	{
606		cf.l2tp_dnsaddr1.value=cf.DAddr1.value+'.'+cf.DAddr2.value+'.'+cf.DAddr3.value+'.'+cf.DAddr4.value;
607		cf.l2tp_dnsaddr2.value=cf.PDAddr1.value+'.'+cf.PDAddr2.value+'.'+cf.PDAddr3.value+'.'+cf.PDAddr4.value;
608
609		if(cf.l2tp_dnsaddr1.value=="...")
610			cf.l2tp_dnsaddr1.value="";
611		if(cf.l2tp_dnsaddr2.value=="...")
612			cf.l2tp_dnsaddr2.value="";
613
614		if(!check_DNS(cf.l2tp_dnsaddr1.value,cf.l2tp_dnsaddr2.value,wan_assgin,cf.l2tp_myip.value))
615			return false;
616	}
617	else
618	{
619		cf.l2tp_dnsaddr1.value="";
620		cf.l2tp_dnsaddr2.value="";
621	}
622	if(cf.DualAssign[1].checked == true)
623		alert("<%1774%>");
624	parent.l2tp_local_ipaddr=cf.l2tp_myip.value;
625	parent.l2tp_local_netmask=cf.l2tp_mynetmask.value;
626	parent.l2tp_local_gateway=cf.l2tp_gateway.value;
627	parent.l2tp_dns1=cf.l2tp_dnsaddr1.value;
628	parent.l2tp_dns2=cf.l2tp_dnsaddr2.value;
629	parent.STATIC_DNS=cf.STATIC_DNS.value;
630	location.href="RU_manual_spoof.htm";
631}
632